commit 16cae068bb242894c3a47cedd77612dc26177726
parent f3f25a40f8d2a1ce69e135875301e60b148d15ea
Author: Dale Curtis <dalecurtis@chromium.org>
Date: Thu, 6 Nov 2025 21:32:31 +0000
Bug 1997420 [wpt PR 55771] - [WebCodecs] When verifying key frames, always throw for type==delta, a=testonly
Automatic update from web-platform-tests
[WebCodecs] When verifying key frames, always throw for type==delta
We shouldn't override the type of the EncodedVideoChunk just because
packet analysis indicates that it's actually a key frame. This aligns
Chrome's behavior with Safari/Firefox.
R=eugene
Fixed: 456164625
Change-Id: I5812c9c87ae34344da2cc94872c4dd6219eef085
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7103067
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Eugene Zemtsov <eugene@chromium.org>
Auto-Submit: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Eugene Zemtsov <eugene@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1538178}
--
wpt-commits: d4c91d582bb640a129149fc7d45d64584fee202e
wpt-pr: 55771
Diffstat:
1 file changed, 15 insertions(+), 0 deletions(-)
diff --git a/testing/web-platform/tests/webcodecs/videoDecoder-codec-specific.https.any.js b/testing/web-platform/tests/webcodecs/videoDecoder-codec-specific.https.any.js
@@ -125,6 +125,21 @@ promise_test(async t => {
const callbacks = {};
const decoder = createVideoDecoder(t, callbacks);
decoder.configure(CONFIG);
+
+ // Mark a keyframe chunk as a delta chunk to ensure any packet analysis
+ // doesn't override the user provided type.
+ let mismarked_chunk = new EncodedVideoChunk(
+ {type: 'delta', timestamp: 0, duration: 1, data: CHUNK_DATA[0]});
+
+ assert_throws_dom(
+ 'DataError', () => decoder.decode(mismarked_chunk, 'decode'));
+}, 'Decode a key frame marked as delta fails');
+
+promise_test(async t => {
+ await checkImplements();
+ const callbacks = {};
+ const decoder = createVideoDecoder(t, callbacks);
+ decoder.configure(CONFIG);
for (let i = 0; i < 16; i++) {
decoder.decode(new EncodedVideoChunk(
{type: 'key', timestamp: 0, data: CHUNK_DATA[0]}));