|
|
|
@@ -124,6 +124,7 @@ typedef struct AOMEncoderContext { |
|
|
|
int enable_diff_wtd_comp; |
|
|
|
int enable_dist_wtd_comp; |
|
|
|
int enable_dual_filter; |
|
|
|
AVDictionary *aom_params; |
|
|
|
} AOMContext; |
|
|
|
|
|
|
|
static const char *const ctlidstr[] = { |
|
|
|
@@ -874,6 +875,20 @@ static av_cold int aom_init(AVCodecContext *avctx, |
|
|
|
codecctl_int(avctx, AV1E_SET_ENABLE_INTRABC, ctx->enable_intrabc); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if AOM_ENCODER_ABI_VERSION >= 23 |
|
|
|
{ |
|
|
|
AVDictionaryEntry *en = NULL; |
|
|
|
|
|
|
|
while ((en = av_dict_get(ctx->aom_params, "", en, AV_DICT_IGNORE_SUFFIX))) { |
|
|
|
int ret = aom_codec_set_option(&ctx->encoder, en->key, en->value); |
|
|
|
if (ret != AOM_CODEC_OK) { |
|
|
|
log_encoder_error(avctx, en->key); |
|
|
|
return AVERROR_EXTERNAL; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
// provide dummy value to initialize wrapper, values will be updated each _encode() |
|
|
|
aom_img_wrap(&ctx->rawimg, img_fmt, avctx->width, avctx->height, 1, |
|
|
|
(unsigned char*)1); |
|
|
|
@@ -1299,6 +1314,9 @@ static const AVOption options[] = { |
|
|
|
{ "enable-masked-comp", "Enable masked compound", OFFSET(enable_masked_comp), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, |
|
|
|
{ "enable-interintra-comp", "Enable interintra compound", OFFSET(enable_interintra_comp), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, |
|
|
|
{ "enable-smooth-interintra", "Enable smooth interintra mode", OFFSET(enable_smooth_interintra), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE}, |
|
|
|
#if AOM_ENCODER_ABI_VERSION >= 23 |
|
|
|
{ "aom-params", "Set libaom options using a :-separated list of key=value pairs", OFFSET(aom_params), AV_OPT_TYPE_DICT, { 0 }, 0, 0, VE }, |
|
|
|
#endif |
|
|
|
{ NULL }, |
|
|
|
}; |
|
|
|
|
|
|
|
|