Branch: refs/heads/webkitglib/2.46
  Home:   https://github.com/WebKit/WebKit
  Commit: 50fbea37a7e9e0ec2818bbbf73e2a75f0a60f6b7
      
https://github.com/WebKit/WebKit/commit/50fbea37a7e9e0ec2818bbbf73e2a75f0a60f6b7
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/wpe/TestExpectations
    M Source/WebCore/platform/SourcesGStreamer.txt
    M Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h
    A 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp
    A Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.h
    M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 288686@main (38504740eae5). 
https://bugs.webkit.org/show_bug.cgi?id=285280

    [GStreamer][GL] Video frame conversion handling
    https://bugs.webkit.org/show_bug.cgi?id=285280

    Reviewed by Xabier Rodriguez-Calvar.

    This patch introduces a GStreamerVideoFrameConverter singleton that is 
responsible for optionally
    downloading frames from the GPU and convert them to a new format. The 
pipeline used for this relies
    on the WebKit GL context.

    * Source/WebCore/platform/SourcesGStreamer.txt:
    * Source/WebCore/platform/graphics/gstreamer/GLVideoSinkGStreamer.cpp:
    (webKitGLVideoSinkChangeState):
    (requestGLContext): Deleted.
    (setGLContext): Deleted.
    * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
    (WebCore::requestGLContext):
    (WebCore::setGstElementGLContext):
    * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.h:
    * 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp: 
Added.
    (WebCore::GStreamerVideoFrameConverter::singleton):
    (WebCore::GStreamerVideoFrameConverter::GStreamerVideoFrameConverter):
    (WebCore::GStreamerVideoFrameConverter::convert):
    * 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.h: 
Added.
    * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
    (WebCore::convertSampleToImage):
    (WebCore::VideoFrameGStreamer::createFromPixelBuffer):
    (WebCore::VideoFrameGStreamer::convert):

    Canonical link: https://commits.webkit.org/288686@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: a4467e4d45c439a11b234241ca85d2ff4a206dfb
      
https://github.com/WebKit/WebKit/commit/a4467e4d45c439a11b234241ca85d2ff4a206dfb
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 288651@main (cac194f74a21). 
https://bugs.webkit.org/show_bug.cgi?id=285301

    [GStreamer] Fix mock video sources observed framerate display
    https://bugs.webkit.org/show_bug.cgi?id=285301

    Reviewed by Xabier Rodriguez-Calvar.

    The observed framerate is computed using frames PTS values, but the frames 
constructed by the mock
    sources had invalid PTS values. Fix this by using the buffer PTS in case an 
invalid timestamp was
    passed to the create() functions. This was done already for 
createWrappedSample() but not for the
    create() function.

    * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
    (WebCore::presentationTimeFromSample):
    (WebCore::VideoFrameGStreamer::create):
    (WebCore::VideoFrameGStreamer::createWrappedSample):

    Canonical link: https://commits.webkit.org/288651@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: d9ef0d3bab513e446411546023b59f32e144108d
      
https://github.com/WebKit/WebKit/commit/d9ef0d3bab513e446411546023b59f32e144108d
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp

  Log Message:
  -----------
  Cherry-pick 288646@main (ca26a0851c71). 
https://bugs.webkit.org/show_bug.cgi?id=285335

    [GStreamer] Use capture converter only when required
    https://bugs.webkit.org/show_bug.cgi?id=285335

    Reviewed by Xabier Rodriguez-Calvar.

    In practice this is a micro-optimization, we just avoid using an identity 
element when capturing
    desktop.

    * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
    (WebCore::GStreamerCapturer::setupPipeline):
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
    (WebCore::GStreamerVideoCapturer::createConverter):

    Canonical link: https://commits.webkit.org/288646@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 0949702ad2a299d4cd89238e16603dd416e128c6
      
https://github.com/WebKit/WebKit/commit/0949702ad2a299d4cd89238e16603dd416e128c6
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp

  Log Message:
  -----------
  Cherry-pick 288658@main (c015a4a405d1). 
https://bugs.webkit.org/show_bug.cgi?id=285336

    [GStreamer] Video frame metadata handling fixes
    https://bugs.webkit.org/show_bug.cgi?id=285336

    Reviewed by Xabier Rodriguez-Calvar.

    We now make sure buffers are writable before adding GstMeta on them and 
