Documentation
Docs/en/reference/video/decoding.md
Video Decoding Contract
Generated reference. Do not edit directly. Update
BuildTools/VideoInterface.json, then runpython BuildTools/docs_video.py --write.
| Index | Formats | Delivery | Decoding | Fullscreen | Embedded | Validation | Canonical JSON | Guide |
| Stable ID | Rule | Requirement | Why | Source |
|---|---|---|---|---|
video.decoding.ogg-pages |
Ogg page and packet ingestion | Treat the input as Ogg pages read into the sync layer in 1024-byte portions and support at most ten simultaneously discovered logical streams. | DecodePacket owns a fixed ten-stream state table and copies bounded portions from the in-memory resource. | Source/Client/VideoClip.cpp |
video.decoding.headers |
Theora header selection | Provide a stream whose headers are accepted by th_decode_headerin and whose setup can allocate a decoder context. | Construction fails when packet seeking, setup data, or decoder allocation fails. | Source/Client/VideoClip.cpp |
video.decoding.frame-clock |
Clock-derived frame selection | Author valid fps numerator and denominator metadata; frame selection derives the target frame from elapsed monotonic time and decoder cost. | RenderFrame multiplies elapsed seconds by the Theora fps ratio and decodes the positive frame difference. | Source/Client/VideoClip.cpp |
video.decoding.pixel-formats |
Supported chroma subsampling | Use TH_PF_420, TH_PF_422, or TH_PF_444; any other Theora pixel format stops playback. | The CPU conversion chooses chroma divisors only for those three enum values. | Source/Client/VideoClip.cpp |
video.decoding.rgba-output |
CPU RGBA output | Expect each decoded frame to be converted from YCbCr to opaque RGBA on the CPU before texture upload. | RenderFrame writes clamped RGB components and alpha 0xFF into RenderedTextureData. | Source/Client/VideoClip.cpp |
video.decoding.error-stop |
Decode failure stops playback | Treat malformed frame data, color output failure, unsupported pixel format, and end-of-stream as stop conditions and inspect client logs. | Frame errors log and call Stop; end-of-stream also stops the clip. | Source/Client/VideoClip.cpp |
video.decoding.no-container-audio |
No container-audio decode | Do not rely on an audio stream embedded in the Ogg video; author audio as a separate client music resource when needed. | VideoClip links Theora packet decoding only, while fullscreen pairing starts AudioManager music from the path after a vertical bar. | Source/Client/VideoClip.cpp, Source/Client/Client.cpp |