X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=contrib%2Fffmpeg%2FA05-avi-seek.patch;h=e5df7316aa2a681624e1f4ce030b3f496e0a8423;hb=1953fc98cfcffb94900094c70774ab1251f517f7;hp=a1dec93ca8ada1382839925e6d9a509ae45b2749;hpb=df8d2d499283f29d2bd5402ed3ed6350d7b933c1;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/contrib/ffmpeg/A05-avi-seek.patch b/contrib/ffmpeg/A05-avi-seek.patch index a1dec93c..e5df7316 100644 --- a/contrib/ffmpeg/A05-avi-seek.patch +++ b/contrib/ffmpeg/A05-avi-seek.patch @@ -19,22 +19,32 @@ Index: libavformat/avidec.c for(i = 0; i < s->nb_streams; i++) { AVStream *st2 = s->streams[i]; AVIStream *ast2 = st2->priv_data; -@@ -1129,10 +1130,12 @@ +@@ -1129,10 +1130,20 @@ index=0; if(!avi->non_interleaved){ -+ while(index+1 < st2->nb_index_entries && st2->index_entries[index].pos < pos) -+ index++; - while(index>0 && st2->index_entries[index].pos > pos) - index--; +- 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 (st2->index_entries[index].pos < min_pos) -+ min_pos = st2->index_entries[index].pos; ++ 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 +1144,7 @@ +@@ -1141,7 +1152,7 @@ } /* do the seek */