Mercurial > libavcodec.hg
diff ppc/mpegvideo_altivec.c @ 1839:b370288f004d libavcodec
Metrowerks CodeWarrior patches by (John Dalgliesh <johnd at defyne dot org>)
author | michael |
---|---|
date | Sat, 28 Feb 2004 15:03:53 +0000 |
parents | e8ff4783f188 |
children | 9241d99f7443 |
line wrap: on
line diff
--- a/ppc/mpegvideo_altivec.c Thu Feb 26 19:11:21 2004 +0000 +++ b/ppc/mpegvideo_altivec.c Sat Feb 28 15:03:53 2004 +0000 @@ -107,7 +107,9 @@ int lastNonZero; vector float row0, row1, row2, row3, row4, row5, row6, row7; vector float alt0, alt1, alt2, alt3, alt4, alt5, alt6, alt7; - const vector float zero = (const vector float)FOUROF(0.); + const_vector float zero = (const_vector float)FOUROF(0.); + // used after quantise step + int oldBaseValue = 0; // Load the data into the row/alt vectors { @@ -284,9 +286,6 @@ } } - // used after quantise step - int oldBaseValue = 0; - // perform the quantise step, using the floating point data // still in the row/alt registers { @@ -414,21 +413,23 @@ data7 = vec_max(vec_min(data7, max_q), min_q); } + { vector bool char zero_01, zero_23, zero_45, zero_67; vector signed char scanIndices_01, scanIndices_23, scanIndices_45, scanIndices_67; vector signed char negOne = vec_splat_s8(-1); vector signed char* scanPtr = (vector signed char*)(s->intra_scantable.inverse); + signed char lastNonZeroChar; // Determine the largest non-zero index. - zero_01 = vec_pack(vec_cmpeq(data0, (vector short)zero), - vec_cmpeq(data1, (vector short)zero)); - zero_23 = vec_pack(vec_cmpeq(data2, (vector short)zero), - vec_cmpeq(data3, (vector short)zero)); - zero_45 = vec_pack(vec_cmpeq(data4, (vector short)zero), - vec_cmpeq(data5, (vector short)zero)); - zero_67 = vec_pack(vec_cmpeq(data6, (vector short)zero), - vec_cmpeq(data7, (vector short)zero)); + zero_01 = vec_pack(vec_cmpeq(data0, (vector signed short)zero), + vec_cmpeq(data1, (vector signed short)zero)); + zero_23 = vec_pack(vec_cmpeq(data2, (vector signed short)zero), + vec_cmpeq(data3, (vector signed short)zero)); + zero_45 = vec_pack(vec_cmpeq(data4, (vector signed short)zero), + vec_cmpeq(data5, (vector signed short)zero)); + zero_67 = vec_pack(vec_cmpeq(data6, (vector signed short)zero), + vec_cmpeq(data7, (vector signed short)zero)); // 64 biggest values scanIndices_01 = vec_sel(scanPtr[0], negOne, zero_01); @@ -461,7 +462,6 @@ scanIndices_01 = vec_splat(scanIndices_01, 0); - signed char lastNonZeroChar; vec_ste(scanIndices_01, 0, &lastNonZeroChar); @@ -484,6 +484,7 @@ vec_st(data5, 80, data); vec_st(data6, 96, data); vec_st(data7, 112, data); + } } // special handling of block[0] @@ -562,7 +563,7 @@ } #else /* ALTIVEC_USE_REFERENCE_C_CODE */ { - register const vector short vczero = (const vector short)vec_splat_s16(0); + register const_vector signed short vczero = (const_vector signed short)vec_splat_s16(0); short __attribute__ ((aligned(16))) qmul8[] = { qmul, qmul, qmul, qmul, @@ -578,7 +579,7 @@ -qadd, -qadd, -qadd, -qadd, -qadd, -qadd, -qadd, -qadd }; - register vector short blockv, qmulv, qaddv, nqaddv, temp1; + register vector signed short blockv, qmulv, qaddv, nqaddv, temp1; register vector bool short blockv_null, blockv_neg; register short backup_0 = block[0]; register int j = 0;