aspose.info
RU

VP6 – видеофайл TrueMotion

Обновлено

.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_mode1Enum0x0 означает внутренний кадр
qp6UnsignedДействительный диапазон параметра квантования 0..63
маркер1Константа0=VP61/62, 1=VP60
если (frame_mode == 0) {0равно INTRA_FRAME
версия5Константа6=VP60/61, 7=VP60(электронное искусство), 8=VP62
версия22Константа0=VP60, 3=VP61/62
чересстрочная1Booleantrue (1) означает, что будет использоваться чересстрочная развертка
if (маркер==1 или версия2==0) {
смещение16Без знакасмещение вторичного буфера (байты относительно начала буфера)
}
dim_y8Без подписиВысота макроблока видео
dim_x8Без подписиШирина макроблока видео
render_y8Без знакаОтображать высоту видео
render_x8Без знакаШирина отображения видео
}иначе{
if (маркер==1 или версия2==0) {
offset16UnsignedСмещение вторичного буфера (байты относительно начала буфера)
}
}

использованная литература

См. также