diff options
author | Paul B Mahol <onemda@gmail.com> | 2019-10-12 21:41:50 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2019-10-13 23:43:42 +0200 |
commit | e835a9d30263ce16e2621d79ff1be9afd5274a60 (patch) | |
tree | e0a421d2d39e13700ae0a4d312bdd2f331e1d4d7 /libavfilter/vf_libvmaf.c | |
parent | 19587c9332f5be4f6bc6d7b2b8ef3fd21dfeaa01 (diff) | |
download | ffmpeg-e835a9d30263ce16e2621d79ff1be9afd5274a60.tar.gz |
avfilter/vf_libvmaf: fix filtering of >8 bit data
This is what reference does.
Diffstat (limited to 'libavfilter/vf_libvmaf.c')
-rw-r--r-- | libavfilter/vf_libvmaf.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c index 249e50c720..ed3a383709 100644 --- a/libavfilter/vf_libvmaf.c +++ b/libavfilter/vf_libvmaf.c @@ -110,6 +110,7 @@ FRAMESYNC_DEFINE_CLASS(libvmaf, LIBVMAFContext, fs); const type *main_ptr = (const type *) s->gmain->data[0]; \ \ float *ptr = ref_data; \ + float factor = 1.f / (1 << (bits - 8)); \ \ int h = s->height; \ int w = s->width; \ @@ -118,7 +119,7 @@ FRAMESYNC_DEFINE_CLASS(libvmaf, LIBVMAFContext, fs); \ for (i = 0; i < h; i++) { \ for ( j = 0; j < w; j++) { \ - ptr[j] = (float)ref_ptr[j]; \ + ptr[j] = ref_ptr[j] * factor; \ } \ ref_ptr += ref_stride / sizeof(*ref_ptr); \ ptr += stride / sizeof(*ptr); \ @@ -128,7 +129,7 @@ FRAMESYNC_DEFINE_CLASS(libvmaf, LIBVMAFContext, fs); \ for (i = 0; i < h; i++) { \ for (j = 0; j < w; j++) { \ - ptr[j] = (float)main_ptr[j]; \ + ptr[j] = main_ptr[j] * factor; \ } \ main_ptr += main_stride / sizeof(*main_ptr); \ ptr += stride / sizeof(*ptr); \ |