diff options
-rw-r--r-- | contrib/ffmpeg/A05-avi-seek.patch | 55 | ||||
-rw-r--r-- | libhb/stream.c | 11 |
2 files changed, 0 insertions, 66 deletions
diff --git a/contrib/ffmpeg/A05-avi-seek.patch b/contrib/ffmpeg/A05-avi-seek.patch deleted file mode 100644 index e5df7316a..000000000 --- a/contrib/ffmpeg/A05-avi-seek.patch +++ /dev/null @@ -1,55 +0,0 @@ -Index: libavformat/avidec.c -=================================================================== ---- ffmpeg.orig/libavformat/avidec.c (revision 22950) -+++ ffmpeg/libavformat/avidec.c (working copy) -@@ -1072,7 +1072,7 @@ - AVIContext *avi = s->priv_data; - AVStream *st; - int i, index; -- int64_t pos; -+ int64_t pos, min_pos; - AVIStream *ast; - - if (!avi->index_loaded) { -@@ -1109,6 +1109,7 @@ - return 0; - } - -+ min_pos = pos; - for(i = 0; i < s->nb_streams; i++) { - AVStream *st2 = s->streams[i]; - AVIStream *ast2 = st2->priv_data; -@@ -1129,10 +1130,20 @@ - index=0; - - if(!avi->non_interleaved){ -- while(index>0 && st2->index_entries[index].pos > pos) -- index--; -- while(index+1 < st2->nb_index_entries && st2->index_entries[index].pos < pos) -- index++; -+ if (flags & AVSEEK_FLAG_BACKWARD) { -+ while(index+1 < st2->nb_index_entries && st2->index_entries[index].pos < pos) -+ index++; -+ while(index>0 && st2->index_entries[index].pos > pos) -+ index--; -+ if (st2->index_entries[index].pos < min_pos) -+ min_pos = st2->index_entries[index].pos; -+ } -+ else { -+ while(index>0 && st2->index_entries[index].pos > pos) -+ index--; -+ while(index+1 < st2->nb_index_entries && st2->index_entries[index].pos < pos) -+ index++; -+ } - } - - // av_log(s, AV_LOG_DEBUG, "%"PRId64" %d %"PRId64"\n", timestamp, index, st2->index_entries[index].timestamp); -@@ -1141,7 +1152,7 @@ - } - - /* do the seek */ -- url_fseek(s->pb, pos, SEEK_SET); -+ url_fseek(s->pb, min_pos, SEEK_SET); - avi->stream_index= -1; - return 0; - } diff --git a/libhb/stream.c b/libhb/stream.c index 4b4653760..3d80a590b 100644 --- a/libhb/stream.c +++ b/libhb/stream.c @@ -1452,17 +1452,6 @@ int hb_stream_seek_chapter( hb_stream_t * stream, int chapter_num ) { av_seek_frame( stream->ffmpeg_ic, -1, pos, 0); } - else - { - // ffmpeg has a bug that causes the first PTS after - // av_find_stream_info() is called to be incorrect. - // av_find_stream_info is called whenever opening a file - // with ffmpeg. av_seek_frame clears the condition - // that causes the problem. since hb_stream_seek_chapter - // is called before we start reading, make sure - // we do a seek here. - av_seek_frame( stream->ffmpeg_ic, -1, ffmpeg_initial_timestamp( stream ), AVSEEK_FLAG_BACKWARD | AVSEEK_FLAG_ANY ); - } return 1; } |