w3c / webcodecs

WebCodecs is a flexible web API for encoding and decoding audio and video.

Home Page:https://w3c.github.io/webcodecs/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

https://w3c.github.io/webcodecs/#dom-videoframe-videoframe-data-init should validate the plane layout according the coded width and height

youennf opened this issue · comments

https://w3c.github.io/webcodecs/#dom-videoframe-videoframe-data-init step 9 is computing the plane layout according parsedRect which is computed from visibleWidth/visibleHeight.
It seems codedWidth and codedHeight should be used instead, which would be consistent with checking whether the buffer is large enough.
See also https://bugs.webkit.org/show_bug.cgi?id=256848.

Agreed, combinedLayout is only used to run the check in step 11, which should be making sure that the buffer is large enough to contain the entire coded region of the frame. It's not necessary to compute anything related to the visible region here, but Compute Layout and Allocation Size algorithm is shared with copyTo() which does.

The complexity comes from having to support explicit and implicit layouts. The actual check just needs to ensure that the buffer contains the full planeCodedHeight * planeStride bytes for every plane.

It could be worth making this more obvious because using planeCodedWidth * planeSampleBytes for the last row instead of planeStride might be logical but would differ from the spec intention.