Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c6f463099606c3baba97dbc40b336aecaf495fd3 https://github.com/WebKit/WebKit/commit/c6f463099606c3baba97dbc40b336aecaf495fd3 Author: Philippe Normand <ph...@igalia.com> Date: 2023-01-16 (Mon, 16 Jan 2023)
Changed paths: M LayoutTests/platform/glib/TestExpectations A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp8-expected.txt A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp9-expected.txt A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any-expected.txt A LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/videoFrame-drawImage.any-expected.txt M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp M Source/WebCore/platform/GStreamer.cmake M Source/WebCore/platform/VideoDecoder.cpp M Source/WebCore/platform/VideoEncoder.cpp M Source/WebCore/platform/VideoFrame.cpp A Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.cpp A Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.h A Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp A Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.h M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp M Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.h A Source/WebCore/platform/gstreamer/GStreamerElementHarness.cpp A Source/WebCore/platform/gstreamer/GStreamerElementHarness.h M Source/cmake/OptionsGTK.cmake M Source/cmake/OptionsWPE.cmake M Tools/TestWebKitAPI/PlatformGTK.cmake M Tools/TestWebKitAPI/PlatformWPE.cmake A Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GstElementHarness.cpp Log Message: ----------- [GStreamer][WebCodecs] Video encoding and decoding support https://bugs.webkit.org/show_bug.cgi?id=249972 Reviewed by Xabier Rodriguez-Calvar. The video encoder makes use of the WebRTC encoder. The video decoder relies on the platform decoder previously probed through the registry scanner. In order to have integrate the encoding and decoding at the lowest level possible we make use of a new component called GstElementHarness, so we have full control on the input and output workflow of the encoder and decoder. * LayoutTests/platform/glib/TestExpectations: * LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt: Added. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp8-expected.txt: Added. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp9-expected.txt: Added. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/videoFrame-createImageBitmap.any-expected.txt: Added. * LayoutTests/platform/glib/imported/w3c/web-platform-tests/webcodecs/videoFrame-drawImage.any-expected.txt: Added. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.cpp: (WebCore::WebCodecsVideoFrame::create): * Source/WebCore/platform/GStreamer.cmake: * Source/WebCore/platform/VideoDecoder.cpp: (WebCore::VideoDecoder::createLocalDecoder): * Source/WebCore/platform/VideoEncoder.cpp: (WebCore::VideoEncoder::createLocalEncoder): * Source/WebCore/platform/VideoFrame.cpp: (WebCore::VideoFrame::paintInContext): * Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.cpp: Added. (WebCore::gstWorkQueue): (WebCore::GStreamerInternalVideoDecoder::create): (WebCore::GStreamerInternalVideoDecoder::postTask): (WebCore::GStreamerInternalVideoDecoder::close): (WebCore::GStreamerVideoDecoder::create): (WebCore::GStreamerVideoDecoder::GStreamerVideoDecoder): (WebCore::GStreamerVideoDecoder::~GStreamerVideoDecoder): (WebCore::GStreamerVideoDecoder::decode): (WebCore::GStreamerVideoDecoder::flush): (WebCore::GStreamerVideoDecoder::reset): (WebCore::GStreamerVideoDecoder::close): (WebCore::GStreamerInternalVideoDecoder::GStreamerInternalVideoDecoder): (WebCore::GStreamerInternalVideoDecoder::decode): (WebCore::GStreamerInternalVideoDecoder::flush): * Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.h: Added. * Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.cpp: Added. (WebCore::gstWorkQueue): (WebCore::GStreamerInternalVideoEncoder::create): (WebCore::GStreamerInternalVideoEncoder::postTask): (WebCore::GStreamerInternalVideoEncoder::close): (WebCore::GStreamerInternalVideoEncoder::harness const): (WebCore::GStreamerInternalVideoEncoder::isClosed const): (WebCore::GStreamerVideoEncoder::create): (WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder): (WebCore::GStreamerVideoEncoder::~GStreamerVideoEncoder): (WebCore::GStreamerVideoEncoder::initialize): (WebCore::GStreamerVideoEncoder::encode): (WebCore::GStreamerVideoEncoder::flush): (WebCore::GStreamerVideoEncoder::reset): (WebCore::GStreamerVideoEncoder::close): (WebCore::GStreamerInternalVideoEncoder::GStreamerInternalVideoEncoder): (WebCore::GStreamerInternalVideoEncoder::initialize): (WebCore::GStreamerInternalVideoEncoder::encode): (WebCore::GStreamerInternalVideoEncoder::flush): * Source/WebCore/platform/graphics/gstreamer/VideoEncoderGStreamer.h: Added. * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.cpp: (WebCore::GstSampleColorConverter::convertSample): (WebCore::GstSampleColorConverter::convertSampleToImage): (WebCore::VideoFrame::fromNativeImage): (WebCore::copyToGstBufferPlane): (WebCore::VideoFrame::createNV12): (WebCore::VideoFrame::createRGBA): (WebCore::VideoFrame::createBGRA): (WebCore::VideoFrame::createI420): (WebCore::VideoFrameGStreamer::create): (WebCore::VideoFrameGStreamer::createWrappedSample): (WebCore::VideoFrameGStreamer::VideoFrameGStreamer): (WebCore::copyPlane): (WebCore::VideoFrame::copyTo): (WebCore::VideoFrame::paintInContext): * Source/WebCore/platform/graphics/gstreamer/VideoFrameGStreamer.h: * Source/WebCore/platform/gstreamer/GStreamerElementHarness.cpp: Added. (WebCore::GStreamerElementHarness::GStreamerElementHarness): (WebCore::GStreamerElementHarness::~GStreamerElementHarness): (WebCore::GStreamerElementHarness::start): (WebCore::GStreamerElementHarness::pushStickyEvents): (WebCore::GStreamerElementHarness::pushSample): (WebCore::GStreamerElementHarness::pushBuffer): (WebCore::GStreamerElementHarness::pushEvent): (WebCore::GStreamerElementHarness::pullBuffer): (WebCore::GStreamerElementHarness::pullEvent): (WebCore::GStreamerElementHarness::outputCaps): (WebCore::GStreamerElementHarness::chainBuffer): (WebCore::GStreamerElementHarness::sinkQuery): (WebCore::GStreamerElementHarness::sinkEvent): (WebCore::GStreamerElementHarness::srcQuery): (WebCore::GStreamerElementHarness::srcEvent): (WebCore::GStreamerElementHarness::processOutputBuffers): (WebCore::GStreamerElementHarness::flush): * Source/WebCore/platform/gstreamer/GStreamerElementHarness.h: Added. (WebCore::GStreamerElementHarness::create): (WebCore::GStreamerElementHarness::element const): * Source/cmake/OptionsGTK.cmake: * Source/cmake/OptionsWPE.cmake: * Tools/TestWebKitAPI/PlatformGTK.cmake: * Tools/TestWebKitAPI/PlatformWPE.cmake: * Tools/TestWebKitAPI/Tests/WebCore/gstreamer/GstElementHarness.cpp: Added. (TestWebKitAPI::TEST_F): Canonical link: https://commits.webkit.org/258949@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes