From 8bd688719481880b73a21143e57c3568ab5eca2a Mon Sep 17 00:00:00 2001 From: prigaux Date: Thu, 15 Feb 2007 13:28:34 +0000 Subject: [PATCH] Patch x264 on Linux to build cleanly on PPC Change bootstrap parameters to avoid SDL dependencies git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.8.0_beta2@343 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- contrib/Jamfile | 2 +- contrib/patch-x264-linux.patch | 388 ++++++++++++++++----------------- 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/contrib/Jamfile b/contrib/Jamfile index 2e740cb6a..5c7101602 100644 --- a/contrib/Jamfile +++ b/contrib/Jamfile @@ -187,7 +187,7 @@ if $(OS) != CYGWIN { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf mpeg4ip && tar xzf mpeg4ip.tar.gz && cd mpeg4ip && - ./bootstrap && make -C lib/mp4v2 libmp4v2.la && + ./bootstrap --disable-mp3lame --disable-faac --disable-x264 --disable-server --disable-player && make -C lib/mp4v2 libmp4v2.la && cp lib/mp4v2/.libs/libmp4v2.a $CONTRIB/lib && cp mpeg4ip_config.h include/mpeg4ip.h include/mpeg4ip_version.h \ include/mpeg4ip_win32.h lib/mp4v2/*.h $CONTRIB/include && diff --git a/contrib/patch-x264-linux.patch b/contrib/patch-x264-linux.patch index 9422c2d4f..3f1752d4c 100644 --- a/contrib/patch-x264-linux.patch +++ b/contrib/patch-x264-linux.patch @@ -1,194 +1,194 @@ -Index: /trunk/common/ppc/quant.c -=================================================================== ---- /trunk/common/ppc/quant.c (revision 601) -+++ /trunk/common/ppc/quant.c (revision 621) -@@ -18,8 +18,4 @@ - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. - *****************************************************************************/ -- --#ifdef HAVE_ALTIVEC_H --#include --#endif - - #include "common/common.h" -@@ -54,29 +50,29 @@ - temp2v = vec_xor(temp2v, mskB); \ - temp1v = vec_adds(temp1v, vec_and(mskA, one)); \ --vec_st(temp1v, (dct0), dct); \ -+vec_st(temp1v, (dct0), (int16_t*)dct); \ - temp2v = vec_adds(temp2v, vec_and(mskB, one)); \ --vec_st(temp2v, (dct1), dct); -+vec_st(temp2v, (dct1), (int16_t*)dct); - - void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f ) { - vector bool short mskA; -- vec_s32_t i_qbitsv; -+ vec_u32_t i_qbitsv; - vec_u16_t coefvA; - vec_u32_t multEvenvA, multOddvA; -- vec_u32_t mfvA; -+ vec_u16_t mfvA; - vec_s16_t zerov, one; -- vec_s32_t fV; -+ vec_u32_t fV; - - vector bool short mskB; - vec_u16_t coefvB; - vec_u32_t multEvenvB, multOddvB; -- vec_u32_t mfvB; -+ vec_u16_t mfvB; - - vec_s16_t temp1v, temp2v; - -- vect_sint_u qbits_u; -+ vect_int_u qbits_u; - qbits_u.s[0]=i_qbits; - i_qbitsv = vec_splat(qbits_u.v, 0); - -- vect_sint_u f_u; -+ vect_int_u f_u; - f_u.s[0]=f; - -@@ -114,16 +110,16 @@ - temp2v = vec_xor(temp2v, mskB); \ - temp1v = vec_add(temp1v, vec_and(mskA, one)); \ --vec_st(temp1v, (dct0), dct); \ -+vec_st(temp1v, (dct0), (int16_t*)dct); \ - temp2v = vec_add(temp2v, vec_and(mskB, one)); \ --vec_st(temp2v, (dct1), dct); -+vec_st(temp2v, (dct1), (int16_t*)dct); - - - void x264_quant_4x4_dc_altivec( int16_t dct[4][4], int i_quant_mf, int const i_qbits, int const f ) { - vector bool short mskA; -- vec_s32_t i_qbitsv; -+ vec_u32_t i_qbitsv; - vec_u16_t coefvA; - vec_u32_t multEvenvA, multOddvA; - vec_s16_t zerov, one; -- vec_s32_t fV; -+ vec_u32_t fV; - - vector bool short mskB; -@@ -133,15 +129,14 @@ - vec_s16_t temp1v, temp2v; - -- vec_u32_t mfv; -- vect_int_u mf_u; -+ vec_u16_t mfv; -+ vect_ushort_u mf_u; - mf_u.s[0]=i_quant_mf; - mfv = vec_splat( mf_u.v, 0 ); -- mfv = vec_packs( mfv, mfv); - -- vect_sint_u qbits_u; -+ vect_int_u qbits_u; - qbits_u.s[0]=i_qbits; - i_qbitsv = vec_splat(qbits_u.v, 0); - -- vect_sint_u f_u; -+ vect_int_u f_u; - f_u.s[0]=f; - fV = vec_splat(f_u.v, 0); -@@ -156,13 +151,15 @@ - void x264_quant_8x8_altivec( int16_t dct[8][8], int quant_mf[8][8], int const i_qbits, int const f ) { - vector bool short mskA; -- vec_s32_t i_qbitsv; -+ vec_u32_t i_qbitsv; - vec_u16_t coefvA; -- vec_s32_t multEvenvA, multOddvA, mfvA; -+ vec_u32_t multEvenvA, multOddvA; -+ vec_u16_t mfvA; - vec_s16_t zerov, one; -- vec_s32_t fV; -+ vec_u32_t fV; - - vector bool short mskB; - vec_u16_t coefvB; -- vec_u32_t multEvenvB, multOddvB, mfvB; -+ vec_u32_t multEvenvB, multOddvB; -+ vec_u16_t mfvB; - - vec_s16_t temp1v, temp2v; -@@ -172,5 +169,5 @@ - i_qbitsv = vec_splat(qbits_u.v, 0); - -- vect_sint_u f_u; -+ vect_int_u f_u; - f_u.s[0]=f; - fV = vec_splat(f_u.v, 0); -Index: /trunk/common/ppc/dct.c -=================================================================== ---- /trunk/common/ppc/dct.c (revision 604) -+++ /trunk/common/ppc/dct.c (revision 621) -@@ -61,6 +61,6 @@ - VEC_DCT( dct0v, dct1v, dct2v, dct3v, tmp0v, tmp1v, tmp2v, tmp3v ); - -- vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct); -- vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct); -+ vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, (int16_t*)dct); -+ vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, (int16_t*)dct); - } - -@@ -95,12 +95,12 @@ - VEC_DCT( dct4v, dct5v, dct6v, dct7v, tmp4v, tmp5v, tmp6v, tmp7v ); - -- vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct); -- vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct); -- vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32, dct); -- vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48, dct); -- vec_st(vec_perm(tmp0v, tmp1v, permLowv), 64, dct); -- vec_st(vec_perm(tmp2v, tmp3v, permLowv), 80, dct); -- vec_st(vec_perm(tmp4v, tmp5v, permLowv), 96, dct); -- vec_st(vec_perm(tmp6v, tmp7v, permLowv), 112, dct); -+ vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, (int16_t*)dct); -+ vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, (int16_t*)dct); -+ vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32, (int16_t*)dct); -+ vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48, (int16_t*)dct); -+ vec_st(vec_perm(tmp0v, tmp1v, permLowv), 64, (int16_t*)dct); -+ vec_st(vec_perm(tmp2v, tmp3v, permLowv), 80, (int16_t*)dct); -+ vec_st(vec_perm(tmp4v, tmp5v, permLowv), 96, (int16_t*)dct); -+ vec_st(vec_perm(tmp6v, tmp7v, permLowv), 112, (int16_t*)dct); - } - -@@ -312,6 +312,6 @@ - void x264_add8x8_idct8_altivec( uint8_t *dst, int16_t dct[8][8] ) - { -- vec_s16_t onev = vec_splat_s16(1); -- vec_s16_t twov = vec_splat_s16(2); -+ vec_u16_t onev = vec_splat_s16(1); -+ vec_u16_t twov = vec_splat_s16(2); - - dct[0][0] += 32; // rounding for the >>6 at the end -@@ -342,5 +342,5 @@ - vec_u8_t perm_ldv = vec_lvsl(0, dst); - vec_u8_t perm_stv = vec_lvsr(8, dst); -- vec_s16_t sixv = vec_splat_s16(6); -+ vec_u16_t sixv = vec_splat_s16(6); - 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); - LOAD_ZERO; -Index: /trunk/common/ppc/quant.h -=================================================================== ---- /trunk/common/ppc/quant.h (revision 601) -+++ /trunk/common/ppc/quant.h (revision 621) -@@ -19,4 +19,8 @@ - *****************************************************************************/ - -+#ifdef SYS_LINUX -+#include -+#endif -+ - #ifndef _PPC_QUANT_H - #define _PPC_QUANT_H 1 -@@ -28,8 +32,7 @@ - - typedef union { -- signed int s[4]; -- vector signed int v; --} vect_sint_u; -- -+ unsigned short s[8]; -+ vector unsigned short v; -+} vect_ushort_u; - - void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f ); +Index: /common/ppc/quant.c +=================================================================== +--- /common/ppc/quant.c (revision 601) ++++ /common/ppc/quant.c (revision 621) +@@ -18,8 +18,4 @@ + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + *****************************************************************************/ +- +-#ifdef HAVE_ALTIVEC_H +-#include +-#endif + + #include "common/common.h" +@@ -54,29 +50,29 @@ + temp2v = vec_xor(temp2v, mskB); \ + temp1v = vec_adds(temp1v, vec_and(mskA, one)); \ +-vec_st(temp1v, (dct0), dct); \ ++vec_st(temp1v, (dct0), (int16_t*)dct); \ + temp2v = vec_adds(temp2v, vec_and(mskB, one)); \ +-vec_st(temp2v, (dct1), dct); ++vec_st(temp2v, (dct1), (int16_t*)dct); + + void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f ) { + vector bool short mskA; +- vec_s32_t i_qbitsv; ++ vec_u32_t i_qbitsv; + vec_u16_t coefvA; + vec_u32_t multEvenvA, multOddvA; +- vec_u32_t mfvA; ++ vec_u16_t mfvA; + vec_s16_t zerov, one; +- vec_s32_t fV; ++ vec_u32_t fV; + + vector bool short mskB; + vec_u16_t coefvB; + vec_u32_t multEvenvB, multOddvB; +- vec_u32_t mfvB; ++ vec_u16_t mfvB; + + vec_s16_t temp1v, temp2v; + +- vect_sint_u qbits_u; ++ vect_int_u qbits_u; + qbits_u.s[0]=i_qbits; + i_qbitsv = vec_splat(qbits_u.v, 0); + +- vect_sint_u f_u; ++ vect_int_u f_u; + f_u.s[0]=f; + +@@ -114,16 +110,16 @@ + temp2v = vec_xor(temp2v, mskB); \ + temp1v = vec_add(temp1v, vec_and(mskA, one)); \ +-vec_st(temp1v, (dct0), dct); \ ++vec_st(temp1v, (dct0), (int16_t*)dct); \ + temp2v = vec_add(temp2v, vec_and(mskB, one)); \ +-vec_st(temp2v, (dct1), dct); ++vec_st(temp2v, (dct1), (int16_t*)dct); + + + void x264_quant_4x4_dc_altivec( int16_t dct[4][4], int i_quant_mf, int const i_qbits, int const f ) { + vector bool short mskA; +- vec_s32_t i_qbitsv; ++ vec_u32_t i_qbitsv; + vec_u16_t coefvA; + vec_u32_t multEvenvA, multOddvA; + vec_s16_t zerov, one; +- vec_s32_t fV; ++ vec_u32_t fV; + + vector bool short mskB; +@@ -133,15 +129,14 @@ + vec_s16_t temp1v, temp2v; + +- vec_u32_t mfv; +- vect_int_u mf_u; ++ vec_u16_t mfv; ++ vect_ushort_u mf_u; + mf_u.s[0]=i_quant_mf; + mfv = vec_splat( mf_u.v, 0 ); +- mfv = vec_packs( mfv, mfv); + +- vect_sint_u qbits_u; ++ vect_int_u qbits_u; + qbits_u.s[0]=i_qbits; + i_qbitsv = vec_splat(qbits_u.v, 0); + +- vect_sint_u f_u; ++ vect_int_u f_u; + f_u.s[0]=f; + fV = vec_splat(f_u.v, 0); +@@ -156,13 +151,15 @@ + void x264_quant_8x8_altivec( int16_t dct[8][8], int quant_mf[8][8], int const i_qbits, int const f ) { + vector bool short mskA; +- vec_s32_t i_qbitsv; ++ vec_u32_t i_qbitsv; + vec_u16_t coefvA; +- vec_s32_t multEvenvA, multOddvA, mfvA; ++ vec_u32_t multEvenvA, multOddvA; ++ vec_u16_t mfvA; + vec_s16_t zerov, one; +- vec_s32_t fV; ++ vec_u32_t fV; + + vector bool short mskB; + vec_u16_t coefvB; +- vec_u32_t multEvenvB, multOddvB, mfvB; ++ vec_u32_t multEvenvB, multOddvB; ++ vec_u16_t mfvB; + + vec_s16_t temp1v, temp2v; +@@ -172,5 +169,5 @@ + i_qbitsv = vec_splat(qbits_u.v, 0); + +- vect_sint_u f_u; ++ vect_int_u f_u; + f_u.s[0]=f; + fV = vec_splat(f_u.v, 0); +Index: /common/ppc/dct.c +=================================================================== +--- /common/ppc/dct.c (revision 604) ++++ /common/ppc/dct.c (revision 621) +@@ -61,6 +61,6 @@ + VEC_DCT( dct0v, dct1v, dct2v, dct3v, tmp0v, tmp1v, tmp2v, tmp3v ); + +- vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct); +- vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct); ++ vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, (int16_t*)dct); ++ vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, (int16_t*)dct); + } + +@@ -95,12 +95,12 @@ + VEC_DCT( dct4v, dct5v, dct6v, dct7v, tmp4v, tmp5v, tmp6v, tmp7v ); + +- vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, dct); +- vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, dct); +- vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32, dct); +- vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48, dct); +- vec_st(vec_perm(tmp0v, tmp1v, permLowv), 64, dct); +- vec_st(vec_perm(tmp2v, tmp3v, permLowv), 80, dct); +- vec_st(vec_perm(tmp4v, tmp5v, permLowv), 96, dct); +- vec_st(vec_perm(tmp6v, tmp7v, permLowv), 112, dct); ++ vec_st(vec_perm(tmp0v, tmp1v, permHighv), 0, (int16_t*)dct); ++ vec_st(vec_perm(tmp2v, tmp3v, permHighv), 16, (int16_t*)dct); ++ vec_st(vec_perm(tmp4v, tmp5v, permHighv), 32, (int16_t*)dct); ++ vec_st(vec_perm(tmp6v, tmp7v, permHighv), 48, (int16_t*)dct); ++ vec_st(vec_perm(tmp0v, tmp1v, permLowv), 64, (int16_t*)dct); ++ vec_st(vec_perm(tmp2v, tmp3v, permLowv), 80, (int16_t*)dct); ++ vec_st(vec_perm(tmp4v, tmp5v, permLowv), 96, (int16_t*)dct); ++ vec_st(vec_perm(tmp6v, tmp7v, permLowv), 112, (int16_t*)dct); + } + +@@ -312,6 +312,6 @@ + void x264_add8x8_idct8_altivec( uint8_t *dst, int16_t dct[8][8] ) + { +- vec_s16_t onev = vec_splat_s16(1); +- vec_s16_t twov = vec_splat_s16(2); ++ vec_u16_t onev = vec_splat_s16(1); ++ vec_u16_t twov = vec_splat_s16(2); + + dct[0][0] += 32; // rounding for the >>6 at the end +@@ -342,5 +342,5 @@ + vec_u8_t perm_ldv = vec_lvsl(0, dst); + vec_u8_t perm_stv = vec_lvsr(8, dst); +- vec_s16_t sixv = vec_splat_s16(6); ++ vec_u16_t sixv = vec_splat_s16(6); + 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); + LOAD_ZERO; +Index: /common/ppc/quant.h +=================================================================== +--- /common/ppc/quant.h (revision 601) ++++ /common/ppc/quant.h (revision 621) +@@ -19,4 +19,8 @@ + *****************************************************************************/ + ++#ifdef SYS_LINUX ++#include ++#endif ++ + #ifndef _PPC_QUANT_H + #define _PPC_QUANT_H 1 +@@ -28,8 +32,7 @@ + + typedef union { +- signed int s[4]; +- vector signed int v; +-} vect_sint_u; +- ++ unsigned short s[8]; ++ vector unsigned short v; ++} vect_ushort_u; + + void x264_quant_4x4_altivec( int16_t dct[4][4], int quant_mf[4][4], int const i_qbits, int const f ); -- 2.40.0