[FFmpeg-devel] [PATCH] libavcodec/qsvenc: add low latency P-pyramid support for qsv

Chen, Wenbin wenbin.chen at intel.com
Mon Dec 28 06:04:39 EET 2020


> -----Original Message-----
> From: Linjie Fu <linjie.justin.fu at gmail.com>
> Sent: Thursday, December 10, 2020 3:49 PM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel at ffmpeg.org>
> Cc: Chen, Wenbin <wenbin.chen at intel.com>
> Subject: Re: [FFmpeg-devel] [PATCH] libavcodec/qsvenc: add low latency P-
> pyramid support for qsv
> 
> 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

Sorry, I missed your replay. 
Thanks for your advice and I will resubmit the patch.

Wenbin


More information about the ffmpeg-devel mailing list