[webkit-changes] [WebKit/WebKit] c94645: Implement WebCodecsVideoEncoder with GPUProcess ba...
youennf
noreply at github.com
Sat Oct 8 14:22:23 PDT 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: c946458d447464be29d85328c0173468fdcb00f7
https://github.com/WebKit/WebKit/commit/c946458d447464be29d85328c0173468fdcb00f7
Author: Youenn Fablet <youennf at gmail.com>
Date: 2022-10-08 (Sat, 08 Oct 2022)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_h264_annexb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_h264_avc-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_annexb-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt
M Source/WebCore/CMakeLists.txt
M Source/WebCore/DerivedSources-input.xcfilelist
M Source/WebCore/DerivedSources-output.xcfilelist
M Source/WebCore/DerivedSources.make
A Source/WebCore/Modules/webcodecs/AvcEncoderConfig.h
A Source/WebCore/Modules/webcodecs/AvcEncoderConfig.idl
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoderConfig.h
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoderConfig.idl
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/VideoEncoder.cpp
M Source/WebCore/platform/VideoEncoder.h
M Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.cpp
M Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.h
M Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp
M Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h
M Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.h
Log Message:
-----------
Implement WebCodecsVideoEncoder with GPUProcess backend
https://bugs.webkit.org/show_bug.cgi?id=246068
rdar://problem/100798062
Reviewed by Eric Carlson.
Complement RemoteVideoCodecFactory with remote encoder support.
Add support for AvcEncoderConfig to make sure we only support AnnexB for now.
Make use of libwebrtc remote encoders through RemoteVideoCodecFactory/RemoteVideoEncoder like done for decoders.
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_h264_annexb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_h264_avc-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_h264_annexb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_h264_avc-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_h264_annexb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_h264_avc-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_annexb-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder-config.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder-config.https.any.worker-expected.txt:
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Modules/webcodecs/AvcEncoderConfig.h: Added.
* Source/WebCore/Modules/webcodecs/AvcEncoderConfig.idl: Added.
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
(WebCore::isValidEncoderConfig):
(WebCore::WebCodecsVideoEncoder::configure):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoderConfig.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoderConfig.idl:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/VideoEncoder.cpp:
(WebCore::VideoEncoder::setCreatorCallback):
(WebCore::VideoEncoder::create):
(WebCore::VideoEncoder::createLocalEncoder):
* Source/WebCore/platform/VideoEncoder.h:
* Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.cpp:
(WebKit::RemoteVideoEncoderCallbacks::create):
(WebKit::RemoteVideoEncoderCallbacks::postTask):
(WebKit::RemoteVideoEncoderCallbacks::close):
(WebKit::RemoteVideoEncoderCallbacks::addDuration):
(WebKit::RemoteVideoCodecFactory::RemoteVideoCodecFactory):
(WebKit::RemoteVideoCodecFactory::createDecoder):
(WebKit::RemoteVideoCodecFactory::createEncoder):
(WebKit::RemoteVideoEncoder::RemoteVideoEncoder):
(WebKit::RemoteVideoEncoder::~RemoteVideoEncoder):
(WebKit::RemoteVideoEncoder::encode):
(WebKit::RemoteVideoEncoder::flush):
(WebKit::RemoteVideoEncoder::reset):
(WebKit::RemoteVideoEncoder::close):
(WebKit::RemoteVideoEncoderCallbacks::RemoteVideoEncoderCallbacks):
(WebKit::RemoteVideoEncoderCallbacks::notifyEncodedChunk):
* Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.h:
* Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp:
(WebKit::LibWebRTCCodecs::createEncoder):
(WebKit::LibWebRTCCodecs::createEncoderAndWaitUntilReady):
(WebKit::LibWebRTCCodecs::createEncoderInternal):
(WebKit::LibWebRTCCodecs::releaseEncoder):
(WebKit::LibWebRTCCodecs::encodeFrameInternal):
(WebKit::LibWebRTCCodecs::encodeFrame):
(WebKit::LibWebRTCCodecs::registerEncodeFrameCallback):
(WebKit::LibWebRTCCodecs::registerEncodedVideoFrameCallback):
(WebKit::LibWebRTCCodecs::completedEncoding):
* Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
(WebKit::LibWebRTCCodecs::createDecoderInternal): Deleted.
* Source/WebKit/WebProcess/GPU/webrtc/SharedVideoFrame.h:
Canonical link: https://commits.webkit.org/255316@main
More information about the webkit-changes
mailing list