On Wed, Mar 24, 2021 at 2:15 PM Wang, Fei W <fei.w.w...@intel.com> wrote:
> On Mon, 2021-03-22 at 20:12 +0800, Linjie Fu wrote: > > On Wed, Feb 24, 2021 at 9:44 AM Fei Wang <fei.w.w...@intel.com> > > wrote: > > > > > > The option allow user to set diffenent scaling mode from > > > auto/low-power/high-quality. > > > > > > More details: > > > > > https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/mediasdk-man.md#mfxExtVPPScaling > > > > > > Signed-off-by: Fei Wang <fei.w.w...@intel.com> > > > --- > > > libavfilter/vf_vpp_qsv.c | 25 +++++++++++++++++++++++-- > > > 1 file changed, 23 insertions(+), 2 deletions(-) > > > > > > diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c > > > index 5d57707455..effc459d3b 100644 > > > --- a/libavfilter/vf_vpp_qsv.c > > > +++ b/libavfilter/vf_vpp_qsv.c > > > @@ -43,8 +43,9 @@ > > > > > > /* number of video enhancement filters */ > > > #define ENH_FILTERS_COUNT (7) > > > -#define QSV_HAVE_ROTATION QSV_VERSION_ATLEAST(1, 17) > > > -#define QSV_HAVE_MIRRORING QSV_VERSION_ATLEAST(1, 19) > > > +#define QSV_HAVE_ROTATION QSV_VERSION_ATLEAST(1, 17) > > > +#define QSV_HAVE_MIRRORING QSV_VERSION_ATLEAST(1, 19) > > > +#define QSV_HAVE_SCALING_CONFIG QSV_VERSION_ATLEAST(1, 19) > > > > > > typedef struct VPPContext{ > > > const AVClass *class; > > > @@ -59,6 +60,9 @@ typedef struct VPPContext{ > > > mfxExtVPPProcAmp procamp_conf; > > > mfxExtVPPRotation rotation_conf; > > > mfxExtVPPMirroring mirroring_conf; > > > +#ifdef QSV_HAVE_SCALING_CONFIG > > > + mfxExtVPPScaling scale_conf; > > > +#endif > > > > > > int out_width; > > > int out_height; > > > @@ -83,6 +87,8 @@ typedef struct VPPContext{ > > > int rotate; /* rotate angle : [0, 90, 180, > > > 270] */ > > > int hflip; /* flip mode : 0 = off, 1 = > > > HORIZONTAL flip */ > > > > > > + int scale_mode; /* scale mode : 0 = auto, 1 = low > > > power, 2 = high quality */ > > > + > > > /* param for the procamp */ > > > int procamp; /* enable procamp */ > > > float hue; > > > @@ -128,6 +134,7 @@ static const AVOption options[] = { > > > { "h", "Output video height", OFFSET(oh), > > > AV_OPT_TYPE_STRING, { .str="w*ch/cw" }, 0, 255, .flags = FLAGS }, > > > { "height", "Output video height", OFFSET(oh), > > > AV_OPT_TYPE_STRING, { .str="w*ch/cw" }, 0, 255, .flags = FLAGS }, > > > { "format", "Output pixel format", OFFSET(output_format_str), > > > AV_OPT_TYPE_STRING, { .str = "same" }, .flags = FLAGS }, > > > + { "scale_mode", "scale mode: 0=auto, 1=low power, 2=high > > > quality", OFFSET(scale_mode), AV_OPT_TYPE_INT, { .i64 = > > > MFX_SCALING_MODE_DEFAULT }, MFX_SCALING_MODE_DEFAULT, > > > MFX_SCALING_MODE_QUALITY, .flags = FLAGS, "scale mode" }, > > > > > > { NULL } > > > }; > > > @@ -454,6 +461,20 @@ static int config_output(AVFilterLink > > > *outlink) > > > #endif > > > } > > > > > > + if (inlink->w != outlink->w || inlink->h != outlink->h) { > > > +#ifdef QSV_HAVE_SCALING_CONFIG > > > + memset(&vpp->scale_conf, 0, sizeof(mfxExtVPPScaling)); > > > + vpp->scale_conf.Header.BufferId = > > > MFX_EXTBUFF_VPP_SCALING; > > > + vpp->scale_conf.Header.BufferSz = > > > sizeof(mfxExtVPPScaling); > > > + vpp->scale_conf.ScalingMode = vpp->scale_mode; > > > + > > > + param.ext_buf[param.num_ext_buf++] = (mfxExtBuffer*)&vpp- > > > >scale_conf; > > > +#else > > > + av_log(ctx, AV_LOG_WARNING, "The QSV VPP Scale option is " > > > + "not supported with this MSDK version.\n"); > > > +#endif > > > + } > > > + > > > if (vpp->use_frc || vpp->use_crop || vpp->deinterlace || vpp- > > > >denoise || > > > vpp->detail || vpp->procamp || vpp->rotate || vpp->hflip > > > || > > > inlink->w != outlink->w || inlink->h != outlink->h || > > > in_format != vpp->out_format) > > > -- > > > 2.17.1 > > > > > > > Looks reasonable, and it seems the default behaviour is QUALITY mode > > on all platforms except for APL: > > That's right. If scale_mode is set to auto, MSDK will choose different > mode(high-quality/low-power) on different platform. > Applied, thx. - linjie _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".