FourCC

редактировать

A FourCC («четырехзначный код») - это последовательность из четырех байтов (обычно ASCII ) используется для однозначной идентификации форматов данных. Он возник из системы метаданных OSType или ResType, используемой в классической Mac OS, и был адаптирован для Amiga / Electronic Arts. Формат файла обмена и производные. Позднее эта идея была повторно использована для определения типов сжатых данных в QuickTime и DirectShow.

Содержание
  • 1 История
    • 1.1 В системах Apple
  • 2 Технические детали
    • 2.1 Компилятор поддержка
  • 3 Общее использование
  • 4 См. также
  • 5 Ссылки
    • 5.1 Общие ссылки
История

В 1984 году была выпущена самая ранняя версия Macintosh OS, System 1, был освобожден. Он использовал одноуровневую файловую систему Macintosh с полями метаданных, включая типы файлов, информацию о создателе (приложении) и вилки для хранения дополнительных ресурсов. Все эти поля представляют собой четырехзначные коды, известные как OSType. Эту информацию можно было изменить, не изменяя сами данные, чтобы их можно было интерпретировать по-разному. Идентичные коды использовались во всей системе в качестве тегов типов для всех видов данных.

В 1985 году Electronic Arts представила мета-формат Interchange File Format (IFF). формат (семейство форматов файлов), изначально разработанный для использования на Amiga. Эти файлы состояли из последовательности «фрагментов», которые могли содержать произвольные данные, причем каждому фрагменту предшествовал четырехбайтовый идентификатор. В спецификации IFF прямо упоминается, что истоки идеи FourCC лежат в Apple.

Этот IFF был принят рядом разработчиков, включая Apple для файлов AIFF и Microsoft для файлов RIFF (которые использовались в качестве основы для файлов формата AVI и WAV ). Apple назвала многие из этих кодов OSTypes. Разработчики Microsoft и Windows называют свои четырехбайтовые идентификаторы FourCC или четырехсимвольными кодами. Коды FourCC были также приняты Microsoft для идентификации форматов данных, используемых в DirectX, в частности в DirectShow и DirectX Graphics.

В системах Apple

Начиная с Mac OS X Panther, сигнатуры OSType являются одним из нескольких источников, которые можно исследовать для определения унифицированного идентификатора типа и больше не используются в качестве сигнатуры первичного типа данных. Mac OS X (macOS) предпочитает более разговорные правила обозначения типов файлов с помощью расширений имен файлов. На момент внесения изменений это изменение вызывало большие споры среди старых пользователей, которые считали, что Apple возвращается к более примитивному способу, при котором метаданные теряются в имени файла.

Коды типов, связанные с файловой системой, не всегда доступны пользователям для манипуляций, хотя их можно просматривать и изменять с помощью определенного программного обеспечения, в первую очередь инструментов командной строки MacOS GetFileInfo и SetFile, которые устанавливаются как часть инструментов разработчика. в / Developer / Tools или утилиту ResEdit, доступную для старых компьютеров Mac.

Технические детали

Последовательность байтов обычно ограничена печатаемыми символами ASCII, с пробелами, зарезервированными для заполнения более коротких последовательностей. Чувствительность к регистру сохраняется, в отличие от расширений файлов. FourCCs иногда кодируются в шестнадцатеричном формате (например, «0x31637661» для «avc1»), а иногда кодируются в удобочитаемом виде (например, «mp4a »). Однако некоторые файлы FourCC содержат непечатаемые символы и не читаются человеком без специального форматирования для отображения; например, 10-битное Y'CbCr 4: 2: 2 видео может иметь FourCC ('Y', '3', 10, 10), что ffmpeg отображается как rawvideo (Y3 [10] [10] / 0x0A0A3359), yuv422p10le.

. Четырехбайтовые идентификаторы полезны, потому что они могут состоять из четырех человекочитаемых символов с мнемоническими качествами, при этом вписываясь в четырехбайтовое пространство памяти, обычно выделяемое для целых чисел в 32-битных системах (хотя проблемы endian могут сделать их менее читаемыми). Таким образом, коды могут эффективно использоваться в программном коде как целые числа, а также давать подсказки в потоках двоичных данных при проверке.

Поддержка компилятора

FourCC записывается с прямым порядком байтов относительно базовой последовательности символов ASCII, так что она отображается в правильном порядке байтов при чтении в виде строки. Многие компиляторы C, включая GCC, определяют поведение многосимвольного литерала выравнивания по правому краю младшего значащего байта, так что '1234'становится 0x3 1323334в ASCII. Это обычный способ написания кодов FourCC, используемый программистами Mac OS для OSType. (Классическая Mac OS была исключительно с прямым порядком байтов.)

На машинах с прямым порядком байтов требуется перестановка байтов для значения, чтобы результат был правильным. Возьмем пример avc1 сверху: хотя литерал avc1 уже преобразуется в целочисленное значение 0x61766331, машина с прямым порядком байтов изменит порядок байтов и сохранит значение как 31 63 76 61. Чтобы получить правильная последовательность байтов 61 76 63 31, используется предварительно измененное значение 0x31637661.

Распространенное использование

Одно из наиболее известных применений FourCC - определение видеокодека или формата кодирования видео в файлах AVI. Общие идентификаторы включают DIVX, XVID и H264. Для форматов кодирования звука файлы AVI и WAV используют двухбайтовый идентификатор, обычно записываемый в шестнадцатеричном формате (например, 0055 для MP3 ). В файлах QuickTime к этим двухбайтовым идентификаторам добавляются буквы «мс», чтобы сформировать четырехзначный код. В файлах RealMedia также используются четырехсимвольные коды, однако фактические используемые коды отличаются от кодов в файлах AVI или QuickTime.

Другие форматы файлов, в которых важна концепция четырехбайтового идентификатора, - это формат Standard MIDI File (SMF), формат файла изображения PNG, Формат файла сетки 3DS (3D Studio Max) и формат профиля ICC.

Другие варианты использования OSTypes включают:

  • как гештальт коды селектора
  • как идентификаторы полей записи, а также идентификаторы типа события и класса в AppleEvents
  • для идентификация компонентов в Component Manager
  • как идентификаторы «атома» в форматах файлов фильмов и изображений QuickTime
  • как независимый от локализации способ идентификации стандартных папок в папке Manager
  • в QuickDraw GX, они использовались как типы gxTag, а также как типы элементов коллекции в диспетчере коллекции.
  • как коды ошибок в некоторых библиотеках, таких как QuickTime
См. также
Ссылки

Общие ссылки

Последняя правка сделана 2021-05-20 12:44:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте