[FFmpeg-devel] [PATCH 2/3] libavcodec/qsvenc: Add b_strategy option to hevc_qsv
Xiang, Haihao
haihao.xiang at intel.com
Tue Jan 25 05:22:40 EET 2022
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 at 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).
>
> + at 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
More information about the ffmpeg-devel
mailing list