aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/ppc/mpegvideo_altivec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2004-02-28 15:03:53 +0000
committerMichael Niedermayer <michaelni@gmx.at>2004-02-28 15:03:53 +0000
commitaab34ca0c5bbffd06aaa3718151ef1662860da3a (patch)
treedfd94f11bf916fddfeca24aaedb838131e17b880 /libavcodec/ppc/mpegvideo_altivec.c
parent259630df425c51c7a0a8fca220a3128a6dc21efc (diff)
downloadffmpeg-aab34ca0c5bbffd06aaa3718151ef1662860da3a.tar.gz
Metrowerks CodeWarrior patches by (John Dalgliesh <johnd at defyne dot org>)
Originally committed as revision 2823 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ppc/mpegvideo_altivec.c')
-rw-r--r--libavcodec/ppc/mpegvideo_altivec.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/libavcodec/ppc/mpegvideo_altivec.c b/libavcodec/ppc/mpegvideo_altivec.c
index ae3170d91a..51b387792c 100644
--- a/libavcodec/ppc/mpegvideo_altivec.c
+++ b/libavcodec/ppc/mpegvideo_altivec.c
@@ -107,7 +107,9 @@ int dct_quantize_altivec(MpegEncContext* s,
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 @@ int dct_quantize_altivec(MpegEncContext* s,
}
}
- // 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 @@ int dct_quantize_altivec(MpegEncContext* s,
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 @@ int dct_quantize_altivec(MpegEncContext* s,
scanIndices_01 = vec_splat(scanIndices_01, 0);
- signed char lastNonZeroChar;
vec_ste(scanIndices_01, 0, &lastNonZeroChar);
@@ -484,6 +484,7 @@ int dct_quantize_altivec(MpegEncContext* s,
vec_st(data5, 80, data);
vec_st(data6, 96, data);
vec_st(data7, 112, data);
+ }
}
// special handling of block[0]
@@ -562,7 +563,7 @@ POWERPC_PERF_START_COUNT(altivec_dct_unquantize_h263_num, 1);
}
#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 @@ POWERPC_PERF_START_COUNT(altivec_dct_unquantize_h263_num, 1);
-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;