From 3afed3c1aebb430f0ab247d31b39c5391e149f2a Mon Sep 17 00:00:00 2001 From: Krishna Priya Kanagaraj Date: Tue, 18 Aug 2026 19:20:49 +0000 Subject: [PATCH] send stream-start event to donstream when app tries to append data after EOS --- .../graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp index bb8e1721354c8..90a17aba2a755 100644 --- a/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp +++ b/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp @@ -634,12 +634,19 @@ static void webKitMediaSrcLoop(void* userData) } else if (GST_IS_EVENT(object.get())) { // EOS events and other enqueued events are also sent unlocked so they can react to flushes if necessary. GRefPtr event = GRefPtr(GST_EVENT(object.leakRef())); + bool isEOS = GST_EVENT_TYPE(event.get()) == GST_EVENT_EOS; streamingMembers.unlockEarly(); GST_DEBUG_OBJECT(pad, "Pushing event downstream: %" GST_PTR_FORMAT, event.get()); bool eventHandled = gst_pad_push_event(pad, GRefPtr(event).leakRef()); if (!eventHandled) GST_DEBUG_OBJECT(pad, "Pushed event was not handled: %" GST_PTR_FORMAT, event.get()); + + if (isEOS) { + DataMutexLocker streamingMembersAfterEOS { stream->streamingMembersDataMutex }; + GST_INFO_OBJECT(pad, "EOS pushed, resetting wasStreamStartSent to allow re-sending STREAM_START."); + streamingMembersAfterEOS->wasStreamStartSent = false; + } } else ASSERT_NOT_REACHED(); }