Релиз FFmpeg 0.6 и успехи в оптимизации видеокодека VP8

После 14 месяцев разработки вышел релиз мультимедиа пакета FFmpeg 0.6, представляющего собой набор приложений и коллекцию библиотек для манипулирования различными мультимедиа форматами (запись, преобразования и декодирования звуковых и видео форматов). Пакет распространяется под лицензиями LGPL и GPL, разработка FFmpeg ведется смежно с проектом MPlayer.

В новой версии добавлено около 80 улучшений, из которых можно отметить:

  • Реализация поддержки открытого компанией Google видеокодека VP8 и связанного с ним мультимедиа контейнера WebM;
  • Значительное увеличение скорости декодирования видеопотоков H.264 и Theora. Также увеличена производительность декодирования аудиопотоков AAC и внесены значительные улучшения в декодер Vorbis. Проведена разноплановая работа по улучшению функций связанных с HTML5-видео;
  • Добавлены декодеры для видео Intel Indeo 5 и аудио WMA Pro, WMA Voice, HE-AAC, ALS (MPEG-4 Audio Lossless Coding), Atrac1 и AMR-NB. Добавлена поддержка битовых карт IFF PBM/ILBM и формата Bink;
  • Добавлена поддержка субтитров Bluray (PGS) и DivX (XSUB);
  • Проведена оптимизация для архитектуры ARM;
  • Добавлены demuxer-ы для разбора файлов/потоков в форматах Adobe Filmstrip, SoX, Bink, Core Audio, Dirac в контейнере Ogg, IV8, QCP, VQF и Wave64;
  • Добавлены muxer-ы для формирования потоков в форматах EC-61937, RTSP, Adobe Filmstrip, SoX;
  • Реализованы функции RTP-пакетизации для потоков H.263 и AMR. RTP-депакетизация теперь доступна для AMR, ASF, H.263, RTSP, Theora и Vorbis;
  • Через задействование библиотеки librtmp теперь поддерживается работа с протоколами RTMP/RTMPT/RTMPS/RTMPE/RTMPTE;
  • В файлы FLAC, Ogg FLAC и Ogg Speex добавлена поддержка записи комментариев VorbisComment;
  • В пакет интегрирована утилита ffprobe для извлечения информации из мультимедиа файлов.

Кроме того, можно отметить публикацию разработчиками Google отчета о проведенных в VP8 оптимизациях, добавленных после анонса данного свободного видеокодека. Многие части кода переработаны, некоторые элементы переписаны на языке ассемблер, в коде задействованы процессорные инструкции SSE2. Рассматривается возможность по задействованию дополнительных механизмов, например, вынос определенных вычислений на плечи GPU.

В итоге, выросла производительность декодера и кодировщика VP8, которые стали заметно менее требовательны к ресурсам, по сравнению с первоначальной версией. Проведена большая работа по оптимизации и учету особенностей процессоров встраиваемых систем, как основанных на архитектуре ARM, таки и для семейства Intel Atom.

© OpenNet