Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: f27346baf833b1134f43b57d859570103117aa87
      
https://github.com/WebKit/WebKit/commit/f27346baf833b1134f43b57d859570103117aa87
  Author: Xabier Rodriguez-Calvar <[email protected]>
  Date:   2025-12-11 (Thu, 11 Dec 2025)

  Changed paths:
    M Source/WTF/wtf/PlatformGTK.cmake
    M Source/WTF/wtf/PlatformWPE.cmake
    A Source/WTF/wtf/glib/GMallocString.cpp
    A Source/WTF/wtf/glib/GMallocString.h
    M Source/WTF/wtf/glib/GSpanExtras.h
    M Source/WTF/wtf/text/CStringView.h
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerDtlsTransportBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceAgent.cpp
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceTransportBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp
    M 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp
    M Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp
    M Source/WebCore/platform/audio/gstreamer/AudioEncoderGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp
    M Source/WebCore/platform/graphics/gstreamer/GStreamerSinksWorkarounds.cpp
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
    M Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp
    M 
Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp
    M 
Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp
    M Source/WebCore/platform/gstreamer/GStreamerElementHarness.cpp
    M Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp
    M Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.h
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp
    M 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp
    M Tools/TestWebKitAPI/PlatformGTK.cmake
    M Tools/TestWebKitAPI/PlatformWPE.cmake
    M Tools/TestWebKitAPI/Tests/WTF/CStringView.cpp
    A Tools/TestWebKitAPI/Tests/WTF/glib/GMallocString.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GstElementHarness.cpp

  Log Message:
  -----------
  [Glib][GStreamer] Implement GMallocString class and apply it to GStreamer code
https://bugs.webkit.org/show_bug.cgi?id=303909

Reviewed by Adrian Perez de Castro.

When interfacing with Glib APIs there was no way to wrap an owned malloced 
char* so GMallocString was created. It can
adopt C strings in several ways, providing then easy ways to interface with the 
WebKit strings the same way CStringView
does and also preserving the original null terminated C string without 
performing any copy.

I applied this to the GStreamer code.

Tests: Tools/TestWebKitAPI/Tests/WTF/CStringView.cpp
       Tools/TestWebKitAPI/Tests/WTF/glib/GMallocString.cpp
       Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp
       Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GstElementHarness.cpp
* Source/WTF/wtf/PlatformGTK.cmake:
* Source/WTF/wtf/PlatformWPE.cmake:
* Source/WTF/wtf/glib/GMallocString.cpp: Added.
* Source/WTF/wtf/glib/GMallocString.h: Added.
(WTF::operator==):
(WTF::safePrintfType):
(WTF::toCStringView):
* Source/WTF/wtf/glib/GSpanExtras.h:
(WTF::dupGMallocSpan):
(WTF::adoptGMallocString): Deleted.
* Source/WTF/wtf/text/CStringView.h:
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerDataChannelHandler.cpp:
(WebCore::GStreamerDataChannelHandler::checkState):
* 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerDtlsTransportBackend.cpp:
(WebCore::GStreamerDtlsTransportBackendObserver::stateChanged):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceAgent.cpp:
(webkitGstWebRTCIceAgentLocalCandidateGatheredForStream):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerIceTransportBackend.cpp:
(WebCore::GStreamerIceTransportBackend::registerClient):
(WebCore::GStreamerIceTransportBackend::stateChanged const):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:
(WebCore::GStreamerMediaEndpoint::initializePipeline):
(WebCore::fetchDescription):
(WebCore::fetchSignalingState):
(WebCore::toGStreamerMediaEndpointTransceiverState):
(WebCore::transceiverStatesFromWebRTCBin):
(WebCore::GStreamerMediaEndpoint::linkOutgoingSources):
(WebCore::GStreamerMediaEndpoint::setDescription):
(WebCore::GStreamerMediaEndpoint::processSDPMessage):
(WebCore::GStreamerMediaEndpoint::createTransceiverBackends):
(WebCore::GStreamerMediaEndpoint::onIceGatheringChange):
(WebCore::GStreamerMediaEndpoint::collectTransceivers):
* 
Source/WebCore/Modules/mediastream/gstreamer/GStreamerRtpTransceiverBackend.cpp:
(WebCore::GStreamerRtpTransceiverBackend::setDirection):
* Source/WebCore/Modules/mediastream/gstreamer/GStreamerWebRTCUtils.cpp:
(WebCore::setSsrcAudioLevelVadOn):
* Source/WebCore/platform/audio/gstreamer/AudioEncoderGStreamer.cpp:
(WebCore::GStreamerInternalAudioEncoder::initialize):
* Source/WebCore/platform/graphics/gstreamer/AudioTrackPrivateGStreamer.cpp:
(WebCore::AudioTrackPrivateGStreamer::updateConfigurationFromCaps):
* Source/WebCore/platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::getStreamIdFromPad):
(WebCore::registerActivePipeline):
(WebCore::unregisterPipeline):
(WebCore::videoColorSpaceFromInfo):
* Source/WebCore/platform/graphics/gstreamer/GStreamerSinksWorkarounds.cpp:
(WebCore::BaseSinkPositionFlushWorkaroundProbe::checkIsNeeded):
(WebCore::AppSinkFlushCapsWorkaroundProbe::checkIsNeeded):
* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::elementIdChanged const):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::updateBufferingStatus):
(WebCore::MediaPlayerPrivateGStreamer::configureParsebin):
(WebCore::MediaPlayerPrivateGStreamer::configureElement):
(WebCore::MediaPlayerPrivateGStreamer::configureDownloadBuffer):
(WebCore::MediaPlayerPrivateGStreamer::downloadBufferFileCreatedCallback):
(WebCore::MediaPlayerPrivateGStreamer::setupCodecProbe):
(WebCore::MediaPlayerPrivateGStreamer::configureVideoDecoder):
(WebCore::MediaPlayerPrivateGStreamer::getVideoOrientation):
(WebCore::MediaPlayerPrivateGStreamer::audioOutputDeviceChanged):
* Source/WebCore/platform/graphics/gstreamer/VideoTrackPrivateGStreamer.cpp:
(WebCore::VideoTrackPrivateGStreamer::updateConfigurationFromCaps):
* Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcSetExtraHeader):
(webKitWebSrcMakeRequest):
* Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::didReceiveInitializationSegment):
* Source/WebCore/platform/graphics/gstreamer/mse/GStreamerMediaDescription.cpp:
(WebCore::GStreamerMediaDescription::extractCodecName const):
* Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcLoop):
(webKitMediaSrcGetUri):
(webKitMediaSrcSetUri):
* Source/WebCore/platform/gstreamer/GStreamerElementHarness.cpp:
(WebCore::MermaidBuilder::describeCaps):
(WebCore::GStreamerElementHarness::dumpGraph):
* Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.cpp:
(WebCore::DesktopPortal::waitResponseSignal):
(WebCore::DesktopPortalScreenCast::createScreencastSession):
(WebCore::DesktopPortalScreenCast::ScreencastSession::openPipewireRemote):
* Source/WebCore/platform/mediastream/gstreamer/DesktopPortal.h:
(WebCore::DesktopPortal::waitResponseSignal):
* 
Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp:
(WebCore::sortDevices):
(WebCore::GStreamerCaptureDeviceManager::captureDeviceFromGstDevice):
(WebCore::GStreamerCaptureDeviceManager::refreshCaptureDevices):
* 
Source/WebCore/platform/mediastream/gstreamer/GStreamerDisplayCaptureDeviceManager.cpp:
(WebCore::GStreamerDisplayCaptureDeviceManager::createDisplayCaptureSource):
* 
Source/WebCore/platform/mediastream/gstreamer/GStreamerIncomingTrackProcessor.cpp:
(WebCore::GStreamerIncomingTrackProcessor::mediaStreamIdFromPad):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(webkitMediaStreamSrcAddTrack):
* 
Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingMediaSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingMediaSourceGStreamer::checkMid):
* Tools/TestWebKitAPI/PlatformGTK.cmake:
* Tools/TestWebKitAPI/PlatformWPE.cmake:
* Tools/TestWebKitAPI/Tests/WTF/CStringView.cpp:
(TestWebKitAPI::TEST(WTF, CStringViewFrom)):
* Tools/TestWebKitAPI/Tests/WTF/glib/GMallocString.cpp: Added.
(TestWebKitAPI::TEST(WTF_GMallocString, NullAndEmpty)):
(TestWebKitAPI::TEST(WTF_GMallocString, Move)):
(TestWebKitAPI::TEST(WTF_GMallocString, Length)):
(TestWebKitAPI::TEST(WTF_GMallocString, Equality)):
(TestWebKitAPI::TEST(WTF_GMallocString, CStringView)):
(TestWebKitAPI::TEST(WTF_GMallocString, LeakUTF8)):
(TestWebKitAPI::TEST(WTF_GMallocString, ToCStringView)):
* Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp:
(TestWebKitAPI::TEST_F(GStreamerTest, capsFromCodecString)):
* Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GstElementHarness.cpp:
(TestWebKitAPI::TEST_F(GStreamerTest, harnessParseMP4)):
(TestWebKitAPI::TEST_F(GStreamerTest, harnessDecodeMP4Video)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to