From 963eca226e395601f89ee6fd1621e529c9d965f0 Mon Sep 17 00:00:00 2001 From: Guillaume Poirier Date: Sun, 17 Jun 2007 09:14:02 +0000 Subject: convert h264_deblock_q1 to an inline function. part 1/2 of fixing Altivec-accelerated H264 luma inloop filter Originally committed as revision 9348 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ppc/h264_altivec.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) (limited to 'libavcodec/ppc') diff --git a/libavcodec/ppc/h264_altivec.c b/libavcodec/ppc/h264_altivec.c index 9eccf2873d..4fc5538d70 100644 --- a/libavcodec/ppc/h264_altivec.c +++ b/libavcodec/ppc/h264_altivec.c @@ -741,24 +741,28 @@ static inline vector unsigned char h264_deblock_mask ( register vector unsigned } // out: p1 = clip((p2 + ((p0 + q0 + 1) >> 1)) >> 1, p1-tc0, p1+tc0) -#define h264_deblock_q1(p0, p1, p2, q0, tc0) { \ - \ - register vector unsigned char average = vec_avg(p0, q0); \ - register vector unsigned char temp; \ - register vector unsigned char uncliped; \ - register vector unsigned char ones; \ - register vector unsigned char max; \ - register vector unsigned char min; \ - \ - temp = vec_xor(average, p2); \ - average = vec_avg(average, p2); /*avg(p2, avg(p0, q0)) */ \ - ones = vec_splat_u8(1); \ - temp = vec_and(temp, ones); /*(p2^avg(p0, q0)) & 1 */ \ - uncliped = vec_subs(average, temp); /*(p2+((p0+q0+1)>>1))>>1 */\ - max = vec_adds(p1, tc0); \ - min = vec_subs(p1, tc0); \ - p1 = vec_max(min, uncliped); \ - p1 = vec_min(max, p1); \ +static inline void h264_deblock_q1(register vector unsigned char p0, + register vector unsigned char p1, + register vector unsigned char p2, + register vector unsigned char q0, + register vector unsigned char tc0) { + + register vector unsigned char average = vec_avg(p0, q0); + register vector unsigned char temp; + register vector unsigned char uncliped; + register vector unsigned char ones; + register vector unsigned char max; + register vector unsigned char min; + + temp = vec_xor(average, p2); + average = vec_avg(average, p2); /*avg(p2, avg(p0, q0)) */ + ones = vec_splat_u8(1); + temp = vec_and(temp, ones); /*(p2^avg(p0, q0)) & 1 */ + uncliped = vec_subs(average, temp); /*(p2+((p0+q0+1)>>1))>>1 */ + max = vec_adds(p1, tc0); + min = vec_subs(p1, tc0); + p1 = vec_max(min, uncliped); + p1 = vec_min(max, p1); } #define h264_deblock_p0_q0(p0, p1, q0, q1, tc0masked) { \ -- cgit v1.2.3