@ -94,6 +94,7 @@ typedef struct AOMEncoderContext {
int enable_intrabc ;
int enable_restoration ;
int usage ;
int tune ;
} AOMContext ;
static const char * const ctlidstr [ ] = {
@ -132,6 +133,7 @@ static const char *const ctlidstr[] = {
[ AV1E_SET_ENABLE_INTRABC ] = " AV1E_SET_ENABLE_INTRABC " ,
# endif
[ AV1E_SET_ENABLE_CDEF ] = " AV1E_SET_ENABLE_CDEF " ,
[ AOME_SET_TUNING ] = " AOME_SET_TUNING " ,
} ;
static av_cold void log_encoder_error ( AVCodecContext * avctx , const char * desc )
@ -699,6 +701,8 @@ static av_cold int aom_init(AVCodecContext *avctx,
codecctl_int ( avctx , AOME_SET_STATIC_THRESHOLD , ctx - > static_thresh ) ;
if ( ctx - > crf > = 0 )
codecctl_int ( avctx , AOME_SET_CQ_LEVEL , ctx - > crf ) ;
if ( ctx - > tune > = 0 )
codecctl_int ( avctx , AOME_SET_TUNING , ctx - > tune ) ;
codecctl_int ( avctx , AV1E_SET_COLOR_PRIMARIES , avctx - > color_primaries ) ;
codecctl_int ( avctx , AV1E_SET_MATRIX_COEFFICIENTS , avctx - > colorspace ) ;
@ -1096,6 +1100,9 @@ static const AVOption options[] = {
{ " usage " , " Quality and compression efficiency vs speed tradeof " , OFFSET ( usage ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , INT_MAX , VE , " usage " } ,
{ " good " , " Good quality " , 0 , AV_OPT_TYPE_CONST , { . i64 = 0 /* AOM_USAGE_GOOD_QUALITY */ } , 0 , 0 , VE , " usage " } ,
{ " realtime " , " Realtime encoding " , 0 , AV_OPT_TYPE_CONST , { . i64 = 1 /* AOM_USAGE_REALTIME */ } , 0 , 0 , VE , " usage " } ,
{ " tune " , " The metric that the encoder tunes for. Automatically chosen by the encoder by default " , OFFSET ( tune ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , AOM_TUNE_SSIM , VE , " tune " } ,
{ " psnr " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = AOM_TUNE_PSNR } , 0 , 0 , VE , " tune " } ,
{ " ssim " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = AOM_TUNE_SSIM } , 0 , 0 , VE , " tune " } ,
{ NULL } ,
} ;