[webkit-changes] [WebKit/WebKit] d1cde8: Implement WebCodecsVideoEncoder with VPx backend

youennf noreply at github.com
Fri Oct 7 03:49:58 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d1cde888264b4a4d62d8db2a8047a2b547f1c0b5
      https://github.com/WebKit/WebKit/commit/d1cde888264b4a4d62d8db2a8047a2b547f1c0b5
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2022-10-07 (Fri, 07 Oct 2022)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_h264_annexb-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_h264_avc-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_vp9_p0-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_vp9_p2-expected.txt
    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/full-cycle-test.https.any_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_vp9_p0-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_vp9_p2-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.worker_h264_avc-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_vp9_p0-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_vp9_p2-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/reconfiguring-encoder.https.any_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_vp9_p0-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_vp9_p2-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_h264-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp9-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_h264-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_vp8-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_vp9-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder-config.https.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder-config.https.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder.https.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder.https.any.worker-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/WebCore/Configurations/WebCore.xcconfig
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h
    M Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.h
    M Source/WebCore/WebCore.xcodeproj/project.pbxproj
    A Source/WebCore/platform/LibWebRTCVPXVideoEncoder.cpp
    A Source/WebCore/platform/LibWebRTCVPXVideoEncoder.h
    A Source/WebCore/platform/VideoEncoder.cpp
    A Source/WebCore/platform/VideoEncoder.h

  Log Message:
  -----------
  Implement WebCodecsVideoEncoder with VPx backend
https://bugs.webkit.org/show_bug.cgi?id=245954
rdar://problem/100708947

Introduce VideoEncoder interface that is used by WebCodecsVideoEncoder as the interface to actual encoders.
Implement WebCodecs VideoEncoder algorithms.
Add VP8 and VP9 decoder implementations for VideoEncoder using libvpx.

Reviewed by Eric Carlson.

* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any.worker_vp9_p0-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/full-cycle-test.https.any_vp9_p0-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any.worker_vp9_p0-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/reconfiguring-encoder.https.any_vp9_p0-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any.worker_vp9-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/temporal-svc-encoding.https.any_vp9-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:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/video-encoder.https.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.worker_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any.worker_vp9-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any_vp8-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoDecoder-codec-specific.https.any_vp9-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoFrame-canvasImageSource-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoFrame-construction.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/webcodecs/videoFrame-construction.window-expected.txt:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp:
* Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp:
* Source/WebCore/Configurations/WebCore.xcconfig:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoDecoder.cpp:
(WebCore::WebCodecsVideoDecoder::decode):
(WebCore::isValidDecoderConfig):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.cpp:
(WebCore::WebCodecsVideoEncoder::create):
(WebCore::isValidEncoderConfig):
(WebCore::WebCodecsVideoEncoder::configure):
(WebCore::WebCodecsVideoEncoder::encode):
(WebCore::WebCodecsVideoEncoder::flush):
(WebCore::WebCodecsVideoEncoder::reset):
(WebCore::WebCodecsVideoEncoder::close):
(WebCore::WebCodecsVideoEncoder::isConfigSupported):
(WebCore::WebCodecsVideoEncoder::closeEncoder):
(WebCore::WebCodecsVideoEncoder::resetEncoder):
(WebCore::WebCodecsVideoEncoder::scheduleDequeueEvent):
(WebCore::WebCodecsVideoEncoder::setInternalEncoder):
(WebCore::WebCodecsVideoEncoder::queueControlMessageAndProcess):
(WebCore::WebCodecsVideoEncoder::processControlMessageQueue):
(WebCore::WebCore::WebCodecsVideoEncoder::suspend):
* Source/WebCore/Modules/webcodecs/WebCodecsVideoEncoder.h:
* Source/WebCore/Modules/webcodecs/WebCodecsVideoFrame.h:
(WebCore::WebCodecsVideoFrame::internalFrame const):
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/LibWebRTCVPXVideoDecoder.cpp:
(WebCore::LibWebRTCVPXInternalVideoDecoder::decode):
* Source/WebCore/platform/LibWebRTCVPXVideoEncoder.cpp: Added.
(WebCore::vpxQueue):
(WebCore::LibWebRTCVPXInternalVideoEncoder::create):
(WebCore::LibWebRTCVPXInternalVideoEncoder::postTask):
(WebCore::LibWebRTCVPXInternalVideoEncoder::close):
(WebCore::LibWebRTCVPXVideoEncoder::LibWebRTCVPXVideoEncoder):
(WebCore::LibWebRTCVPXVideoEncoder::~LibWebRTCVPXVideoEncoder):
(WebCore::LibWebRTCVPXVideoEncoder::encode):
(WebCore::LibWebRTCVPXVideoEncoder::flush):
(WebCore::LibWebRTCVPXVideoEncoder::reset):
(WebCore::LibWebRTCVPXVideoEncoder::close):
(WebCore::LibWebRTCVPXInternalVideoEncoder::encode):
(WebCore::createInternalEncoder):
(WebCore::LibWebRTCVPXInternalVideoEncoder::LibWebRTCVPXInternalVideoEncoder):
(WebCore::LibWebRTCVPXInternalVideoEncoder::OnEncodedImage):
(WebCore::LibWebRTCVPXInternalVideoEncoder::OnDroppedFrame):
* Source/WebCore/platform/LibWebRTCVPXVideoEncoder.h: Added.
* Source/WebCore/platform/VideoEncoder.cpp: Added.
(WebCore::VideoEncoder::create):
* Source/WebCore/platform/VideoEncoder.h: Added.

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




More information about the webkit-changes mailing list