splitmuxsink: Avoid assertion when WAITING_GOP_COLLECT on reference context
authorVivia Nikolaidou <vivia@ahiru.eu>
Fri, 9 Sep 2022 10:13:32 +0000 (13:13 +0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 18 Nov 2022 15:52:03 +0000 (15:52 +0000)
I have seen a backtrace out in the wild where this happened. Maybe after
receiving EOS and stream-start on the reference context.

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

subprojects/gst-plugins-good/gst/multifile/gstsplitmuxsink.c

index 5e4ae02..ad6c3d3 100644 (file)
@@ -3178,11 +3178,13 @@ handle_mq_input (GstPad * pad, GstPadProbeInfo * info, MqStreamCtx * ctx)
         }
         break;
       case SPLITMUX_INPUT_STATE_WAITING_GOP_COLLECT:{
-        /* We're collecting a GOP, this is only ever called for non-reference
+        /* We're collecting a GOP, this is normally only called for non-reference
          * contexts as the reference context would be waiting inside
          * check_completed_gop() */
-
-        g_assert (!ctx->is_reference);
+        if (G_UNLIKELY (ctx->is_reference)) {
+          check_completed_gop (splitmux, ctx);
+          break;
+        }
 
         /* If we overran the target timestamp, it might be time to process
          * the GOP, otherwise bail out for more data. */