diff options
author | rhester <[email protected]> | 2006-09-30 16:21:26 +0000 |
---|---|---|
committer | rhester <[email protected]> | 2006-09-30 16:21:26 +0000 |
commit | 1806e33ca8df880e33657d3a30e537ae620fadef (patch) | |
tree | 69482a657f855d09d669e94ec0bd3251d6092406 /contrib | |
parent | 5f8684be8ecc912a8828ae3c21857125255a590b (diff) |
HandBrake 0.7.1a1
Made H.264 baseline levels more generic
Added iPod 640x480 support to libhb, HBTest and MacOS X GUI
Added proper iPod 640x480 muxing
Modified rate control for more accurate ending video bitrates
Updated ffmpeg and x264 base sources to more current levels
Removed inlined ff_get_fourcc (now in ffmpeg)
Updated patches for xvidcore, libdvdread, x264, and ffmpeg
Relocated contrib files to local web server and updated version files to new site
Renamed contrib files and patches to consistent naming standard
Updated contrib Jamfile to support new patches and naming standard
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@70 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/Jamfile | 15 | ||||
-rw-r--r-- | contrib/patch-ffmpeg.patch | 197 | ||||
-rw-r--r-- | contrib/patch-libdvdread.patch | 10 | ||||
-rw-r--r-- | contrib/patch-x264-macintel.patch | 48 | ||||
-rw-r--r-- | contrib/patch-xvidcore.patch (renamed from contrib/xvidcore.patch) | 0 | ||||
-rw-r--r-- | contrib/version_a52dec.txt | 2 | ||||
-rw-r--r-- | contrib/version_faac.txt | 2 | ||||
-rw-r--r-- | contrib/version_ffmpeg.txt | 2 | ||||
-rw-r--r-- | contrib/version_lame.txt | 2 | ||||
-rw-r--r-- | contrib/version_libdvdcss.txt | 2 | ||||
-rw-r--r-- | contrib/version_libdvdread.txt | 2 | ||||
-rw-r--r-- | contrib/version_libogg.txt | 2 | ||||
-rw-r--r-- | contrib/version_libsamplerate.txt | 2 | ||||
-rw-r--r-- | contrib/version_libvorbis.txt | 2 | ||||
-rw-r--r-- | contrib/version_mpeg2dec.txt | 2 | ||||
-rw-r--r-- | contrib/version_x264.txt | 2 | ||||
-rw-r--r-- | contrib/version_xvidcore.txt | 2 |
17 files changed, 218 insertions, 76 deletions
diff --git a/contrib/Jamfile b/contrib/Jamfile index 0add85ed9..92666a903 100644 --- a/contrib/Jamfile +++ b/contrib/Jamfile @@ -54,8 +54,8 @@ rule LibAvCodec actions LibAvCodec { cd `dirname $(>)` && CONTRIB=`pwd` && - rm -rf ffmpeg-20060326 && tar xzf ffmpeg.tar.gz && - cd ffmpeg-20060326 && $(FFMPEG_PATCH) && + 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 @@ -95,6 +95,7 @@ LibDvdCss $(SUBDIR)/lib/libdvdcss.a : $(SUBDIR)/libdvdcss.tar.gz ; # libdvdread rule LibDvdRead { + LIBDVDREAD_PATCH = "patch -p1 < ../patch-libdvdread.patch" ; Depends $(<) : $(>) ; Depends lib : $(<) ; } @@ -102,6 +103,7 @@ 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 @@ -225,13 +227,18 @@ 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 && " ; + } Depends $(<) : $(>) ; Depends lib : $(<) ; } actions LibX264 { cd `dirname $(>)` && CONTRIB=`pwd` && - rm -rf x264 && tar xzf x264.tar.gz && cd x264 && + 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 @@ -249,7 +256,7 @@ actions LibXvidCore { cd `dirname $(>)` && CONTRIB=`pwd` && rm -rf xvidcore && tar xzf xvidcore.tar.gz && - cd xvidcore && patch -p1 < ../xvidcore.patch && + cd xvidcore && patch -p1 < ../patch-xvidcore.patch && cd build/generic/ && ./configure && make libxvidcore.a && cp ./=build/libxvidcore.a $CONTRIB/lib/ && cp ../../src/xvid.h $CONTRIB/include/ && diff --git a/contrib/patch-ffmpeg.patch b/contrib/patch-ffmpeg.patch index c65364138..c9cc5fae4 100644 --- a/contrib/patch-ffmpeg.patch +++ b/contrib/patch-ffmpeg.patch @@ -1,85 +1,130 @@ -diff -ru ffmpeg-20060326-bak/configure ffmpeg-20060326/configure ---- ffmpeg-20060326-bak/configure 2006-03-26 22:04:53.000000000 +0200 -+++ ffmpeg-20060326/configure 2006-04-26 16:48:00.000000000 +0200 -@@ -272,7 +272,7 @@ +--- ffmpeg/configure 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/configure 2006-09-23 14:37:49.000000000 -0400 +@@ -493,7 +493,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" - CFLAGS="$CFLAGS -fno-expensive-optimizations" + add_cflags "-fno-expensive-optimizations" ;; esac -diff -ru ffmpeg-20060326-bak/libavformat/movenc.c ffmpeg-20060326/libavformat/movenc.c ---- ffmpeg-20060326-bak/libavformat/movenc.c 2006-03-26 22:04:53.000000000 +0200 -+++ ffmpeg-20060326/libavformat/movenc.c 2006-04-26 16:48:54.000000000 +0200 -@@ -22,6 +22,10 @@ - #include "avio.h" - #include "mov.h" +--- ffmpeg/libavformat/movenc.c 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/libavformat/movenc.c 2006-09-23 14:49:42.000000000 -0400 +@@ -34,6 +34,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 -+#ifndef UINT32_MAX -+#define UINT32_MAX (4294967295U) -+#endif -+ - #undef NDEBUG - #include <assert.h> - -@@ -435,11 +439,6 @@ - end = track->vosData + track->vosLen; - - put_byte(pb, 1); /* version */ -- put_byte(pb, 77); /* profile */ -- put_byte(pb, 64); /* profile compat */ -- put_byte(pb, 30); /* level */ -- put_byte(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -- put_byte(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ - - /* look for sps and pps */ - while (buf < end) { -@@ -458,6 +457,12 @@ - } - assert(sps); - assert(pps); -+ -+ put_byte(pb, sps[1]); /* profile */ -+ put_byte(pb, sps[2]); /* profile compat */ -+ put_byte(pb, sps[3]); /* level */ -+ put_byte(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -+ put_byte(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ - put_be16(pb, sps_size); - put_buffer(pb, sps, sps_size); - put_byte(pb, 1); /* number of pps */ -@@ -621,6 +626,18 @@ + typedef struct MOVIentry { + unsigned int flags, size; +@@ -600,6 +601,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; ++ 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); -@@ -670,6 +687,8 @@ - else if(track->enc->codec_id == CODEC_ID_H264) - mov_write_avcc_tag(pb, track); - -+ mov_write_colr_tag(pb); +@@ -649,8 +662,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); } +@@ -903,6 +929,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); +@@ -1348,6 +1378,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 "); -diff -ru ffmpeg-20060326-bak/libavformat/tcp.c ffmpeg-20060326/libavformat/tcp.c ---- ffmpeg-20060326-bak/libavformat/tcp.c 2006-03-26 22:04:53.000000000 +0200 -+++ ffmpeg-20060326/libavformat/tcp.c 2006-04-26 16:48:00.000000000 +0200 +@@ -1359,6 +1391,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 +@@ -1440,7 +1474,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 ) { +@@ -1640,6 +1675,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", +--- ffmpeg/libavformat/tcp.c 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/libavformat/tcp.c 2006-09-23 14:34:32.000000000 -0400 @@ -112,11 +112,13 @@ break; } @@ -94,3 +139,35 @@ diff -ru ffmpeg-20060326-bak/libavformat/tcp.c ffmpeg-20060326/libavformat/tcp.c } s->fd = fd; return 0; +--- ffmpeg/libavformat/allformats.h 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/libavformat/allformats.h 2006-09-23 15:02:41.000000000 -0400 +@@ -74,6 +74,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; +--- ffmpeg/libavformat/allformats.c 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/libavformat/allformats.c 2006-09-23 14:26:11.000000000 -0400 +@@ -204,6 +204,9 @@ + #ifdef CONFIG_PSP_MUXER + av_register_output_format(&psp_muxer); + #endif ++#ifdef CONFIG_IPOD_MUXER ++ av_register_output_format(&ipod_muxer); ++#endif + #ifdef CONFIG_TG2_MUXER + av_register_output_format(&tg2_muxer); + #endif +--- ffmpeg/libavformat/Makefile 2006-09-23 14:22:08.000000000 -0400 ++++ ffmpeg-patched/libavformat/Makefile 2006-09-23 20:15:09.000000000 -0400 +@@ -62,6 +62,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 --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-macintel.patch b/contrib/patch-x264-macintel.patch new file mode 100644 index 000000000..b2219fd9d --- /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 +- fakegot: +- %else ++; %ifidn __OUTPUT_FORMAT__,macho ++; SECTION .text ++; 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/xvidcore.patch b/contrib/patch-xvidcore.patch index 51cb94c6d..51cb94c6d 100644 --- a/contrib/xvidcore.patch +++ b/contrib/patch-xvidcore.patch diff --git a/contrib/version_a52dec.txt b/contrib/version_a52dec.txt index 86617fd36..784ed9f76 100644 --- a/contrib/version_a52dec.txt +++ b/contrib/version_a52dec.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/a52dec-0.7.4.tar.gz +http://multics.dynalias.com/handbrake/contrib/a52dec-0.7.4.tar.gz diff --git a/contrib/version_faac.txt b/contrib/version_faac.txt index e3466666b..c79fdb938 100644 --- a/contrib/version_faac.txt +++ b/contrib/version_faac.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/faac-1.24.tar.gz +http://multics.dynalias.com/handbrake/contrib/faac-1.24.tar.gz diff --git a/contrib/version_ffmpeg.txt b/contrib/version_ffmpeg.txt index a13a33806..e784fb835 100644 --- a/contrib/version_ffmpeg.txt +++ b/contrib/version_ffmpeg.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/ffmpeg-20060326.tar.gz +http://multics.dynalias.com/handbrake/contrib/ffmpeg-6324.tar.gz diff --git a/contrib/version_lame.txt b/contrib/version_lame.txt index b4bb63c81..fcee5aaec 100644 --- a/contrib/version_lame.txt +++ b/contrib/version_lame.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/lame-3.96.1.tar.gz +http://multics.dynalias.com/handbrake/contrib/lame-3.96.1.tar.gz diff --git a/contrib/version_libdvdcss.txt b/contrib/version_libdvdcss.txt index 81d1ef157..f4ee8b1d2 100644 --- a/contrib/version_libdvdcss.txt +++ b/contrib/version_libdvdcss.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/libdvdcss-1.2.9.tar.gz +http://multics.dynalias.com/handbrake/contrib/libdvdcss-1.2.9.tar.gz diff --git a/contrib/version_libdvdread.txt b/contrib/version_libdvdread.txt index b7be38fd7..63b29a4da 100644 --- a/contrib/version_libdvdread.txt +++ b/contrib/version_libdvdread.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/libdvdread-20050928.tar.gz +http://multics.dynalias.com/handbrake/contrib/libdvdread-20050928.tar.gz diff --git a/contrib/version_libogg.txt b/contrib/version_libogg.txt index 57daaf702..48cb46dcd 100644 --- a/contrib/version_libogg.txt +++ b/contrib/version_libogg.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/libogg-1.1.2.tar.gz +http://multics.dynalias.com/handbrake/contrib/libogg-1.1.2.tar.gz diff --git a/contrib/version_libsamplerate.txt b/contrib/version_libsamplerate.txt index a0f5b3804..c7d75ca57 100644 --- a/contrib/version_libsamplerate.txt +++ b/contrib/version_libsamplerate.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/libsamplerate-0.1.2.tar.gz +http://multics.dynalias.com/handbrake/contrib/libsamplerate-0.1.2.tar.gz diff --git a/contrib/version_libvorbis.txt b/contrib/version_libvorbis.txt index db3f67caf..18c9a7ac3 100644 --- a/contrib/version_libvorbis.txt +++ b/contrib/version_libvorbis.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/libvorbis-1.1.1.tar.gz +http://multics.dynalias.com/handbrake/contrib/libvorbis-1.1.1.tar.gz diff --git a/contrib/version_mpeg2dec.txt b/contrib/version_mpeg2dec.txt index a1e47302c..f8570015e 100644 --- a/contrib/version_mpeg2dec.txt +++ b/contrib/version_mpeg2dec.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/mpeg2dec-20051112.tar.gz +http://multics.dynalias.com/handbrake/contrib/mpeg2dec-20051112.tar.gz diff --git a/contrib/version_x264.txt b/contrib/version_x264.txt index dbf8c5768..9d6f6289f 100644 --- a/contrib/version_x264.txt +++ b/contrib/version_x264.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/x264-r401.tar.gz +http://multics.dynalias.com/handbrake/contrib/x264-r568.tar.gz diff --git a/contrib/version_xvidcore.txt b/contrib/version_xvidcore.txt index 28a7cff4b..c5b9515a3 100644 --- a/contrib/version_xvidcore.txt +++ b/contrib/version_xvidcore.txt @@ -1 +1 @@ -http://download.m0k.org/handbrake/contrib/xvidcore-1.1.0.tar.gz +http://multics.dynalias.com/handbrake/contrib/xvidcore-1.1.0.tar.gz |