summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authorpacman <pacman@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-17 05:01:46 +0000
committerpacman <pacman@b3059339-0415-0410-9bf9-f77b7e298cf2>2006-02-17 05:01:46 +0000
commit7aef655c0f9bc05b1cdf28785176132d3d4fd242 (patch)
treeff5d07348ec5d2aa6a64d98ab569010eaf859981 /postproc
parent74e03a35f100b7456fcc661c69e94fab274ec448 (diff)
downloadmpv-7aef655c0f9bc05b1cdf28785176132d3d4fd242.tar.bz2
mpv-7aef655c0f9bc05b1cdf28785176132d3d4fd242.tar.xz
Fix vec_clip for gcc's that don't handle (vector signed short){16} according
to spec; also convert a few vec_splat's to vec_splat_{s,u}* git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@17639 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/yuv2rgb_altivec.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/postproc/yuv2rgb_altivec.c b/postproc/yuv2rgb_altivec.c
index dee68b2f2e..0590a21c34 100644
--- a/postproc/yuv2rgb_altivec.c
+++ b/postproc/yuv2rgb_altivec.c
@@ -210,11 +210,9 @@ do { \
(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))AVV(235)), (typeof(x))AVV(16))
-
-#define vec_packclp_a(x,y) \
- (vector unsigned char)vec_pack (vec_clip (x), vec_clip (y))
+#define vec_clip_s16(x) \
+ vec_max (vec_min (x, (vector signed short)AVV(235,235,235,235,235,235,235,235)),\
+ (vector signed short)AVV(16, 16, 16, 16, 16, 16, 16, 16 ))
#define vec_packclp(x,y) \
(vector unsigned char)vec_packs \
@@ -747,7 +745,7 @@ void yuv2rgb_altivec_init_tables (SwsContext *c, const int inv_table[4],int brig
buf.tmp[5] = -((inv_table[3]>>1)*(contrast>>16)*(saturation>>16)); //cgv
- c->CSHIFT = (vector unsigned short)vec_splat((vector unsigned short)AVV(2),0);
+ c->CSHIFT = (vector unsigned short)vec_splat_u16(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);
@@ -781,8 +779,8 @@ altivec_yuv2packedX (SwsContext *c,
vector unsigned char R,G,B,pels[3];
vector unsigned char *out,*nout;
- vector signed short RND = vec_splat((vector signed short)AVV(1<<3),0);
- vector unsigned short SCL = vec_splat((vector unsigned short)AVV(4),0);
+ vector signed short RND = vec_splat_s16(1<<3);
+ vector unsigned short SCL = vec_splat_u16(4);
unsigned long scratch[16] __attribute__ ((aligned (16)));
vector signed short *YCoeffs, *CCoeffs;
@@ -819,10 +817,10 @@ altivec_yuv2packedX (SwsContext *c,
U = vec_sra (U, SCL);
V = vec_sra (V, SCL);
- Y0 = vec_clip (Y0);
- Y1 = vec_clip (Y1);
- U = vec_clip (U);
- V = vec_clip (V);
+ Y0 = vec_clip_s16 (Y0);
+ Y1 = vec_clip_s16 (Y1);
+ U = vec_clip_s16 (U);
+ V = vec_clip_s16 (V);
/* now we have
Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15
@@ -896,10 +894,10 @@ altivec_yuv2packedX (SwsContext *c,
U = vec_sra (U, SCL);
V = vec_sra (V, SCL);
- Y0 = vec_clip (Y0);
- Y1 = vec_clip (Y1);
- U = vec_clip (U);
- V = vec_clip (V);
+ Y0 = vec_clip_s16 (Y0);
+ Y1 = vec_clip_s16 (Y1);
+ U = vec_clip_s16 (U);
+ V = vec_clip_s16 (V);
/* now we have
Y0= y0 y1 y2 y3 y4 y5 y6 y7 Y1= y8 y9 y10 y11 y12 y13 y14 y15