.VP6 вариант №
VP6 — это видеоформат со сжатием с потерями, который был представлен компанией On2 в мае 2003 года. Он является частью серии видеокодеков, разработанных TrueMotion, включая V3, V4 и V5. Вскоре этот формат использовался в сфере вещания, например, в отчетах BBC и программном обеспечении QuickLink. В январе 2005 года на смену кодеку VP6 пришел кодек VP7 с лучшей совместимостью сжатия.
Формат файла VP6
Полные спецификации для файлов V6 недоступны в открытом доступе. On2 изначально обнародовал спецификации, но вскоре они стали недоступны для обычных пользователей. Неофициальная документация по формату файла VP6 доступна на мультимедийной вики, на которую можно ссылаться для справки разработчика.
Макроблоки (МБ)
Подобно MPEG-2, MPEG-4, части 2 и 10, каждый видеокадр файла VP6 состоит из массива макроблоков (МБ) размером 16x16. Каждый МБ может находиться в одном из следующих режимов:
- Внутри МБ
- Inter MB, null MV, ссылка на предыдущий кадр
- Inter MB, дифференциальный MV, ссылка на предыдущий кадр
- Inter MB, четыре MV, ссылка на предыдущий кадр
- Inter MB, MV 1, ссылка на предыдущий кадр
- Inter MB, MV 2, ссылка на предыдущий кадр
- Inter MB, null MV, ссылка на кадр с закладками
- Inter MB, дифференциальный MV, ссылка на кадр с закладками
- Интер МБ, МВ 1, ссылка на кадр в закладках
- Интер МБ, МВ 2, ссылка на кадр в закладках
Заголовок кадра
Заголовок кадра VP6, как показано ниже, следует за упаковкой битов с обратным порядком байтов.
Синтаксис | Количество бит | Тип | Symantecs |
---|---|---|---|
frame_mode | 1 | Enum | 0x0 означает внутренний кадр |
qp | 6 | Unsigned | Действительный диапазон параметра квантования 0..63 |
маркер | 1 | Константа | 0=VP61/62, 1=VP60 |
если (frame_mode == 0) { | 0 | равно INTRA_FRAME | |
версия | 5 | Константа | 6=VP60/61, 7=VP60(электронное искусство), 8=VP62 |
версия2 | 2 | Константа | 0=VP60, 3=VP61/62 |
чересстрочная | 1 | Boolean | true (1) означает, что будет использоваться чересстрочная развертка |
if (маркер==1 или версия2==0) { | |||
смещение | 16 | Без знака | смещение вторичного буфера (байты относительно начала буфера) |
} | |||
dim_y | 8 | Без подписи | Высота макроблока видео |
dim_x | 8 | Без подписи | Ширина макроблока видео |
render_y | 8 | Без знака | Отображать высоту видео |
render_x | 8 | Без знака | Ширина отображения видео |
}иначе{ | |||
if (маркер==1 или версия2==0) { | |||
offset | 16 | Unsigned | Смещение вторичного буфера (байты относительно начала буфера) |
} | |||
} |