gst/avi/gstavidemux.c: Revert patch which sends timestamps only on keyframes, as...
authorJan Schmidt <thaytan@mad.scientist.com>
Mon, 11 Feb 2008 21:24:30 +0000 (21:24 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Mon, 11 Feb 2008 21:24:30 +0000 (21:24 +0000)
Original commit message from CVS:
* gst/avi/gstavidemux.c:
Revert patch which sends timestamps only on keyframes, as it
breaks playback with current gst-ffmpeg.
Fixes: #515562

ChangeLog
gst/avi/gstavidemux.c

index 5944373..718909c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-11  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * gst/avi/gstavidemux.c:
+       Revert patch which sends timestamps only on keyframes, as it
+       breaks playback with current gst-ffmpeg.
+
+       Fixes: #515562
+
 2008-02-11  Sebastian Dröge  <slomo@circular-chaos.org>
 
        * gst/multifile/gstmultifilesrc.c: (gst_multi_file_src_create):
index 5e7eacc..97e8263 100644 (file)
@@ -3431,17 +3431,10 @@ gst_avi_demux_process_next_entry (GstAviDemux * avi)
       buf = gst_avi_demux_invert (stream, buf);
 
     /* mark non-keyframes */
-    if (!(entry->flags & GST_AVI_INDEX_ENTRY_FLAG_KEYFRAME)) {
+    if (!(entry->flags & GST_AVI_INDEX_ENTRY_FLAG_KEYFRAME))
       GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
-      /* AVI stores DTS as the timestamps and we don't have a way to put a DTS
-       * on a buffer yet (TIMESTAMP is PTS). We therefore only copy the DTS
-       * if we are dealing with a keyframe. Decoders are supposed to
-       * interpollate the timestamps based on framerate, which is exactly
-       * what we do too when constructing the index */
-      GST_BUFFER_TIMESTAMP (buf) = GST_CLOCK_TIME_NONE;
-    } else {
-      GST_BUFFER_TIMESTAMP (buf) = entry->ts;
-    }
+
+    GST_BUFFER_TIMESTAMP (buf) = entry->ts;
     GST_BUFFER_DURATION (buf) = entry->dur;
     GST_BUFFER_OFFSET (buf) = GST_BUFFER_OFFSET_NONE;
     GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET_NONE;
@@ -3638,9 +3631,6 @@ gst_avi_demux_stream_data (GstAviDemux * avi)
         if (format != GST_FORMAT_TIME)
           goto wrong_format;
 
-        /* FIXME. this is always the DTS, not the PTS. We should only set the
-         * TIMESTAMP to the PTS (which is == PTS on I frames but we don't know
-         * about keyframes here */
         GST_BUFFER_TIMESTAMP (buf) = next_ts;
         GST_BUFFER_DURATION (buf) = dur_ts - next_ts;
         gst_buffer_set_caps (buf, GST_PAD_CAPS (stream->pad));