[FFmpeg-devel] [PATCH] lavfi/vf_libvmaf: update to use libvmaf v1.3.9

Kyle Swanson k at ylo.ph
Wed Aug 8 06:21:30 EEST 2018


Hi,

On Tue, Aug 7, 2018 at 8:02 PM, James Almer <jamrial at gmail.com> wrote:

> On 8/7/2018 7:37 PM, Kyle Swanson wrote:
> > From: Kyle Swanson <kswanson at netflix.com>
> >
> > Signed-off-by: Kyle Swanson <kswanson at netflix.com>
> > ---
> >  configure                | 2 +-
> >  libavfilter/vf_libvmaf.c | 9 ++++++++-
> >  2 files changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/configure b/configure
> > index 15a58935de..e718c1531c 100755
> > --- a/configure
> > +++ b/configure
> > @@ -6089,7 +6089,7 @@ enabled libtwolame        && require libtwolame
> twolame.h twolame_init -ltwolame
> >                                 die "ERROR: libtwolame must be installed
> and version must be >= 0.3.10"; }
> >  enabled libv4l2           && require_pkg_config libv4l2 libv4l2
> libv4l2.h v4l2_ioctl
> >  enabled libvidstab        && require_pkg_config libvidstab "vidstab >=
> 0.98" vid.stab/libvidstab.h vsMotionDetectInit
> > -enabled libvmaf           && require_pkg_config libvmaf "libvmaf >=
> 0.6.2" libvmaf.h compute_vmaf
> > +enabled libvmaf           && require_pkg_config libvmaf "libvmaf >=
> 1.3.9" libvmaf.h compute_vmaf
> >  enabled libvo_amrwbenc    && require libvo_amrwbenc
> vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
> >  enabled libvorbis         && require_pkg_config libvorbis vorbis
> vorbis/codec.h vorbis_info_init &&
> >                               require_pkg_config libvorbisenc vorbisenc
> vorbis/vorbisenc.h vorbis_encode_init
> > diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c
> > index 5d47a74375..249e50c720 100644
> > --- a/libavfilter/vf_libvmaf.c
> > +++ b/libavfilter/vf_libvmaf.c
> > @@ -62,6 +62,9 @@ typedef struct LIBVMAFContext {
> >      int ssim;
> >      int ms_ssim;
> >      char *pool;
> > +    int n_threads;
> > +    int n_subsample;
> > +    int enable_conf_interval;
> >      int error;
> >  } LIBVMAFContext;
> >
> > @@ -78,6 +81,9 @@ static const AVOption libvmaf_options[] = {
> >      {"ssim",  "Enables computing ssim along with vmaf.",
>                 OFFSET(ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
> >      {"ms_ssim",  "Enables computing ms-ssim along with vmaf.",
>                 OFFSET(ms_ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
> >      {"pool",  "Set the pool method to be used for computing vmaf.",
>                  OFFSET(pool), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1,
> FLAGS},
> > +    {"n_threads", "Set number of threads to be used when computing
> vmaf.",              OFFSET(n_threads), AV_OPT_TYPE_INT, {.i64=0}, 0,
> UINT_MAX, FLAGS},
> > +    {"n_subsample", "Set interval for frame subsampling used when
> computing vmaf.",     OFFSET(n_subsample), AV_OPT_TYPE_INT, {.i64=1}, 1,
> UINT_MAX, FLAGS},
> > +    {"enable_conf_interval",  "Enables confidence interval.",
>                  OFFSET(enable_conf_interval), AV_OPT_TYPE_BOOL, {.i64=0},
> 0, 1, FLAGS},
> >      { NULL }
> >  };
> >
> > @@ -166,7 +172,8 @@ static void compute_vmaf_score(LIBVMAFContext *s)
> >                              read_frame, s, s->model_path, s->log_path,
> >                              s->log_fmt, 0, 0, s->enable_transform,
> >                              s->phone_model, s->psnr, s->ssim,
> > -                            s->ms_ssim, s->pool);
> > +                            s->ms_ssim, s->pool,
> > +                            s->n_threads, s->n_subsample,
> s->enable_conf_interval);
>
> It would be ideal if this library could stop breaking the API so often.
> If the current API is not extensible, maybe you should consider
> introducing a new one that is.
>

Yes, I'm in agreement with you. The libvmaf API hasn't been stable and has
more or less been evolving over time. I've had a few discussions with Zhi
about a new API that is both more manageable to use and also extensible.
For now this is the interface, but I plan to invest some of my time in the
future to help with a new API. At that point there will be another breaking
change, but it should be more stable going forward. I can also manage the
updates to this filter during that time as well.


>
> >  }
> >
> >  static void *call_vmaf(void *ctx)
> >
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>

Thanks,
Kyle


More information about the ffmpeg-devel mailing list