From 7a083edaa1a8d331ca8eb2878f051a4fc1966d43 Mon Sep 17 00:00:00 2001 From: jstebbins Date: Mon, 1 Aug 2011 17:48:28 +0000 Subject: bump Libav from git-v0.7b2-406-g7b20d35 to release 0.7.1 It includes the following fixes: - MKV seek issue: http://git.libav.org/?p=libav.git;a=commit;h=c29c609 - crash when decoding corrupt MPEG-2 streams: http://git.libav.org/?p=libav.git;a=commit;h=20153fb - other misc. fixes: http://git.libav.org/?p=libav.git;a=shortlog;h=refs/heads/release/0.7 It includes the following new feature: - support for DTS in MP4 and MOV files: http://git.libav.org/?p=libav.git;a=commit;h=26f4875 git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4148 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- contrib/ffmpeg/A01-mpegleak.patch | 6 +++--- contrib/ffmpeg/A02-audioconvert.patch | 2 +- contrib/ffmpeg/A05-mkv-seek.patch | 20 -------------------- contrib/ffmpeg/P01-solaris.patch | 4 ++-- contrib/ffmpeg/P02-darwin-pic.patch | 6 +++--- contrib/ffmpeg/module.defs | 2 +- libhb/stream.c | 22 +++++++++++----------- 7 files changed, 21 insertions(+), 41 deletions(-) delete mode 100644 contrib/ffmpeg/A05-mkv-seek.patch diff --git a/contrib/ffmpeg/A01-mpegleak.patch b/contrib/ffmpeg/A01-mpegleak.patch index 1ca462c6d..555be9228 100644 --- a/contrib/ffmpeg/A01-mpegleak.patch +++ b/contrib/ffmpeg/A01-mpegleak.patch @@ -1,8 +1,8 @@ diff --git a/libavcodec/h264.c b/libavcodec/h264.c -index 0aa923f..15bf61d 100644 +index 2c000a3..93850d6 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c -@@ -3644,7 +3644,7 @@ static int decode_frame(AVCodecContext *avctx, +@@ -3908,7 +3908,7 @@ static int decode_frame(AVCodecContext *avctx, if(!(s->flags2 & CODEC_FLAG2_CHUNKS) && !s->current_picture_ptr){ if (avctx->skip_frame >= AVDISCARD_NONREF) return 0; @@ -25,7 +25,7 @@ index a025f7d..eda5e41 100644 "corrupt input), discarding one\n", h->long_ref_count, h->short_ref_count, h->sps.ref_frame_count); diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c -index 6a45da8..dc25c4d 100644 +index 4978d28..bb9509f 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -986,19 +986,18 @@ int ff_find_unused_picture(MpegEncContext *s, int shared){ diff --git a/contrib/ffmpeg/A02-audioconvert.patch b/contrib/ffmpeg/A02-audioconvert.patch index befe00fab..f8481240b 100644 --- a/contrib/ffmpeg/A02-audioconvert.patch +++ b/contrib/ffmpeg/A02-audioconvert.patch @@ -1,5 +1,5 @@ diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index b772bf1..17c4649 100644 +index 0cfa08c..f9c407e 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -3,7 +3,7 @@ include $(SUBDIR)../config.mak diff --git a/contrib/ffmpeg/A05-mkv-seek.patch b/contrib/ffmpeg/A05-mkv-seek.patch deleted file mode 100644 index 7ac47014a..000000000 --- a/contrib/ffmpeg/A05-mkv-seek.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c -index 57a8f62..60f6c69 100644 ---- a/libavformat/matroskadec.c -+++ b/libavformat/matroskadec.c -@@ -1903,6 +1903,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, - - if ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { - avio_seek(s->pb, st->index_entries[st->nb_index_entries-1].pos, SEEK_SET); -+ matroska->current_id = 0; - while ((index = av_index_search_timestamp(st, timestamp, flags)) < 0) { - matroska_clear_queue(matroska); - if (matroska_parse_cluster(matroska) < 0) -@@ -1931,6 +1932,7 @@ static int matroska_read_seek(AVFormatContext *s, int stream_index, - } - - avio_seek(s->pb, st->index_entries[index_min].pos, SEEK_SET); -+ matroska->current_id = 0; - matroska->skip_to_keyframe = !(flags & AVSEEK_FLAG_ANY); - matroska->skip_to_timecode = st->index_entries[index].timestamp; - matroska->done = 0; diff --git a/contrib/ffmpeg/P01-solaris.patch b/contrib/ffmpeg/P01-solaris.patch index 364e07adf..d807d76de 100644 --- a/contrib/ffmpeg/P01-solaris.patch +++ b/contrib/ffmpeg/P01-solaris.patch @@ -1,5 +1,5 @@ diff --git a/configure b/configure -index 2a1883b..ab0c8b3 100755 +index 5e40e08..12d6232 100755 --- a/configure +++ b/configure @@ -54,6 +54,9 @@ if test "$E1" != 0 || test "$E2" = 0; then @@ -12,7 +12,7 @@ index 2a1883b..ab0c8b3 100755 show_help(){ cat <config.fate diff --git a/contrib/ffmpeg/module.defs b/contrib/ffmpeg/module.defs index 90cbd5c75..36c486463 100644 --- a/contrib/ffmpeg/module.defs +++ b/contrib/ffmpeg/module.defs @@ -1,7 +1,7 @@ $(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,BZIP2 ZLIB)) $(eval $(call import.CONTRIB.defs,FFMPEG)) -FFMPEG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/ffmpeg-git-v0.7b2-406-g7b20d35.tar.bz2 +FFMPEG.FETCH.url = http://download.handbrake.fr/handbrake/contrib/ffmpeg-v0.7.1.tar.bz2 FFMPEG.CONFIGURE.deps = FFMPEG.CONFIGURE.env = diff --git a/libhb/stream.c b/libhb/stream.c index a95ce532c..84d31fe0b 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -3097,7 +3097,7 @@ static int ffmpeg_open( hb_stream_t *stream, hb_title_t *title, int scan ) // But then the seek fails for some stream types. So the safest thing // to do seems to be to open 2 AVFormatContext. One for probing info // and the other for reading. - if ( av_open_input_file( &info_ic, stream->path, NULL, 0, NULL ) < 0 ) + if ( avformat_open_input( &info_ic, stream->path, NULL, NULL ) < 0 ) { return 0; } @@ -3106,7 +3106,7 @@ static int ffmpeg_open( hb_stream_t *stream, hb_title_t *title, int scan ) title->opaque_priv = (void*)info_ic; stream->ffmpeg_info_ic = info_ic; - if ( av_open_input_file( &reader_ic, stream->path, NULL, 0, NULL ) < 0 ) + if ( avformat_open_input( &reader_ic, stream->path, NULL, NULL ) < 0 ) { goto fail; } @@ -3168,7 +3168,7 @@ static void add_ffmpeg_audio( hb_title_t *title, hb_stream_t *stream, int id ) { AVStream *st = stream->ffmpeg_info_ic->streams[id]; AVCodecContext *codec = st->codec; - AVMetadataTag *tag; + AVDictionaryEntry *tag; int layout; // scan will ignore any audio without a bitrate. Since we've already @@ -3216,7 +3216,7 @@ static void add_ffmpeg_audio( hb_title_t *title, hb_stream_t *stream, int id ) audio->config.in.channel_map = &hb_smpte_chan_map; } - tag = av_metadata_get( st->metadata, "language", NULL, 0 ); + tag = av_dict_get( st->metadata, "language", NULL, 0 ); set_audio_description( stream, audio, lang_for_code2( tag ? tag->value : "und" ) ); @@ -3386,10 +3386,10 @@ static void add_ffmpeg_subtitle( hb_title_t *title, hb_stream_t *stream, int id return; } - AVMetadataTag *tag; + AVDictionaryEntry *tag; iso639_lang_t *language; - tag = av_metadata_get( st->metadata, "language", NULL, 0 ); + tag = av_dict_get( st->metadata, "language", NULL, 0 ); language = lang_for_code2( tag ? tag->value : "und" ); strcpy( subtitle->lang, language->eng_name ); strncpy( subtitle->iso639_2, language->iso639_2, 4 ); @@ -3402,10 +3402,10 @@ static void add_ffmpeg_subtitle( hb_title_t *title, hb_stream_t *stream, int id hb_list_add(title->list_subtitle, subtitle); } -static char *get_ffmpeg_metadata_value( AVMetadata *m, char *key ) +static char *get_ffmpeg_metadata_value( AVDictionary *m, char *key ) { - AVMetadataTag *tag = NULL; - while ( (tag = av_metadata_get(m, "", tag, AV_METADATA_IGNORE_SUFFIX)) ) + AVDictionaryEntry *tag = NULL; + while ( (tag = av_dict_get(m, "", tag, AV_DICT_IGNORE_SUFFIX)) ) { if ( !strcmp( key, tag->key ) ) { @@ -3525,7 +3525,7 @@ static hb_title_t *ffmpeg_title_scan( hb_stream_t *stream, hb_title_t *title ) for( i = 0; i < ic->nb_chapters; i++ ) if( ( m = ic->chapters[i] ) != NULL ) { - AVMetadataTag *tag; + AVDictionaryEntry *tag; hb_chapter_t * chapter; chapter = calloc( sizeof( hb_chapter_t ), 1 ); chapter->index = i+1; @@ -3534,7 +3534,7 @@ static hb_title_t *ffmpeg_title_scan( hb_stream_t *stream, hb_title_t *title ) chapter->hours = chapter->duration / 90000 / 3600; chapter->minutes = ( ( chapter->duration / 90000 ) % 3600 ) / 60; chapter->seconds = ( chapter->duration / 90000 ) % 60; - tag = av_metadata_get( m->metadata, "title", NULL, 0 ); + tag = av_dict_get( m->metadata, "title", NULL, 0 ); strcpy( chapter->title, tag ? tag->value : "" ); hb_deep_log( 2, "Added chapter %i, name='%s', dur=%"PRIu64", (%02i:%02i:%02i)", chapter->index, chapter->title, -- cgit v1.2.3