audio: change buffer timestamp when clipping even if data hasn't been trimmed
authorMatej Knopp <matej.knopp@gmail.com>
Fri, 27 Sep 2013 20:40:28 +0000 (22:40 +0200)
committerSebastian Dröge <slomo@circular-chaos.org>
Sat, 28 Sep 2013 09:39:43 +0000 (11:39 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=708952

gst-libs/gst/audio/audio.c

index a8047df..9745abb 100644 (file)
@@ -185,8 +185,16 @@ gst_audio_buffer_clip (GstBuffer * buffer, GstSegment * segment, gint rate,
   }
 
   if (trim == 0 && size == osize) {
-    /* nothing changed */
     ret = buffer;
+
+    if (GST_BUFFER_TIMESTAMP (ret) != timestamp) {
+      ret = gst_buffer_make_writable (ret);
+      GST_BUFFER_TIMESTAMP (ret) = timestamp;
+    }
+    if (GST_BUFFER_DURATION (ret) != duration) {
+      ret = gst_buffer_make_writable (ret);
+      GST_BUFFER_DURATION (ret) = duration;
+    }
   } else {
     /* Get a writable buffer and apply all changes */
     GST_DEBUG ("trim %" G_GSIZE_FORMAT " size %" G_GSIZE_FORMAT, trim, size);