Branch: refs/heads/webkitglib/2.52
Home: https://github.com/WebKit/WebKit
Commit: 8b476b519b629665ba859d2407cd807932f95f1a
https://github.com/WebKit/WebKit/commit/8b476b519b629665ba859d2407cd807932f95f1a
Author: Philippe Normand <[email protected]>
Date: 2026-03-04 (Wed, 04 Mar 2026)
Changed paths:
M
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp
Log Message:
-----------
Cherry-pick 308528@main (ae71c24d33d0).
https://bugs.webkit.org/show_bug.cgi?id=308984
[GStreamer][LibWebRTC] Misc fixes for the video decoder factory
https://bugs.webkit.org/show_bug.cgi?id=308984
Reviewed by Xabier Rodriguez-Calvar.
This patch restores the reference timestamp meta for storing RTP timestamps
in case the pipeline is
doing actual decoding. Also passing by, exit early if the input image has
no encoded data buffer and
pull samples from the sink using a timeout, solving potential deadlocks if
the pipeline has a decoder.
*
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoDecoderFactory.cpp:
Canonical link: https://commits.webkit.org/308528@main
Canonical link: https://commits.webkit.org/305877.159@webkitglib/2.52
Commit: bb1ae7a5c930b35269eaa227804f414cd2731ac5
https://github.com/WebKit/WebKit/commit/bb1ae7a5c930b35269eaa227804f414cd2731ac5
Author: Xabier Rodriguez-Calvar <[email protected]>
Date: 2026-03-04 (Wed, 04 Mar 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp
M Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.h
M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
M Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.h
M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp
M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h
M
Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp
M
Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp
Log Message:
-----------
Cherry-pick 308537@main (b1791af759fa).
https://bugs.webkit.org/show_bug.cgi?id=308311
[GStreamer][MediaStream] setSinkId breaks WEBKIT_GST_ENABLE_AUDIO_MIXER=1
https://bugs.webkit.org/show_bug.cgi?id=308311
Reviewed by Philippe Normand.
GStreamerAudioMixer now manages one mixer pipeline per output device
(keyed by device ID) instead of a single shared pipeline. When the last
producer leaves a pipeline, teardown is deferred via a timer (default
60 s, configurable via GSTREAMER_AUDIO_MIXER_TEARDOWN_TIMEOUT) so that
rapid device switches do not destroy and recreate the pipeline
unnecessarily.
WebKitAudioSink stores the target device ID and GstDevice, passes them
to GStreamerAudioMixer::registerProducer(), and supports runtime device
switching through the new webkitAudioSinkSetDevice() helper, which
moves the producer from the old pipeline to the new one and brings the
new pipeline to the current element state.
createPlatformAudioSink() and applyAudioSinkDevice() are extended with
optional deviceId/GstDevice parameters. applyAudioSinkDevice() now
handles WebKitAudioSink directly by delegating to
webkitAudioSinkSetDevice(). A resolveAudioOutputDevice() helper is
extracted from createAudioSink() and audioOutputDeviceChanged() to
deduplicate device-ID resolution logic.
Fly-by fixes:
* Guard against a null roleImpl in the createAutoAudioSink()
GClosure notify callback
* Sanitize slashes in filenames passed to
dumpBinToDotFile() to avoid failures during pipeline dumping.
* Fix pre-existing race condition between GStreamerCapturer::setDevice() and
mock source render threads that surfaced now
* Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.cpp:
(WebCore::GStreamerAudioMixer::GStreamerAudioMixer):
(WebCore::GStreamerAudioMixer::ensureMixerPipeline):
(WebCore::GStreamerAudioMixer::teardownPipeline):
(WebCore::GStreamerAudioMixer::ensureState):
(WebCore::GStreamerAudioMixer::registerProducer):
(WebCore::GStreamerAudioMixer::unregisterProducer):
(WebCore::GStreamerAudioMixer::configureSourcePeriodTime):
* Source/WebCore/platform/graphics/gstreamer/GStreamerAudioMixer.h:
(WebCore::GStreamerAudioMixer::ensureState):
(WebCore::GStreamerAudioMixer::registerProducer):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::createAutoAudioSink):
(WebCore::createPlatformAudioSink):
(WebCore::dumpBinToDotFile):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:
(WebCore::createPlatformAudioSink):
*
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink):
(WebCore::MediaPlayerPrivateGStreamer::resolveAudioOutputDevice):
(WebCore::MediaPlayerPrivateGStreamer::applyAudioSinkDevice):
(WebCore::MediaPlayerPrivateGStreamer::audioOutputDeviceChanged):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
* Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.cpp:
(webKitAudioSinkChangeState):
(webkitAudioSinkNew):
(webkitAudioSinkSetDevice):
* Source/WebCore/platform/graphics/gstreamer/WebKitAudioSinkGStreamer.h:
(webkitAudioSinkNew):
(webkitAudioSinkSetDevice):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
(WebCore::GStreamerCapturer::tearDown):
(WebCore::GStreamerCapturer::createSource): Deleted.
* Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.h:
(WebCore::GStreamerCapturer::source):
*
Source/WebCore/platform/mediastream/gstreamer/MockRealtimeAudioSourceGStreamer.cpp:
(WebCore::MockRealtimeAudioSourceGStreamer::render):
*
Source/WebCore/platform/mediastream/gstreamer/MockRealtimeVideoSourceGStreamer.cpp:
(WebCore::MockRealtimeVideoSourceGStreamer::updateSampleBuffer):
Canonical link: https://commits.webkit.org/308537@main
Canonical link: https://commits.webkit.org/305877.160@webkitglib/2.52
Commit: a71913273c965b5234fab7459fbcbcfd75ba881b
https://github.com/WebKit/WebKit/commit/a71913273c965b5234fab7459fbcbcfd75ba881b
Author: Philippe Normand <[email protected]>
Date: 2026-03-04 (Wed, 04 Mar 2026)
Changed paths:
M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp
Log Message:
-----------
Cherry-pick 308455@main (60638d927b62).
https://bugs.webkit.org/show_bug.cgi?id=308925
[GStreamer][1.28]
media/media-source/media-source-paint-after-display-none.html crashes
https://bugs.webkit.org/show_bug.cgi?id=308925
Reviewed by Xabier Rodriguez-Calvar.
In GStreamer 1.28 the gluploader negotiates a new kind of buffer pool with
upstream when a software
video decoder is used, making use of the udmabuf subsystem on Linux
platforms. With that allocator,
deep buffer copies attempted in ::flushCurrentBuffer() fail and the new
sample doesn't have a valid
buffer, so that needs to be checked in ::paint() and in our VideoFrame
implementation.
*
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::paint):
* Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
(WebCore::presentationTimeFromSample):
(WebCore::VideoFrameGStreamer::VideoFrameGStreamer):
Canonical link: https://commits.webkit.org/308455@main
Canonical link: https://commits.webkit.org/305877.161@webkitglib/2.52
Compare: https://github.com/WebKit/WebKit/compare/ca60e2f537d1...a71913273c96
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications