multimedia/vmaf: unbreak legacy API consumers after 1868dedecc

$ aomenc --tune=vmaf --output=foo.mp4 foo.y4m
Pass 1/2 frame    1/0          0B       0 us 0.00 fpm [ETA  unknown] libvmaf ERROR could not read model from path: "/usr/local/share/model/vmaf_v0.6.1.json"
Fatal error: Failed to load VMAF model.

$ ffmpeg -i foo.y4m -i bar.y4m -lavfi libvmaf -f null -
[...]
libvmaf INFO `compute_vmaf()` is deprecated and will be removed in a future libvmaf version
libvmaf ERROR could not read model from path: "/usr/local/share/model/vmaf_v0.6.1.pkl"
libvmaf ERROR support for pkl model files has been removed, use json
libvmaf ERROR problem loading model file: /usr/local/share/model/vmaf_v0.6.1.pkl
[Parsed_libvmaf_0 @ 0x8061b3b40] libvmaf encountered an error, check log for details
This commit is contained in:
Jan Beich 2021-11-08 16:34:49 +00:00
parent 03033c16bb
commit 7f163c23e1
6 changed files with 69 additions and 1 deletions

View File

@ -2,6 +2,7 @@
PORTNAME= ffmpeg
PORTVERSION= 4.4.1
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= multimedia audio net
MASTER_SITES= https://ffmpeg.org/releases/

View File

@ -0,0 +1,32 @@
https://github.com/Netflix/vmaf/commit/122089fa3d23
--- doc/filters.texi.orig 2021-10-24 20:47:07 UTC
+++ doc/filters.texi
@@ -13875,14 +13875,14 @@ The obtained VMAF score is printed through the logging
It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
After installing the library it can be enabled using:
@code{./configure --enable-libvmaf}.
-If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
+If no model path is specified it uses the default model: @code{vmaf_v0.6.1.json}.
The filter has following options:
@table @option
@item model_path
Set the model path which is to be used for SVM.
-Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
+Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.json"}
@item log_path
Set the file path to be used to store logs.
--- libavfilter/vf_libvmaf.c.orig 2021-10-24 20:47:07 UTC
+++ libavfilter/vf_libvmaf.c
@@ -72,7 +72,7 @@ typedef struct LIBVMAFContext {
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
static const AVOption libvmaf_options[] = {
- {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
+ {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.json"}, 0, 1, FLAGS},
{"log_path", "Set the file path to be used to store logs.", OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
{"log_fmt", "Set the format of the log (csv, json or xml).", OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
{"enable_transform", "Enables transform for computing vmaf.", OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},

View File

@ -1,6 +1,7 @@
PORTNAME= vmaf
DISTVERSIONPREFIX= v
DISTVERSION= 2.3.0
PORTREVISION= 1
CATEGORIES= multimedia
MAINTAINER= jbeich@FreeBSD.org
@ -22,4 +23,9 @@ USE_LDCONFIG= yes
GH_ACCOUNT= Netflix
WRKSRC_SUBDIR= lib${PORTNAME}
post-install:
# For legacy API consumers e.g., aom, x265
(cd ${WRKSRC:H} && ${COPYTREE_SHARE} "model" \
${STAGEDIR}${DATADIR:H} "-name *.json")
.include <bsd.port.mk>

View File

@ -10,3 +10,19 @@ lib/libvmaf.so
lib/libvmaf.so.1
lib/libvmaf.so.1.1.2
libdata/pkgconfig/libvmaf.pc
share/model/other_models/nflx_v1.json
share/model/other_models/nflxtrain_norm_type_none.json
share/model/other_models/vmaf_v0.6.0.json
share/model/other_models/vmaf_v0.6.1mfz.json
share/model/vmaf_4k_rb_v0.6.2/vmaf_4k_rb_v0.6.2.json
share/model/vmaf_4k_v0.6.1.json
share/model/vmaf_b_v0.6.3.json
share/model/vmaf_float_4k_v0.6.1.json
share/model/vmaf_float_b_v0.6.3.json
share/model/vmaf_float_b_v0.6.3/vmaf_float_b_v0.6.3.json
share/model/vmaf_float_v0.6.1.json
share/model/vmaf_float_v0.6.1neg.json
share/model/vmaf_rb_v0.6.2/vmaf_rb_v0.6.2.json
share/model/vmaf_rb_v0.6.3/vmaf_rb_v0.6.3.json
share/model/vmaf_v0.6.1.json
share/model/vmaf_v0.6.1neg.json

View File

@ -2,7 +2,7 @@
PORTNAME= x265
PORTVERSION= 3.4
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= multimedia
MASTER_SITES= https://bitbucket.org/multicoreware/x265_git/get/${BB_TAG}.tar.gz?meow=/

View File

@ -0,0 +1,13 @@
https://github.com/Netflix/vmaf/commit/122089fa3d23
--- source/x265.h.orig 2020-09-16 15:52:49 UTC
+++ source/x265.h
@@ -733,7 +733,7 @@ typedef struct x265_vmaf_commondata
int enable_conf_interval;
}x265_vmaf_commondata;
-static const x265_vmaf_commondata vcd[] = { { NULL, (char *)"/usr/local/share/model/vmaf_v0.6.1.pkl", NULL, NULL, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 1, 0 } };
+static const x265_vmaf_commondata vcd[] = { { NULL, (char *)"/usr/local/share/model/vmaf_v0.6.1.json", NULL, NULL, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 1, 0 } };
/* x265 input parameters
*