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

Reply via email to