Message ID | 20220124025955.204168-2-wenbin.chen@intel.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,1/3] libavcodec/qsvenc: Add max slice size support to hevc_qsv | expand |
Context | Check | Description |
---|---|---|
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_ppc | success | Make finished |
andriy/make_fate_ppc | success | Make fate finished |
andriy/make_aarch64_jetson | success | Make finished |
andriy/make_fate_aarch64_jetson | success | Make fate finished |
On Mon, 2022-01-24 at 10:59 +0800, Wenbin Chen wrote: > Add b_strategy option to hevc_qsv. By enabling this option, encoder can > use b frames as reference. > > Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> > --- > doc/encoders.texi | 3 +++ > libavcodec/qsvenc.c | 6 ++++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/doc/encoders.texi b/doc/encoders.texi > index 8966610263..6c1c4df57a 100644 > --- a/doc/encoders.texi > +++ b/doc/encoders.texi > @@ -3403,6 +3403,9 @@ Maximum encoded slice size in bytes. > @item @var{p_strategy} > Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need to be set to 0). > > +@item @var{b_strategy} > +This option controls usage of B frames as reference. > + > @item @var{dblk_idc} > This option disable deblocking. It has value in range 0~2. > > diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c > index f311cd9ce4..a8d876d6d9 100644 > --- a/libavcodec/qsvenc.c > +++ b/libavcodec/qsvenc.c > @@ -888,8 +888,6 @@ static int init_video_param(AVCodecContext *avctx, > QSVEncContext *q) > q->extco2.LookAheadDS = q->look_ahead_downsampling; > q->extco2.RepeatPPS = q->repeat_pps ? MFX_CODINGOPTION_ON : > MFX_CODINGOPTION_OFF; > > - if (q->b_strategy >= 0) > - q->extco2.BRefType = q->b_strategy ? MFX_B_REF_PYRAMID : > MFX_B_REF_OFF; > if (q->adaptive_i >= 0) > q->extco2.AdaptiveI = q->adaptive_i ? MFX_CODINGOPTION_ON : > MFX_CODINGOPTION_OFF; > if (q->adaptive_b >= 0) > @@ -910,6 +908,10 @@ static int init_video_param(AVCodecContext *avctx, > QSVEncContext *q) > q->extco2.DisableDeblockingIdc = q->dblk_idc; > #endif > > +#if QSV_VERSION_ATLEAST(1, 8) > + if (q->b_strategy >= 0) > + q->extco2.BRefType = q->b_strategy ? MFX_B_REF_PYRAMID : > MFX_B_REF_OFF; > +#endif > #if QSV_VERSION_ATLEAST(1, 9) > if (avctx->qmin >= 0 && avctx->qmax >= 0 && avctx->qmin > avctx- > >qmax) { > av_log(avctx, AV_LOG_ERROR, "qmin and or qmax are set but > invalid, please make sure min <= max\n"); LGTM, thx -Haihao
diff --git a/doc/encoders.texi b/doc/encoders.texi index 8966610263..6c1c4df57a 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -3403,6 +3403,9 @@ Maximum encoded slice size in bytes. @item @var{p_strategy} Enable P-pyramid: 0-default 1-simple 2-pyramid(bf need to be set to 0). +@item @var{b_strategy} +This option controls usage of B frames as reference. + @item @var{dblk_idc} This option disable deblocking. It has value in range 0~2. diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index f311cd9ce4..a8d876d6d9 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -888,8 +888,6 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) q->extco2.LookAheadDS = q->look_ahead_downsampling; q->extco2.RepeatPPS = q->repeat_pps ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; - if (q->b_strategy >= 0) - q->extco2.BRefType = q->b_strategy ? MFX_B_REF_PYRAMID : MFX_B_REF_OFF; if (q->adaptive_i >= 0) q->extco2.AdaptiveI = q->adaptive_i ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; if (q->adaptive_b >= 0) @@ -910,6 +908,10 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) q->extco2.DisableDeblockingIdc = q->dblk_idc; #endif +#if QSV_VERSION_ATLEAST(1, 8) + if (q->b_strategy >= 0) + q->extco2.BRefType = q->b_strategy ? MFX_B_REF_PYRAMID : MFX_B_REF_OFF; +#endif #if QSV_VERSION_ATLEAST(1, 9) if (avctx->qmin >= 0 && avctx->qmax >= 0 && avctx->qmin > avctx->qmax) { av_log(avctx, AV_LOG_ERROR, "qmin and or qmax are set but invalid, please make sure min <= max\n");
Add b_strategy option to hevc_qsv. By enabling this option, encoder can use b frames as reference. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> --- doc/encoders.texi | 3 +++ libavcodec/qsvenc.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-)