avidemux: Always set PTS=DTS on raw video streams
authorThibault Saunier <tsaunier@gnome.org>
Mon, 31 Mar 2014 16:34:13 +0000 (18:34 +0200)
committerThibault Saunier <tsaunier@gnome.org>
Mon, 31 Mar 2014 16:38:28 +0000 (18:38 +0200)
gst/avi/gstavidemux.c
gst/avi/gstavidemux.h

index f8f05cd667a90b2536eba0a720bf36d35ecb6492..0dc251778121aedb6b7a30bca9d09a687e517e2e 100644 (file)
@@ -1934,8 +1934,8 @@ gst_avi_demux_roundup_list (GstAviDemux * avi, GstBuffer ** buf)
 }
 
 static GstCaps *
-gst_avi_demux_check_caps (GstAviDemux * avi, GstCaps * caps,
-    GstBuffer ** rgb8_palette)
+gst_avi_demux_check_caps (GstAviDemux * avi, GstAviStream * stream,
+    GstCaps * caps)
 {
   GstStructure *s;
   const GValue *val;
@@ -2317,7 +2317,7 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
           g_free (vprp);
           vprp = NULL;
         }
-        caps = gst_avi_demux_check_caps (avi, caps, &stream->rgb8_palette);
+        caps = gst_avi_demux_check_caps (avi, stream, caps);
         tag_name = GST_TAG_VIDEO_CODEC;
         avi->num_v_streams++;
       } else {
@@ -5239,14 +5239,16 @@ gst_avi_demux_loop_data (GstAviDemux * avi)
     buf = gst_avi_demux_invert (stream, buf);
 
     /* mark non-keyframes */
-    if (keyframe) {
+    if (keyframe || stream->is_raw) {
       GST_BUFFER_FLAG_UNSET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
       GST_BUFFER_PTS (buf) = timestamp;
     } else {
       GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
       GST_BUFFER_PTS (buf) = GST_CLOCK_TIME_NONE;
     }
+
     GST_BUFFER_DTS (buf) = timestamp;
+
     GST_BUFFER_DURATION (buf) = duration;
     GST_BUFFER_OFFSET (buf) = out_offset;
     GST_BUFFER_OFFSET_END (buf) = out_offset_end;
index 3ca5bc60939f0cc8b781e0515d5bf8bd53bd2472..0e8786fb9615806a19516f8d94452cd4485a73c5 100644 (file)
@@ -119,6 +119,7 @@ typedef struct {
   GstTagList   *taglist;
 
   gint           index_id;
+  gboolean is_raw;
 } GstAviStream;
 
 typedef enum {