[webkit-changes] [WebKit/WebKit] a591b2: Add support for AVC H264 WebCodecsVideoEncoder
youennf
noreply at github.com
Wed Oct 12 06:49:15 PDT 2022
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a591b2669d7568d05194a2a2f3d419c855a02a68
https://github.com/WebKit/WebKit/commit/a591b2669d7568d05194a2a2f3d419c855a02a68
Author: Youenn Fablet <youennf at gmail.com>
Date: 2022-10-12 (Wed, 12 Oct 2022)
Changed paths:
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_avc-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt
M Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp
M Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp
M Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.h
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.mm
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/base/RTCVideoEncoder.h
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.h
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.h
M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.mm
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h
M Source/WebCore/platform/LibWebRTCVPXVideoEncoder.cpp
M Source/WebCore/platform/LibWebRTCVPXVideoEncoder.h
M Source/WebCore/platform/VideoEncoder.cpp
M Source/WebCore/platform/VideoEncoder.h
M Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.h
M Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in
M Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm
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/LibWebRTCCodecs.messages.in
Log Message:
-----------
Add support for AVC H264 WebCodecsVideoEncoder
https://bugs.webkit.org/show_bug.cgi?id=246150
rdar://problem/100851081
Reviewed by Eric Carlson.
Add support for AVC encoder in libwebrtc.
Add support at WebKit layer by passing a boolean to set annexB or not, and a callback to get the description in case of AVC.
Add support at WebCore level to provide the metadata in the output callback when needed.
* 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_avc-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_h264_avc-expected.txt:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.h:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/WebKit/WebKitEncoder.mm:
(-[WK_RTCLocalVideoH264H265Encoder setUseAnnexB:]):
(-[WK_RTCLocalVideoH264H265Encoder setDescriptionCallback:]):
(webrtc::createLocalEncoder):
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/base/RTCVideoEncoder.h:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.h:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH264.mm:
(-[RTCVideoEncoderH264 initWithCodecInfo:]):
(-[RTCVideoEncoderH264 setUseAnnexB:]):
(-[RTCVideoEncoderH264 setDescriptionCallback:]):
(-[RTCVideoEncoderH264 frameWasEncoded:flags:sampleBuffer:codecSpecificInfo:width:height:renderTimeMs:timestamp:rotation:isKeyFrameRequired:]):
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.h:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoEncoderH265.mm:
(-[RTCVideoEncoderH265 initWithCodecInfo:]):
(-[RTCVideoEncoderH265 setUseAnnexB:]):
(-[RTCVideoEncoderH265 setDescriptionCallback:]):
(-[RTCVideoEncoderH265 frameWasEncoded:flags:sampleBuffer:width:height:renderTimeMs:timestamp:rotation:]):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
(WebCore::WebCodecsVideoEncoder::configure):
(WebCore::WebCodecsVideoEncoder::createEncodedChunkMetadata):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h:
* Source/WebCore/platform/LibWebRTCVPXVideoEncoder.cpp:
(WebCore::LibWebRTCVPXVideoEncoder::LibWebRTCVPXVideoEncoder):
* Source/WebCore/platform/LibWebRTCVPXVideoEncoder.h:
* Source/WebCore/platform/VideoEncoder.cpp:
(WebCore::VideoEncoder::create):
(WebCore::VideoEncoder::createLocalEncoder):
* Source/WebCore/platform/VideoEncoder.h:
* Source/WebKit/Configurations/WebKit.xcconfig:
* Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.h:
* Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in:
* Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm:
(WebKit::LibWebRTCCodecsProxy::createEncoder):
* Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.cpp:
(WebKit::RemoteVideoEncoderCallbacks::create):
(WebKit::RemoteVideoCodecFactory::createEncoder):
(WebKit::RemoteVideoDecoder::RemoteVideoDecoder): Deleted.
(WebKit::RemoteVideoDecoder::~RemoteVideoDecoder): Deleted.
(WebKit::RemoteVideoDecoder::decode): Deleted.
(WebKit::RemoteVideoDecoder::flush): Deleted.
(WebKit::RemoteVideoDecoder::reset): Deleted.
(WebKit::RemoteVideoDecoder::close): Deleted.
(WebKit::RemoteVideoDecoderCallbacks::RemoteVideoDecoderCallbacks): Deleted.
(WebKit::RemoteVideoDecoderCallbacks::notifyVideoFrame): Deleted.
(WebKit::RemoteVideoEncoder::RemoteVideoEncoder): Deleted.
(WebKit::RemoteVideoEncoder::~RemoteVideoEncoder): Deleted.
(WebKit::RemoteVideoEncoder::encode): Deleted.
(WebKit::RemoteVideoEncoder::flush): Deleted.
(WebKit::RemoteVideoEncoder::reset): Deleted.
(WebKit::RemoteVideoEncoder::close): Deleted.
(WebKit::RemoteVideoEncoderCallbacks::RemoteVideoEncoderCallbacks): Deleted.
(WebKit::RemoteVideoEncoderCallbacks::notifyEncodedChunk): Deleted.
* 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::registerEncoderDescriptionCallback):
(WebKit::LibWebRTCCodecs::setEncodingDescription):
(WebKit::LibWebRTCCodecs::gpuProcessConnectionDidClose):
* Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h:
* Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.messages.in:
Canonical link: https://commits.webkit.org/255430@main
More information about the webkit-changes
mailing list