Технический анализ видео кодеков Flash: VP6 от On2

Представляем вашему вниманию цикл статей, в которых производится технический анализ видео кодеков, используемых в Flash Player, с точки зрения международных стандартов. Вторая статья посвящена кодеку VP6 от On2.

VP6 от On2

Для Flash Player 8 Macromedia нуждалась в современном видео кодеке, чтобы способствовать внедрению Flash Player как идеальной платформы доставки видео. Выбор пал на VP6 компании On2. Вы можете спросить, почему Macromedia выбрала проприетарную технологию вместо H.264. Причина ясна. H.264 должен быть лицензирован путём выплат дорогих роялти двум группам держателей патентов, MPEG LA и VIA Licensing.

В результате стоимость использования H.264 является очень высокой. Согласно лицензии MPEG LA, при больших объёмах использования выплаты за кодировщик и декодер составляют 0.20$ за единицу при размерах до пяти миллионов единиц (если выше – то 0.10$). Существуют также выплаты, зависящие от контента. Потолком для таких выплат является 3,5 миллиона $ (с компании) в 2005 и 2006 годах, 4,25 миллиона $ в 2007 и 2008 и 5 миллионов $ в 2009 и 2010.

Согласно лицензии VIA License при больших объёмах использования выплаты за кодировщик и декодер составляют 0.25$ за единицу, равно как существуют и выплаты за контент. Так в качестве максимальных выплат за контент берётся 2,5 миллиона $ с начальных изготовителей, работающих с персональными компьютерами, и 4 миллиона $ с начальных изготовителей персональных компьютеров.

Эти роялти платятся только за лицензирование интеллектуальной собственности, а не за работающий кодек, поэтому к этим затратам мы должны добавить стоимость разработки эффективного H.264 совместимого кодека.
Выбор VP6, который не требует выплат роялти, позволил Macromedia избежать потери нескольких миллионов долларов.

Фирма On2 специализируется на разработке высококачественных видео кодеков. За последние 15 лет On2 выпустила целый ряд очень хороших кодеков VP3 (позднее опубликованный как кодек с открытым кодом, ставший основой для проекта Theora), VP4, VP5, VP6 и VP7. Macromedia получила лицензии на VP6 и VP7, но включила только декодер VP6 во Flash Player 8 и кодировщик в Flash Player 8 Professional Video Exporter. После сделки Adobe с Macromedia не совсем понятно, что Adobe будет делать с лицензией на VP7.

On2 заявляет, что VP6 является кодеком класса H.264 и даже во многих случаях превосходящим последний по показателю пикового отношения сигнала к шуму (Power Signal / Noise Ratio, PSNR). Поскольку кодек является проприетарной технологией, у нас нет детальной информации относительно используемых алгоритмов. Вся информация, представленная ниже, происходит из неофициальных сетевых материалов, описаний формата VP3, а также официальных документов и интервью компании On2.

Технические детали

VP6 использует независимые сжатые кадры (Intra compressed frames, I-frames, I-кадры) и однонаправленные предсказывающие кадры (P-кадры). B-кадры не используются, но P-кадры могут иметь множественные связанные предыдущие кадры.

VP6 использует в некоторой степени традиционное обратное дискретное косинусное преобразование 8×8 для пространственно-частотного преобразования (VP7 применяет преобразование 4×4, похожее на используемое в H.264). Внутренняя компрессия использует пространственные предикторы, хотя и не такие усовершенствованные, как в VP7 или в H.264 (возможно, такие, как используются в H.263++).

Макроблоки представляют собой массивы 16 на 16 пикселей и предсказание движения производится одним вектором на макроблок или 4 векторами (одним на каждый блок 8×8). Существует несколько режимов векторного предсказания движения, и для каждого макроблока можно выбирать из двух ссылочных кадров: предыдущим кадром и ранее запомненным кадром.

В более старых кодеках VPx этот второй ссылочный кадр был обязательно предыдущим I-кадром (опорным кадром).
Подход, использующий ранее запомненный ссылочный кадр, является более точным и очень полезным для уменьшения битрейта на участках с быстро изменяющимися изображениями. Использование более двух ссылочных кадров приводит к скромным улучшениям коэффициента сжатия.

VP6 использует «адаптивную субпиксельную оценку движения». Фильтры, используемые для оценки движения, чувствительны к содержимому, что позволяет оценке движения лучше сохранять детали.

Поддерживаются четвертичная пиксельная компенсация движения (quarter pixel motion compensation) и неограниченная компенсация движения (unrestricted motion compensation). Область компенсации движения была расширена по сравнению с предыдущими кодеками (увеличенная длинная область).

VP6 также получает преимущества от лучшего предсказания частотных коэффициентов низкого порядка и усовершенствованной стратегии квантования, которая сохраняет на выходе больше деталей.

Для статистического кодирования VP6 использует различные алгоритмы, основанные на сложности и/или общем размере кадра, включая кодирование с переменной длиной (VLC) и контекстно моделируемое бинарное кодирование (context modeled binary coding).

Для достижения запрошенной скорости передачи данных кодек автоматически регулирует уровни квантования, размеры закодированного кадра или же пропускает кадры.

Сравнение VP6 и H.264 и выводы

Из всего сказанного должно быть ясно, что VP6 более простой, чем H.264. Это и является его главным преимуществом. VP6 требует меньше операций как при кодировании, так и при декодировании и, таким образом, является значительно менее громоздким.

Являясь более простым, чем H.264, как же VP6 добивается кодирующей производительности, сравнимой с ним?

Мы должны принять во внимание, что VP6 использует меньше приёмов кодировки, но они более эффективны. Сочетание адаптивной субпиксельной оценки движения, лучшего предсказания частотных коэффициентов низкого порядка и усовершенствованной стратегии квантования, деблокирующих и противоциклирующих фильтров или усовершенствованного контекстно модулируемого статистического кодирования позволяет создавать сжатое видео очень хорошего для восприятия качества.

Более того, существует разница между технологией кодирования и реализацией кодека. H.264 имеет много режимов, опций и приложений, и создать с его помощью эффективный кодировщик довольно сложно. VP6, возможно, технически менее совершенный, чем H.264, но On2 создала довольно эффективную и компактную реализацию.