[webkit-changes] [WebKit/WebKit] a65cb6: [GStreamer] Video encoder configuration using code...

Philippe Normand noreply at github.com
Thu May 2 08:59:04 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a65cb6426ce7d364e4f0c462533bf67e5d0abb5f
      https://github.com/WebKit/WebKit/commit/a65cb6426ce7d364e4f0c462533bf67e5d0abb5f
  Author: Philippe Normand <philn at igalia.com>
  Date:   2024-05-02 (Thu, 02 May 2024)

  Changed paths:
    M LayoutTests/platform/glib/TestExpectations
    M Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp
    M Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp
    M Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.h
    M Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp
    M Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.h
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp
    M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.h
    M Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp
    M Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp

  Log Message:
  -----------
  [GStreamer] Video encoder configuration using codec strings
https://bugs.webkit.org/show_bug.cgi?id=273398

Reviewed by Xabier Rodriguez-Calvar.

The video encoder used to be configurable with output caps, but that wasn't sufficient so later on
it was extended with some support for codec string handling, which made the code more complex. By
dropping GstCaps configuration support and by relying only on codec string parsing, the input/output
caps logic is now decided in the GStreamerCodecUtilities. So modules making use of codec
strings (MediaRecorder, WebCodecs) pass their configuration directly to the encoder. For WebRTC we
forge a codec string according to the negotiated video encoding-name. Later on for simulcast the
codec strings from the RtpSender parameters will be leveraged.

* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:
(WebCore::GStreamerRegistryScanner::fillVideoRtpCapabilities):
* Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp:
(WebCore::GStreamerInternalVideoEncoder::initialize):
* Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.cpp:
(WebCore::h264CapsFromCodecString):
(WebCore::h265CapsFromCodecString):
(WebCore::vpxCapsFromCodecString):
(WebCore::av1CapsFromCodecString):
(WebCore::GStreamerCodecUtilities::capsFromCodecString):
* Source/WebCore/platform/gstreamer/GStreamerCodecUtilities.h:
* Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.cpp:
(videoEncoderGetProperty):
(videoEncoderSetEncoder):
(videoEncoderFindForCodec):
(videoEncoderSupportsCodec):
(videoEncoderSetCodec):
(videoEncoderSetProperty):
(webkit_video_encoder_class_init):
(videoEncoderSupportsFormat): Deleted.
(videoEncoderSetFormat): Deleted.
* Source/WebCore/platform/gstreamer/VideoEncoderPrivateGStreamer.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.cpp:
(WebCore::MediaRecorderPrivateBackend::containerProfile):
(WebCore::MediaRecorderPrivateBackend::configureVideoEncoder):
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateGStreamer.h:
* Source/WebCore/platform/mediastream/gstreamer/RealtimeOutgoingVideoSourceGStreamer.cpp:
(WebCore::RealtimeOutgoingVideoSourceGStreamer::setPayloadType):
* Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GStreamerTest.cpp:
(TestWebKitAPI::TEST_F):

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



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


More information about the webkit-changes mailing list