also if the buffers are
    stored within samples, make sure the samples are writable before updating 
them.

    These issues were detected when using getDisplayMedia with pipewire, the 
capturer sink was emitting
    these warnings: free_priv_data: object finalizing but still has 1 parents 
(object:0x7fc534018ca0).

    * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp:
    (WebCore::VideoFrameGStreamer::createFromPixelBuffer):
    (WebCore::VideoFrameGStreamer::VideoFrameGStreamer):
    * 
Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.cpp:
    (webkitGstBufferSetVideoFrameTimeMetadata):
    * Source/WebCore/platform/graphics/gstreamer/VideoFrameMetadataGStreamer.h:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
    (WebCore::GStreamerCapturer::createSource):
    * 
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp:
    (WebCore::GStreamerIncomingTrackProcessor::installRtpBufferPadProbe):
    * 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:

    Canonical link: https://commits.webkit.org/288658@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 21f8d8c450df234b6c4afb8a3bdc541a0aab929c
      
https://github.com/WebKit/WebKit/commit/21f8d8c450df234b6c4afb8a3bdc541a0aab929c
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/wpe/TestExpectations
    M Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp
    M Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp

  Log Message:
  -----------
  Cherry-pick 288701@main (85fd6a98f9ec). 
https://bugs.webkit.org/show_bug.cgi?id=285398

    [GStreamer][WebRTC] webrtc/video-h264.html consistently times out
    https://bugs.webkit.org/show_bug.cgi?id=285398

    Reviewed by Xabier Rodriguez-Calvar.

    To make this test pass the two main changes needed were to have support for 
high and
    constrained-high avc codec strings in the packetizer and then let the 
VideoEncoderPrivate select the
    underlying encoder using the output caps. Without this change x264enc was 
selected due to its high
    rank but it doesn't support constrained-high, hence the caps negotiation 
error. For this test now
    openh264enc is selected instead.

    Driving-by, the input format handling for h264 was reworked a bit, also 
removing the inexistant Y420
    format.

    * LayoutTests/platform/glib/TestExpectations:
    * LayoutTests/platform/wpe/TestExpectations:
    * Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp:
    (WebCore::h264CapsFromCodecString):
    * Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp:
    (videoEncoderSupportsCodec):
    (videoEncoderSetCodec):
    (webkit_video_encoder_class_init):
    (videoEncoderFindForCodec): Deleted.
    * 
Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp:
    (WebCore::GStreamerVideoRTPPacketizer::create):

    Canonical link: https://commits.webkit.org/288701@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 9716db315c071b369d49314bbe3b0d88b3cad190
      
https://github.com/WebKit/WebKit/commit/9716db315c071b369d49314bbe3b0d88b3cad190
  Author: Carlos Bentzen <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp

  Log Message:
  -----------
  Cherry-pick 288463@main (1031e6022f7c). 
https://bugs.webkit.org/show_bug.cgi?id=285416

    [GStreamer][WebRTC] REGRESSION(286800@main) Crash when sending streams with 
GStreamer < 1.24
    https://bugs.webkit.org/show_bug.cgi?id=285416

    Reviewed by Philippe Normand.

    Add early returns for GStreamer 1.24, and release asserts where
    GstRTPBasePayload::extensions is used.

    * Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp:
    (WebCore::GStreamerRTPPacketizer::configureExtensions):
    (WebCore::GStreamerRTPPacketizer::ensureMidExtension):

    Canonical link: https://commits.webkit.org/288463@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: b81f87b4391f8796bbc6ccfb0659d0aefb16c4d9
      
https://github.com/WebKit/WebKit/commit/b81f87b4391f8796bbc6ccfb0659d0aefb16c4d9
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp

  Log Message:
  -----------
  Cherry-pick 288694@main (c32da2cc67dd). 
https://bugs.webkit.org/show_bug.cgi?id=285421

    [GStreamer] Fix unsafe-buffer-usage-in-container warning in 
GStreamerDataChannelHandler
    https://bugs.webkit.org/show_bug.cgi?id=285421

    Reviewed by Xabier Rodriguez-Calvar.

    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp:
    (WebCore::GStreamerDataChannelHandler::onMessageData): Use the span method 
from SharedBuffer instead
    of creating one ourselves.

    Canonical link: https://commits.webkit.org/288694@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: ab4f9169fc071390fc883327b90872280877ccd2
      
https://github.com/WebKit/WebKit/commit/ab4f9169fc071390fc883327b90872280877ccd2
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp

  Log Message:
  -----------
  Cherry-pick 288698@main (3ced1e0266db). 
https://bugs.webkit.org/show_bug.cgi?id=285684

    [GStreamer] Set PTS on buffers received by video capturers
    https://bugs.webkit.org/show_bug.cgi?id=285684

    Reviewed by Xabier Rodriguez-Calvar.

    The VideoFrame::create() function already uses the PTS from buffers since 
288651@main but it's also
    good to do it directly within the capturer, for consistency purposes.

    * Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoCapturer.cpp:
    (WebCore::GStreamerVideoCapturer::setSinkVideoFrameCallback):

    Canonical link: https://commits.webkit.org/288698@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: f5703d22611a6e77c095d7e96ebf624b8143cf97
      
https://github.com/WebKit/WebKit/commit/f5703d22611a6e77c095d7e96ebf624b8143cf97
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp

  Log Message:
  -----------
  Cherry-pick 288840@main (b9107842430e). 
https://bugs.webkit.org/show_bug.cgi?id=285745

    REGRESSION(288686@main): [GStreamer] Critical warning when running 
fast/mediastream/mediastreamtrack-video-clone.html
    https://bugs.webkit.org/show_bug.cgi?id=285745

    Reviewed by Xabier Rodriguez-Calvar.

    Make sure the GsVideoMeta on converted video frames corresponds to the 
requested caps.

    * 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp:
    (WebCore::GStreamerVideoFrameConverter::GStreamerVideoFrameConverter):
    (WebCore::GStreamerVideoFrameConverter::convert):

    Canonical link: https://commits.webkit.org/288840@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 9c572fc1947b480a99e367ea4b31aaeade44da18
      
https://github.com/WebKit/WebKit/commit/9c572fc1947b480a99e367ea4b31aaeade44da18
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt
    M LayoutTests/platform/wpe/TestExpectations
    M Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 288859@main (bac54852496e). 
https://bugs.webkit.org/show_bug.cgi?id=285758

    [GStreamer] 
imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-mimetype.html 
fails
    https://bugs.webkit.org/show_bug.cgi?id=285758

    Reviewed by Xabier Rodriguez-Calvar.

    Set default codecs for the mp4 container and driving-by, fix a potential 
buffer overflow in the
    GStreamer avc codec string parser.

    * LayoutTests/platform/glib/TestExpectations:
    * 
LayoutTests/platform/glib/imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-mimetype-expected.txt:
    * LayoutTests/platform/wpe/TestExpectations:
    * Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp:
    * Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:
    (WebCore::MediaRecorderPrivateBackend::MediaRecorderPrivateBackend):

    Canonical link: https://commits.webkit.org/288859@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: eb722250d9e4747b70d8fc0130468fdc22d4e41e
      
https://github.com/WebKit/WebKit/commit/eb722250d9e4747b70d8fc0130468fdc22d4e41e
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerWebRTCLogSink.cpp

  Log Message:
  -----------
  Cherry-pick 288860@main (b409dbbfe5a2). 
https://bugs.webkit.org/show_bug.cgi?id=285814

    REGRESSION(288642@main): [GStreamer][Debug] Triggers ASSERT when running 
http/tests/inspector/gatherWebInspectorRTCLogs.html
    https://bugs.webkit.org/show_bug.cgi?id=285814

    Reviewed by Xabier Rodriguez-Calvar.

    The gst_debug_message_get() function returns nullptr when it fails to apply 
the format specifiers to
    the debug message, so this needs to be accounted for and we now return 
early when this happens.

    * Source/WebCore/platform/mediastream/gstreamer/GStreamerWebRTCLogSink.cpp:
    (WebCore::GStreamerWebRTCLogSink::start):

    Canonical link: https://commits.webkit.org/288860@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: a6c71ae38ae79fce8c8ca486eb77033b86a6ec04
      
https://github.com/WebKit/WebKit/commit/a6c71ae38ae79fce8c8ca486eb77033b86a6ec04
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.h
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h

  Log Message:
  -----------
  Cherry-pick 288696@main (1fee803ca0a7). 
https://bugs.webkit.org/show_bug.cgi?id=285434

    [GStreamer][WebRTC] Basic support for network conditions simulation
    https://bugs.webkit.org/show_bug.cgi?id=285434

    Reviewed by Xabier Rodriguez-Calvar.

    This patch adds support for 2 new environment variables, 
WEBKIT_WEBRTC_NETSIM_SRC_OPTIONS and
    WEBKIT_WEBRTC_NETSIM_SINK_OPTIONS allowing to simulate varying network 
conditions on incoming and
    outgoing WebRTC streams, respectively. For instance setting the value of
    WEBKIT_WEBRTC_NETSIM_SRC_OPTIONS to "drop-probability=0.05" would simulate 
5% packets drops for
    incoming streams. The options are the ones exposed by the GStreamer netsim 
element.

    Ideally the netsim elements should be tweakable at runtime, maybe that can 
be done using the future
    WebRTC devtools frontend.

    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
    (WebCore::GStreamerMediaEndpoint::netSimOptionsFromEnvironment):
    (WebCore::GStreamerMediaEndpoint::maybeInsertNetSimForElement):
    (WebCore::GStreamerMediaEndpoint::initializePipeline):
    (WebCore::GStreamerMediaEndpoint::createTransceiverBackends):
    (WebCore::GStreamerMediaEndpoint::requestAuxiliarySender):
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h:
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp:
    (WebCore::GStreamerPeerConnectionBackend::dispatchSenderBitrateRequest):
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h:
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.cpp:
    (WebCore::GStreamerRtpSenderBackend::dispatchBitrateRequest):
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpSenderBackend.h:
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingAudioSourceGStreamer::dispatchBitrateRequest):
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingAudioSourceGStreamer.h:
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h:
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingVideoSourceGStreamer::dispatchBitrateRequest):
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.h:

    Canonical link: https://commits.webkit.org/288696@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: be6bc94662b6ca7567b6ab715723314c3c29462d
      
https://github.com/WebKit/WebKit/commit/be6bc94662b6ca7567b6ab715723314c3c29462d
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp

  Log Message:
  -----------
  Cherry-pick 288861@main (90f7ce30e469). 
https://bugs.webkit.org/show_bug.cgi?id=285812

    REGRESSION(288696@main): [GStreamer][Debug] Triggers ASSERT when running 
webrtc/video-maxBitrate-vp8.html
    https://bugs.webkit.org/show_bug.cgi?id=285812

    Reviewed by Xabier Rodriguez-Calvar.

    Dispatch bitrate update requests from the main thread, because the 
RTCPeerConnection weak ref is
    only usable from that thread.

    * LayoutTests/platform/glib/TestExpectations:
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
    (WebCore::GStreamerMediaEndpoint::requestAuxiliarySender):

    Canonical link: https://commits.webkit.org/288861@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: bf474e584c000fbd641a3888d5878aa3054b32f7
      
https://github.com/WebKit/WebKit/commit/bf474e584c000fbd641a3888d5878aa3054b32f7
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp

  Log Message:
  -----------
  Cherry-pick 288863@main (3cd3b2b81e21). 
https://bugs.webkit.org/show_bug.cgi?id=285843

    [GStreamer] Re-add queues upstream of capturer sinks
    https://bugs.webkit.org/show_bug.cgi?id=285843

    Reviewed by Xabier Rodriguez-Calvar.

    Without a queue before the sink GStreamer emits a warning. Partial revert 
of 288646@main.

    * Source/WebCore/platform/mediastream/gstreamer/GStreamerCapturer.cpp:
    (WebCore::GStreamerCapturer::setupPipeline):

    Canonical link: https://commits.webkit.org/288863@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 38f3965758cce7f49f1d1c58760ea3a9aff0f437
      
https://github.com/WebKit/WebKit/commit/38f3965758cce7f49f1d1c58760ea3a9aff0f437
  Author: Alicia Boya Garcia <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    A 
LayoutTests/media/media-source/media-source-muted-scroll-and-seek-crash-expected.txt
    A 
LayoutTests/media/media-source/media-source-muted-scroll-and-seek-crash.html
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
    M 
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp

  Log Message:
  -----------
  Cherry-pick 288906@main (d65ff7e6d420). 
https://bugs.webkit.org/show_bug.cgi?id=285850

    [GStreamer] Fix "pipeline and player states are not synchronized" assertion 
