wavparse: ensure that any pending segment is sent before an EOS event is sent
authorMatthew Waters <matthew@centricular.com>
Tue, 3 May 2022 07:27:32 +0000 (17:27 +1000)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 4 May 2022 08:00:02 +0000 (08:00 +0000)
Specifically fixes seqnum handling when an aggregator-based element
(audiomixer et al) is downstream and a seek is performed that
immediately causes an EOS from wavparse.

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

subprojects/gst-plugins-good/gst/wavparse/gstwavparse.c

index 038bc9c..6069dee 100644 (file)
@@ -2289,6 +2289,13 @@ pause:
         if (G_UNLIKELY (wav->first)) {
           wav->first = FALSE;
           gst_wavparse_add_src_pad (wav, NULL);
+        } else {
+          /* If we have a pending start segment, send it now. Can happen if a seek
+           * causes an immediate EOS */
+          if (G_UNLIKELY (wav->start_segment != NULL)) {
+            gst_pad_push_event (wav->srcpad, wav->start_segment);
+            wav->start_segment = NULL;
+          }
         }
 
         /* perform EOS logic */