From: prigaux Date: Thu, 18 Jan 2007 10:34:28 +0000 (+0000) Subject: PixelRatio Test branch with mp4 working and latest contrib libs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b5d0386180227ff0b0f29b7602a4a9edeef50c51;p=handbrake PixelRatio Test branch with mp4 working and latest contrib libs git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/PixelRatioWorking@168 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- diff --git a/contrib/Jamfile b/contrib/Jamfile new file mode 100644 index 000000000..33e9c2e5b --- /dev/null +++ b/contrib/Jamfile @@ -0,0 +1,304 @@ +SubDir TOP contrib ; + +# Use curl on Mac OS X since it's always installed, and assume wget +# is installed for all other systems +if $(OS) = MACOSX +{ + WGET = curl -L -o ; +} +else +{ + WGET = wget -O ; +} + +# Wget rule: downloads $(<) from the link in $(>) +rule Wget +{ + Depends $(<) : $(>) ; +} +actions Wget +{ + $(RM) $(<) && + $(WGET) $(<) `cat $(>)` && + ( touch $(<) || true ) +} + +# liba52 +rule LibA52 +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibA52 +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf a52dec && tar xzf a52dec.tar.gz && cd a52dec && + ./configure --prefix=$CONTRIB && make && make install && + strip -S $CONTRIB/lib/liba52.a +} +Wget $(SUBDIR)/a52dec.tar.gz : $(SUBDIR)/version_a52dec.txt ; +LibA52 $(SUBDIR)/lib/liba52.a : $(SUBDIR)/a52dec.tar.gz ; + +# libavcodec +rule LibAvCodec +{ + FFMPEG_PATCH = "patch -p1 < ../patch-ffmpeg.patch" ; + if $(OS) = MACOSX && $(OSPLAT) = X86 + { + FFMPEG_OPTIONS = --enable-memalign-hack ; + # This patch simply don't apply correctly so don't try to do it + # FFMPEG_PATCH += " && patch -p1 < ../patch-ffmpeg-macintel.patch" ; + } + else if $(OS) = CYGWIN + { + FFMPEG_PATCH += " && patch -p1 < ../patch-ffmpeg-cygwin.patch " ; + } + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +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 --disable-audio-beos && + make lib && make install-libs install-headers && + strip -S $CONTRIB/lib/libavcodec.a +} +Wget $(SUBDIR)/ffmpeg.tar.gz : $(SUBDIR)/version_ffmpeg.txt ; +LibAvCodec $(SUBDIR)/lib/libavcodec.a : $(SUBDIR)/ffmpeg.tar.gz ; + +rule LibAvUtil +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibAvUtil +{ + strip -S $(<) +} +LibAvUtil $(SUBDIR)/lib/libavutil.a : $(SUBDIR)/lib/libavcodec.a ; +LibAvUtil $(SUBDIR)/lib/libavformat.a : $(SUBDIR)/lib/libavcodec.a ; + +# CSS doesn't work on Cygwin/Windows as of now, so don't use it. +if $(OS) != CYGWIN +{ + # libdvdcss + # We need libdvdcss.so for libdvdread's configure to work... + rule LibDvdCss + { + Depends $(<) : $(>) ; + Depends lib : $(<) ; + } + actions LibDvdCss + { + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libdvdcss && tar xzf libdvdcss.tar.gz && cd libdvdcss && + ./configure --prefix=$CONTRIB && make && make install && + strip -S $CONTRIB/lib/libdvdcss.a + } + Wget $(SUBDIR)/libdvdcss.tar.gz : $(SUBDIR)/version_libdvdcss.txt ; + LibDvdCss $(SUBDIR)/lib/libdvdcss.a : $(SUBDIR)/libdvdcss.tar.gz ; +} + +# libdvdread +rule LibDvdRead +{ + LIBDVDREAD_PATCH = "patch -p1 < ../patch-libdvdread.patch" ; + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +if $(OS) != CYGWIN +{ + actions LibDvdRead + { + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libdvdread && tar xzf libdvdread.tar.gz && cd libdvdread && + $(LIBDVDREAD_PATCH) && + ./configure --prefix=$CONTRIB --disable-shared --with-libdvdcss=$CONTRIB && + make && make install && + strip -S $CONTRIB/lib/libdvdread.a + } +} +else { + # Cygwin/Windows doesn't use CSS as of now, so don't include it on the + # configure line. + actions LibDvdRead + { + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libdvdread && tar xzf libdvdread.tar.gz && cd libdvdread && + $(LIBDVDREAD_PATCH) && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libdvdread.a + } +} +Wget $(SUBDIR)/libdvdread.tar.gz : $(SUBDIR)/version_libdvdread.txt ; +LibDvdRead $(SUBDIR)/lib/libdvdread.a : $(SUBDIR)/libdvdread.tar.gz ; + +# libfaac +rule LibFaac +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibFaac +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf faac && tar xzf faac.tar.gz && cd faac && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libfaac.a +} +Wget $(SUBDIR)/faac.tar.gz : $(SUBDIR)/version_faac.txt ; +LibFaac $(SUBDIR)/lib/libfaac.a : $(SUBDIR)/faac.tar.gz ; + +# libmp3lame +rule LibMp3Lame +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibMp3Lame +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf lame && tar xzf lame.tar.gz && cd lame && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libmp3lame.a +} +Wget $(SUBDIR)/lame.tar.gz : $(SUBDIR)/version_lame.txt ; +LibMp3Lame $(SUBDIR)/lib/libmp3lame.a : $(SUBDIR)/lame.tar.gz ; + +# libmpeg2 +rule LibMpeg2 +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibMpeg2 +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf mpeg2dec && tar xzf mpeg2dec.tar.gz && cd mpeg2dec && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libmpeg2.a +} +Wget $(SUBDIR)/mpeg2dec.tar.gz : $(SUBDIR)/version_mpeg2dec.txt ; +LibMpeg2 $(SUBDIR)/lib/libmpeg2.a : $(SUBDIR)/mpeg2dec.tar.gz ; + +# libogg +rule LibOgg +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibOgg +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libogg && tar xzf libogg.tar.gz && cd libogg && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libogg.a +} +Wget $(SUBDIR)/libogg.tar.gz : $(SUBDIR)/version_libogg.txt ; +LibOgg $(SUBDIR)/lib/libogg.a : $(SUBDIR)/libogg.tar.gz ; + +# libsamplerate +rule LibSampleRate +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibSampleRate +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libsamplerate && tar xzf libsamplerate.tar.gz && cd libsamplerate && + ./configure --prefix=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libsamplerate.a +} +Wget $(SUBDIR)/libsamplerate.tar.gz : $(SUBDIR)/version_libsamplerate.txt ; +LibSampleRate $(SUBDIR)/lib/libsamplerate.a : $(SUBDIR)/libsamplerate.tar.gz ; + +# libvorbis +rule LibVorbis +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibVorbis +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf libvorbis && tar xzf libvorbis.tar.gz && cd libvorbis && + ./configure --prefix=$CONTRIB --with-ogg=$CONTRIB --disable-shared && + make && make install && + strip -S $CONTRIB/lib/libvorbis.a +} +Wget $(SUBDIR)/libvorbis.tar.gz : $(SUBDIR)/version_libvorbis.txt ; +LibVorbis $(SUBDIR)/lib/libvorbis.a : $(SUBDIR)/libvorbis.tar.gz ; + +rule LibVorbisEnc +{ + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibVorbisEnc +{ + strip -S $(<) +} +LibVorbisEnc $(SUBDIR)/lib/libvorbisenc.a : $(SUBDIR)/lib/libvorbis.a ; + +# libx264 +rule LibX264 +{ + LIBX264_PATCH = "" ; + if $(OS) = MACOSX && $(OSPLAT) = X86 + { + LIBX264_PATCH = " patch -p1 < ../patch-x264-macintel.patch && " ; + } + else if $(OS) = CYGWIN + { + LIBX264_PATCH = " patch -p1 < ../patch-x264-cygwin.patch && " ; + } + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibX264 +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf x264 && tar xzf x264.tar.gz && cd x264 && $(LIBX264_PATCH) + ./configure --prefix=$CONTRIB --enable-pthread && make && + make install && + strip -S $CONTRIB/lib/libx264.a +} +Wget $(SUBDIR)/x264.tar.gz : $(SUBDIR)/version_x264.txt ; +LibX264 $(SUBDIR)/lib/libx264.a : $(SUBDIR)/x264.tar.gz ; + +# libxvidcore +rule LibXvidCore +{ + LIBXVIDCORE_PATCH = "" ; + if $(OS) = MACOSX + { + LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-macosx.patch && " ; + } + else if $(OS) = CYGWIN + { + LIBXVIDCORE_PATCH = " patch -p1 < ../patch-xvidcore-cygwin.patch && " ; + } + Depends $(<) : $(>) ; + Depends lib : $(<) ; +} +actions LibXvidCore +{ + cd `dirname $(>)` && CONTRIB=`pwd` && + rm -rf xvidcore && tar xzf xvidcore.tar.gz && + cd xvidcore && $(LIBXVIDCORE_PATCH) + cd build/generic/ && ./configure && make libxvidcore.a && + cp ./=build/libxvidcore.a $CONTRIB/lib/ && + cp ../../src/xvid.h $CONTRIB/include/ && + strip -S $CONTRIB/lib/libxvidcore.a +} +Wget $(SUBDIR)/xvidcore.tar.gz : $(SUBDIR)/version_xvidcore.txt ; +LibXvidCore $(SUBDIR)/lib/libxvidcore.a : $(SUBDIR)/xvidcore.tar.gz ; diff --git a/contrib/patch-ffmpeg-cygwin.patch b/contrib/patch-ffmpeg-cygwin.patch new file mode 100644 index 000000000..b6ca99f26 --- /dev/null +++ b/contrib/patch-ffmpeg-cygwin.patch @@ -0,0 +1,15 @@ +diff -Naur ffmpeg/libavcodec/mpegaudiodec.c ffmpeg-patched/libavcodec/mpegaudiodec.c +--- ffmpeg/libavcodec/mpegaudiodec.c 2006-09-23 14:22:06.000000000 -0400 ++++ ffmpeg-patched/libavcodec/mpegaudiodec.c 2007-01-01 18:31:51.156250000 -0500 +@@ -401,9 +401,9 @@ + for(i=0; i<512*16; i++){ + int exponent= (i>>4); + double f= pow(i&15, 4.0 / 3.0) * pow(2, (exponent-400)*0.25 + FRAC_BITS + 5); +- expval_table[exponent][i&15]= llrint(f); ++ expval_table[exponent][i&15]= lrint(f); + if((i&15)==1) +- exp_table[exponent]= llrint(f); ++ exp_table[exponent]= lrint(f); + } + + for(i=0;i<7;i++) { diff --git a/contrib/patch-ffmpeg-macintel.patch b/contrib/patch-ffmpeg-macintel.patch new file mode 100644 index 000000000..ecc0dc6c4 --- /dev/null +++ b/contrib/patch-ffmpeg-macintel.patch @@ -0,0 +1,563 @@ +diff -ru ffmpeg-20060326-bak/libavcodec/i386/dsputil_mmx.c ffmpeg-20060326/libavcodec/i386/dsputil_mmx.c +--- ffmpeg-20060326-bak/libavcodec/i386/dsputil_mmx.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/dsputil_mmx.c 2006-03-26 22:13:32.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/dsputil_mmx_avg.h ffmpeg-20060326/libavcodec/i386/dsputil_mmx_avg.h +--- ffmpeg-20060326-bak/libavcodec/i386/dsputil_mmx_avg.h 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/dsputil_mmx_avg.h 2006-03-26 22:13:51.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/dsputil_mmx_rnd.h ffmpeg-20060326/libavcodec/i386/dsputil_mmx_rnd.h +--- ffmpeg-20060326-bak/libavcodec/i386/dsputil_mmx_rnd.h 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/dsputil_mmx_rnd.h 2006-03-26 22:15:09.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/fdct_mmx.c ffmpeg-20060326/libavcodec/i386/fdct_mmx.c +--- ffmpeg-20060326-bak/libavcodec/i386/fdct_mmx.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/fdct_mmx.c 2006-03-26 22:19:01.000000000 +0200 +@@ -350,61 +350,61 @@ + + 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" + "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-20060326-bak/libavcodec/i386/idct_mmx_xvid.c ffmpeg-20060326/libavcodec/i386/idct_mmx_xvid.c +--- ffmpeg-20060326-bak/libavcodec/i386/idct_mmx_xvid.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/idct_mmx_xvid.c 2006-03-26 22:20:28.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/motion_est_mmx.c ffmpeg-20060326/libavcodec/i386/motion_est_mmx.c +--- ffmpeg-20060326-bak/libavcodec/i386/motion_est_mmx.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/motion_est_mmx.c 2006-03-26 22:24:48.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/mpegvideo_mmx.c ffmpeg-20060326/libavcodec/i386/mpegvideo_mmx.c +--- ffmpeg-20060326-bak/libavcodec/i386/mpegvideo_mmx.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/mpegvideo_mmx.c 2006-03-26 22:25:09.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/mpegvideo_mmx_template.c ffmpeg-20060326/libavcodec/i386/mpegvideo_mmx_template.c +--- ffmpeg-20060326-bak/libavcodec/i386/mpegvideo_mmx_template.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/mpegvideo_mmx_template.c 2006-03-26 22:25:33.000000000 +0200 +@@ -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-20060326-bak/libavcodec/i386/simple_idct_mmx.c ffmpeg-20060326/libavcodec/i386/simple_idct_mmx.c +--- ffmpeg-20060326-bak/libavcodec/i386/simple_idct_mmx.c 2006-03-26 22:04:53.000000000 +0200 ++++ ffmpeg-20060326/libavcodec/i386/simple_idct_mmx.c 2006-03-26 22:39:09.000000000 +0200 +@@ -459,10 +459,10 @@ + + + //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 + +@@ -783,10 +783,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 +860,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 +928,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 +1007,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 +1073,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,9 +1141,9 @@ + + + //IDCT( src0, src4, src1, src5, dst, rounder, shift) +-IDCT( 0(%1), 64(%1), 32(%1), 96(%1), 0(%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( 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 +1217,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,9 +1259,9 @@ + "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( 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( 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) + + diff --git a/contrib/patch-ffmpeg.patch b/contrib/patch-ffmpeg.patch new file mode 100644 index 000000000..cc70c9a75 --- /dev/null +++ b/contrib/patch-ffmpeg.patch @@ -0,0 +1,263 @@ +diff -Naur t/ffmpeg/configure ffmpeg/configure +--- t/ffmpeg/configure 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/configure 2007-01-13 20:41:28.000000000 +0100 +@@ -674,7 +674,7 @@ + 2.9-beos-991026*|2.9-beos-000224*) echo "R5/GG gcc" + mmx="no" + ;; +-*20010315*) echo "BeBits gcc" ++*20010315*|2.95.3*) echo "BeBits gcc" + add_cflags "-fno-expensive-optimizations" + ;; + esac +diff -Naur t/ffmpeg/libavformat/Makefile ffmpeg/libavformat/Makefile +--- t/ffmpeg/libavformat/Makefile 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/libavformat/Makefile 2007-01-13 20:41:28.000000000 +0100 +@@ -58,6 +58,7 @@ + OBJS-$(CONFIG_TGP_MUXER) += movenc.o riff.o isom.o + OBJS-$(CONFIG_MP4_MUXER) += movenc.o riff.o isom.o + OBJS-$(CONFIG_PSP_MUXER) += movenc.o riff.o isom.o ++OBJS-$(CONFIG_IPOD_MUXER) += movenc.o riff.o isom.o + OBJS-$(CONFIG_TG2_MUXER) += movenc.o riff.o isom.o + OBJS-$(CONFIG_MP3_DEMUXER) += mp3.o + OBJS-$(CONFIG_MP2_MUXER) += mp3.o +diff -Naur t/ffmpeg/libavformat/allformats.c ffmpeg/libavformat/allformats.c +--- t/ffmpeg/libavformat/allformats.c 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/libavformat/allformats.c 2007-01-13 20:41:28.000000000 +0100 +@@ -91,6 +91,9 @@ + REGISTER_MUXDEMUX(IMAGE2PIPE, image2pipe); + REGISTER_DEMUXER (INGENIENT, ingenient); + REGISTER_DEMUXER (IPMOVIE, ipmovie); ++#ifdef CONFIG_IPOD_MUXER ++ REGISTER_MUXER (IPOD, ipod); ++#endif + REGISTER_MUXDEMUX(M4V, m4v); + REGISTER_DEMUXER (MATROSKA, matroska); + REGISTER_MUXDEMUX(MJPEG, mjpeg); +diff -Naur t/ffmpeg/libavformat/allformats.h ffmpeg/libavformat/allformats.h +--- t/ffmpeg/libavformat/allformats.h 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/libavformat/allformats.h 2007-01-13 20:41:28.000000000 +0100 +@@ -77,6 +77,7 @@ + extern AVOutputFormat mov_muxer; + extern AVOutputFormat tgp_muxer; + extern AVOutputFormat mp4_muxer; ++extern AVOutputFormat ipod_muxer; + extern AVOutputFormat psp_muxer; + extern AVOutputFormat tg2_muxer; + extern AVInputFormat mp3_demuxer; +diff -Naur t/ffmpeg/libavformat/movenc.c ffmpeg/libavformat/movenc.c +--- t/ffmpeg/libavformat/movenc.c 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/libavformat/movenc.c 2007-01-13 20:41:28.000000000 +0100 +@@ -36,6 +36,7 @@ + #define MODE_PSP 3 // example working PSP command line: + // ffmpeg -i testinput.avi -f psp -r 14.985 -s 320x240 -b 768 -ar 24000 -ab 32 M4V00001.MP4 + #define MODE_3G2 4 ++#define MODE_IPOD 5 + + typedef struct MOVIentry { + unsigned int flags, size; +@@ -54,6 +55,7 @@ + long time; + int64_t trackDuration; + long sampleCount; ++ long sampleDuration; + long sampleSize; + int hasKeyframes; + int hasBframes; +@@ -598,6 +600,18 @@ + return tag; + } + ++static int mov_write_colr_tag(ByteIOContext *pb) ++{ ++ put_be32( pb, 0x12 ); ++ put_tag( pb, "colr" ); ++ put_tag( pb, "nclc" ); ++ put_be16( pb, 6 ); ++ put_be16( pb, 1 ); ++ put_be16( pb, 6 ); ++ put_be32( pb, 0 ); ++ return 0x12; ++} ++ + static int mov_write_video_tag(ByteIOContext *pb, MOVTrack* track) + { + offset_t pos = url_ftell(pb); +@@ -647,8 +661,21 @@ + mov_write_d263_tag(pb); + else if(track->enc->codec_id == CODEC_ID_SVQ3) + mov_write_svq3_tag(pb); +- else if(track->enc->codec_id == CODEC_ID_H264) +- mov_write_avcc_tag(pb, track); ++ else if(track->enc->codec_id == CODEC_ID_H264) { ++ mov_write_avcc_tag(pb, track); ++ if (track->mode == MODE_IPOD) { ++ put_be32(pb, 0x1C); /* size ... reports as 28 in mp4box! */ ++ put_tag(pb, "uuid"); ++ put_be32(pb, 0x6B6840F2); ++ put_be32(pb, 0x5F244FC5); ++ put_be32(pb, 0xBA39A51B); ++ put_be32(pb, 0xCF0323F3); ++ put_be32(pb, 0x00000001); ++ put_be32(pb, 0x0000039C); ++ } ++ } ++ ++ mov_write_colr_tag(pb); + + return updateSize (pb, pos); + } +@@ -700,46 +727,18 @@ + return atom_size; + } + ++/* TODO: */ + /* Time to sample atom */ + static int mov_write_stts_tag(ByteIOContext *pb, MOVTrack* track) + { +- Time2Sample *stts_entries; +- uint32_t entries = -1; +- uint32_t atom_size; +- int i; +- +- if (track->enc->codec_type == CODEC_TYPE_AUDIO && !track->audio_vbr) { +- stts_entries = av_malloc(sizeof(*stts_entries)); /* one entry */ +- stts_entries[0].count = track->sampleCount; +- stts_entries[0].duration = 1; +- entries = 1; +- } else { +- stts_entries = av_malloc(track->entry * sizeof(*stts_entries)); /* worst case */ +- for (i=0; ientry; i++) { +- int64_t duration = i + 1 == track->entry ? +- track->trackDuration - track->cluster[i].dts + track->cluster[0].dts : /* readjusting */ +- track->cluster[i+1].dts - track->cluster[i].dts; +- if (i && duration == stts_entries[entries].duration) { +- stts_entries[entries].count++; /* compress */ +- } else { +- entries++; +- stts_entries[entries].duration = duration; +- stts_entries[entries].count = 1; +- } +- } +- entries++; /* last one */ +- } +- atom_size = 16 + (entries * 8); +- put_be32(pb, atom_size); /* size */ ++ put_be32(pb, 0x18); /* size */ + put_tag(pb, "stts"); + put_be32(pb, 0); /* version & flags */ +- put_be32(pb, entries); /* entry count */ +- for (i=0; isampleCount); /* sample count */ ++ put_be32(pb, track->sampleDuration); /* sample duration */ ++ return 0x18; + } + + static int mov_write_dref_tag(ByteIOContext *pb) +@@ -929,6 +928,10 @@ + /* Track width and height, for visual only */ + if(track->enc->codec_type == CODEC_TYPE_VIDEO) { + double sample_aspect_ratio = av_q2d(track->enc->sample_aspect_ratio); ++ if (track->mode == MODE_IPOD) { ++ /* FIXME , I do not believe this is needed, bad assumption */ ++ sample_aspect_ratio = 1; ++ } + if( !sample_aspect_ratio ) sample_aspect_ratio = 1; + put_be32(pb, sample_aspect_ratio * track->enc->width*0x10000); + put_be32(pb, track->enc->height*0x10000); +@@ -1340,6 +1343,8 @@ + for (i=0; inb_streams; i++) { + if(mov->tracks[i].entry <= 0) continue; + ++ mov->tracks[i].trackDuration = ++ (int64_t)mov->tracks[i].sampleCount * mov->tracks[i].sampleDuration; + mov->tracks[i].time = mov->time; + mov->tracks[i].trackID = i+1; + } +@@ -1387,6 +1392,8 @@ + put_tag(pb, "MSNV"); + else if ( mov->mode == MODE_MP4 ) + put_tag(pb, "isom"); ++ else if ( mov->mode == MODE_IPOD ) ++ put_tag(pb, "isom"); + else + put_tag(pb, "qt "); + +@@ -1398,6 +1405,8 @@ + put_tag(pb, "3g2a"); + else if ( mov->mode == MODE_PSP ) + put_tag(pb, "MSNV"); ++ else if ( mov->mode == MODE_IPOD ) ++ put_tag(pb, "mp41"); + else if ( mov->mode == MODE_MP4 ) + put_tag(pb, "mp41"); + else +@@ -1479,7 +1488,8 @@ + else if (!strcmp("3g2", s->oformat->name)) mov->mode = MODE_3G2; + else if (!strcmp("mov", s->oformat->name)) mov->mode = MODE_MOV; + else if (!strcmp("psp", s->oformat->name)) mov->mode = MODE_PSP; +- ++ else if (!strcmp("ipod", s->oformat->name)) mov->mode = MODE_IPOD; ++ + mov_write_ftyp_tag(pb,s); + if ( mov->mode == MODE_PSP ) { + if ( s->nb_streams != 2 ) { +@@ -1500,10 +1510,12 @@ + if(st->codec->codec_type == CODEC_TYPE_VIDEO){ + track->tag = mov_find_video_codec_tag(s, track); + track->timescale = st->codec->time_base.den; ++ track->sampleDuration = st->codec->time_base.num; + av_set_pts_info(st, 64, 1, st->codec->time_base.den); + }else if(st->codec->codec_type == CODEC_TYPE_AUDIO){ + track->tag = mov_find_audio_codec_tag(s, track); + track->timescale = st->codec->sample_rate; ++ track->sampleDuration = st->codec->frame_size; + av_set_pts_info(st, 64, 1, st->codec->sample_rate); + switch(track->enc->codec_id){ + case CODEC_ID_MP3: +@@ -1689,6 +1701,21 @@ + .flags = AVFMT_GLOBALHEADER, + }; + #endif ++#ifdef CONFIG_IPOD_MUXER ++AVOutputFormat ipod_muxer = { ++ "ipod", ++ "ipod mp4 format", ++ "application/mp4", ++ "mp4,m4v,ipod", ++ sizeof(MOVContext), ++ CODEC_ID_AAC, ++ CODEC_ID_MPEG4, ++ mov_write_header, ++ mov_write_packet, ++ mov_write_trailer, ++ .flags = AVFMT_GLOBALHEADER, ++}; ++#endif + #ifdef CONFIG_PSP_MUXER + AVOutputFormat psp_muxer = { + "psp", +diff -Naur t/ffmpeg/libavformat/tcp.c ffmpeg/libavformat/tcp.c +--- t/ffmpeg/libavformat/tcp.c 2007-01-13 12:58:43.000000000 +0100 ++++ ffmpeg/libavformat/tcp.c 2007-01-13 20:41:28.000000000 +0100 +@@ -114,11 +114,13 @@ + break; + } + ++#ifndef __BEOS__ + /* test error */ + optlen = sizeof(ret); + getsockopt (fd, SOL_SOCKET, SO_ERROR, &ret, &optlen); + if (ret != 0) + goto fail; ++#endif + } + s->fd = fd; + return 0; diff --git a/contrib/patch-libdvdread.patch b/contrib/patch-libdvdread.patch new file mode 100644 index 000000000..8ff5333b6 --- /dev/null +++ b/contrib/patch-libdvdread.patch @@ -0,0 +1,10 @@ +--- libdvdread/dvdread/nav_read.c 2005-09-05 22:11:16.000000000 -0400 ++++ libdvdread-patched/dvdread/nav_read.c 2006-09-23 14:14:43.000000000 -0400 +@@ -204,6 +204,6 @@ + /* Asserts */ + + /* dsi dsi gi */ +- CHECK_VALUE(dsi->dsi_gi.zero1 == 0); ++// CHECK_VALUE(dsi->dsi_gi.zero1 == 0); + } + diff --git a/contrib/patch-x264-cygwin.patch b/contrib/patch-x264-cygwin.patch new file mode 100644 index 000000000..40a14fa44 --- /dev/null +++ b/contrib/patch-x264-cygwin.patch @@ -0,0 +1,14 @@ +diff -Naur x264/configure x264-patched/configure +--- x264/configure 2007-01-01 17:01:36.609375000 -0500 ++++ x264-patched/configure 2007-01-01 17:02:36.468750000 -0500 +@@ -96,8 +96,8 @@ + ;; + cygwin*) + SYS="CYGWIN" +- CFLAGS="$CFLAGS -mno-cygwin" +- LDFLAGS="$LDFLAGS -mno-cygwin" ++ #CFLAGS="$CFLAGS -mno-cygwin" ++ #LDFLAGS="$LDFLAGS -mno-cygwin" + EXE=".exe" + DEVNULL="NUL" + ;; diff --git a/contrib/patch-x264-macintel.patch b/contrib/patch-x264-macintel.patch new file mode 100644 index 000000000..9a409968c --- /dev/null +++ b/contrib/patch-x264-macintel.patch @@ -0,0 +1,48 @@ +--- x264/common/i386/i386inc.asm 2006-09-23 14:01:05.000000000 -0400 ++++ x264-patched/common/i386/i386inc.asm 2006-09-24 09:21:27.000000000 -0400 +@@ -40,12 +40,12 @@ + ; is unable to compute address offsets outside of .text so we use the .text + ; section instead until NASM is fixed. + %macro SECTION_RODATA 0 +- %ifidn __OUTPUT_FORMAT__,macho +- SECTION .text align=16 +- fakegot: +- %else ++; %ifidn __OUTPUT_FORMAT__,macho ++; SECTION .text align=16 ++; fakegot: ++; %else + SECTION .rodata data align=16 +- %endif ++; %endif + %endmacro + + ; PIC support macros. All these macros are totally harmless when __PIC__ is +--- x264/common/i386/predict-a.asm 2006-09-23 14:01:05.000000000 -0400 ++++ x264-patched/common/i386/predict-a.asm 2006-09-24 09:21:27.000000000 -0400 +@@ -191,7 +191,6 @@ + %assign Y (Y-1) + movq [edx + Y*FDEC_STRIDE], mm1 + +- picpop ebx + ret + + ;----------------------------------------------------------------------------- +@@ -228,7 +227,6 @@ + %assign Y (Y-1) + movq [edx + Y*FDEC_STRIDE], mm0 + +- picpop ebx + ret + + ;----------------------------------------------------------------------------- +@@ -269,8 +267,7 @@ + %endrep + movq [edx + Y *FDEC_STRIDE], mm3 + movq [edx + (Y+1)*FDEC_STRIDE], mm0 +- +- picpop ebx ++ + ret + + ;----------------------------------------------------------------------------- diff --git a/contrib/patch-xvidcore-cygwin.patch b/contrib/patch-xvidcore-cygwin.patch new file mode 100644 index 000000000..7b60510d0 --- /dev/null +++ b/contrib/patch-xvidcore-cygwin.patch @@ -0,0 +1,34 @@ +diff -Naur xvidcore/build/generic/configure xvidcore-patched/build/generic/configure +--- xvidcore/build/generic/configure 2005-12-30 09:45:30.000000000 -0500 ++++ xvidcore-patched/build/generic/configure 2007-01-01 18:43:27.953125000 -0500 +@@ -3844,10 +3844,9 @@ + [cC][yY][gG][wW][iI][nN]*|mingw32*|mks*) + echo "$as_me:$LINENO: result: ok" >&5 + echo "${ECHO_T}ok" >&6 +- STATIC_LIB="xvidcore.\$(STATIC_EXTENSION)" +- SHARED_LIB="xvidcore.\$(SHARED_EXTENSION)" +- SPECIFIC_LDFLAGS="-mno-cygwin -shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" +- SPECIFIC_CFLAGS="-mno-cygwin" ++ STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" ++ SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" ++ SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" + ;; + darwin*|raphsody*) + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" +diff -Naur xvidcore/build/generic/configure.in xvidcore-patched/build/generic/configure.in +--- xvidcore/build/generic/configure.in 2005-12-30 09:45:30.000000000 -0500 ++++ xvidcore-patched/build/generic/configure.in 2007-01-01 18:43:11.453125000 -0500 +@@ -281,10 +281,9 @@ + ;; + [[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*) + AC_MSG_RESULT([ok]) +- STATIC_LIB="xvidcore.\$(STATIC_EXTENSION)" +- SHARED_LIB="xvidcore.\$(SHARED_EXTENSION)" +- SPECIFIC_LDFLAGS="-mno-cygwin -shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" +- SPECIFIC_CFLAGS="-mno-cygwin" ++ STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" ++ SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)" ++ SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\$@.a libxvidcore.def" + ;; + darwin*|raphsody*) + STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)" diff --git a/contrib/patch-xvidcore-macosx.patch b/contrib/patch-xvidcore-macosx.patch new file mode 100644 index 000000000..51cb94c6d --- /dev/null +++ b/contrib/patch-xvidcore-macosx.patch @@ -0,0 +1,31 @@ +diff -ru xvidcore-1.1.0/build/generic/configure xvidcore-1.1.0-patched/build/generic/configure +--- xvidcore-1.1.0/build/generic/configure 2005-12-30 15:45:30.000000000 +0100 ++++ xvidcore-1.1.0-patched/build/generic/configure 2006-01-16 22:06:10.000000000 +0100 +@@ -4052,6 +4071,12 @@ + PREFIX="-DPREFIX" + MARK_FUNCS="" + ;; ++ *darwin*) ++ echo "$as_me:$LINENO: result: macho" >&5 ++echo "${ECHO_T}macho" >&6 ++ NASM_FORMAT="macho" ++ PREFIX="-DPREFIX" ++ MARK_FUNCS="" + esac + + AS="$chosen_asm_prog" +diff -ru xvidcore-1.1.0/build/generic/configure.in xvidcore-1.1.0-patched/build/generic/configure.in +--- xvidcore-1.1.0/build/generic/configure.in 2005-12-30 15:45:30.000000000 +0100 ++++ xvidcore-1.1.0-patched/build/generic/configure.in 2006-01-16 22:06:04.000000000 +0100 +@@ -397,6 +397,11 @@ + PREFIX="-DPREFIX" + MARK_FUNCS="" + ;; ++ *darwin*) ++ AC_MSG_RESULT([macho]) ++ NASM_FORMAT="macho" ++ PREFIX="-DPREFIX" ++ MARK_FUNCS="" + esac + + AS="$chosen_asm_prog" diff --git a/contrib/version_a52dec.txt b/contrib/version_a52dec.txt new file mode 100644 index 000000000..3aa0ed89f --- /dev/null +++ b/contrib/version_a52dec.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/a52dec-0.7.4.tar.gz diff --git a/contrib/version_faac.txt b/contrib/version_faac.txt new file mode 100644 index 000000000..5974895ef --- /dev/null +++ b/contrib/version_faac.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/faac-1.24.tar.gz diff --git a/contrib/version_ffmpeg.txt b/contrib/version_ffmpeg.txt new file mode 100644 index 000000000..8a76b72f7 --- /dev/null +++ b/contrib/version_ffmpeg.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/ffmpeg-7444.tar.gz diff --git a/contrib/version_lame.txt b/contrib/version_lame.txt new file mode 100644 index 000000000..d001c67be --- /dev/null +++ b/contrib/version_lame.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/lame-3.96.1.tar.gz diff --git a/contrib/version_libdvdcss.txt b/contrib/version_libdvdcss.txt new file mode 100644 index 000000000..555f390eb --- /dev/null +++ b/contrib/version_libdvdcss.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/libdvdcss-1.2.9.tar.gz diff --git a/contrib/version_libdvdread.txt b/contrib/version_libdvdread.txt new file mode 100644 index 000000000..ff442ba80 --- /dev/null +++ b/contrib/version_libdvdread.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/libdvdread-20050928.tar.gz diff --git a/contrib/version_libogg.txt b/contrib/version_libogg.txt new file mode 100644 index 000000000..f7e457399 --- /dev/null +++ b/contrib/version_libogg.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/libogg-1.1.2.tar.gz diff --git a/contrib/version_libsamplerate.txt b/contrib/version_libsamplerate.txt new file mode 100644 index 000000000..d8dd6a1d6 --- /dev/null +++ b/contrib/version_libsamplerate.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/libsamplerate-0.1.2.tar.gz diff --git a/contrib/version_libvorbis.txt b/contrib/version_libvorbis.txt new file mode 100644 index 000000000..8761077f1 --- /dev/null +++ b/contrib/version_libvorbis.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/libvorbis-1.1.1.tar.gz diff --git a/contrib/version_mpeg2dec.txt b/contrib/version_mpeg2dec.txt new file mode 100644 index 000000000..e58f080ed --- /dev/null +++ b/contrib/version_mpeg2dec.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/mpeg2dec-20051112.tar.gz diff --git a/contrib/version_x264.txt b/contrib/version_x264.txt new file mode 100644 index 000000000..eff0d42c3 --- /dev/null +++ b/contrib/version_x264.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/x264-r604.tar.gz diff --git a/contrib/version_xvidcore.txt b/contrib/version_xvidcore.txt new file mode 100644 index 000000000..0a8812c08 --- /dev/null +++ b/contrib/version_xvidcore.txt @@ -0,0 +1 @@ +http://download.handbrake.dynalias.com/contrib/xvidcore-1.1.0.tar.gz