videoscale: Fix ARGB bilinear scaling
authorDavid Schleef <ds@schleef.org>
Mon, 25 Apr 2011 01:16:20 +0000 (18:16 -0700)
committerDavid Schleef <ds@schleef.org>
Mon, 25 Apr 2011 01:22:23 +0000 (18:22 -0700)
Fixes #648548.  Orc generates bad code for
gst_videoscale_orc_resample_merge_bilinear_u32, so we'll use the
slightly slower two-stage process.  I'd fix Orc, but it's hard to
get excited about fixing a feature that I'm planning to deprecate
and replace.

gst/videoscale/vs_image.c

index 6716eba..e2368fe 100644 (file)
@@ -121,15 +121,12 @@ vs_image_scale_linear_RGBA (const VSImage * dest, const VSImage * src,
         y1++;
       }
       if (j >= y1) {
-        gst_videoscale_orc_resample_merge_bilinear_u32 (dest->pixels +
-            i * dest->stride, LINE (j + 1), LINE (j),
-            src->pixels + (j + 1) * src->stride, (x >> 8), 0, x_increment,
-            dest->width);
+        gst_videoscale_orc_resample_bilinear_u32 (LINE (j),
+            src->pixels + j * src->stride, 0, x_increment, dest->width);
         y1++;
-      } else {
-        orc_merge_linear_u8 (dest->pixels + i * dest->stride,
-            LINE (j), LINE (j + 1), (x >> 8), dest->width * 4);
       }
+      orc_merge_linear_u8 (dest->pixels + i * dest->stride,
+          LINE (j), LINE (j + 1), (x >> 8), dest->width * 4);
     }
 
     acc += y_increment;