Разработчики FFmpeg написали собственный декодер для видеокодека VP8

Разработчики проекта FFmpeg написали с нуля собственную реализацию декодера для видеокодека VP8, в мае открытого компанией Google. Примечательно, что благодаря использованию уже присутствующих в FFmpeg типовых функций, декодер уместился в 1400 строк на языке Си, включая комментарии и пустые строки, плюс 450 строк для задействования функций DSP. Для сравнения, оригинальный декодер libvpx от Google насчитывает около 11 тыс. строк кода. Корректность работы нового декодера была проверена с использованием специального тестового комплекта для VP8, выходной поток оказался бинарно идентичен с эталонным потоком.

Среди достоинств нового декодера названа тесная интеграция с общей кодовой базой FFmpeg. По словам разработчиков, возможна не только организация совместного использования кода для всей серии кодеков VPx (у VP8 много общего с VP5/6/7), но и совместное использование некоторых высоко оптимизированных функций, используемых для обеспечения работы H.264 и Theora. В настоящий момент разработчики занялись оптимизацией производительности нового декодера и поставили перед собой цель обогнать по скорости декодирования эталонную реализацию libvpx, развиваемую компанией Google.

В процессе работы участники проекта FFmpeg отметили несколько проблем: спецификация охватывает только основной профиль VP8, логику работы некоторых расширенных функций приходилось улавливать из исходных текстов; libvpx изобилует ассемблерными оптимизациями, назначение некоторых из которых не совсем понятно, например, есть код, который не компилируется или не используется (например, для архитектуры PPC).

©  OpenNet