Документация
Docs/ru/reference/video/decoding.md
Контракт декодирования видео
Сгенерированный справочник. Не редактируйте его источник напрямую. Обновите
BuildTools/VideoInterface.json, затем выполнитеpython BuildTools/docs_video.py --write.
| Индекс | Форматы | Доставка | Декодирование | Полный экран | Встроенное | Проверка | Канонический JSON | Руководство |
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
video.decoding.ogg-pages |
Приём страниц и пакетов Ogg | Считайте вход страницами Ogg, читаемыми в sync layer порциями по 1024 байта, и поддерживайте не более десяти одновременно обнаруженных логических потоков. | DecodePacket владеет фиксированной таблицей состояния десяти потоков и копирует ограниченные порции из ресурса в памяти. | Source/Client/VideoClip.cpp |
video.decoding.headers |
Выбор заголовка Theora | Передавайте поток, заголовки которого принимает th_decode_headerin и setup которого позволяет выделить контекст декодера. | Создание завершается ошибкой при неудаче поиска пакета, setup-данных или выделения декодера. | Source/Client/VideoClip.cpp |
video.decoding.frame-clock |
Выбор кадра по часам | Готовьте корректные метаданные числителя и знаменателя fps; целевой кадр выводится из прошедшего монотонного времени и стоимости декодера. | RenderFrame умножает прошедшие секунды на отношение fps Theora и декодирует положительную разницу кадров. | Source/Client/VideoClip.cpp |
video.decoding.pixel-formats |
Поддерживаемая chroma subsampling | Используйте TH_PF_420, TH_PF_422 или TH_PF_444; любой другой пиксельный формат Theora останавливает воспроизведение. | CPU-преобразование выбирает делители chroma только для этих трёх enum-значений. | Source/Client/VideoClip.cpp |
video.decoding.rgba-output |
CPU-вывод RGBA | Ожидайте преобразование каждого декодированного кадра из YCbCr в непрозрачный RGBA на CPU до загрузки текстуры. | RenderFrame записывает ограниченные компоненты RGB и alpha 0xFF в RenderedTextureData. | Source/Client/VideoClip.cpp |
video.decoding.error-stop |
Ошибка декодирования останавливает воспроизведение | Считайте повреждённые данные кадра, ошибку цветового вывода, неподдерживаемый пиксельный формат и конец потока условиями остановки и проверяйте клиентские логи. | Ошибки кадра записываются в лог и вызывают Stop; конец потока также останавливает ролик. | Source/Client/VideoClip.cpp |
video.decoding.no-container-audio |
Аудио контейнера не декодируется | Не полагайтесь на аудиопоток внутри Ogg-видео; при необходимости готовьте звук как отдельный клиентский музыкальный ресурс. | VideoClip подключает только декодирование пакетов Theora, а полноэкранная связка запускает музыку AudioManager из пути после вертикальной черты. | Source/Client/VideoClip.cpp, Source/Client/Client.cpp |