@ -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 } ,
} ;