Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Implement WebCodecs video encoder flush
https://bugs.webkit.org/show_bug.cgi?id=246686 rdar://problem/101288914 Reviewed by Eric Carlson. Implement remote encoder flush by sending an IPC to GPUProcess to flush encoders. Drive-by fix to make full-cycle-test.https.any_h264_avc test pass by providing the correct AVC description by looking at the sample buffer format description. Covered by rebased tests. * 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_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_h264-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 flush]): (webrtc::flushLocalEncoder): * 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 setUseAnnexB:]): (-[RTCVideoEncoderH264 configureCompressionSession]): (-[RTCVideoEncoderH264 setEncoderBitrateBps:frameRate:]): (-[RTCVideoEncoderH264 frameWasEncoded🎏 sampleBuffer:codecSpecificInfo:width:height:renderTimeMs:timestamp:rotation:isKeyFrameRequired:]): (-[RTCVideoEncoderH264 flush]): * 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 setUseAnnexB:]): (-[RTCVideoEncoderH265 frameWasEncoded🎏 sampleBuffer:width:height:renderTimeMs:timestamp:rotation:]): (-[RTCVideoEncoderH265 flush]): * Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.h: * Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in: * Source/WebKit/GPUProcess/webrtc/LibWebRTCCodecsProxy.mm: (WebKit::LibWebRTCCodecsProxy::flushEncoder): * Source/WebKit/WebProcess/GPU/media/RemoteVideoCodecFactory.cpp: (WebKit::RemoteVideoEncoder::flush): * Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp: (WebKit::LibWebRTCCodecs::createEncoderAndWaitUntilReady): (WebKit::LibWebRTCCodecs::createEncoderInternal): (WebKit::LibWebRTCCodecs::flushEncoder): (WebKit::LibWebRTCCodecs::flushEncoderCompleted): * Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.h: * Source/WebKit/WebProcess/GPU/webrtc/LibWebRTCCodecs.messages.in: Canonical link: https://commits.webkit.org/255785@main
- Loading branch information
Showing
21 changed files
with
218 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,3 @@ | ||
CONSOLE MESSAGE: Error: assert_unreached: Decoder failure Reached unreachable code | ||
|
||
FAIL Encoding and decoding cycle promise_test: Unhandled rejection with value: object "AbortError: aborting flush as decoder is reset" | ||
PASS Encoding and decoding cycle | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,3 @@ | ||
CONSOLE MESSAGE: DataError: Key frame is required | ||
CONSOLE MESSAGE: DataError: Key frame is required | ||
|
||
Harness Error (FAIL), message = DataError: Key frame is required | ||
|
||
TIMEOUT Encoding and decoding cycle Test timed out | ||
|
||
Harness Error (FAIL), message = DataError: Key frame is required | ||
|
||
TIMEOUT Encoding and decoding cycle Test timed out | ||
PASS Encoding and decoding cycle | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
|
||
Harness Error (FAIL), message = Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
|
||
FAIL Reconfiguring encoder assert_equals: expected 16 but got 1 | ||
PASS Reconfiguring encoder | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,7 @@ | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
CONSOLE MESSAGE: Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
|
||
Harness Error (FAIL), message = Error: assert_unreached: assert_equals: expected 640 but got 800 Reached unreachable code | ||
Harness Error (FAIL), message = Error: assert_unreached: assert_equals: expected 800 but got 640 Reached unreachable code | ||
|
||
PASS Reconfiguring encoder | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,54 @@ | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
CONSOLE MESSAGE: Error: assert_own_property: expected property "svc" missing | ||
|
||
Harness Error (FAIL), message = Error: assert_own_property: expected property "svc" missing | ||
|
||
FAIL SVC L1T2 assert_equals: expected 24 but got 1 | ||
FAIL SVC L1T3 assert_equals: expected 24 but got 1 | ||
FAIL SVC L1T2 assert_equals: expected 12 but got 0 | ||
FAIL SVC L1T3 assert_equals: expected 6 but got 0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.