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