[FFmpeg-cvslog] ppc: fix vc1 inverse transform, unbreak build

Mans Rullgard git
Tue Feb 22 03:17:18 CET 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Mon Feb 21 19:15:38 2011 +0000| [e407f4173a0ab89fe9ab57e228f7ec0467a24ca4] | committer: Michael Niedermayer

ppc: fix vc1 inverse transform, unbreak build

GCC 4.3 and later are more particular about signedness matching
in vector operations.  The operations under if(rangered) were
missing assignments and thus had no effect.

Signed-off-by: Mans Rullgard <mans at mansr.com>
(cherry picked from commit 381efba0ecedd41575f99ba9e9bd3826551079f6)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=e407f4173a0ab89fe9ab57e228f7ec0467a24ca4
---

 libavcodec/ppc/vc1dsp_altivec.c |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/libavcodec/ppc/vc1dsp_altivec.c b/libavcodec/ppc/vc1dsp_altivec.c
index b5cc71c..05edb53 100644
--- a/libavcodec/ppc/vc1dsp_altivec.c
+++ b/libavcodec/ppc/vc1dsp_altivec.c
@@ -146,7 +146,7 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64],
     const vector  signed int vec_1s = vec_splat_s32(1);
     const vector unsigned int vec_1 = vec_splat_u32(1);
     const vector unsigned short rangered_shift = vec_splat_u16(1);
-    const vector   signed short signed_bias = vec_sl(vec_splat_u16(4),
+    const vector   signed short signed_bias = vec_sl(vec_splat_s16(4),
                                                      vec_splat_u16(4));
 
     src0 = vec_ld(  0, block);
@@ -219,23 +219,23 @@ static void vc1_inv_trans_8x8_altivec(DCTELEM block[64],
 
     if (rangered) {
         if (!sign) {
-            vec_sub(src0, signed_bias);
-            vec_sub(src1, signed_bias);
-            vec_sub(src2, signed_bias);
-            vec_sub(src3, signed_bias);
-            vec_sub(src4, signed_bias);
-            vec_sub(src5, signed_bias);
-            vec_sub(src6, signed_bias);
-            vec_sub(src7, signed_bias);
+            src0 = vec_sub(src0, signed_bias);
+            src1 = vec_sub(src1, signed_bias);
+            src2 = vec_sub(src2, signed_bias);
+            src3 = vec_sub(src3, signed_bias);
+            src4 = vec_sub(src4, signed_bias);
+            src5 = vec_sub(src5, signed_bias);
+            src6 = vec_sub(src6, signed_bias);
+            src7 = vec_sub(src7, signed_bias);
         }
-        vec_sl(src0, rangered_shift);
-        vec_sl(src1, rangered_shift);
-        vec_sl(src2, rangered_shift);
-        vec_sl(src3, rangered_shift);
-        vec_sl(src4, rangered_shift);
-        vec_sl(src5, rangered_shift);
-        vec_sl(src6, rangered_shift);
-        vec_sl(src7, rangered_shift);
+        src0 = vec_sl(src0, rangered_shift);
+        src1 = vec_sl(src1, rangered_shift);
+        src2 = vec_sl(src2, rangered_shift);
+        src3 = vec_sl(src3, rangered_shift);
+        src4 = vec_sl(src4, rangered_shift);
+        src5 = vec_sl(src5, rangered_shift);
+        src6 = vec_sl(src6, rangered_shift);
+        src7 = vec_sl(src7, rangered_shift);
     }
 
     vec_st(src0,  0, block);




More information about the ffmpeg-cvslog mailing list