[webkit-changes] [WebKit/WebKit] cf345a: [Cocoa] WebCodecs H264 decoder should reorder fram...

youennf noreply at github.com
Mon Nov 20 23:53:08 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cf345a7967b324872fb7ff4a173307ddb93101ac
      https://github.com/WebKit/WebKit/commit/cf345a7967b324872fb7ff4a173307ddb93101ac
  Author: Youenn Fablet <youennf at gmail.com>
  Date:   2023-11-20 (Mon, 20 Nov 2023)

  Changed paths:
    A LayoutTests/http/tests/webcodecs/h264-reordering-expected.txt
    A LayoutTests/http/tests/webcodecs/h264-reordering.html
    M LayoutTests/platform/glib/TestExpectations
    M LayoutTests/platform/mac-wk1/TestExpectations
    M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm
    M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH265.mm
    M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/nalu_rewriter.cc
    M Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/nalu_rewriter.h

  Log Message:
  -----------
  [Cocoa] WebCodecs H264 decoder should reorder frames according presentation time
https://bugs.webkit.org/show_bug.cgi?id=263901
rdar://117692801

Reviewed by Jean-Yves Avenard.

Add a SPS VUI parser to be able to extract max_num_reorder_frames.
Add an AVC parser to locate the SPS and parse it.

Compute the reorder queue size based on the parsed SPS.
Add a queue in RTCVideoDecoderH264 and reorder based on timestamp.

We will need a follow-up refactoring to pipe memory attribution of these video frames when getting them.

* LayoutTests/http/tests/webcodecs/h264-reordering-expected.txt: Added.
* LayoutTests/http/tests/webcodecs/h264-reordering.html: Added.
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/mac-wk1/TestExpectations:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH264.mm:
(RTCFrameDecodeParams::RTCFrameDecodeParams):
(RTCVideoFrameWithOrder::RTCVideoFrameWithOrder):
(RTCVideoFrameWithOrder::~RTCVideoFrameWithOrder):
(RTCVideoFrameWithOrder::take):
(decompressionOutputCallback):
(-[RTCVideoDecoderH264 init]):
(-[RTCVideoDecoderH264 decodeData:size:timeStamp:]):
(-[RTCVideoDecoderH264 setAVCFormat:size:width:height:]):
(-[RTCVideoDecoderH264 flush]):
(-[RTCVideoDecoderH264 processFrame:reorderSize:]):
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCVideoDecoderH265.mm:
(h265DecompressionOutputCallback):
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/nalu_rewriter.cc:
* Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/nalu_rewriter.h:

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




More information about the webkit-changes mailing list