changeset 5164:830b9dd36fef libavcodec

convert h264_deblock_q1 to an inline function. part 1/2 of fixing Altivec-accelerated H264 luma inloop filter
author gpoirier
date Sun, 17 Jun 2007 09:14:02 +0000
parents 9ecbfc0c82bf
children c99fa49eaa80
files ppc/h264_altivec.c
diffstat 1 files changed, 22 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/ppc/h264_altivec.c	Sun Jun 17 00:01:30 2007 +0000
+++ b/ppc/h264_altivec.c	Sun Jun 17 09:14:02 2007 +0000
@@ -741,24 +741,28 @@
 }
 
 // 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) {                                           \