Index: swscale_internal.h =================================================================== RCS file: /cvsroot/mplayer/main/postproc/swscale_internal.h,v retrieving revision 1.10 diff -u -r1.10 swscale_internal.h --- swscale_internal.h 18 Sep 2004 00:08:16 -0000 1.10 +++ swscale_internal.h 2 Oct 2004 21:34:24 -0000 @@ -23,6 +23,12 @@ #include #endif +#ifdef CONFIG_DARWIN +#define AVV(x...) (x) +#else +#define AVV(x...) {x} +#endif + #include "../mp_msg.h" #define MSG_WARN(args...) mp_msg(MSGT_SWS,MSGL_WARN, ##args ) 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 2 Oct 2004 21:34:35 -0000 @@ -119,13 +119,13 @@ */ static const vector unsigned char - perm_rgb_0 = (vector unsigned char)(0x00,0x01,0x10,0x02,0x03,0x11,0x04,0x05, + 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 = (vector unsigned char)(0x0b,0x15,0x0c,0x0d,0x16,0x0e,0x0f,0x17, + 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 = (vector unsigned char)(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, + 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 = (vector unsigned char)(0x1a,0x06,0x07,0x1b,0x08,0x09,0x1c,0x0a, + 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) \ @@ -198,27 +198,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 +229,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 +324,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 +342,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 +403,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 +422,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 +461,25 @@ for (j=0;jflags & SWS_CPU_CAPS_ALTIVEC) == 0) + return; + + // vector signed short CY, CRV, CBU, CGU, CGV, OY, Y0; int64_t crv __attribute__ ((aligned(16))) = inv_table[0]; int64_t cbu __attribute__ ((aligned(16))) = inv_table[1]; int64_t cgu __attribute__ ((aligned(16))) = inv_table[2]; int64_t cgv __attribute__ ((aligned(16))) = inv_table[3]; int64_t cy = (1<<16)-1; int64_t oy = 0; - short tmp __attribute__ ((aligned(16))); - - if ((c->flags & SWS_CPU_CAPS_ALTIVEC) == 0) - return; - + union { + signed short tmp[8] __attribute__ ((aligned(16))); + vector signed short vec; + } buf; cy = (cy *c->contrast )>>17; crv= (crv*c->contrast * c->saturation)>>32; cbu= (cbu*c->contrast * c->saturation)>>32; @@ -586,7 +588,28 @@ oy -= 256*c->brightness; - tmp = cy; + buf.tmp[0] = cy; + buf.tmp[1] = oy; + buf.tmp[2] = crv>>3; + buf.tmp[3] = cbu>>3; + buf.tmp[4] = -(cgu>>1); + buf.tmp[5] = -(cgv>>1); + + c->CSHIFT = (vector unsigned short)AVV(2); + c->CY = vec_splat ((vector signed short)buf.vec, 0); + c->OY = vec_splat ((vector signed short)buf.vec, 1); + c->CRV = vec_splat ((vector signed short)buf.vec, 2); + c->CBU = vec_splat ((vector signed short)buf.vec, 3); + c->CGU = vec_splat ((vector signed short)buf.vec, 4); + c->CGV = vec_splat ((vector signed short)buf.vec, 5); +{ +int i; +char *v[6]={"cy","oy","crv","cbu","cgu","cgv"}; +for (i=0; i<6;i++) + printf(" %s %d ", v[i],buf.tmp[i] ); + printf("\n"); +} +/* CY = vec_lde (0, &tmp); CY = vec_splat (CY, 0); @@ -607,8 +630,8 @@ tmp = -(cgv>>1); CGV = vec_lde (0, &tmp); CGV = vec_splat (CGV, 0); - - c->CSHIFT = (vector unsigned short)(2); + + c->CSHIFT = (vector unsigned short)AVV(2); c->CY = CY; c->OY = OY; c->CRV = CRV; @@ -624,7 +647,7 @@ printf ("cgv: %hvx\n", CGV); printf ("cgu: %hvx\n", CGU); #endif - +*/ return; } @@ -637,15 +660,15 @@ { int i,j; short tmp __attribute__((aligned (16))); - short *p; + int16_t *p; short *f; vector signed short X,X0,X1,Y0,U0,V0,Y1,U1,V1,U,V; vector signed short R0,G0,B0,R1,G1,B1; 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;