Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 759ac636f3a6c043952d9ab6b3a23e30ad305bb6
https://github.com/WebKit/WebKit/commit/759ac636f3a6c043952d9ab6b3a23e30ad305bb6
Author: Philippe Normand <[email protected]>
Date: 2026-06-08 (Mon, 08 Jun 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.h
M
Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp
M
Source/WebCore/platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.h
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
M Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.h
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.h
M
Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp
Log Message:
-----------
[GStreamer]
media-elements/loading-the-media-resource/resource-selection-source-media-env-change.html
is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=309434
Reviewed by Xabier Rodriguez-Calvar.
This patch refactors the TrackPrivateBaseGStreamer data in a new class that can
be used as a weak
pointer for GObject signal handlers. TrackPrivateBaseGStreamer itself can't be
made WeakPtr-able
because it is part of mixins inheriting from TrackPrivateBase which is a
ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr.
Canonical link: https://commits.webkit.org/305877.723@pr/66662
Commit: cbff7f7dcb0e6d29feaabe0ec28f8bf004e8d9fd
https://github.com/WebKit/WebKit/commit/cbff7f7dcb0e6d29feaabe0ec28f8bf004e8d9fd
Author: Philippe Normand <[email protected]>
Date: 2026-06-08 (Mon, 08 Jun 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp
Log Message:
-----------
REGRESSION: [GStreamer] glib/gobject/gsignal.c:2684: instance
'0x7fa458075f30' has no handler with id '2246' in
WebCore::TrackDataHolder::disconnect
https://bugs.webkit.org/show_bug.cgi?id=311071
Reviewed by Adrian Perez de Castro.
I wasn't able to reproduce this issue, but I think that the crashes were
happening due to this
sequence of events:
1. Track created, a pad (A) is associated to it
2. GObject signals connected to pad A
3. setPad() is called with pad (B)
4. disconnect is called, attempting to disconnect GObject signal handlers
associated to pad A, but
on pad B actually
Proposed solution is to clear signal handlers before setting a new pad. This is
done already for
GstStreams.
* Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackDataHolder::setPad):
(WebCore::TrackDataHolder::setStream):
(WebCore::TrackDataHolder::disconnect):
Canonical link: https://commits.webkit.org/305877.724@pr/66662
Commit: b89f3ba22e92e8c4a2741c349cc816da86edb0bd
https://github.com/WebKit/WebKit/commit/b89f3ba22e92e8c4a2741c349cc816da86edb0bd
Author: Philippe Normand <[email protected]>
Date: 2026-06-11 (Thu, 11 Jun 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
Log Message:
-----------
[GStreamer] Remove un-needed GstStreamVolume member variable from the media
player
https://bugs.webkit.org/show_bug.cgi?id=313886
Reviewed by Xabier Rodriguez-Calvar.
In our case the GstStreamVolume is the actual playbin(3) pipeline, for which we
already keep a
strong reference, so there's no need to have another reference for the
GstStreamVolume.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::tearDown):
(WebCore::MediaPlayerPrivateGStreamer::setVolumeDouble):
(WebCore::MediaPlayerPrivateGStreamer::volume const):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVolumeChange):
(WebCore::MediaPlayerPrivateGStreamer::volumeChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::setMuted):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfMute):
(WebCore::MediaPlayerPrivateGStreamer::muteChangedCallback):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::setStreamVolumeElement): Deleted.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
Canonical link: https://commits.webkit.org/305877.725@pr/66662
Commit: 30f9b7cc9cbad315d01bc385ab51654904ab1846
https://github.com/WebKit/WebKit/commit/30f9b7cc9cbad315d01bc385ab51654904ab1846
Author: Jer Noble <[email protected]>
Date: 2026-06-11 (Thu, 11 Jun 2026)
Changed paths:
A LayoutTests/media/media-source/media-source-real-abort-expected.txt
A LayoutTests/media/media-source/media-source-real-abort.html
A
LayoutTests/media/media-source/media-source-real-append-buffer-durationchange-expected.txt
A
LayoutTests/media/media-source/media-source-real-append-buffer-durationchange.html
A
LayoutTests/media/media-source/media-source-real-append-buffer-expected.txt
A LayoutTests/media/media-source/media-source-real-append-buffer.html
A
LayoutTests/media/media-source/media-source-real-append-window-expected.txt
A LayoutTests/media/media-source/media-source-real-append-window.html
A
LayoutTests/media/media-source/media-source-real-canplaythrough-expected.txt
A LayoutTests/media/media-source/media-source-real-canplaythrough.html
A
LayoutTests/media/media-source/media-source-real-duration-after-append-expected.txt
A
LayoutTests/media/media-source/media-source-real-duration-after-append.html
A
LayoutTests/media/media-source/media-source-real-end-of-stream-expected.txt
A
LayoutTests/media/media-source/media-source-real-end-of-stream-readyState-expected.txt
A
LayoutTests/media/media-source/media-source-real-end-of-stream-readyState.html
A LayoutTests/media/media-source/media-source-real-end-of-stream.html
A LayoutTests/media/media-source/media-source-real-fastseek-expected.txt
A LayoutTests/media/media-source/media-source-real-fastseek.html
A LayoutTests/media/media-source/media-source-real-gaps-expected.txt
A LayoutTests/media/media-source/media-source-real-gaps.html
A
LayoutTests/media/media-source/media-source-real-overlapping-dts-expected.txt
A LayoutTests/media/media-source/media-source-real-overlapping-dts.html
A
LayoutTests/media/media-source/media-source-real-rapid-appends-expected.txt
A LayoutTests/media/media-source/media-source-real-rapid-appends.html
A LayoutTests/media/media-source/media-source-real-rapid-seeks-expected.txt
A LayoutTests/media/media-source/media-source-real-rapid-seeks.html
A
LayoutTests/media/media-source/media-source-real-remove-and-append-expected.txt
A LayoutTests/media/media-source/media-source-real-remove-and-append.html
A LayoutTests/media/media-source/media-source-real-remove-expected.txt
A
LayoutTests/media/media-source/media-source-real-remove-too-much-expected.txt
A LayoutTests/media/media-source/media-source-real-remove-too-much.html
A LayoutTests/media/media-source/media-source-real-remove.html
A
LayoutTests/media/media-source/media-source-real-seek-and-play-expected.txt
A LayoutTests/media/media-source/media-source-real-seek-and-play.html
A
LayoutTests/media/media-source/media-source-real-seek-complete-expected.txt
A LayoutTests/media/media-source/media-source-real-seek-complete.html
A
LayoutTests/media/media-source/media-source-real-timestampoffset-expected.txt
A LayoutTests/media/media-source/media-source-real-timestampoffset.html
A
LayoutTests/media/media-source/media-source-real-track-enabled-expected.txt
A LayoutTests/media/media-source/media-source-real-track-enabled.html
A LayoutTests/media/media-source/mp4-generator.js
M LayoutTests/platform/glib/TestExpectations
Log Message:
-----------
[Media Testing] Add MP4 file generator to media-source layout tests and add
new tests using it
rdar://175705061
https://bugs.webkit.org/show_bug.cgi?id=313482
Reviewed by Eric Carlson.
Add a MP4 file muxer in javascript to be used by LayoutTests to create
in-memory MP4 files
with exact/precise frame timing and characteristics. These will allow
end-to-end testing of
scenarios only previously testable through mock players and parsers.
* LayoutTests/media/media-source/media-source-real-append-buffer-expected.txt:
Added.
* LayoutTests/media/media-source/media-source-real-append-buffer.html: Added.
* LayoutTests/media/media-source/media-source-real-append-window-expected.txt:
Added.
* LayoutTests/media/media-source/media-source-real-append-window.html: Added.
*
LayoutTests/media/media-source/media-source-real-overlapping-dts-expected.txt:
Added.
* LayoutTests/media/media-source/media-source-real-overlapping-dts.html: Added.
* LayoutTests/media/media-source/media-source-real-remove-expected.txt: Added.
* LayoutTests/media/media-source/media-source-real-remove.html: Added.
* LayoutTests/media/media-source/media-source-real-seek-and-play-expected.txt:
Added.
* LayoutTests/media/media-source/media-source-real-seek-and-play.html: Added.
* LayoutTests/media/media-source/mp4-generator.js: Added.
Canonical link: https://commits.webkit.org/305877.726@pr/66662
Commit: 17ef6524f4883c8bb24eec0667b97637dfeedf89
https://github.com/WebKit/WebKit/commit/17ef6524f4883c8bb24eec0667b97637dfeedf89
Author: Philippe Normand <[email protected]>
Date: 2026-06-11 (Thu, 11 Jun 2026)
Changed paths:
A
LayoutTests/media/media-source/media-source-real-play-after-eos-expected.txt
A LayoutTests/media/media-source/media-source-real-play-after-eos.html
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
M Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h
M
Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp
M
Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp
Log Message:
-----------
[GStreamer][MSE] Tear down the pipeline upon EOS notification and re-create
it when the MediaSource un-marks its EOS flag
https://bugs.webkit.org/show_bug.cgi?id=313814
Reviewed by Xabier Rodriguez-Calvar.
Without this patch the following sequence of events would lead to a GStreamer
error in the MSE
playback pipeline where we would attempt to push a buffer downstream after EOS
was previously
pushed:
- appendBuffer()
- let the segment play until EOS
- appendBuffer()
- play
The proposed solution is to dispose the internal MSE playback pipeline after
EOS has been received.
If playback is requested again, the pipeline is re-created from scratch. The
previous workarounds
related with "setEosWithNoBuffers" are then no longer needed and can be removed.
Test: media/media-source/media-source-real-play-after-eos.html
* LayoutTests/media/media-source/media-source-real-play-after-eos-expected.txt:
Added.
* LayoutTests/media/media-source/media-source-real-play-after-eos.html: Added.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::tearDown):
(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::timeChanged):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateGStreamer::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateGStreamer::handleSyncErrorMessage): Deleted.
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::~TrackPrivateBaseGStreamer):
* Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.h:
*
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::load):
(WebCore::MediaPlayerPrivateGStreamerMSE::play):
(WebCore::MediaPlayerPrivateGStreamerMSE::pause):
(WebCore::MediaPlayerPrivateGStreamerMSE::seekToTarget):
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
(WebCore::MediaPlayerPrivateGStreamerMSE::didPreroll):
(WebCore::MediaPlayerPrivateGStreamerMSE::didEnd):
(WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):
(WebCore::MediaPlayerPrivateGStreamerMSE::rebuildPipeline):
(WebCore::MediaPlayerPrivateGStreamerMSE::setEosWithNoBuffers): Deleted.
*
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
*
Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.cpp:
(WebCore::MediaSourcePrivateGStreamer::markEndOfStream):
(WebCore::MediaSourcePrivateGStreamer::unmarkEndOfStream):
*
Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
(WebCore::SourceBufferPrivateGStreamer::flush):
* Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcLoop):
Canonical link: https://commits.webkit.org/305877.727@pr/66662
Compare: https://github.com/WebKit/WebKit/compare/aec9d2ad958e...17ef6524f488
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications