Mercurial > libavcodec.hg
diff ppc/mpegvideo_altivec.c @ 1033:b4172ff70d27 libavcodec
Altivec on non darwin systems patch by Romain Dolbeau
author | bellard |
---|---|
date | Sun, 26 Jan 2003 22:29:47 +0000 |
parents | 35cf2f4a0f8c |
children | f59c3f66363b |
line wrap: on
line diff
--- a/ppc/mpegvideo_altivec.c Thu Jan 23 23:18:42 2003 +0000 +++ b/ppc/mpegvideo_altivec.c Sun Jan 26 22:29:47 2003 +0000 @@ -90,6 +90,13 @@ vec = vec_splat(vec, 0); \ } + +#ifdef CONFIG_DARWIN +#define FOUROF(a) (a) +#else +// slower, for dumb non-apple GCC +#define FOUROF(a) {a,a,a,a} +#endif int dct_quantize_altivec(MpegEncContext* s, DCTELEM* data, int n, int qscale, int* overflow) @@ -97,7 +104,7 @@ 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)(0.0f); + const vector float zero = (const vector float)FOUROF(0.); // Load the data into the row/alt vectors { @@ -141,18 +148,18 @@ // in the vector local variables, as floats, which we'll use during the // quantize step... { - const vector float vec_0_298631336 = (vector float)(0.298631336f); - const vector float vec_0_390180644 = (vector float)(-0.390180644f); - const vector float vec_0_541196100 = (vector float)(0.541196100f); - const vector float vec_0_765366865 = (vector float)(0.765366865f); - const vector float vec_0_899976223 = (vector float)(-0.899976223f); - const vector float vec_1_175875602 = (vector float)(1.175875602f); - const vector float vec_1_501321110 = (vector float)(1.501321110f); - const vector float vec_1_847759065 = (vector float)(-1.847759065f); - const vector float vec_1_961570560 = (vector float)(-1.961570560f); - const vector float vec_2_053119869 = (vector float)(2.053119869f); - const vector float vec_2_562915447 = (vector float)(-2.562915447f); - const vector float vec_3_072711026 = (vector float)(3.072711026f); + const vector float vec_0_298631336 = (vector float)FOUROF(0.298631336f); + const vector float vec_0_390180644 = (vector float)FOUROF(-0.390180644f); + const vector float vec_0_541196100 = (vector float)FOUROF(0.541196100f); + const vector float vec_0_765366865 = (vector float)FOUROF(0.765366865f); + const vector float vec_0_899976223 = (vector float)FOUROF(-0.899976223f); + const vector float vec_1_175875602 = (vector float)FOUROF(1.175875602f); + const vector float vec_1_501321110 = (vector float)FOUROF(1.501321110f); + const vector float vec_1_847759065 = (vector float)FOUROF(-1.847759065f); + const vector float vec_1_961570560 = (vector float)FOUROF(-1.961570560f); + const vector float vec_2_053119869 = (vector float)FOUROF(2.053119869f); + const vector float vec_2_562915447 = (vector float)FOUROF(-2.562915447f); + const vector float vec_3_072711026 = (vector float)FOUROF(3.072711026f); int whichPass, whichHalf; @@ -306,7 +313,7 @@ // rounding when we convert to int, instead of flooring.) { vector signed int biasInt; - const vector float negOneFloat = (vector float)(-1.0f); + const vector float negOneFloat = (vector float)FOUROF(-1.0f); LOAD4(biasInt, biasAddr); bias = vec_ctf(biasInt, QUANT_BIAS_SHIFT); negBias = vec_madd(bias, negOneFloat, zero); @@ -503,6 +510,7 @@ return lastNonZero; } +#undef FOUROF /* AltiVec version of dct_unquantize_h263 @@ -551,7 +559,7 @@ } #else /* ALTIVEC_USE_REFERENCE_C_CODE */ { - register const vector short vczero = (const vector short)(0); + register const vector short vczero = (const vector short)vec_splat_s16(0); short __attribute__ ((aligned(16))) qmul8[] = { qmul, qmul, qmul, qmul,