Split-motion video decodes: the VP8 inter path is complete, real WebM streams bit-exact
Last release taught the engine to decode VP8 interframes, but it stopped at one honest gap: split-motion macroblocks. A normal video encoder, left at its default settings, reaches for that mode on almost every clip with real movement - it lets one 16x16 block of the picture carry up to sixteen separate motions at once, so a hand waving in front of a still background is coded as the hand moving and the background staying put, within the same block. The engine detected that mode and refused it cleanly rather than decode it wrong; a great many real streams hit it on their very first interframe. That gap is now closed. A macroblock can carry up to sixteen independent motion vectors, one per 4x4 subblock, each predicted from the vectors already decoded to its left and above and motion-compensated on its own, with the chroma vectors averaged from the luma ones - the full split-motion path from the RFC. It is proven the same honest way as the rest: a clip encoded with a real encoder at its default settings (ffmpeg's libvpx, no speed shortcuts), which codes 74 split-motion macroblocks across seven interframes, decodes byte-for-byte identical to ffmpeg's own VP8 decode, every plane of every frame - and because each frame predicts from the last, a single wrong sub-vector would have compounded into a visible smear by the final frame. With this the from-scratch VP8 decoder is complete: essentially every real-world VP8/WebM video stream now decodes exactly. WebCodecs VideoDecoder carries the same completeness to page JavaScript. Media moves 53 to 54; the overall holds at 57 until a decoded stream plays end to end inside a <video> element - the Media Source pipeline that connects the two is the next slice.