OSDN Git Service

slightly improve avi seek patch
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sun, 16 May 2010 23:30:12 +0000 (23:30 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sun, 16 May 2010 23:30:12 +0000 (23:30 +0000)
only changes behavior when seeking backwards.

git-svn-id: svn://localhost/HandBrake/trunk@3297 b64f7644-9d1e-0410-96f1-a4d463321fa5

contrib/ffmpeg/A05-avi-seek.patch

index a1dec93..e5df731 100644 (file)
@@ -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 */