flvmux: set the src segment position as running time
authorGuillaume Desmottes <guillaume.desmottes@onestream.live>
Wed, 11 Oct 2023 12:47:33 +0000 (14:47 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 11 Oct 2023 23:28:50 +0000 (00:28 +0100)
We were already converting the pad last timestamp to running time but
not the segment position.
This segment position is used by gst_aggregator_simple_get_next_time()
to compute the waiting time when aggregating.

Those waiting times were wrong in my live pipeline using the system
clock, resulting in the aggregator to never wait at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5465>

subprojects/gst-plugins-good/gst/flv/gstflvmux.c

index 59e39df..e4553cc 100644 (file)
@@ -1654,7 +1654,9 @@ gst_flv_mux_write_buffer (GstFlvMux * mux, GstFlvMuxPad * pad,
 {
   GstBuffer *tag;
   GstFlowReturn ret;
-  GstClockTime pts = GST_BUFFER_PTS (buffer);
+  GstClockTime pts =
+      gst_flv_mux_segment_to_running_time (&GST_AGGREGATOR_PAD (pad)->segment,
+      GST_BUFFER_PTS (buffer));
   GstClockTime duration = GST_BUFFER_DURATION (buffer);
   GstClockTime dts =
       gst_flv_mux_segment_to_running_time (&GST_AGGREGATOR_PAD (pad)->segment,