shithub: dav1d

Download patch

ref: 91b0af2fa2572dfbb22700183c70eefa61136c33
parent: 1ffbeda00def479c554b46ad5f2fd29480d56906
author: Ronald S. Bultje <rsbultje@gmail.com>
date: Fri Aug 30 03:38:05 EDT 2019

Apply high-bitdepth adjustment of pixel index after delta calculation

Fixes libaom/dav1d mismatch in av1-1-b10-23-film_grain-50.ivf.

--- a/src/film_grain_tmpl.c
+++ b/src/film_grain_tmpl.c
@@ -180,16 +180,16 @@
 
     // Linearly interpolate the values in the middle
     for (int i = 0; i < num - 1; i++) {
-        const int bx = points[i][0] << shift_x;
+        const int bx = points[i][0];
         const int by = points[i][1];
-        const int ex = points[i+1][0] << shift_x;
+        const int ex = points[i+1][0];
         const int ey = points[i+1][1];
         const int dx = ex - bx;
         const int dy = ey - by;
         const int delta = dy * ((0x10000 + (dx >> 1)) / dx);
-        for (int x = 0; x < dx; x += pad) {
+        for (int x = 0; x < dx; x++) {
             const int v = by + ((x * delta + 0x8000) >> 16);
-            scaling[bx + x] = v;
+            scaling[(bx + x) << shift_x] = v;
         }
     }