25 #include <sys/types.h> 
   27 #include <mfx/mfxvideo.h> 
   56         if (res < 0 || !payload)
 
   59         sei_data = (mfxU8*)(payload + 1);
 
   62         sei_data[1] = (mfxU8)sei_size; 
 
   65         payload->BufSize = sei_size + 2;
 
   66         payload->NumBit = payload->BufSize * 8;
 
   68         payload->Data = sei_data;
 
   70         enc_ctrl->NumExtParam = 0;
 
   71         enc_ctrl->NumPayload = 1;
 
   72         enc_ctrl->Payload[0] = payload;
 
  100 #define OFFSET(x) offsetof(QSVH264EncContext, x) 
  101 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM 
  107     { 
"vcm",      
"Use the video conferencing mode ratecontrol",  
OFFSET(qsv.vcm),      
AV_OPT_TYPE_INT, { .i64 = 0  },  0, 1,         
VE },
 
  109     { 
"idr_interval", 
"Distance (in I-frames) between IDR frames", 
OFFSET(qsv.idr_interval), 
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, 
VE },
 
  110     { 
"pic_timing_sei",    
"Insert picture timing SEI with pic_struct_syntax element", 
OFFSET(qsv.pic_timing_sei), 
AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, 
VE },
 
  111     { 
"single_sei_nal_unit",    
"Put all the SEI messages into one NALU",        
OFFSET(qsv.single_sei_nal_unit),     
AV_OPT_TYPE_INT, { .i64 = -1 }, -1,          1, 
VE },
 
  112     { 
"max_dec_frame_buffering", 
"Maximum number of frames buffered in the DPB", 
OFFSET(qsv.max_dec_frame_buffering), 
AV_OPT_TYPE_INT, { .i64 = 0 },   0, UINT16_MAX, 
VE },
 
  115     { 
"look_ahead",       
"Use VBR algorithm with look ahead",    
OFFSET(qsv.look_ahead),       
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, 
VE },
 
  116     { 
"look_ahead_depth", 
"Depth of look ahead in number frames", 
OFFSET(qsv.look_ahead_depth), 
AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 100, 
VE },
 
  119     { 
"look_ahead_downsampling", 
"Downscaling factor for the frames saved for the lookahead analysis", 
OFFSET(qsv.look_ahead_downsampling),
 
  128     { 
"int_ref_type", 
"Intra refresh type",                                      
OFFSET(qsv.int_ref_type),            
AV_OPT_TYPE_INT, { .i64 = -1 }, -1, UINT16_MAX, 
VE, 
"int_ref_type" },
 
  131     { 
"int_ref_cycle_size", 
"Number of frames in the intra refresh cycle",       
OFFSET(qsv.int_ref_cycle_size),      
AV_OPT_TYPE_INT, { .i64 = -1 },               -1, UINT16_MAX, 
VE },
 
  132     { 
"int_ref_qp_delta",   
"QP difference for the refresh MBs",                 
OFFSET(qsv.int_ref_qp_delta),        
AV_OPT_TYPE_INT, { .i64 = INT16_MIN }, INT16_MIN,  INT16_MAX, 
VE },
 
  133     { 
"recovery_point_sei", 
"Insert recovery point SEI messages",                
OFFSET(qsv.recovery_point_sei),      
AV_OPT_TYPE_INT, { .i64 = -1 },               -1,          1, 
VE },
 
  137     { 
"baseline", 
NULL, 0, 
AV_OPT_TYPE_CONST, { .i64 = MFX_PROFILE_AVC_BASELINE }, INT_MIN, INT_MAX,     
VE, 
"profile" },
 
  141     { 
"a53cc" , 
"Use A53 Closed Captions (if available)", 
OFFSET(qsv.a53_cc), 
AV_OPT_TYPE_INT, {.i64 = 1}, 0, 1, 
VE},
 
  146     { 
"mfmode", 
"Multi-Frame Mode", 
OFFSET(qsv.mfmode), 
AV_OPT_TYPE_INT, { .i64 = MFX_MF_AUTO }, MFX_MF_DEFAULT, MFX_MF_AUTO, 
VE, 
"mfmode"},
 
  171 #if FF_API_CODER_TYPE 
  175     { 
"flags",     
"+cgop" },
 
  176 #if FF_API_PRIVATE_OPT 
  177     { 
"b_strategy", 
"-1"   },
 
  184     .long_name      = 
NULL_IF_CONFIG_SMALL(
"H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (Intel Quick Sync Video acceleration)"),
 
  196     .priv_class     = &
class,
 
  199     .wrapper_name   = 
"qsv",