Размышление над проблемами формата Ogg

18 марта 2010 года

Один из разработчиков проекта FFmpeg в статье "Ogg objections" подробно рассказал о недостатках мультимедиа контейнера Ogg. Вывод в статье сделан неутешительный, свободность и независимость от патентов - это конечно хорошо, но с технической стороны формат не может конкурировать с аналогами и требует полной переработки. Изначально Ogg создан для работы с простейшими аудио-потоками, из чего следует его излишняя усложненность и нестандартность при работе с другими видами данных, например, при инкапсуляции видео-потоков.

Основные недостатки Ogg:

  • Трудность интеграции поддержки новых кодеков: для каждого кодека требуется оформления подробной карты, идентифицирующей кодек, показывающей как извлекать данные и как интерпретировать временные метки. Например, для поддержки кодеков Microsoft пришлось расширить формат Ogg, что привело к непринятию данных расширений курирующей формат Ogg организацией Xiph. В качестве примера для подражания приводится формат Matroska, который может работать с любым кодеком, при этом для обеспечения поддержки кодека достаточно определить его уникальный идентификатор.
  • Излишнее расходование ресурсов при организации хранения привязанной к потоку служебной информации. Заголовок страницы данных имеет размер 27 байт, в то время как его без проблем можно было бы ужать до 12 байт. Большой объем лишних полей в заголовке страницы данных, приводит к увеличению размера итогового файла примерно на 1%, в то время как для формата MP4 этот показатель равен 0.05%;
  • Низкая отзывчивость (latency): возникновение паразитной задержки при передаче и приеме кадров (на стороне отправителя и получателя) мешает использованию Ogg при организации интерактивной передачи, например, при проведении видеоконференций или для организации IP-телефонии. Задержка на стороне отправителя возникает из-за того что заголовок страницы данных в Ogg зависит от содержимого страницы, т.е. отображение и передача страниц осуществляется только блоками, пока весь блок данных не будет получен, невозможно рассчитать передаваемую в заголовке контрольную сумму и размер страницы, что приводит к задержке из-за лишней буферизации. На стороне получателя возникает задержка из-за невозможности продолжить обработку до момента получения пакетов всех элементарных потоков (звук, видео), в случае отключения проверки контрольных сумм это приводит к постоянному отставанию на одну страницу данных, а если включен режим проверки контрольных сумм, то на две.
  • Непродуманный механизм получения случайного доступа к разным позициям в потоке: индекс в Ogg создается налету (требует дополнительного прохода по данным) или прикрепляется к концу файла, что мешает быстрой смене позиции в не до конца загруженном потоке. Определение позиции осуществляется через операции бинарного поиска, что для больших файлов приводит к выполнению множества лишних проверок (например для перехода к заданной позиции файла размером 10 Гб может потребоваться до 50 дополнительных перемещений). Более того, формат хранения времени в Ogg зависит от используемого в текущий момент кодека и приводит к выполнению дополнительных операций на уровне кодека.
  • Проблемы с синхронизацией потоков. Для синхронизации звука и видео каждый пакет данных снабжен временной меткой, но эта казалось бы простая операция в Ogg сильно усложнена - метка отождествлена со временем конца проигрывания блока данных, что приводит к ряду неудобств, таких как трудности планирования, расхождение с общепринятой практикой, для определения начальной точки требуется декодирование пакетов на первой странице.
  • Общая усложненность процесса декодирования и разбора данных, необходимость выполнения лишних действий, использование нестандартных методов и применение в документации необщепринятых терминов. Для обхода ограничения на размер страницы в Ogg возможно разбиение пакета на две страницы, что возлагает на декодер дополнительную нагрузку по сборке фрагментированных пакетов данных. Дополнительно наблюдаются проблемы с требованием лишнего объема памяти для буферизации, на настольных системах это не критично, но для встраиваемых систем приводит к трате драгоценных ресурсов.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Размышление над проблемами формата Ogg», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.