Введение

Формат файла

Multimedia Container Format (MCF) — это незавершенная спецификация формата контейнера, разработанная как полностью свободная и открытая. Проект был заброшен в начале 2004 года, но многие из его инновационных функций впоследствии были реализованы в Matroska, фактическом преемнике MCF.

История

MCF был первым проектом, создавшим открытый и гибкий формат медиа-контейнера, способный объединять в одном файле несколько видео-, аудио- и потоков субтитров. Проект был начат в 2000 году разработчиком Лассе Кёрккайненом (Tronic) как попытка улучшить устаревающий формат AVI. Первый черновой вариант спецификации был опубликован в 2001 году. Поначалу проект вызвал некоторую путаницу относительно его целей. Это было решено, когда ведущий разработчик создал простой проигрыватель для этого формата с поддержкой встроенных субтитров, что вызвало интерес и привело к росту сообщества. Были добавлены новые функции, а спецификация была доработана. Ключевым событием в истории проекта стало изобретение EBML осенью 2002 года – двоичного метаформата, вдохновленного XML, созданного программистом Стивом Ломме, за которым последовал шестимесячный перерыв в работе Кёрккайнена из-за военной службы. Поскольку MCF в то время считался почти готовым к выпуску, EBML не был принят, что побудило Ломма создать собственный проект Matroska на основе EBML. Из-за отсутствия ведущего разработчика большая часть интереса быстро переключилась на новый проект; к моменту возвращения Кёрккайнена из армии сообщество разработчиков вокруг MCF полностью распалось. Нехватка кадров и учебные обязательства привели к неудаче попыток Кёрккайнена возродить проект. Окончательные спецификации так и не были опубликованы, а последняя новость на веб-странице проекта SourceForge датирована 6 сентября 2003 года.

Особенности

Одной из целей нового формата было упрощение его обработки пользователями. Это достигалось за счет полноты функциональности, устранения необходимости в сторонних расширениях и активного их неиспользования. Благодаря простой, фиксированной структуре, время, необходимое для чтения и разбора информации заголовка, было минимальным. Небольшой размер заголовка (2,5 кБ), содержащего при этом все важные данные, облегчал быстрый просмотр коллекций файлов MCF даже при медленном сетевом соединении. Ключевой особенностью MCF была возможность хранения нескольких глав видео, меню, субтитров на разных языках и множества аудиопотоков (например, для различных языков) в одном файле. Кроме того, контент можно было разделить на несколько файлов, называемых сегментами; сборка сегментов в полноценный фильм происходила автоматически при наличии всех сегментов. Сегменты также можно было воспроизводить отдельно, а степень их перекрытия была настраиваемой. Формат поддерживал видео с переменной частотой кадров. Для проверки целостности в файл встраивались контрольные суммы CRC32 и поддерживались цифровые подписи. В парсер была встроена определенная устойчивость к ошибкам, позволяющая воспроизводить частично поврежденные фильмы. Накладные расходы на кадр в MCF (7 байт) были значительно ниже, чем в AVI (40 байт), и сопоставимы с Matroska (10 байт).

Пределы

Ограничения формата MCF были основаны на человеческом восприятии и ожиданиях прогресса в скорости передачи данных видео. Точность временно́го кода формата ограничена 1 мс. Адресация в файле ограничена 64 битами, что является очень большим значением. Размер кадра ограничен 32-битным номером размера кадра, что ограничивает максимальный размер кадра до 4 ГиБ. Временны́е коды хранятся как 40-битные целые числа, что ограничивает максимальную продолжительность фильма примерно 35 годами. Количество различных потоков в одном файле составляет 216 или 65536. Фильм может быть разбит на максимум 255 сегментов.