[x264-devel] arm: implement x264_predict_4x4_v_armv6

Janne Grunau git at videolan.org
Wed Apr 23 00:40:56 CEST 2014


x264 | branch: master | Janne Grunau <janne-x264 at jannau.net> | Thu Mar 13 01:02:13 2014 +0100| [b219028bcf1a65add10e0af3ac04b81da8e62c4d] | committer: Jason Garrett-Glaser

arm: implement x264_predict_4x4_v_armv6

Alone probably not worth it but allows use of predict_4x4_dc|h_armv6
in intra_sad|satd_x3_4x4_neon.

> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=b219028bcf1a65add10e0af3ac04b81da8e62c4d
---

 common/arm/predict-a.S |    9 +++++++++
 common/arm/predict-c.c |    1 +
 common/arm/predict.h   |    3 +++
 common/pixel.c         |    4 ++--
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/common/arm/predict-a.S b/common/arm/predict-a.S
index ed805b5..ca28ff8 100644
--- a/common/arm/predict-a.S
+++ b/common/arm/predict-a.S
@@ -79,6 +79,15 @@ function x264_predict_4x4_h_armv6
     bx      lr
 .endfunc
 
+function x264_predict_4x4_v_armv6
+    ldr     r1,  [r0, #0 - 1 * FDEC_STRIDE]
+    str     r1,  [r0, #0 + 0 * FDEC_STRIDE]
+    str     r1,  [r0, #0 + 1 * FDEC_STRIDE]
+    str     r1,  [r0, #0 + 2 * FDEC_STRIDE]
+    str     r1,  [r0, #0 + 3 * FDEC_STRIDE]
+    bx      lr
+.endfunc
+
 function x264_predict_4x4_dc_armv6
     mov     ip, #0
     ldr     r1, [r0, #-FDEC_STRIDE]
diff --git a/common/arm/predict-c.c b/common/arm/predict-c.c
index 204051b..b9ad262 100644
--- a/common/arm/predict-c.c
+++ b/common/arm/predict-c.c
@@ -64,6 +64,7 @@ void x264_predict_4x4_init_arm( int cpu, x264_predict_t pf[12] )
 
 #if !HIGH_BIT_DEPTH
     pf[I_PRED_4x4_H]   = x264_predict_4x4_h_armv6;
+    pf[I_PRED_4x4_V]   = x264_predict_4x4_v_armv6;
     pf[I_PRED_4x4_DC]  = x264_predict_4x4_dc_armv6;
     pf[I_PRED_4x4_DDR] = x264_predict_4x4_ddr_armv6;
 
diff --git a/common/arm/predict.h b/common/arm/predict.h
index 6cf2f5f..26e1e93 100644
--- a/common/arm/predict.h
+++ b/common/arm/predict.h
@@ -26,6 +26,9 @@
 #ifndef X264_ARM_PREDICT_H
 #define X264_ARM_PREDICT_H
 
+void x264_predict_4x4_dc_armv6( uint8_t *src );
+void x264_predict_4x4_v_armv6( uint8_t *src );
+void x264_predict_4x4_h_armv6( uint8_t *src );
 void x264_predict_8x8_v_neon( pixel *src, pixel edge[36] );
 void x264_predict_8x8_h_neon( pixel *src, pixel edge[36] );
 void x264_predict_8x8_dc_neon( pixel *src, pixel edge[36] );
diff --git a/common/pixel.c b/common/pixel.c
index b389792..f164733 100644
--- a/common/pixel.c
+++ b/common/pixel.c
@@ -593,8 +593,8 @@ INTRA_MBCMP(satd,  8x16, dc, h,  v, c, _xop, _mmx2 )
 #endif
 #endif
 #if !HIGH_BIT_DEPTH && HAVE_ARMV6
-INTRA_MBCMP( sad,  4x4,   v, h, dc,  , _neon, _c )
-INTRA_MBCMP(satd,  4x4,   v, h, dc,  , _neon, _c )
+INTRA_MBCMP( sad,  4x4,   v, h, dc,  , _neon, _armv6 )
+INTRA_MBCMP(satd,  4x4,   v, h, dc,  , _neon, _armv6 )
 INTRA_MBCMP( sad,  8x8,  dc, h,  v, c, _neon, _neon )
 INTRA_MBCMP(satd,  8x8,  dc, h,  v, c, _neon, _neon )
 INTRA_MBCMP( sad,  8x16, dc, h,  v, c, _neon, _c )



More information about the x264-devel mailing list