[FFmpeg-devel] [PATCH] libavcodec/qsvenc: add low latency P-pyramid support for qsv
Linjie Fu
linjie.justin.fu at gmail.com
Thu Dec 10 09:48:33 EET 2020
On Thu, Dec 10, 2020 at 2:07 PM <wenbin.chen at intel.com> wrote:
>
> From: Wenbinc-Bin <wenbin.chen at intel.com>
>
> Add low latency P-pyramid support for qsv, and it relates to a new
> command line parameter "-p_strategy". To enable this flag, user also
> need to set "-bf" to -1 or 0.
IMO correcting the related options and prompting a warning would be
more user-friendly.
> Signed-off-by Wenbin Chen <wenbin.chen at intel.com>
> ---
> libavcodec/qsvenc.c | 22 ++++++++++++++++++++++
> libavcodec/qsvenc.h | 2 ++
> 2 files changed, 24 insertions(+)
>
> diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c
> index 2bd2a56227..c3b41374e4 100644
> --- a/libavcodec/qsvenc.c
> +++ b/libavcodec/qsvenc.c
> @@ -268,6 +268,13 @@ static void dump_video_param(AVCodecContext *avctx, QSVEncContext *q,
> case MFX_B_REF_PYRAMID: av_log(avctx, AV_LOG_VERBOSE, "pyramid"); break;
> default: av_log(avctx, AV_LOG_VERBOSE, "auto"); break;
> }
> + av_log(avctx, AV_LOG_VERBOSE, "; PRefType: ");
> + switch(co3->PRefType){
> + case MFX_P_REF_DEFAULT: av_log(avctx, AV_LOG_VERBOSE, "default"); break;
> + case MFX_P_REF_SIMPLE: av_log(avctx, AV_LOG_VERBOSE, "simple"); break;
> + case MFX_P_REF_PYRAMID: av_log(avctx, AV_LOG_VERBOSE, "pyramid"); break;
> + default: break;
> + }
> av_log(avctx, AV_LOG_VERBOSE, "\n");
> #endif
>
> @@ -777,6 +784,21 @@ FF_ENABLE_DEPRECATION_WARNINGS
> #if QSV_HAVE_CO3
> q->extco3.Header.BufferId = MFX_EXTBUFF_CODING_OPTION3;
> q->extco3.Header.BufferSz = sizeof(q->extco3);
> + switch(q->p_strategy){
> + case 0:
> + q->extco3.PRefType = MFX_P_REF_DEFAULT;
> + break;
> + case 1:
> + q->extco3.PRefType = MFX_P_REF_SIMPLE;
> + break;
> + case 2:
> + q->extco3.PRefType = MFX_P_REF_PYRAMID;
> + break;
> + default:
> + q->extco3.PRefType = MFX_P_REF_DEFAULT;
> + av_log(avctx, AV_LOG_VERBOSE, "invalid p_strategy, set to default\n");
> + break;
> + }
It'll be great if one could help to provide some links/background
information like [1] in commit messages or docs,
to elaborate more about "default" and "simple", and make a new option
easier to be understood:
[1] https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#preftype
- linjie
More information about the ffmpeg-devel
mailing list