О VP8 и предстоящей войне видеокодеков

Вчера Google, как и предполагалось, показала новый видео-кодек VP8, который будет бесплатным и поставляться в открытых исходных кодах. Сам кодек по себе — ничего нового, так как Google купила его “на корню” у компании On2, и демонстрирует желание сделать его “новым кодеком открытого интернета”, в противовес H.264, который хоть и тоже открыт, но зато платный — для тех, кто его встраивает в приложения (поэтому, например, в Firefox он не поддерживается), или же для тех, кто транслирует материалы (причем на самом деле он пока что бесплатен, если не ошибаюсь, до 2015 года, а там, как говорится, “видно будет”).
В интернете тут же заговорили об “ответе Google Apple”, потому как последняя является яростным сторонником H.264 и всячески его продвигает для просмотра видео в браузерах и на устройствах как альтернативу показу видео через Flash (внутри которого очень часто — тот же H.264). Соответственно, возникает вопрос — такой ли на самом деле основательный ответ получился у Google и чем это угрожает Apple? (Кстати, официально VP8 не поддерживает еще одна компания — Microsoft, которая тоже успела заявить, что за H.264 будущее в видео на вебе).

Я не специалист в видео-кодеках, поэтому мне трудно судить о преимуществах или недостатках того или иного из них. Но, к счастью, в сети есть и спецы, поэтому дадим слово одному из них — Джейсону Гаррет-Глейзеру (Jason Garrett-Glaser), который является разработчиком кодека X.264, модификации H.264. Каким-то образом ему попали в руки спецификация и исходные коды VP8 до его официального релиза Google, и он смог проанализировать некоторые моменты по новому-старому кодеку.
[ad#intext-inside]
Не считая того, что спецификация таковой, по большому счету, не является, потому как представляет собой, в основном, copy-paste исходного кода кодека, Джейсон вот что еще сказал о новом кодеке в записи в блоге:

“VP8, по спецификации, должен быть немного лучше, чем H.264 Baseline Profile и VC-1. Но он даже и близко не подходит для конкуренции с H.264 Main или High Profile”.

Здесь требуется небольшое пояснение. У H.264 есть несколько профилей, каждый из которых фактически представляет собой отдельный кодировщик. Поэтому на самом деле H.264 — это, фактически, несколько разных кодеков в рамках одного стандарта, и каждый из них подходит под определенную задачу. В частности, Baseline используется для веб-видео или в мобильных приложениях (декодируя видео прямо на графическом процессоре). А Main используется для телевидения стандартного разрешения, в то время как High применяется в видео высокого разрешения, например, в Blu-Ray.

– VP8 как кодировщик, в плане визуального качества находится где-то между Xvid и принадлежащим Microsoft VC-1. Это можно улучшить, но не с помощью традиционных методов.
– VP8 как декодер, декодирует еще более медленно, чем H.264 из состава ffmpeg. Это вряд ли можно особо улучшить.
– VP8 копирует слишком много из H.264 с точки зрения любого вменяемого человека, неважно, кто бы там не заявлял, что этот кодек свободен от патентов.
– VP8 не готов к массовому доступу, спецификация — это просто пачка скопированного кода C, и интерфейсу кодировщика не хватает возможности, и там полно ошибок. Они даже не готовы финализировать формат битстрима, не говоря уже о том, чтобы переводить весь мир на VP8.

Кстати, вот комментарий Джейсона про спецификацию:

AAAAAAAGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!

Что все это означает? Ну, как минимум, что для того, чтобы VP8 обрел популярность, Google нужно срочно допилить спецификацию и сам кодек, чтобы производители устройств начали его аппаратно поддерживать. Как максимум — близость кода VP8 к H.264, я думаю, практически гарантирует, что альянс MPEG Licensing Authority и его участники (Apple, Bosch, Dolby, Ericsson, Frauenhofer, Fujitsu, Hitachi, Philips, JVC, LG, Mitsubishi, Panasonic, Samsung, Sharp, Siemens, Sony, Toshiba.) будут гоняться за Google с патентными исками, чтобы мало не показалось. А нет поддержки производителей — нет популярности кодека. 100 млн долларов на On2 окажутся выброшенными на ветер.
[ad#intext-inside]
Есть и альтернативное решение. Например, Google придет к Apple и скажет — “чуваки, мы щас вот возьмем и назло вам переведем весь YouTube на VP8, и вашим iPhone/iPad не поздоровится. Давайте дружить — вы нас поддерживаете, начинаете продвигать понемногу наш кодек, обновляете свои железки его поддержкой, а мы еще какое-то время H.264 в YouTube выключать не будем. Всем будет хорошо”. Правда, я не думаю, что таким методом выкручивания рук с Джобсом можно договориться, но подобный сценарий развития событий вполне может случиться. Будет интересно.
АПД. Мне тут по почте товарищ Александр Воронов прислал несколько замечаний к тексту. Публикую их целиком, без сокращений:
1. Спецификации и реализации.
H.264 – это формат, стандарт, спецификация. Кодека H.264 нет. Соответственно, x264 (это кодек) является реализацией стандарта H.264. Есть и другие кодеки, реализующие стандарт H.264, например, MainConcept, Elecard, DivX Plus и другие. Кстати, x264 пишется с маленькой буквы и без точки. H.264 обычно с большой буквы и с точкой.
VP8, по сути, — это и спецификация, и её реализация, т.е. и формат, и кодек.
2. >близость кода VP8 к H.264
Здесь разговор о близости спецификаций, описаний форматов. Т.е. нельзя говорить о близости кода. Ведь разработчики реализовывали кодеры разных форматов. И претензии от MPEG-LA возможны не по коду, а именно по описанию формата. Вообще бОльшая часть статьи Джейсона как раз посвящена разбору спецификаций формата VP8, и только в приложении он немного описывает кодек.
3. По поводу профайлов.
Там нет нескольких отдельных кодировщиков.
Есть ограничения на используемые при кодировании возможности. На википедии есть табличка, которая это отображает. http://en.wikipedia.org/wiki/H.264#Profiles
И в любом кодировщике, реализующем H.264, можно включить/выключить некоторые функции, чтобы конечное видео соответствовало нужному профайлу. Цель введения профайлов: ориентирование на вычислительные мощности разных устройств и на разные сценарии использования. Т.е., например, Youtube кодирует все видео с настройками на baseline profile, чтобы потом оно игралось на мобильных устройствах. А если видео точно будет воспроизводиться только на десктопе, то можно использовать high profile, что даст выигрыш в компрессии, но заведомо лишит поддержки большинства мобильных устройств.
Соответственно, Джейсон сравнивает, можно сказать, на глазок, что по спецификациям VP8 превзойдёт Baseline, но вряд ли дотянется до High. В случае, если все спецификации будут хорошо реализованы.
Но сферический конь никого не интересует, и потом он приводит картинки полученные при кодировании, где он берёт текущую реализацию VP8 и свой кодек с двумя вариантами настроек (для Baseline и для High).