-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove WebCodecs tests with PRECONDITION_FAILED #375
Comments
@nairnandu @jgraham Can you find someone on the Blink / Gecko side to review? Thanks! |
@ChunMinChang does this make sense from Gecko's point of view? (I think if the spec doesn't mandate specific codec support we can't really have tests that depend on specific codecs in Interop without significant extra buy-in/work). |
WebCodecs doesn't ask the user-agent to support specific codecs. Instead, it has an API that allows users to check if one codec is supported. An idiom way for WPT to run a codec test is to call Removing av1 or not won't violate the spec, but what's the reason to remove av1? Can't using |
@dalecurtis could you review this proposal for Chromium? |
I would be ok with updating tests to pass if |
We wrote the tests to check |
Seems like those tests indeed use I guess this is just #319 then. |
OK I submitted a PR to fix |
@nt1m can this issue be closed now given your previous comment? |
AV1 tests are now passing, but we still have a small subset of tests that have PRECONDITION_FAILED for specific codecs. |
@chrishtr @jgraham Here's a list of tests we'd like to remove:
Basically anything that is green and Can we get consensus to remove these specific tests? Thanks! |
vp9_2 makes sense, but why the h264 ones? I thought Safari supported that? |
@dalecurtis @youennf mentioned the temporal bits of h264 might not be supported. In any case, the |
Hmm, I think we have those things working with VideoToolbox in Chrome, so I guess it's more that Safari doesn't want to support them? If we're deciding that we want common support across at least one codec, I think we should keep the H264 one as part of Interop. It's your call ultimately, but I think that would be most in the spirit of Interop. |
To me, the scope of the WebCodecs focus area is more about API support, more than individual codec support, so as long as the API reports codec support correctly (e.g. correctly returns false when querying for support), I personally think it's OK. Though I don't mind too much either way for those tests specifically, some work on implementing support for those tests is being done here: WebKit/WebKit#17414 I would love some consensus around at least the VP9_P2 tests though. |
Removing vp9p2 is fine with Chrome. |
L1T2 maybe, what about L1T3? |
Ah, yeah L1T2 is the most we support in hardware. L1T3 is only via OpenH264. The |
If handling of |
Unfortunately, |
From my point of view, if:
It makes that feature unsuitable for inclusion in Interop. Of course the web-platform-tests should still exist, and if at some later time everyone agrees that they will indeed implement that optional feature after all then it's fine to include those tests in Interop again. |
So to be clear it's fine to remove these tests from Interop just on the above basis. I believe we still end up with enough tests with other codecs that we are still meaningfully testing the wider webcodecs feature in configurations where we can actually promise interoperability. |
I'll go ahead and remove the VP9_P2 tests as a first step, given there is some support for both Gecko (the last comment from James) / Blink. |
Done: web-platform-tests/wpt-metadata@443d7aa I'll leave this issue open for L1T3 and potentially L1T2. |
Right, and L1T2 + latencyMode=quality might not really be supported either. |
Given the current limited support of H264 in non realtime mode, and how the tests are currently written, I would propose to move temporal-svc-encoding.https.any.html?h264 temporal-svc-encoding.https.any.worker.html?h264 out of Interop 2023. I'd welcome a H264 temporal+realtime test, with the caveat it would need to handle dropped frames since that may happen on bots running lots of tests. Does that sound good? |
If we allow frames to be dropped, does it mean that a conforming VideoEncoder implementation may never call the output callback in the realtime mode? |
Spec says From this, it seems conformant. I am not sure how we can tighten the spec. I would still hope most implementations would do their best to not drop frames so that we can write tests that can run smoothly even in highly loaded bots. For instance, if we enable H.264 temporal in realtime mode, we should expect that the callback is called at least once and that the corresponding chunk has its svc metadata set. From the bot results I saw in WebKit, instead of outputting 30 frames per second, the encoder in realtime mode was outputting 5 frames per second (which probably mean no second temporal layer would be generated at all). I am not sure whether delaying the sending frames plus increasing the bitrate plus decreasing the frame would help generating the second temporal layer. |
Chromium had to stop using kVTCompressionPropertyKey_DataRateLimits in order to avoid frame drops in realtime mode |
@youennf Hi! Can you summarize tests you think should be removed? I recall you mentioned temporal tests should be removed. |
I would propose to move temporal-svc-encoding.https.any.html?h264 temporal-svc-encoding.https.any.worker.html?h264 out of Interop 2023. These tests are covering L1T3, which is not supported by H264 HW encoders on macOS/iOS platforms. The tests would also need to be updated to use realtime latency mode, which probably needs a rewrite to acknowledge for some potential frame drops. |
@dalecurtis @Djuffin What do you think? |
It'd be better if we can split out L1T3 into its own test per #375 (comment), since there is partner usage of L1T1/L1T2 IIRC However if it's not something that other UAs can support in time, moving the whole thing out seems fine. |
Thanks, I've removed the tests from Interop for now. Closing this as there are no more PRECONDITION_FAILED failures. |
Test List
reconfiguring-encoder.https.any.html?h264_annexbreconfiguring-encoder.https.any.worker.html?h264_annexbreconfiguring-encoder.https.any.worker.html?h264_avcRationale
Support for different video codecs is out of scope for WebCodecs.
The text was updated successfully, but these errors were encountered: