Bug 283677
| Summary: | VideoMediaSampleRenderer do not display decoded frames created by VideoDecoder | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Jean-Yves Avenard [:jya] <jean-yves.avenard> |
| Component: | Media | Assignee: | Jean-Yves Avenard [:jya] <jean-yves.avenard> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Jean-Yves Avenard [:jya]
The VideoMediaSampleRenderer maintains a CMBufferQueue of decoded frames, sorted in presentation order.
It sets a timer to schedule a task at the current sample's presentation end time to determine when to display the next frame and which one to remove from the queue.
To perform this tasks, the algorithm needs to be get the frame's duration and when it ends.
An issue exposed by bug 282163, which removed the VP8 and VP9 SW decoder VideoToolbox plugins. When we use the WebCodec's VideoDecoder, the decoded frame returned have no duration. And as such, presentation time == presentation end time.
When `VideoMediaSampleRenderer::purgeDecodedSampleQueue` runs, it schedules the purge of the next frame at the time it should be displayed. And so once complete, the frame is no longer there to display.
This issue currently exists in IOS_FAMILY device, as it always uses VideoDecoder to decode VP8 and VP9 without SW decoder (which are mostly simulators)
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/140538938>
Jean-Yves Avenard [:jya]
Pull request: https://github.com/WebKit/WebKit/pull/37128
EWS
Committed 287133@main (d33874653d6b): <https://commits.webkit.org/287133@main>
Reviewed commits have been landed. Closing PR #37128 and removing active labels.