Hi,

> -enabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 1.5.2" 
> libvmaf.h compute_vmaf
> +enabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 2.0.0" 
> libvmaf.h vmaf_init

General question: Is it acceptable to drop support for libvmaf 1.x? I
saw that Fedora 33 is still on 1.x.

> -Obtain the VMAF (Video Multi-Method Assessment Fusion)
> -score between two input videos.
> +Calulate the VMAF (Video Multi-Method Assessment Fusion) score for a
> +reference/distorted pair of input videos.

These documentation improvements aren't related to the actual switch to
2.x, and should be in a separate commit.

>  @code{./configure --enable-libvmaf}.
> -If no model path is specified it uses the default model: 
> @code{vmaf_v0.6.1.pkl}.

Unless they are consequences of the switch, of course.

> -    {"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},
> -    {"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},
> -    {"phone_model",  "Invokes the phone model that will generate higher VMAF 
> scores.",  OFFSET(phone_model), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
> -    {"psnr",  "Enables computing psnr along with vmaf.",                     
>            OFFSET(psnr), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
> -    {"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},
> +    {"model", "Set the model to be used for computing vmaf.",                
>              OFFSET(model_cfg), AV_OPT_TYPE_STRING, 
> {.str="version=vmaf_v0.6.1"}, 0, 1, FLAGS},
> +    {"feature", "Set the feature to be used for computing vmaf.",            
>              OFFSET(feature_cfg), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, 
> FLAGS},
> +    {"log_path",  "Set the file path to be used to write log.",              
>              OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
> +    {"log_fmt",  "Set the format of the log (csv, json, xml, or sub).",      
>              OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str="xml"}, 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},


Some changes are easier to review, if you don't change all the
whitespace initially.

> +    if (err) return AVERROR(ENOMEM);

Line break.

> +    int err = 0;
> +    if (!str) return NULL;

Line break.

> +    if (!dict) goto fail;

Ditto, in several subsequent places.

> +    if (str_copy)
> +        av_free(str_copy);

No need to check for str_copy.

> +        e = NULL;
> +        while (e = av_dict_get(dict[i], "", e, AV_DICT_IGNORE_SUFFIX)) {

I believe the assigned value from "e = NULL" is never used.

>          .name         = "main",
>          .type         = AVMEDIA_TYPE_VIDEO,
> -    },{
> +    },
> +    {
>          .name         = "reference",

Unrelated style change.

Since it looks like a complete re-write, it doesn't look like support
for both old and new API seems feasible, right? Just wondering, I am
not the one to judge.

(And I cannot judge on the actual functionality.)

Oh, and you should probably bump at least libavfilter MICRO version -
not sure whether even MINOR is justified.

Cheers,
Moritz
_______________________________________________
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".

Reply via email to