RESOLVED FIXED283677
VideoMediaSampleRenderer do not display decoded frames created by VideoDecoder
https://bugs.webkit.org/show_bug.cgi?id=283677
Summary VideoMediaSampleRenderer do not display decoded frames created by VideoDecoder
Jean-Yves Avenard [:jya]
Reported 2024-11-25 05:40:39 PST
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
Radar WebKit Bug Importer
Comment 1 2024-11-25 05:40:58 PST
Jean-Yves Avenard [:jya]
Comment 2 2024-11-25 06:06:06 PST
EWS
Comment 3 2024-11-27 15:33:20 PST
Committed 287133@main (d33874653d6b): <https://commits.webkit.org/287133@main> Reviewed commits have been landed. Closing PR #37128 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.