| 
																	
																	
																		
																	
																	
																 | 
																@@ -115,6 +115,10 @@ typedef struct VAAPIEncodeH264Context { | 
															
														
														
													
														
															
																 | 
																 | 
																    } hrd_params; | 
																 | 
																 | 
																    } hrd_params; | 
															
														
														
													
														
															
																 | 
																 | 
																} VAAPIEncodeH264Context; | 
																 | 
																 | 
																} VAAPIEncodeH264Context; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																typedef struct VAAPIEncodeH264Options { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int qp; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																} VAAPIEncodeH264Options; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#define vseq_var(name)     vseq->name, name | 
																 | 
																 | 
																#define vseq_var(name)     vseq->name, name | 
															
														
														
													
														
															
																 | 
																 | 
																#define vseq_field(name)   vseq->seq_fields.bits.name, name | 
																 | 
																 | 
																#define vseq_field(name)   vseq->seq_fields.bits.name, name | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -765,8 +769,9 @@ static av_cold int vaapi_encode_h264_init_fixed_qp(AVCodecContext *avctx) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    VAAPIEncodeContext      *ctx = avctx->priv_data; | 
																 | 
																 | 
																    VAAPIEncodeContext      *ctx = avctx->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    VAAPIEncodeH264Context *priv = ctx->priv_data; | 
																 | 
																 | 
																    VAAPIEncodeH264Context *priv = ctx->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    VAAPIEncodeH264Options  *opt = ctx->codec_options; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    priv->fixed_qp_p = avctx->global_quality; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    priv->fixed_qp_p = opt->qp; | 
															
														
														
													
														
															
																 | 
																 | 
																    if (avctx->i_quant_factor > 0.0) | 
																 | 
																 | 
																    if (avctx->i_quant_factor > 0.0) | 
															
														
														
													
														
															
																 | 
																 | 
																        priv->fixed_qp_idr = (int)((priv->fixed_qp_p * avctx->i_quant_factor + | 
																 | 
																 | 
																        priv->fixed_qp_idr = (int)((priv->fixed_qp_p * avctx->i_quant_factor + | 
															
														
														
													
														
															
																 | 
																 | 
																                                    avctx->i_quant_offset) + 0.5); | 
																 | 
																 | 
																                                    avctx->i_quant_offset) + 0.5); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -895,13 +900,21 @@ static av_cold int vaapi_encode_h264_init(AVCodecContext *avctx) | 
															
														
														
													
														
															
																 | 
																 | 
																    return ff_vaapi_encode_init(avctx, &vaapi_encode_type_h264); | 
																 | 
																 | 
																    return ff_vaapi_encode_init(avctx, &vaapi_encode_type_h264); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#define OFFSET(x) (offsetof(VAAPIEncodeContext, codec_options_data) + \ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                   offsetof(VAAPIEncodeH264Options, x)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#define FLAGS (AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static const AVOption vaapi_encode_h264_options[] = { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { "qp", "Constant QP (for P frames; scaled by qfactor/qoffset for I/B)", | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																      OFFSET(qp), AV_OPT_TYPE_INT, { .i64 = 20 }, 0, 52, FLAGS }, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    { NULL }, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																}; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																static const AVCodecDefault vaapi_encode_h264_defaults[] = { | 
																 | 
																 | 
																static const AVCodecDefault vaapi_encode_h264_defaults[] = { | 
															
														
														
													
														
															
																 | 
																 | 
																    { "profile",        "100" }, | 
																 | 
																 | 
																    { "profile",        "100" }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "level",          "51"  }, | 
																 | 
																 | 
																    { "level",          "51"  }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "b",              "0"   }, | 
																 | 
																 | 
																    { "b",              "0"   }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "bf",             "2"   }, | 
																 | 
																 | 
																    { "bf",             "2"   }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "g",              "120" }, | 
																 | 
																 | 
																    { "g",              "120" }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "global_quality", "20"  }, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    { "i_qfactor",      "1.0" }, | 
																 | 
																 | 
																    { "i_qfactor",      "1.0" }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "i_qoffset",      "0.0" }, | 
																 | 
																 | 
																    { "i_qoffset",      "0.0" }, | 
															
														
														
													
														
															
																 | 
																 | 
																    { "b_qfactor",      "1.2" }, | 
																 | 
																 | 
																    { "b_qfactor",      "1.2" }, | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -912,6 +925,7 @@ static const AVCodecDefault vaapi_encode_h264_defaults[] = { | 
															
														
														
													
														
															
																 | 
																 | 
																static const AVClass vaapi_encode_h264_class = { | 
																 | 
																 | 
																static const AVClass vaapi_encode_h264_class = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .class_name = "h264_vaapi", | 
																 | 
																 | 
																    .class_name = "h264_vaapi", | 
															
														
														
													
														
															
																 | 
																 | 
																    .item_name  = av_default_item_name, | 
																 | 
																 | 
																    .item_name  = av_default_item_name, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .option     = vaapi_encode_h264_options, | 
															
														
														
													
														
															
																 | 
																 | 
																    .version    = LIBAVUTIL_VERSION_INT, | 
																 | 
																 | 
																    .version    = LIBAVUTIL_VERSION_INT, | 
															
														
														
													
														
															
																 | 
																 | 
																}; | 
																 | 
																 | 
																}; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -920,7 +934,8 @@ AVCodec ff_h264_vaapi_encoder = { | 
															
														
														
													
														
															
																 | 
																 | 
																    .long_name      = NULL_IF_CONFIG_SMALL("H.264/AVC (VAAPI)"), | 
																 | 
																 | 
																    .long_name      = NULL_IF_CONFIG_SMALL("H.264/AVC (VAAPI)"), | 
															
														
														
													
														
															
																 | 
																 | 
																    .type           = AVMEDIA_TYPE_VIDEO, | 
																 | 
																 | 
																    .type           = AVMEDIA_TYPE_VIDEO, | 
															
														
														
													
														
															
																 | 
																 | 
																    .id             = AV_CODEC_ID_H264, | 
																 | 
																 | 
																    .id             = AV_CODEC_ID_H264, | 
															
														
														
													
														
															
																 | 
																 | 
																    .priv_data_size = sizeof(VAAPIEncodeContext), | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    .priv_data_size = (sizeof(VAAPIEncodeContext) + | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                       sizeof(VAAPIEncodeH264Options)), | 
															
														
														
													
														
															
																 | 
																 | 
																    .init           = &vaapi_encode_h264_init, | 
																 | 
																 | 
																    .init           = &vaapi_encode_h264_init, | 
															
														
														
													
														
															
																 | 
																 | 
																    .encode2        = &ff_vaapi_encode2, | 
																 | 
																 | 
																    .encode2        = &ff_vaapi_encode2, | 
															
														
														
													
														
															
																 | 
																 | 
																    .close          = &ff_vaapi_encode_close, | 
																 | 
																 | 
																    .close          = &ff_vaapi_encode_close, | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |