Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d908463e14d12fda5a42a1d3fb9cbf61041fd261
https://github.com/WebKit/WebKit/commit/d908463e14d12fda5a42a1d3fb9cbf61041fd261
Author: Philippe Normand <[email protected]>
Date: 2025-11-11 (Tue, 11 Nov 2025)
Changed paths:
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp
M Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.h
M Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp
M Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.h
M Source/WebCore/platform/libwebrtc/LibWebRTCVPXVideoDecoder.cpp
M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp
M
Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp
A
Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCVideoFrameUtilities.h
M Source/WebCore/platform/mediastream/libwebrtc/VideoFrameLibWebRTC.cpp
M Source/WebCore/platform/mediastream/libwebrtc/VideoFrameLibWebRTC.h
M
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp
M
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.cpp
M
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.h
M
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp
M
Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm
Log Message:
-----------
[LibWebRTC][GStreamer] Support for video encoding using GStreamer encoders
https://bugs.webkit.org/show_bug.cgi?id=302248
Reviewed by Xabier Rodriguez-Calvar.
This patch rewrites the LibWebRTC GStreamer-based VideoEncoder using the
WebCodecs backend. For now
we enable this for VP8 and H.264. Other codecs rely on the native LibWebRTC
encoders. Along the way
the GStreamer video encoder gained support for variable framerate and annexB
(mostly relevant for
H.264, H.265 and AV1).
Driving-by, colorspace utilities were moved from the Cocoa-specific VideoFrame
implementation to a
new header file, LibWebRTCVideoFrameUtilities.h.
* Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp:
(WebCore::GStreamerVideoEncoder::create):
(WebCore::GStreamerVideoEncoder::setBitRateAllocation):
(WebCore::GStreamerInternalVideoEncoder::initialize):
(WebCore::GStreamerInternalVideoEncoder::setBitRateAllocation):
(WebCore::GStreamerInternalVideoEncoder::applyRates):
* Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.h:
* Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp:
(annexBStreamFormatCapsFieldValue):
(videoEncoderSetEncoder):
(videoEncoderSetCodec):
(videoEncoderSetFrameRate):
(webkit_video_encoder_class_init):
* Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.h:
(WebKitVideoEncoderBitRateAllocation::create): Deleted.
(WebKitVideoEncoderBitRateAllocation::setBitRate): Deleted.
(WebKitVideoEncoderBitRateAllocation::getBitRate const): Deleted.
(WebKitVideoEncoderBitRateAllocation::scalabilityMode const): Deleted.
(WebKitVideoEncoderBitRateAllocation::WebKitVideoEncoderBitRateAllocation):
Deleted.
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:
(WebCore::MediaRecorderPrivateBackend::configureVideoEncoder):
* Source/WebCore/platform/mediastream/gstreamer/GStreamerVideoRTPPacketizer.cpp:
(WebCore::GStreamerVideoRTPPacketizer::create):
* Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCVideoFrameUtilities.h:
Copied from
Source/WebCore/platform/mediastream/libwebrtc/VideoFrameLibWebRTC.cpp.
(WebCore::colorSpaceFromLibWebRTCVideoFrame):
(WebCore::videoRotationFromLibWebRTCVideoFrame):
* Source/WebCore/platform/mediastream/libwebrtc/VideoFrameLibWebRTC.cpp:
(WebCore::VideoFrameLibWebRTC::colorSpaceFromFrame): Deleted.
*
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoEncoderFactory.cpp:
(WebCore::GStreamerEncodedImageBuffer::create):
(WebCore::GStreamerEncodedImageBuffer::GStreamerEncodedImageBuffer):
(WebCore::GStreamerVideoEncoderFactory::Create):
(WebCore::GStreamerVideoEncoderFactory::GetSupportedFormats const):
(WebCore::GStreamerEncodedImageBuffer::getBuffer const): Deleted.
(WebCore::GStreamerEncodedImageBuffer::getVideoResolution const): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::LibWebRTCGStreamerVideoEncoder):
Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::pipeline): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::makeElement): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::returnFromFlowReturn): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::createEncoder): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::AddCodecIfSupported): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::Caps): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::ConfigureSupportedCodec): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoder::SetRestrictionCaps): Deleted.
(WebCore::LibWebRTCGStreamerVideoEncoderH264::LibWebRTCGStreamerVideoEncoderH264):
Deleted.
*
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.cpp:
(WebCore::convertLibWebRTCVideoFrameToGStreamerSample):
(WebCore::convertGStreamerSampleToLibWebRTCVideoFrame):
(WebCore::GStreamerVideoFrameLibWebRTC::ToI420):
*
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/GStreamerVideoFrameLibWebRTC.h:
(WebCore::GStreamerVideoFrameLibWebRTC::sample):
(WebCore::GStreamerVideoFrameLibWebRTC::GStreamerVideoFrameLibWebRTC):
(WebCore::GStreamerVideoFrameLibWebRTC::getSample const): Deleted.
*
Source/WebCore/platform/mediastream/libwebrtc/gstreamer/RealtimeIncomingVideoSourceLibWebRTC.cpp:
(WebCore::RealtimeIncomingVideoSourceLibWebRTC::OnFrame):
* Source/WebCore/platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
(WebCore::RealtimeIncomingVideoSourceCocoa::toVideoFrame):
Canonical link: https://commits.webkit.org/302840@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications