]> granicus.if.org Git - handbrake/commitdiff
Patch to allow linux PPC to compile r608
authorprigaux <pri@nopapers.org>
Thu, 15 Feb 2007 08:55:26 +0000 (08:55 +0000)
committerprigaux <pri@nopapers.org>
Thu, 15 Feb 2007 08:55:26 +0000 (08:55 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.8.0_beta2@339 b64f7644-9d1e-0410-96f1-a4d463321fa5

contrib/patch-x264-linux.patch [new file with mode: 0644]

diff --git a/contrib/patch-x264-linux.patch b/contrib/patch-x264-linux.patch
new file mode 100644 (file)
index 0000000..9422c2d
--- /dev/null
@@ -0,0 +1,194 @@
+Index: /trunk/common/ppc/quant.c\r
+===================================================================\r
+--- /trunk/common/ppc/quant.c (revision 601)\r
++++ /trunk/common/ppc/quant.c (revision 621)\r
+@@ -18,8 +18,4 @@\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.\r
+ *****************************************************************************/\r
+-\r
+-#ifdef HAVE_ALTIVEC_H\r
+-#include <altivec.h>\r
+-#endif\r
\r
+ #include "common/common.h"\r
+@@ -54,29 +50,29 @@\r
+ temp2v = vec_xor(temp2v, mskB);                                              \\r
+ temp1v = vec_adds(temp1v, vec_and(mskA, one));                                \\r
+-vec_st(temp1v, (dct0), dct);                                                 \\r
++vec_st(temp1v, (dct0), (int16_t*)dct);                                        \\r
+ temp2v = vec_adds(temp2v, vec_and(mskB, one));                                \\r
+-vec_st(temp2v, (dct1), dct);\r
++vec_st(temp2v, (dct1), (int16_t*)dct);\r
+                 \r
+ void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f ) {\r
+     vector bool short mskA;\r
+-    vec_s32_t i_qbitsv;\r
++    vec_u32_t i_qbitsv;\r
+     vec_u16_t coefvA;\r
+     vec_u32_t multEvenvA, multOddvA;\r
+-    vec_u32_t mfvA;\r
++    vec_u16_t mfvA;\r
+     vec_s16_t zerov, one;\r
+-    vec_s32_t fV;\r
++    vec_u32_t fV;\r
\r
+     vector bool short mskB;\r
+     vec_u16_t coefvB;\r
+     vec_u32_t multEvenvB, multOddvB;\r
+-    vec_u32_t mfvB;\r
++    vec_u16_t mfvB;\r
\r
+     vec_s16_t temp1v, temp2v;\r
\r
+-    vect_sint_u qbits_u;\r
++    vect_int_u qbits_u;\r
+     qbits_u.s[0]=i_qbits;\r
+     i_qbitsv = vec_splat(qbits_u.v, 0);\r
\r
+-    vect_sint_u f_u;\r
++    vect_int_u f_u;\r
+     f_u.s[0]=f;\r
\r
+@@ -114,16 +110,16 @@\r
+ temp2v = vec_xor(temp2v, mskB);                                 \\r
+ temp1v = vec_add(temp1v, vec_and(mskA, one));                   \\r
+-vec_st(temp1v, (dct0), dct);                                    \\r
++vec_st(temp1v, (dct0), (int16_t*)dct);                          \\r
+ temp2v = vec_add(temp2v, vec_and(mskB, one));                   \\r
+-vec_st(temp2v, (dct1), dct);\r
++vec_st(temp2v, (dct1), (int16_t*)dct);\r
\r
\r
+ void x264_quant_4x4_dc_altivec( int16_t dct[4][4], int i_quant_mf, int const i_qbits, int const f ) {\r
+     vector bool short mskA;\r
+-    vec_s32_t i_qbitsv;\r
++    vec_u32_t i_qbitsv;\r
+     vec_u16_t coefvA;\r
+     vec_u32_t multEvenvA, multOddvA;\r
+     vec_s16_t zerov, one;\r
+-    vec_s32_t fV;\r
++    vec_u32_t fV;\r
\r
+     vector bool short mskB;\r
+@@ -133,15 +129,14 @@\r
+     vec_s16_t temp1v, temp2v;\r
\r
+-    vec_u32_t mfv;\r
+-    vect_int_u mf_u;\r
++    vec_u16_t mfv;\r
++    vect_ushort_u mf_u;\r
+     mf_u.s[0]=i_quant_mf;\r
+     mfv = vec_splat( mf_u.v, 0 );\r
+-    mfv = vec_packs( mfv, mfv);\r
\r
+-    vect_sint_u qbits_u;\r
++    vect_int_u qbits_u;\r
+     qbits_u.s[0]=i_qbits;\r
+     i_qbitsv = vec_splat(qbits_u.v, 0);\r
\r
+-    vect_sint_u f_u;\r
++    vect_int_u f_u;\r
+     f_u.s[0]=f;\r
+     fV = vec_splat(f_u.v, 0);\r
+@@ -156,13 +151,15 @@\r
+ void x264_quant_8x8_altivec( int16_t dct[8][8], int quant_mf[8][8], int const i_qbits, int const f ) {\r
+     vector bool short mskA;\r
+-    vec_s32_t i_qbitsv;\r
++    vec_u32_t i_qbitsv;\r
+     vec_u16_t coefvA;\r
+-    vec_s32_t multEvenvA, multOddvA, mfvA;\r
++    vec_u32_t multEvenvA, multOddvA;\r
++    vec_u16_t mfvA;\r
+     vec_s16_t zerov, one;\r
+-    vec_s32_t fV;\r
++    vec_u32_t fV;\r
+     \r
+     vector bool short mskB;\r
+     vec_u16_t coefvB;\r
+-    vec_u32_t multEvenvB, multOddvB, mfvB;\r
++    vec_u32_t multEvenvB, multOddvB;\r
++    vec_u16_t mfvB;\r
+     \r
+     vec_s16_t temp1v, temp2v;\r
+@@ -172,5 +169,5 @@\r
+     i_qbitsv = vec_splat(qbits_u.v, 0);\r
\r
+-    vect_sint_u f_u;\r
++    vect_int_u f_u;\r
+     f_u.s[0]=f;\r
+     fV = vec_splat(f_u.v, 0);\r
+Index: /trunk/common/ppc/dct.c\r
+===================================================================\r
+--- /trunk/common/ppc/dct.c (revision 604)\r
++++ /trunk/common/ppc/dct.c (revision 621)\r
+@@ -61,6 +61,6 @@\r
+     VEC_DCT( dct0v, dct1v, dct2v, dct3v, tmp0v, tmp1v, tmp2v, tmp3v );\r
\r
+-    vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct);\r
+-    vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct);\r
++    vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, (int16_t*)dct);\r
+ }\r
\r
+@@ -95,12 +95,12 @@\r
+     VEC_DCT( dct4v, dct5v, dct6v, dct7v, tmp4v, tmp5v, tmp6v, tmp7v );\r
\r
+-    vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct);\r
+-    vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct);\r
+-    vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32, dct);\r
+-    vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48, dct);\r
+-    vec_st(vec_perm(tmp0v, tmp1v, permLowv),  64, dct);\r
+-    vec_st(vec_perm(tmp2v, tmp3v, permLowv), 80, dct);\r
+-    vec_st(vec_perm(tmp4v, tmp5v, permLowv), 96, dct);\r
+-    vec_st(vec_perm(tmp6v, tmp7v, permLowv), 112, dct);\r
++    vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0,   (int16_t*)dct);\r
++    vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp0v, tmp1v, permLowv),  64,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp2v, tmp3v, permLowv),  80,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp4v, tmp5v, permLowv),  96,  (int16_t*)dct);\r
++    vec_st(vec_perm(tmp6v, tmp7v, permLowv),  112, (int16_t*)dct);\r
+ }\r
\r
+@@ -312,6 +312,6 @@\r
+ void x264_add8x8_idct8_altivec( uint8_t *dst, int16_t dct[8][8] )\r
+ {\r
+-    vec_s16_t onev = vec_splat_s16(1);\r
+-    vec_s16_t twov = vec_splat_s16(2);\r
++    vec_u16_t onev = vec_splat_s16(1);\r
++    vec_u16_t twov = vec_splat_s16(2);\r
\r
+     dct[0][0] += 32; // rounding for the >>6 at the end\r
+@@ -342,5 +342,5 @@\r
+     vec_u8_t perm_ldv = vec_lvsl(0, dst);\r
+     vec_u8_t perm_stv = vec_lvsr(8, dst);\r
+-    vec_s16_t sixv = vec_splat_s16(6);\r
++    vec_u16_t sixv = vec_splat_s16(6);\r
+     const vec_u8_t sel = (vec_u8_t) CV(0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1);\r
+     LOAD_ZERO;\r
+Index: /trunk/common/ppc/quant.h\r
+===================================================================\r
+--- /trunk/common/ppc/quant.h (revision 601)\r
++++ /trunk/common/ppc/quant.h (revision 621)\r
+@@ -19,4 +19,8 @@\r
+ *****************************************************************************/\r
\r
++#ifdef SYS_LINUX\r
++#include <altivec.h>\r
++#endif\r
++\r
+ #ifndef _PPC_QUANT_H\r
+ #define _PPC_QUANT_H 1\r
+@@ -28,8 +32,7 @@\r
\r
+ typedef union {\r
+-  signed int s[4];\r
+-  vector signed int v;\r
+-} vect_sint_u;\r
+-\r
++  unsigned short s[8];\r
++  vector unsigned short v;\r
++} vect_ushort_u;\r
\r
+ void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f );\r