diff options
author | titer <eric@lapsus.org> | 2006-02-01 06:54:14 +0000 |
---|---|---|
committer | titer <eric@lapsus.org> | 2006-02-01 06:54:14 +0000 |
commit | 518b6e989690c17a12f17ad26d9da7b03b7d2996 (patch) | |
tree | ba618b478808ab33f9af265236577b40f12b15db | |
parent | 2d3032c28c89cead061987739ccc3c32fb2d8cf5 (diff) |
Update FFmpeg and use Sam's patch (from VLC) to enable MMX optims on MacIntels
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@22 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | contrib/Jamfile | 8 | ||||
-rw-r--r-- | contrib/ffmpeg.patch | 602 | ||||
-rw-r--r-- | contrib/version_ffmpeg.txt | 2 |
3 files changed, 610 insertions, 2 deletions
diff --git a/contrib/Jamfile b/contrib/Jamfile index 643840386..3271a46ee 100644 --- a/contrib/Jamfile +++ b/contrib/Jamfile @@ -44,7 +44,12 @@ rule LibAvCodec { if $(OS) = MACOSX && $(OSPLAT) = X86 { - FFMPEG_OPTIONS = --disable-mmx ; + FFMPEG_OPTIONS = --enable-memalign-hack ; + FFMPEG_PATCH = "patch -p1 < ../ffmpeg.patch" ; + } + else + { + FFMPEG_PATCH = true ; } Depends $(<) : $(>) ; Depends lib : $(<) ; @@ -53,6 +58,7 @@ actions LibAvCodec { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf ffmpeg && tar xzf ffmpeg.tar.gz && cd ffmpeg && + $(FFMPEG_PATCH) && ./configure --prefix=$CONTRIB $(FFMPEG_OPTIONS) --enable-gpl && make -C libavcodec && make -C libavutil && make -C libavcodec installlib && make -C libavutil installlib && diff --git a/contrib/ffmpeg.patch b/contrib/ffmpeg.patch new file mode 100644 index 000000000..c507502c2 --- /dev/null +++ b/contrib/ffmpeg.patch @@ -0,0 +1,602 @@ +diff -ru ffmpeg.orig/libavcodec/i386/dsputil_mmx.c ffmpeg/libavcodec/i386/dsputil_mmx.c +--- ffmpeg.orig/libavcodec/i386/dsputil_mmx.c 2006-01-12 23:43:17.000000000 +0100 ++++ ffmpeg/libavcodec/i386/dsputil_mmx.c 2006-02-01 06:10:53.000000000 +0100 +@@ -52,7 +52,7 @@ + static const uint64_t ff_pb_3F attribute_used __attribute__ ((aligned(8))) = 0x3F3F3F3F3F3F3F3FULL; + static const uint64_t ff_pb_FC attribute_used __attribute__ ((aligned(8))) = 0xFCFCFCFCFCFCFCFCULL; + +-#define JUMPALIGN() __asm __volatile (".balign 8"::) ++#define JUMPALIGN() __asm __volatile (".p2align 3"::) + #define MOVQ_ZERO(regd) __asm __volatile ("pxor %%" #regd ", %%" #regd ::) + + #define MOVQ_WONE(regd) \ +@@ -195,7 +195,7 @@ + asm volatile( + "mov $-128, %%"REG_a" \n\t" + "pxor %%mm7, %%mm7 \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0), %%mm0 \n\t" + "movq (%0, %2), %%mm2 \n\t" +@@ -223,7 +223,7 @@ + asm volatile( + "pxor %%mm7, %%mm7 \n\t" + "mov $-128, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0), %%mm0 \n\t" + "movq (%1), %%mm2 \n\t" +@@ -366,7 +366,7 @@ + { + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movd (%1), %%mm0 \n\t" + "movd (%1, %3), %%mm1 \n\t" +@@ -392,7 +392,7 @@ + { + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq (%1, %3), %%mm1 \n\t" +@@ -418,7 +418,7 @@ + { + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq 8(%1), %%mm4 \n\t" +diff -ru ffmpeg.orig/libavcodec/i386/dsputil_mmx_avg.h ffmpeg/libavcodec/i386/dsputil_mmx_avg.h +--- ffmpeg.orig/libavcodec/i386/dsputil_mmx_avg.h 2006-01-12 23:43:17.000000000 +0100 ++++ ffmpeg/libavcodec/i386/dsputil_mmx_avg.h 2006-02-01 06:10:53.000000000 +0100 +@@ -754,7 +754,7 @@ + "lea (%3, %3), %%"REG_a" \n\t" + "movq (%1), %%mm0 \n\t" + PAVGB" 1(%1), %%mm0 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm2 \n\t" + "movq (%1, %3), %%mm1 \n\t" +diff -ru ffmpeg.orig/libavcodec/i386/dsputil_mmx_rnd.h ffmpeg/libavcodec/i386/dsputil_mmx_rnd.h +--- ffmpeg.orig/libavcodec/i386/dsputil_mmx_rnd.h 2006-01-12 23:43:17.000000000 +0100 ++++ ffmpeg/libavcodec/i386/dsputil_mmx_rnd.h 2006-02-01 06:10:53.000000000 +0100 +@@ -28,7 +28,7 @@ + MOVQ_BFE(mm6); + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq 1(%1), %%mm1 \n\t" +@@ -69,7 +69,7 @@ + "movq %%mm4, (%3) \n\t" + "add %5, %3 \n\t" + "decl %0 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq (%2), %%mm1 \n\t" +@@ -110,7 +110,7 @@ + MOVQ_BFE(mm6); + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq 1(%1), %%mm1 \n\t" +@@ -168,7 +168,7 @@ + "movq %%mm5, 8(%3) \n\t" + "add %5, %3 \n\t" + "decl %0 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1), %%mm0 \n\t" + "movq (%2), %%mm1 \n\t" +@@ -206,7 +206,7 @@ + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" + "movq (%1), %%mm0 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1, %3), %%mm1 \n\t" + "movq (%1, %%"REG_a"),%%mm2 \n\t" +@@ -246,7 +246,7 @@ + "paddusw %%mm1, %%mm5 \n\t" + "xor %%"REG_a", %%"REG_a" \n\t" + "add %3, %1 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq 1(%1, %%"REG_a"), %%mm2 \n\t" +@@ -458,7 +458,7 @@ + __asm __volatile( + "lea (%3, %3), %%"REG_a" \n\t" + "movq (%1), %%mm0 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1, %3), %%mm1 \n\t" + "movq (%1, %%"REG_a"), %%mm2 \n\t" +@@ -509,7 +509,7 @@ + "paddusw %%mm1, %%mm5 \n\t" + "xor %%"REG_a", %%"REG_a" \n\t" + "add %3, %1 \n\t" +- ".balign 8 \n\t" ++ ".p2align 3 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq 1(%1, %%"REG_a"), %%mm2 \n\t" +diff -ru ffmpeg.orig/libavcodec/i386/fdct_mmx.c ffmpeg/libavcodec/i386/fdct_mmx.c +--- ffmpeg.orig/libavcodec/i386/fdct_mmx.c 2005-12-22 02:10:09.000000000 +0100 ++++ ffmpeg/libavcodec/i386/fdct_mmx.c 2006-02-01 06:10:53.000000000 +0100 +@@ -350,61 +350,67 @@ + + static always_inline void fdct_row_sse2(const int16_t *in, int16_t *out) + { ++#define FDCT_ROW_SSE2_H1(i,t) \ ++ "movq " #i "(%0), %%xmm2 \n\t" \ ++ "movq " #i "+8(%0), %%xmm0 \n\t" \ ++ "movdqa " #t "+32(%1), %%xmm3 \n\t" \ ++ "movdqa " #t "+48(%1), %%xmm7 \n\t" \ ++ "movdqa " #t "(%1), %%xmm4 \n\t" \ ++ "movdqa " #t "+16(%1), %%xmm5 \n\t" ++ ++#define FDCT_ROW_SSE2_H2(i,t) \ ++ "movq " #i "(%0), %%xmm2 \n\t" \ ++ "movq " #i "+8(%0), %%xmm0 \n\t" \ ++ "movdqa " #t "+32(%1), %%xmm3 \n\t" \ ++ "movdqa " #t "+48(%1), %%xmm7 \n\t" ++ ++#define FDCT_ROW_SSE2(i) \ ++ "movq %%xmm2, %%xmm1 \n\t" \ ++ "pshuflw $27, %%xmm0, %%xmm0 \n\t" \ ++ "paddsw %%xmm0, %%xmm1 \n\t" \ ++ "psubsw %%xmm0, %%xmm2 \n\t" \ ++ "punpckldq %%xmm2, %%xmm1 \n\t" \ ++ "pshufd $78, %%xmm1, %%xmm2 \n\t" \ ++ "pmaddwd %%xmm2, %%xmm3 \n\t" \ ++ "pmaddwd %%xmm1, %%xmm7 \n\t" \ ++ "pmaddwd %%xmm5, %%xmm2 \n\t" \ ++ "pmaddwd %%xmm4, %%xmm1 \n\t" \ ++ "paddd %%xmm7, %%xmm3 \n\t" \ ++ "paddd %%xmm2, %%xmm1 \n\t" \ ++ "paddd %%xmm6, %%xmm3 \n\t" \ ++ "paddd %%xmm6, %%xmm1 \n\t" \ ++ "psrad %3, %%xmm3 \n\t" \ ++ "psrad %3, %%xmm1 \n\t" \ ++ "packssdw %%xmm3, %%xmm1 \n\t" \ ++ "movdqa %%xmm1, " #i "(%4) \n\t" ++ + asm volatile( +- ".macro FDCT_ROW_SSE2_H1 i t \n\t" +- "movq \\i(%0), %%xmm2 \n\t" +- "movq \\i+8(%0), %%xmm0 \n\t" +- "movdqa \\t+32(%1), %%xmm3 \n\t" +- "movdqa \\t+48(%1), %%xmm7 \n\t" +- "movdqa \\t(%1), %%xmm4 \n\t" +- "movdqa \\t+16(%1), %%xmm5 \n\t" +- ".endm \n\t" +- ".macro FDCT_ROW_SSE2_H2 i t \n\t" +- "movq \\i(%0), %%xmm2 \n\t" +- "movq \\i+8(%0), %%xmm0 \n\t" +- "movdqa \\t+32(%1), %%xmm3 \n\t" +- "movdqa \\t+48(%1), %%xmm7 \n\t" +- ".endm \n\t" +- ".macro FDCT_ROW_SSE2 i \n\t" +- "movq %%xmm2, %%xmm1 \n\t" +- "pshuflw $27, %%xmm0, %%xmm0 \n\t" +- "paddsw %%xmm0, %%xmm1 \n\t" +- "psubsw %%xmm0, %%xmm2 \n\t" +- "punpckldq %%xmm2, %%xmm1 \n\t" +- "pshufd $78, %%xmm1, %%xmm2 \n\t" +- "pmaddwd %%xmm2, %%xmm3 \n\t" +- "pmaddwd %%xmm1, %%xmm7 \n\t" +- "pmaddwd %%xmm5, %%xmm2 \n\t" +- "pmaddwd %%xmm4, %%xmm1 \n\t" +- "paddd %%xmm7, %%xmm3 \n\t" +- "paddd %%xmm2, %%xmm1 \n\t" +- "paddd %%xmm6, %%xmm3 \n\t" +- "paddd %%xmm6, %%xmm1 \n\t" +- "psrad %3, %%xmm3 \n\t" +- "psrad %3, %%xmm1 \n\t" +- "packssdw %%xmm3, %%xmm1 \n\t" +- "movdqa %%xmm1, \\i(%4) \n\t" +- ".endm \n\t" ++// ".macro FDCT_ROW_SSE2_H1 i t \n\t" ++// ".endm \n\t" ++// ".macro FDCT_ROW_SSE2_H2 i t \n\t" ++// ".endm \n\t" ++// ".macro FDCT_ROW_SSE2 i \n\t" ++// ".endm \n\t" + "movdqa (%2), %%xmm6 \n\t" +- "FDCT_ROW_SSE2_H1 0 0 \n\t" +- "FDCT_ROW_SSE2 0 \n\t" +- "FDCT_ROW_SSE2_H2 64 0 \n\t" +- "FDCT_ROW_SSE2 64 \n\t" +- +- "FDCT_ROW_SSE2_H1 16 64 \n\t" +- "FDCT_ROW_SSE2 16 \n\t" +- "FDCT_ROW_SSE2_H2 112 64 \n\t" +- "FDCT_ROW_SSE2 112 \n\t" +- +- "FDCT_ROW_SSE2_H1 32 128 \n\t" +- "FDCT_ROW_SSE2 32 \n\t" +- "FDCT_ROW_SSE2_H2 96 128 \n\t" +- "FDCT_ROW_SSE2 96 \n\t" +- +- "FDCT_ROW_SSE2_H1 48 192 \n\t" +- "FDCT_ROW_SSE2 48 \n\t" +- "FDCT_ROW_SSE2_H2 80 192 \n\t" +- "FDCT_ROW_SSE2 80 \n\t" ++ FDCT_ROW_SSE2_H1(0,0) ++ FDCT_ROW_SSE2(0) ++ FDCT_ROW_SSE2_H2(64,0) ++ FDCT_ROW_SSE2(64) ++ ++ FDCT_ROW_SSE2_H1(16,64) ++ FDCT_ROW_SSE2(16) ++ FDCT_ROW_SSE2_H2(112,64) ++ FDCT_ROW_SSE2(112) ++ ++ FDCT_ROW_SSE2_H1(32,128) ++ FDCT_ROW_SSE2(32) ++ FDCT_ROW_SSE2_H2(96,128) ++ FDCT_ROW_SSE2(96) ++ ++ FDCT_ROW_SSE2_H1(48,192) ++ FDCT_ROW_SSE2(48) ++ FDCT_ROW_SSE2_H2(80,192) ++ FDCT_ROW_SSE2(80) + : + : "r" (in), "r" (tab_frw_01234567_sse2.tab_frw_01234567_sse2), "r" (fdct_r_row_sse2.fdct_r_row_sse2), "i" (SHIFT_FRW_ROW), "r" (out) + ); +diff -ru ffmpeg.orig/libavcodec/i386/idct_mmx_xvid.c ffmpeg/libavcodec/i386/idct_mmx_xvid.c +--- ffmpeg.orig/libavcodec/i386/idct_mmx_xvid.c 2006-01-12 23:43:18.000000000 +0100 ++++ ffmpeg/libavcodec/i386/idct_mmx_xvid.c 2006-02-01 06:10:53.000000000 +0100 +@@ -295,17 +295,17 @@ + "movq 8+" #A1 ",%%mm1 \n\t"/* 1 ; x7 x6 x5 x4*/\ + "movq %%mm0,%%mm2 \n\t"/* 2 ; x3 x2 x1 x0*/\ + "movq " #A3 ",%%mm3 \n\t"/* 3 ; w05 w04 w01 w00*/\ +- "pshufw $0b10001000,%%mm0,%%mm0 \n\t"/* x2 x0 x2 x0*/\ ++ "pshufw $0x88,%%mm0,%%mm0 \n\t"/* x2 x0 x2 x0*/\ + "movq 8+" #A3 ",%%mm4 \n\t"/* 4 ; w07 w06 w03 w02*/\ + "movq %%mm1,%%mm5 \n\t"/* 5 ; x7 x6 x5 x4*/\ + "pmaddwd %%mm0,%%mm3 \n\t"/* x2*w05+x0*w04 x2*w01+x0*w00*/\ + "movq 32+" #A3 ",%%mm6 \n\t"/* 6 ; w21 w20 w17 w16*/\ +- "pshufw $0b10001000,%%mm1,%%mm1 \n\t"/* x6 x4 x6 x4*/\ ++ "pshufw $0x88,%%mm1,%%mm1 \n\t"/* x6 x4 x6 x4*/\ + "pmaddwd %%mm1,%%mm4 \n\t"/* x6*w07+x4*w06 x6*w03+x4*w02*/\ + "movq 40+" #A3 ",%%mm7 \n\t"/* 7 ; w23 w22 w19 w18*/\ +- "pshufw $0b11011101,%%mm2,%%mm2 \n\t"/* x3 x1 x3 x1*/\ ++ "pshufw $0xdd,%%mm2,%%mm2 \n\t"/* x3 x1 x3 x1*/\ + "pmaddwd %%mm2,%%mm6 \n\t"/* x3*w21+x1*w20 x3*w17+x1*w16*/\ +- "pshufw $0b11011101,%%mm5,%%mm5 \n\t"/* x7 x5 x7 x5*/\ ++ "pshufw $0xdd,%%mm5,%%mm5 \n\t"/* x7 x5 x7 x5*/\ + "pmaddwd %%mm5,%%mm7 \n\t"/* x7*w23+x5*w22 x7*w19+x5*w18*/\ + "paddd " #A4 ",%%mm3 \n\t"/* +%4*/\ + "pmaddwd 16+" #A3 ",%%mm0 \n\t"/* x2*w13+x0*w12 x2*w09+x0*w08*/\ +@@ -330,7 +330,7 @@ + "packssdw %%mm0,%%mm3 \n\t"/* 0 ; y3 y2 y1 y0*/\ + "packssdw %%mm4,%%mm7 \n\t"/* 4 ; y6 y7 y4 y5*/\ + "movq %%mm3, " #A2 " \n\t"/* 3 ; save y3 y2 y1 y0*/\ +- "pshufw $0b10110001,%%mm7,%%mm7 \n\t"/* y7 y6 y5 y4*/\ ++ "pshufw $0xb1,%%mm7,%%mm7 \n\t"/* y7 y6 y5 y4*/\ + "movq %%mm7,8 +" #A2 "\n\t"/* 7 ; save y7 y6 y5 y4*/\ + + +diff -ru ffmpeg.orig/libavcodec/i386/motion_est_mmx.c ffmpeg/libavcodec/i386/motion_est_mmx.c +--- ffmpeg.orig/libavcodec/i386/motion_est_mmx.c 2006-01-12 23:43:18.000000000 +0100 ++++ ffmpeg/libavcodec/i386/motion_est_mmx.c 2006-02-01 06:10:53.000000000 +0100 +@@ -34,7 +34,7 @@ + { + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq (%2, %%"REG_a"), %%mm2 \n\t" +@@ -70,7 +70,7 @@ + { + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq (%2, %%"REG_a"), %%mm2 \n\t" +@@ -92,7 +92,7 @@ + { + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq (%2, %%"REG_a"), %%mm2 \n\t" +@@ -118,7 +118,7 @@ + { //FIXME reuse src + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "movq "MANGLE(bone)", %%mm5 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" +@@ -155,7 +155,7 @@ + { + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq (%2, %%"REG_a"), %%mm1 \n\t" +@@ -193,7 +193,7 @@ + { + long len= -(stride*h); + asm volatile( +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%1, %%"REG_a"), %%mm0 \n\t" + "movq (%2, %%"REG_a"), %%mm1 \n\t" +diff -ru ffmpeg.orig/libavcodec/i386/mpegvideo_mmx.c ffmpeg/libavcodec/i386/mpegvideo_mmx.c +--- ffmpeg.orig/libavcodec/i386/mpegvideo_mmx.c 2006-01-12 23:43:18.000000000 +0100 ++++ ffmpeg/libavcodec/i386/mpegvideo_mmx.c 2006-02-01 06:10:53.000000000 +0100 +@@ -66,7 +66,7 @@ + "packssdw %%mm5, %%mm5 \n\t" + "psubw %%mm5, %%mm7 \n\t" + "pxor %%mm4, %%mm4 \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %3), %%mm0 \n\t" + "movq 8(%0, %3), %%mm1 \n\t" +@@ -129,7 +129,7 @@ + "packssdw %%mm5, %%mm5 \n\t" + "psubw %%mm5, %%mm7 \n\t" + "pxor %%mm4, %%mm4 \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %3), %%mm0 \n\t" + "movq 8(%0, %3), %%mm1 \n\t" +@@ -222,7 +222,7 @@ + "packssdw %%mm6, %%mm6 \n\t" + "packssdw %%mm6, %%mm6 \n\t" + "mov %3, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %%"REG_a"), %%mm0 \n\t" + "movq 8(%0, %%"REG_a"), %%mm1 \n\t" +@@ -285,7 +285,7 @@ + "packssdw %%mm6, %%mm6 \n\t" + "packssdw %%mm6, %%mm6 \n\t" + "mov %3, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %%"REG_a"), %%mm0 \n\t" + "movq 8(%0, %%"REG_a"), %%mm1 \n\t" +@@ -357,7 +357,7 @@ + "packssdw %%mm6, %%mm6 \n\t" + "packssdw %%mm6, %%mm6 \n\t" + "mov %3, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %%"REG_a"), %%mm0 \n\t" + "movq 8(%0, %%"REG_a"), %%mm1 \n\t" +@@ -418,7 +418,7 @@ + "packssdw %%mm6, %%mm6 \n\t" + "packssdw %%mm6, %%mm6 \n\t" + "mov %3, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "movq (%0, %%"REG_a"), %%mm0 \n\t" + "movq 8(%0, %%"REG_a"), %%mm1 \n\t" +diff -ru ffmpeg.orig/libavcodec/i386/mpegvideo_mmx_template.c ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c +--- ffmpeg.orig/libavcodec/i386/mpegvideo_mmx_template.c 2006-01-12 23:43:18.000000000 +0100 ++++ ffmpeg/libavcodec/i386/mpegvideo_mmx_template.c 2006-02-01 06:10:53.000000000 +0100 +@@ -111,7 +111,7 @@ + "pxor %%mm6, %%mm6 \n\t" + "psubw (%3), %%mm6 \n\t" // -bias[0] + "mov $-128, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "pxor %%mm1, %%mm1 \n\t" // 0 + "movq (%1, %%"REG_a"), %%mm0 \n\t" // block[i] +@@ -155,7 +155,7 @@ + "pxor %%mm7, %%mm7 \n\t" // 0 + "pxor %%mm4, %%mm4 \n\t" // 0 + "mov $-128, %%"REG_a" \n\t" +- ".balign 16 \n\t" ++ ".p2align 4 \n\t" + "1: \n\t" + "pxor %%mm1, %%mm1 \n\t" // 0 + "movq (%1, %%"REG_a"), %%mm0 \n\t" // block[i] +diff -ru ffmpeg.orig/libavcodec/i386/simple_idct_mmx.c ffmpeg/libavcodec/i386/simple_idct_mmx.c +--- ffmpeg.orig/libavcodec/i386/simple_idct_mmx.c 2006-01-12 23:43:18.000000000 +0100 ++++ ffmpeg/libavcodec/i386/simple_idct_mmx.c 2006-02-01 06:10:53.000000000 +0100 +@@ -459,13 +459,12 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-COL_IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-COL_IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-COL_IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-COL_IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++COL_IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++COL_IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++COL_IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++COL_IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + + #else +- + #define DC_COND_IDCT(src0, src4, src1, src5, dst, rounder, shift) \ + "movq " #src0 ", %%mm0 \n\t" /* R4 R0 r4 r0 */\ + "movq " #src4 ", %%mm1 \n\t" /* R6 R2 r6 r2 */\ +@@ -783,10 +782,10 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + "#.balign 16 \n\t"\ +@@ -860,10 +859,10 @@ + "movd %%mm5, 80+" #dst " \n\t" + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + "#.balign 16 \n\t"\ +@@ -928,10 +927,10 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + "#.balign 16 \n\t"\ +@@ -1007,10 +1006,10 @@ + "movd %%mm5, 80+" #dst " \n\t" + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + "#.balign 16 \n\t"\ +@@ -1073,10 +1072,10 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + "#.balign 16 \n\t"\ +@@ -1141,10 +1140,10 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( 0(%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-//IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-//IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( 0(%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++//IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++//IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + +@@ -1217,10 +1216,10 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( (%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + "jmp 9f \n\t" + + +@@ -1259,10 +1258,10 @@ + "movq %%mm0, 80+" #dst " \n\t" + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( 0(%1), 64(%1), 32(%1), 96(%1), 0(%0),/nop, 20) +-//IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0),/nop, 20) +-IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0),/nop, 20) +-//IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0),/nop, 20) ++IDCT( 0(%1), 64(%1), 32(%1), 96(%1), 0(%0), "nop", 20) ++//IDCT( 8(%1), 72(%1), 40(%1), 104(%1), 4(%0), "nop", 20) ++IDCT( 16(%1), 80(%1), 48(%1), 112(%1), 8(%0), "nop", 20) ++//IDCT( 24(%1), 88(%1), 56(%1), 120(%1), 12(%0), "nop", 20) + + + #endif +diff -ru ffmpeg.orig/libavcodec/libpostproc/mangle.h ffmpeg/libavcodec/libpostproc/mangle.h +--- ffmpeg.orig/libavcodec/libpostproc/mangle.h 2004-12-18 04:07:15.000000000 +0100 ++++ ffmpeg/libavcodec/libpostproc/mangle.h 2006-02-01 06:10:53.000000000 +0100 +@@ -19,6 +19,8 @@ + #else + #if defined(ARCH_X86_64) && defined(PIC) + #define MANGLE(a) #a"(%%rip)" ++#elif defined(CONFIG_DARWIN) ++#define MANGLE(a) "_" #a + #else + #define MANGLE(a) #a + #endif +diff -ru ffmpeg.orig/libavutil/common.h ffmpeg/libavutil/common.h +--- ffmpeg.orig/libavutil/common.h 2006-01-30 01:22:41.000000000 +0100 ++++ ffmpeg/libavutil/common.h 2006-02-01 06:10:53.000000000 +0100 +@@ -267,6 +267,8 @@ + # else + # if defined(ARCH_X86_64) && defined(PIC) + # define MANGLE(a) #a"(%%rip)" ++# elif defined(CONFIG_DARWIN) ++# define MANGLE(a) "_" #a + # else + # define MANGLE(a) #a + # endif diff --git a/contrib/version_ffmpeg.txt b/contrib/version_ffmpeg.txt index b8a5c6f6e..fb7435f65 100644 --- a/contrib/version_ffmpeg.txt +++ b/contrib/version_ffmpeg.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/ffmpeg-20051007.tar.gz +http://download.m0k.org/handbrake/contrib/ffmpeg-20060201.tar.gz |