flacparse: tweak setting buffer metadata; avoid timestamp jitter
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Wed, 13 Oct 2010 09:00:01 +0000 (11:00 +0200)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 17:07:11 +0000 (18:07 +0100)
Fixes #631993.

gst/audioparsers/gstflacparse.c

index 2a98891..d4e81f0 100644 (file)
@@ -1247,10 +1247,11 @@ gst_flac_parse_parse_frame (GstBaseParse * parse, GstBuffer * buffer)
       GST_BUFFER_OFFSET_END (buffer) =
           flacparse->sample_number + flacparse->block_size;
     }
-    GST_BUFFER_DURATION (buffer) =
-        GST_FRAMES_TO_CLOCK_TIME (flacparse->block_size, flacparse->samplerate);
     GST_BUFFER_OFFSET (buffer) =
-        GST_BUFFER_TIMESTAMP (buffer) + GST_BUFFER_DURATION (buffer);
+        gst_util_uint64_scale (GST_BUFFER_OFFSET_END (buffer), GST_SECOND,
+        flacparse->samplerate);
+    GST_BUFFER_DURATION (buffer) =
+        GST_BUFFER_OFFSET (buffer) - GST_BUFFER_TIMESTAMP (buffer);
 
     /* Minimal size of a frame header */
     gst_base_parse_set_min_frame_size (GST_BASE_PARSE (flacparse), MAX (9,