Index: yuv2rgb_altivec.c =================================================================== RCS file: /cvsroot/mplayer/main/postproc/yuv2rgb_altivec.c,v retrieving revision 1.3 diff -u -r1.3 yuv2rgb_altivec.c --- yuv2rgb_altivec.c 17 Jul 2004 08:53:20 -0000 1.3 +++ yuv2rgb_altivec.c 30 Aug 2004 15:37:50 -0000 @@ -74,6 +74,12 @@ #include "../mangle.h" #include "../libvo/img_format.h" //FIXME try to reduce dependency of such stuff +#ifdef CONFIG_DARWIN +#define AVV(x...) (x) +#else +#define AVV(x...) {x} +#endif + #undef PROFILE_THE_BEAST #undef INC_SCALING @@ -119,14 +125,14 @@ */ static const vector unsigned char - perm_rgb_0 = (vector unsigned char)(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05, - 0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a), - perm_rgb_1 = (vector unsigned char)(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17, - 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f), - perm_rgb_2 = (vector unsigned char)(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, - 0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05), - perm_rgb_3 = (vector unsigned char)(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a, - 0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f); + perm_rgb_0 = (const vector unsigned char)AVV(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05, + 0x12,0x06,0x07,0x13,0x08,0x09,0x14,0x0a), + perm_rgb_1 = (const vector unsigned char)AVV(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17, + 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f), + perm_rgb_2 = (const vector unsigned char)AVV(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, + 0x00,0x01,0x18,0x02,0x03,0x19,0x04,0x05), + perm_rgb_3 = (const vector unsigned char)AVV(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a, + 0x0b,0x1d,0x0c,0x0d,0x1e,0x0e,0x0f,0x1f); #define vec_merge3(x2,x1,x0,y0,y1,y2) \ do { \ @@ -198,27 +204,27 @@ #define vec_unh(x) \ (vector signed short) \ - vec_perm(x,(typeof(x))(0),\ - (vector unsigned char)(0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\ + vec_perm(x,(typeof(x))AVV(0),\ + (vector unsigned char)AVV(0x10,0x00,0x10,0x01,0x10,0x02,0x10,0x03,\ 0x10,0x04,0x10,0x05,0x10,0x06,0x10,0x07)) #define vec_unl(x) \ (vector signed short) \ - vec_perm(x,(typeof(x))(0),\ - (vector unsigned char)(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\ + vec_perm(x,(typeof(x))AVV(0),\ + (vector unsigned char)AVV(0x10,0x08,0x10,0x09,0x10,0x0A,0x10,0x0B,\ 0x10,0x0C,0x10,0x0D,0x10,0x0E,0x10,0x0F)) #define vec_clip(x) \ - vec_max (vec_min (x, (typeof(x))(255)), (typeof(x))(0)) + vec_max (vec_min (x, (typeof(x))AVV(255)), (typeof(x))AVV(0)) #define vec_packclp_a(x,y) \ (vector unsigned char)vec_pack (vec_clip (x), vec_clip (y)) #define vec_packclp(x,y) \ (vector unsigned char)vec_packs \ - ((vector unsigned short)vec_max (x,(vector signed short) (0)), \ - (vector unsigned short)vec_max (y,(vector signed short) (0))) + ((vector unsigned short)vec_max (x,(vector signed short)AVV(0)), \ + (vector unsigned short)vec_max (y,(vector signed short)AVV(0))) -//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))(0)),a,a,a,ptr) +//#define out_pixels(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),a,a,a,ptr) static inline void cvtyuvtoRGB (SwsContext *c, @@ -229,8 +235,8 @@ Y = vec_mradds (Y, c->CY, c->OY); - U = vec_sub (U,(vector signed short)(128)); - V = vec_sub (V,(vector signed short)(128)); + U = vec_sub (U,(vector signed short)AVV(128)); + V = vec_sub (V,(vector signed short)AVV(128)); // ux = (CBU*(u<CSHIFT)+0x4000)>>15; ux = vec_sl (U, c->CSHIFT); @@ -324,8 +330,8 @@ align_perm = vec_lvsl (0, vi); \ v = (vector signed char)vec_perm (vivP[0], vivP[1], align_perm); \ \ - u = (vector signed char)vec_sub (u, (vector signed char)(128)); \ - v = (vector signed char)vec_sub (v, (vector signed char)(128)); \ + u = (vector signed char)vec_sub (u, (vector signed char)AVV(128)); \ + v = (vector signed char)vec_sub (v, (vector signed char)AVV(128)); \ U = vec_unpackh (u); \ V = vec_unpackh (v); \ \ @@ -342,18 +348,18 @@ \ /* ux = (CBU*(u<>15 */ \ ux = vec_sl (U, lCSHIFT); \ - ux = vec_mradds (ux, lCBU, (vector signed short)(0)); \ + ux = vec_mradds (ux, lCBU, (vector signed short)AVV(0)); \ ux0 = vec_mergeh (ux,ux); \ ux1 = vec_mergel (ux,ux); \ \ /* vx = (CRV*(v<>15; */ \ vx = vec_sl (V, lCSHIFT); \ - vx = vec_mradds (vx, lCRV, (vector signed short)(0)); \ + vx = vec_mradds (vx, lCRV, (vector signed short)AVV(0)); \ vx0 = vec_mergeh (vx,vx); \ vx1 = vec_mergel (vx,vx); \ \ /* uvx = ((CGU*u) + (CGV*v))>>15 */ \ - uvx = vec_mradds (U, lCGU, (vector signed short)(0)); \ + uvx = vec_mradds (U, lCGU, (vector signed short)AVV(0)); \ uvx = vec_mradds (V, lCGV, uvx); \ uvx0 = vec_mergeh (uvx,uvx); \ uvx1 = vec_mergel (uvx,uvx); \ @@ -403,10 +409,10 @@ } -#define out_abgr(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))(0)),c,b,a,ptr) -#define out_bgra(a,b,c,ptr) vec_mstrgb32(typeof(a),c,b,a,((typeof (a))(0)),ptr) -#define out_rgba(a,b,c,ptr) vec_mstrgb32(typeof(a),a,b,c,((typeof (a))(0)),ptr) -#define out_argb(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))(0)),a,b,c,ptr) +#define out_abgr(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),c,b,a,ptr) +#define out_bgra(a,b,c,ptr) vec_mstrgb32(typeof(a),c,b,a,((typeof (a))AVV(0)),ptr) +#define out_rgba(a,b,c,ptr) vec_mstrgb32(typeof(a),a,b,c,((typeof (a))AVV(0)),ptr) +#define out_argb(a,b,c,ptr) vec_mstrgb32(typeof(a),((typeof (a))AVV(0)),a,b,c,ptr) #define out_rgb24(a,b,c,ptr) vec_mstrgb24(a,b,c,ptr) #define out_bgr24(a,b,c,ptr) vec_mstrgb24(c,b,a,ptr) @@ -422,15 +428,15 @@ // 0123 4567 89ab cdef static const vector unsigned char - demux_u = (vector unsigned char)(0x10,0x00,0x10,0x00, + demux_u = (const vector unsigned char)AVV(0x10,0x00,0x10,0x00, 0x10,0x04,0x10,0x04, 0x10,0x08,0x10,0x08, 0x10,0x0c,0x10,0x0c), - demux_v = (vector unsigned char)(0x10,0x02,0x10,0x02, + demux_v = (const vector unsigned char)AVV(0x10,0x02,0x10,0x02, 0x10,0x06,0x10,0x06, 0x10,0x0A,0x10,0x0A, 0x10,0x0E,0x10,0x0E), - demux_y = (vector unsigned char)(0x10,0x01,0x10,0x03, + demux_y = (const vector unsigned char)AVV(0x10,0x01,0x10,0x03, 0x10,0x05,0x10,0x07, 0x10,0x09,0x10,0x0B, 0x10,0x0D,0x10,0x0F); @@ -461,25 +467,25 @@ for (j=0;jCSHIFT = (vector unsigned short)(2); + c->CSHIFT = (vector unsigned short)AVV(2); c->CY = CY; c->OY = OY; c->CRV = CRV; @@ -644,8 +650,8 @@ vector unsigned char R,G,B,pels[3]; vector unsigned char *out,*nout; - vector signed short RND = (vector signed short)(1<<3); - vector unsigned short SCL = (vector unsigned short)(4); + vector signed short RND = (vector signed short)AVV(1<<3); + vector unsigned short SCL = (vector unsigned short)AVV(4); unsigned long scratch[16] __attribute__ ((aligned (16))); vector signed short *vYCoeffsBank, *vCCoeffsBank;