changeset 560:63226381e03c libavformat

generic cur_dts update removing cur_dts update code from dv again, i think its not needed
author michael
date Tue, 12 Oct 2004 10:28:27 +0000
parents f5f85a07fafe
children d5925f47058d
files dv.c utils.c
diffstat 2 files changed, 21 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/dv.c	Tue Oct 12 01:51:04 2004 +0000
+++ b/dv.c	Tue Oct 12 10:28:27 2004 +0000
@@ -913,15 +913,6 @@
        }
     }
 
-    for(i = 0; i < s->nb_streams; i++) {
-        AVStream *st = s->streams[stream_index];
-        AVStream *st2 = s->streams[i];
-
-        st->cur_dts = av_rescale(timestamp, 
-                                 st2->time_base.den * (int64_t)st ->time_base.num,
-                                 st ->time_base.den * (int64_t)st2->time_base.num);
-    }
-
     return url_fseek(&s->pb, offset, SEEK_SET);
 }
 
--- a/utils.c	Tue Oct 12 01:51:04 2004 +0000
+++ b/utils.c	Tue Oct 12 10:28:27 2004 +0000
@@ -892,6 +892,22 @@
 }
 
 /**
+ * updates the cur_dts field based on the given timestamp and AVStream.
+ * only needed if (dts are not set and pts!=dts) or for timestamp wrapping
+ */
+static void av_update_cur_dts(AVFormatContext *s, AVStream *st, int64_t timestamp){
+    int i;
+
+    for(i = 0; i < s->nb_streams; i++) {
+        AVStream *st2 = s->streams[i];
+
+        st->cur_dts = av_rescale(timestamp, 
+                                 st2->time_base.den * (int64_t)st ->time_base.num,
+                                 st ->time_base.den * (int64_t)st2->time_base.num);
+    }
+}
+
+/**
  * add a index entry into a sorted list updateing if it is already there.
  * @param timestamp timestamp in the timebase of the given stream
  */
@@ -1015,7 +1031,7 @@
     int64_t pos_min, pos_max, pos, pos_limit;
     int64_t ts_min, ts_max, ts;
     int64_t start_pos;
-    int index, no_change, i;
+    int index, no_change;
     AVStream *st;
 
     if (stream_index < 0)
@@ -1150,13 +1166,7 @@
     /* do the seek */
     url_fseek(&s->pb, pos, SEEK_SET);
 
-    for(i = 0; i < s->nb_streams; i++) {
-        AVStream *st2 = s->streams[i];
-
-        st->cur_dts = av_rescale(ts, 
-                                 st2->time_base.den * (int64_t)st ->time_base.num,
-                                 st ->time_base.den * (int64_t)st2->time_base.num);
-    }
+    av_update_cur_dts(s, st, ts);
 
     return 0;
 }
@@ -1182,13 +1192,7 @@
     url_fseek(&s->pb, pos, SEEK_SET);
 
 #if 0
-    for(i = 0; i < s->nb_streams; i++) {
-        st2 = s->streams[i];
-
-        st->cur_dts = av_rescale(ie->timestamp, 
-                                 st2->time_base.den * (int64_t)st ->time_base.num,
-                                 st ->time_base.den * (int64_t)st2->time_base.num);
-    }
+    av_update_cur_dts(s, st, ts);
 #endif
     return 0;
 }
@@ -1196,7 +1200,7 @@
 static int av_seek_frame_generic(AVFormatContext *s, 
                                  int stream_index, int64_t timestamp, int flags)
 {
-    int index, i;
+    int index;
     AVStream *st;
     AVIndexEntry *ie;
 
@@ -1219,13 +1223,7 @@
     av_read_frame_flush(s);
     url_fseek(&s->pb, ie->pos, SEEK_SET);
 
-    for(i = 0; i < s->nb_streams; i++) {
-        AVStream *st2 = s->streams[i];
-
-        st->cur_dts = av_rescale(ie->timestamp, 
-                                 st2->time_base.den * (int64_t)st ->time_base.num,
-                                 st ->time_base.den * (int64_t)st2->time_base.num);
-    }
+    av_update_cur_dts(s, st, ie->timestamp);
 
     return 0;
 }