baseparse: put buffer in a correct state after gst_adapter_get_buffer call
authorArnaud Vrac <avrac@freebox.fr>
Wed, 8 Jul 2015 10:00:56 +0000 (12:00 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 8 Jul 2015 10:33:37 +0000 (13:33 +0300)
We must make the buffer writable to write its PTS and DTS, and also
reset its duration.

The behaviour is now the same as before commit c3bcbadd, except metas
might still be attached to the buffer extracted from the adapter.

https://bugzilla.gnome.org/show_bug.cgi?id=752092

libs/gst/base/gstbaseparse.c

index a43d293..f42389a 100644 (file)
@@ -3016,8 +3016,10 @@ gst_base_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
     /* already inform subclass what timestamps we have planned,
      * at least if provided by time-based upstream */
     if (parse->priv->upstream_format == GST_FORMAT_TIME) {
+      tmpbuf = gst_buffer_make_writable (tmpbuf);
       GST_BUFFER_PTS (tmpbuf) = parse->priv->next_pts;
       GST_BUFFER_DTS (tmpbuf) = parse->priv->next_dts;
+      GST_BUFFER_DURATION (tmpbuf) = GST_CLOCK_TIME_NONE;
     }
 
     /* keep the adapter mapped, so keep track of what has to be flushed */