@ -90,8 +90,10 @@
{ " slower " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = MFX_TARGETUSAGE_2 } , INT_MIN , INT_MAX , VE , " preset " } , \
{ " veryslow " , NULL , 0 , AV_OPT_TYPE_CONST , { . i64 = MFX_TARGETUSAGE_BEST_QUALITY } , INT_MIN , INT_MAX , VE , " preset " } , \
{ " rdo " , " Enable rate distortion optimization " , OFFSET ( qsv . rdo ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1 , VE } , \
{ " max_frame_size " , " Maximum encoded frame size in bytes " , OFFSET ( qsv . max_frame_size ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , UINT16_MAX , VE } , \
{ " max_slice_size " , " Maximum encoded slice size in bytes " , OFFSET ( qsv . max_slice_size ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , UINT16_MAX , VE } , \
{ " max_frame_size " , " Maximum encoded frame size in bytes " , OFFSET ( qsv . max_frame_size ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , VE } , \
{ " max_frame_size_i " , " Maximum encoded I frame size in bytes " , OFFSET ( qsv . max_frame_size_i ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , VE } , \
{ " max_frame_size_p " , " Maximum encoded P frame size in bytes " , OFFSET ( qsv . max_frame_size_p ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , VE } , \
{ " max_slice_size " , " Maximum encoded slice size in bytes " , OFFSET ( qsv . max_slice_size ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , INT_MAX , VE } , \
{ " bitrate_limit " , " Toggle bitrate limitations " , OFFSET ( qsv . bitrate_limit ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1 , VE } , \
{ " mbbrc " , " MB level bitrate control " , OFFSET ( qsv . mbbrc ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1 , VE } , \
{ " extbrc " , " Extended bitrate control " , OFFSET ( qsv . extbrc ) , AV_OPT_TYPE_INT , { . i64 = - 1 } , - 1 , 1 , VE } , \
@ -102,6 +104,7 @@
{ " forced_idr " , " Forcing I frames as IDR frames " , OFFSET ( qsv . forced_idr ) , AV_OPT_TYPE_BOOL , { . i64 = 0 } , 0 , 1 , VE } , \
{ " low_power " , " enable low power mode(experimental: many limitations by mfx version, BRC modes, etc.) " , OFFSET ( qsv . low_power ) , AV_OPT_TYPE_BOOL , { . i64 = - 1 } , - 1 , 1 , VE } , \
{ " dblk_idc " , " This option disable deblocking. It has value in range 0~2. " , OFFSET ( qsv . dblk_idc ) , AV_OPT_TYPE_INT , { . i64 = 0 } , 0 , 2 , VE } , \
{ " low_delay_brc " , " Allow to strictly obey avg frame size " , OFFSET ( qsv . low_delay_brc ) , AV_OPT_TYPE_BOOL , { . i64 = - 1 } , - 1 , 1 , VE } , \
extern const AVCodecHWConfigInternal * const ff_qsv_enc_hw_configs [ ] ;
@ -173,6 +176,8 @@ typedef struct QSVEncContext {
int vcm ;
int rdo ;
int max_frame_size ;
int max_frame_size_i ;
int max_frame_size_p ;
int max_slice_size ;
int dblk_idc ;
@ -212,6 +217,7 @@ typedef struct QSVEncContext {
char * load_plugins ;
SetEncodeCtrlCB * set_encode_ctrl_cb ;
int forced_idr ;
int low_delay_brc ;
} QSVEncContext ;
int ff_qsv_enc_init ( AVCodecContext * avctx , QSVEncContext * q ) ;