crash
    https://bugs.webkit.org/show_bug.cgi?id=285850

    Reviewed by Philippe Normand.

    WebKit pauses muted videos when scrolling to save resources. However,
    when running in Debug, an assertion was failing inside
    MediaPlayerPrivateGStreamer::paused() in the GStreamer ports:

    > ASSERTION FAILED: pipeline and player states are not synchronized

    After some debugging, I found two problems that were causing the
    assertion to fail:

    (1) MediaPlayerPrivateGStreamerMSE::updateStates() didn't account for
    this behavior, which could trigger unexpected state changes. The patch
    adds it to the `shouldBePlaying` check.

    (2) The assertion checks m_isPipelinePlaying against the actual state of
    the pipeline. However, the code setting the pipeline to PAUSED when
    scrolling away (see setVisibleInViewport()) didn't update this field.
    Normally you use setPipelineState() instead which updates this field.

    As drive-by fixes this patch also adds new logs and renames two fields
    to have more useful names.

     * m_isVisibleInViewport is negated and renamed m_isPausedByViewport,
       reflecting its actual meaning (`m_isVisibleInViewport` was often true
       while the HTMLMediaElement was not visible in the viewport.

     * m_isVisible is renamed to m_pageIsVisible to both match other code and
       to reflect its actual meaning.

    This patch adds back media-source-muted-scroll-and-seek-crash.html from
    276798@main, which can be used to test the crash does not happen.  Note
    however the same caveat from back then applies:

    > Currently, part of the code to trigger the crash isn't executed
    > due to WEBKIT_GST_ALLOW_PLAYBACK_OF_INVISIBLE_VIDEOS=1 being set in the 
test driver in
    > Tools/Scripts/webkitpy/port/glib.py (264017@main), which needs to be 
commented manually.
    > We should find a way to add a test preference for this code path to be 
enabled.

    * 
LayoutTests/media/media-source/media-source-muted-scroll-and-seek-crash.html: 
Added.
    * 
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::paused const):
    (WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
    (WebCore::MediaPlayerPrivateGStreamer::setVisibleInViewport):
    (WebCore::MediaPlayerPrivateGStreamer::paint):
    * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
    * 
Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
    (WebCore::MediaPlayerPrivateGStreamerMSE::updateStates):

    Canonical link: https://commits.webkit.org/288906@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: ea7aff74a99194f143614349726ad8a9530e6903
      
https://github.com/WebKit/WebKit/commit/ea7aff74a99194f143614349726ad8a9530e6903
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  Cherry-pick 289000@main (fe0e185d178c). 
https://bugs.webkit.org/show_bug.cgi?id=285988

    [GStreamer] Deadlock when rendering frames to canvas
    https://bugs.webkit.org/show_bug.cgi?id=285988

    Reviewed by Xabier Rodriguez-Calvar.

    Release the player sample mutex before doing a potential conversion and 
rendering, otherwise another
    thread might attempt to lock it while the conversion is sill on-going, 
leading to deadlocks. The
    video frame converter also now times out after waiting 200ms on the 
pipeline, otherwise it might get
    stuck forever, leading to potential zombie WebProcesses.

    This was manually tested on a Debug build, with the mediastream tests.

    * 
Source/WebCore/platform/graphics/gstreamer/GStreamerVideoFrameConverter.cpp:
    (WebCore::GStreamerVideoFrameConverter::convert):
    * 
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
    (WebCore::MediaPlayerPrivateGStreamer::paint):

    Canonical link: https://commits.webkit.org/289000@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: bad7af8d1eac0c527b0f41497764741d467e0c01
      
https://github.com/WebKit/WebKit/commit/bad7af8d1eac0c527b0f41497764741d467e0c01
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp

  Log Message:
  -----------
  Cherry-pick 289421@main (a4be55f451ad). 
https://bugs.webkit.org/show_bug.cgi?id=286530

    [GStreamer] 
imported/w3c/web-platform-tests/webcodecs/audioDecoder-codec-specific.https.any.html?pcm*
 are permanent failures.
    https://bugs.webkit.org/show_bug.cgi?id=286530

    Reviewed by Xabier Rodriguez-Calvar.

    Configure the raw audio parser to set its source pad caps based on the sink 
caps, otherwise it
    defaults to stereo.

    * LayoutTests/platform/glib/TestExpectations:
    * Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
    (WebCore::configureAudioDecoderForHarnessing):

    Canonical link: https://commits.webkit.org/289421@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: 4dac59e15f9c1ed1607670c962a0a6ea7760c0ff
      
https://github.com/WebKit/WebKit/commit/4dac59e15f9c1ed1607670c962a0a6ea7760c0ff
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.h

  Log Message:
  -----------
  Cherry-pick 289420@main (0f278769c3b9). 
https://bugs.webkit.org/show_bug.cgi?id=285813

    REGRESSION(287950@main): [GStreamer] 
http/wpt/mediarecorder/pause-recording.html consistently times out
    https://bugs.webkit.org/show_bug.cgi?id=285813

    Reviewed by Xabier Rodriguez-Calvar.

    The test was timing out because it was expecting an EOS event to reach the 
sink of an already EOS'd
    pipeline. To prevent this from happening the recorder no longer does the 
wait if the EOS event
    wasn't successfully pushed in the pipeline.

    * LayoutTests/platform/glib/TestExpectations:
    * Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:
    (WebCore::MediaRecorderPrivateBackend::stopRecording):
    * 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
    (webkitMediaStreamSrcSignalEndOfStream):
    * 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.h:

    Canonical link: https://commits.webkit.org/289420@main

Canonical link: https://commits.webkit.org/[email protected]


  Commit: cad47dd1f05a58da978d24b8734a915958ea5be0
      
https://github.com/WebKit/WebKit/commit/cad47dd1f05a58da978d24b8734a915958ea5be0
  Author: Philippe Normand <[email protected]>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M 
LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt
    M LayoutTests/platform/ios/TestExpectations
    M LayoutTests/platform/wpe/TestExpectations
    A LayoutTests/webrtc/getDisplayMedia-pc-expected.txt
    A LayoutTests/webrtc/getDisplayMedia-pc.html
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.h
    M Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h

  Log Message:
  -----------
  Cherry-pick 289427@main (952a0889f8b3). 
https://bugs.webkit.org/show_bug.cgi?id=285433

    [GStreamer][WebRTC] Improved support for incoming PeerConnection with at 
least one inactive transceiver
    https://bugs.webkit.org/show_bug.cgi?id=285433

    Reviewed by Xabier Rodriguez-Calvar.

    Do not account for inactive transceivers when handling incoming tracks. Our 
peerconnection backend
    is also now able to detect unused transceivers and re-use them instead of 
creating a new one when
    requested from addTrack().

    Test: webrtc/getDisplayMedia-pc.html

    * LayoutTests/platform/glib/TestExpectations:
    * 
LayoutTests/platform/glib/fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt:
    * LayoutTests/platform/ios/TestExpectations:
    * LayoutTests/webrtc/getDisplayMedia-pc-expected.txt: Added.
    * LayoutTests/webrtc/getDisplayMedia-pc.html: Added.
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
    (WebCore::toGStreamerMediaEndpointTransceiverState):
    (WebCore::transceiverStatesFromWebRTCBin):
    (WebCore::GStreamerMediaEndpoint::linkOutgoingSources):
    (WebCore::GStreamerMediaEndpoint::doSetLocalDescription):
    (WebCore::GStreamerMediaEndpoint::doSetRemoteDescription):
    (WebCore::GStreamerMediaEndpoint::recycleTransceiverForSenderTrack):
    (WebCore::GStreamerMediaEndpoint::connectIncomingTrack):
    * Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.h:
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp:
    (WebCore::GStreamerPeerConnectionBackend::addTrack):
    (WebCore::GStreamerPeerConnectionBackend::findExistingSender): Deleted.
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h:
    * 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.h:
    * Source/WebCore/platform/mediastream/gstreamer/GStreamerRTPPacketizer.cpp:
    (WebCore::GStreamerRTPPacketizer::applyEncodingParameters const):
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::start):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::stopOutgoingSource):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::configure):
    (WebCore::RealtimeOutgoingMediaSourceGStreamer::type const):
    * 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.h:

    Canonical link: https://commits.webkit.org/289427@main

Canonical link: https://commits.webkit.org/[email protected]


Compare: https://github.com/WebKit/WebKit/compare/4bbfd1c7be91...cad47dd1f05a

To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to