avcodec/jpeg2000dwt: Fix 9/7 IDWT for small sizes
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 16 Jun 2015 18:33:54 +0000 (20:33 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 16 Jun 2015 18:33:54 +0000 (20:33 +0200)
Fixes Ticket4631

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/jpeg2000dwt.c

index a5eb0b7..dba8393 100644 (file)
@@ -357,8 +357,11 @@ static void sr_1d97_float(float *p, int i0, int i1)
 {
     int i;
 
-    if (i1 == i0 + 1)
+    if (i1 <= i0 + 1) {
+        if (i0 == 1)
+            p[1] *= F_LFTG_K/2;
         return;
+    }
 
     extend97_float(p, i0, i1);
 
@@ -429,8 +432,11 @@ static void sr_1d97_int(int32_t *p, int i0, int i1)
 {
     int i;
 
-    if (i1 == i0 + 1)
+    if (i1 <= i0 + 1) {
+        if (i0 == 1)
+            p[1] = (p[1] * I_LFTG_K + (1<<16)) >> 17;
         return;
+    }
 
     extend97_int(p, i0, i1);