Обзор QTFF

Фильмы в формате QuickTime сохранены на диске, с помощью двух базовых структур для того, чтобы хранить информацию: атомы (также известный как простые атомы или классические атомы) и атомы QT. Чтобы понять, как фильмы в формате QuickTime сохранены, необходимо понять основные структуры атома, описанные в этой главе. Большинство атомов, с которыми Вы встречаетесь в Формате файла QuickTime, является простыми или классическими атомами. И простые атомы и атомы QT, однако, позволяют Вам создавать произвольно сложные иерархические структуры данных. Оба также позволяют Вашему приложению игнорировать данные, которые они не понимают.

Описание носителя

QuickTime хранилища файлов описание его носителей отдельно от данных носителей.

Описание вызывают ресурсом фильма, атомом фильма, или просто фильмом, и содержит информацию, такую как число дорожек, формата сжатия видео и информации синхронизации. Ресурс фильма также содержит индекс, описывающий, где хранятся все данные носителей.

Данные носителей являются фактическими демонстрационными данными, такими как видеокадры и аудиосэмплы, используемые в фильме. Данные носителей могут храниться в том же файле как фильм в формате QuickTime, в отдельном файле, в многократных файлах, в альтернативных источниках, таких как базы данных или потоки в реальном времени, или в некоторой комбинации их.

Атомы

Модуль исходных данных в файле QuickTime является атомом. Каждый атом содержит размер и поля типа, предшествующие любым другим данным. Поле размера указывает общее количество байтов в атоме, включая поля типа и размер. Поле типа указывает тип данных, хранивших в атоме и, косвенно, формат тех данных. В некоторых случаях размер и поля типа сопровождаются полем версии и полем флагов. Атом с ними присваивает версию, и отмечает поля, иногда вызывается полным атомом.

Типы Atom указаны 32-разрядным целым без знака, обычно интерпретируемым как код ASCII с четырьмя символами. Apple, Inc. резервирует все четыре кодов символов, состоящие полностью из строчных букв. Если не указано иное, все данные в фильме в формате QuickTime хранятся в порядке байтов с обратным порядком байтов, также известном как сетевой порядок байтов, в котором старшие значащие байты сохранены и передаются сначала.

Атомы являются иерархическими в природе. Т.е. один атом может содержать другие атомы, которые могут содержать все еще других и т.д. Эта иерархия иногда описывается с точки зрения родителя, дочерних элементов, одноуровневых элементов, внуков, и т.д. Атом, содержащий другие атомы, вызывают контейнерным атомом. Родительский атом является контейнерным атомом точно один уровень выше данного атома в иерархии.

Например, атом фильма содержит несколько различных видов атомов, включая один атом дорожки для каждой дорожки в фильме. Атомы дорожки, в свою очередь, содержите один атом носителей каждый, вместе с другими атомами, определяющими другие характеристики дорожки. Атом фильма является родительским атомом атомов дорожки. Атомы дорожки являются одноуровневыми элементами. Атомы дорожки являются родительскими атомами атомов носителей. Атом фильма не является родителем атомов носителей, потому что это - больше чем один уровень выше их в иерархии.

Атом, не содержащий другие атомы, вызывают листовым атомом, и обычно содержит данные как одно или более полей или таблицы. Некоторые листовые атомы действуют как флаги или заполнители, однако, и не содержат данных вне своего размера и вводят поля.

Формат данных, хранивших в данном атоме, не может всегда определяться полем типа одного только атома; тип родительского атома может также быть значительным. Другими словами, данный тип атома может содержать различные виды информации в зависимости от его родительского атома. Например, в то время как атом профиля в атоме дорожки содержит информацию о дорожке, атом профиля в атоме фильма содержит информацию о фильме. Это означает, что все средства чтения файлов QuickTime должны учесть не только тип атома, но также и иерархию вместимости атома.

Расположение Atom

Рисунок 1-1 показывает расположение демонстрационного атома. Каждый атом переносит свой собственный размер и информацию о типе, а также свои данные. Всюду по этому документу имя контейнерного атома (атом, содержащий другие атомы, включая другие контейнерные атомы) распечатано в сером поле и имени листового атома (атом, не содержащий никакие другие атомы), распечатан в белом поле. Листовые атомы содержат данные, обычно в форме таблиц.

Рисунок 1-1  демонстрационный атом
A sample atom

Листовой атом, как показано на рисунке 1-1, просто содержит серию полей данных, доступных смещениями.

Атомы в контейнерных атомах не должны обычно быть ни в каком определенном порядке, если такой порядок в частности не вызывается в этом документе. Одним таким примером является атом описания обработчика, который должен прибыть перед обработанными данными. Например, атом описания обработчика носителей должен прибыть, прежде чем атом информации о носителях и атом описания обработчика данных должны прибыть перед атомом информации о данных.

Структура Atom

Атомы состоят из заголовка, сопровождаемого данными атома. Заголовок содержит размер атома и поля типа, давая размер атома в байтах и его типе. Это может также содержать расширенное поле размера, давая размер большого атома как 64-разрядное целое число. Если расширенное поле размера присутствует, поле размера установлено в 1. Фактический размер атома не может составить меньше чем 8 байтов (минимальный размер типа и полей размера).

Некоторые атомы также содержат версию, и отмечает поля. Их иногда вызывают полными атомами. Поля признака и поля версии не обрабатываются как часть заголовка атома в этом документе; они обрабатываются как поля данных, определенные для каждого типа атома, содержащего их. Такие поля должны всегда обнуляться, если не указано иное.

Заголовок атома состоит из следующих полей:

Размер Atom

32-разрядное целое число, указывающее размер атома, и включая заголовок атома и включая содержание атома, включая любые содержавшие атомы. Обычно, size поле содержит фактический размер атома, в байтах, выраженных как 32-разрядное целое без знака. Однако size поле может содержать специальные значения, указывающие альтернативный метод определения размера атома. (Эти специальные значения обычно используются только для данных носителей ('mdat') атомы.)

Два специальных значения допустимы для size поле:

  • 0, то, которое позволяется только для атома верхнего уровня, определяет последний атом в файле и указывает, что атом расширяется до конца файла.

  • 1, что означает, что фактический размер подан extended size поле, дополнительное 64-разрядное поле, следующее type поле.

    Это размещает атомы данных носителей, содержащие больше, чем 2^32 байты.

Рисунок 1-2 показывает, как вычислить размер атома.

Ввести

32-разрядное целое число, содержащее тип атома. Это может часто полезно обрабатываться как четыре символьных поля с мнемоническим значением, такой как 'moov' (0x6D6F6F76) для атома фильма, или 'trak' (0x7472616B) для атома дорожки, но значений неASCII (такой как 0x00000001) также используются.

Знание типа атома позволяет Вам интерпретировать свои данные. Данные атома могут быть расположены как любой произвольный набор полей, таблиц или других атомов. Структура данных является определенной для типа атома. Атом данного типа имеет определенную структуру данных.

Если Ваше приложение встречается с атомом неизвестного типа, оно не должно пытаться интерпретировать данные атома. Используйте атом size поле для пропуска этого атома и всего его содержания. Это позволяет степень прямой совместимости с расширениями формата файла QuickTime.

 Когда новая версия представлена, предупреждение внутренней структуры данного типа атома может измениться. Всегда проверяйте поле версии, если Вы существуете. Никогда не пытайтесь интерпретировать данные, падающие за пределами атома, как определено полями Size или Extended Size.

Расширенный размер

Если size поле атома установлено в 1, type поле сопровождается 64-разрядным extended size поле, содержащее фактический размер атома как 64-разрядное целое без знака. Когда размер атома данных носителей превышает 2^32 байты, это используется.

Когда size поле содержит фактический размер атома, extended size поле не присутствует. Это означает, что, когда атом QuickTime изменяется путем добавления данных, и его размер пересекается 2^32 предел байта, существует нет extended size поле, в котором можно записать новый размер атома. Следовательно, не всегда возможно увеличить атом вне 2^32 байты, не копируя его содержание в новый атом.

Для предотвращения этого неудобства атомы данных носителей обычно создаются с 64-разрядным атомом заполнителя, сразу предшествующим им в файле ролика. Атом заполнителя имеет тип kWideAtomPlaceholderType ('wide').

Во многом как a 'free' или 'skip' атом, 'wide' атом резервируется пространство, но в этом случае пространство резервируется в определенной цели. Если a 'wide' атом сразу предшествует второму атому, второй атом может быть расширен от 32-разрядного размера до 64-разрядного размера просто путем запуска заголовка атома 8 байтов ранее (перезаписывающий 'wide' атом), устанавливая size поле к 1, и добавление extended size поле. Таким образом, смещения для демонстрационных данных не должны быть повторно вычислены.

'wide' атом - точно 8 байтов в размере и состоит исключительно из size и type поля. Это не содержит никакие другие данные.

Рисунок 1-2  , Вычисляющий размеры атома
Calculating atom sizes

Атомы QT и контейнеры Atom

Атомы QT являются улучшенной структурой данных, которые обеспечивают, хранение более общего назначения форматируют и удаляют некоторые случаи неоднозначности, возникающие при использовании простых атомов. Атом QT имеет расширенный заголовок; размер и поля типа сопровождаются полями для атома ID и количество дочерних атомов.

Это позволяет многократным дочерним атомам того же типа быть указанными через идентификационные номера. Это также позволяет проанализировать содержание атома QT неизвестного типа путем обхода дерева его дочерних атомов.

Атомы QT обычно обертываются в контейнер атома, структуру данных с заголовком, содержащим количество блокировки. Каждый контейнер атома содержит точно один корневой атом, который является атомом QT. Контейнеры Atom не являются атомами и не найдены в иерархии атомов, составляющей файл фильма в формате QuickTime. Контейнеры Atom могут быть найдены как структуры данных в некоторых атомах, как бы то ни было. Примеры включают входные карты носителей и атомы свойства носителей.

Рисунок 1-3 изображает расположение атома QT. Каждый атом QT запускается с заголовка контейнера атома QT, сопровождаемого полностью атом. Тип корневого атома является типом атома QT. Корневой атом содержит любые другие атомы, которые являются частью структуры.

Каждый контейнерный атом запускается с заголовка атома QT, сопровождаемого содержанием атома. Содержание является или дочерними атомами или данными, но никогда обоими. Если атом содержит дочерние элементы, он также содержит все свои детские данные и потомков. Корневой атом всегда присутствует и никогда не имеет одноуровневых элементов.

Рисунок 1-3  расположение атома QT
QT atom layout

Заголовок контейнера атома QT содержит следующие данные:

Зарезервированный

10-байтовый элемент, который должен быть установлен в 0.

Количество блокировки

16-разрядное целое число, которое должно быть установлено в 0.

Каждый заголовок атома QT содержит следующие данные:

Размер

32-разрядное целое число, указывающее размер атома в байтах, и включая заголовок атома QT и включая содержание атома. Если атом является листовым атомом, то это поле содержит размер единственного атома. Размер контейнерных атомов включает все содержавшие атомы. Можно обойти дерево атома использование размера и дочерних полей количества.

Ввести

32-разрядное целое число, содержащее тип атома. Если это - корневой атом, значение типа установлено в 'sean'.

Atom ID

32-разрядное целое число, содержащее Значение идентификатора атома. Это значение должно быть уникальным среди своих одноуровневых элементов. Корневой атом всегда имеет Значение идентификатора атома 1.

Зарезервированный

16-разрядное целое число, которое должно быть установлено в 0.

Дочернее количество

16-разрядное целое число, указывающее число дочерних атомов, которые содержит атом. Это количество включает только непосредственные дочерние элементы. Если это поле установлено в 0, атом является листовым атомом и содержит только данные.

Зарезервированный

32-разрядное целое число, которое должно быть установлено в 0.

Контейнеры Atom QT

Контейнер атома QuickTime является базовой структурой для того, чтобы хранить информацию в QuickTime. Контейнер атома является иерархией с древовидной структурой атомов QT. Можно думать о недавно создаваемом контейнере атома QT как о корне древовидной структуры, не содержащей дочерних элементов.

Контейнер атома является контейнером, не атомом. Это имеет зарезервированное поле и количество блокировки в его заголовке, не поле размера и поле типа. Контейнеры Atom не найдены в иерархии атома файла фильма в формате QuickTime, потому что они не атомы. Они могут быть найдены как данные в некоторых атомах, однако, такой как во входных картах носителей, атомах свойства носителей, демонстрационных данных эффектов видео и демонстрационных данных промежуточного кадра.

Контейнер атома QT содержит атомы QT, как показано на рисунке 1-4. Каждый атом QT содержит или данные или другие атомы. Если атом QT содержит другие атомы, это - родительский атом и атомы, которые это содержит, его дочерние атомы. Дочерний атом каждого родителя однозначно определяется его типом атома и атомом ID. Атом QT, содержащий данные, вызывают листовым атомом.

Рисунок 1-4  контейнер атома QT с родительскими и дочерними атомами
QT atom container with parent and child atoms

Каждый атом QT имеет смещение, описывающее позицию атома в контейнере атома QT. Кроме того, каждый атом QT имеет тип и ID. Тип атома описывает вид информации, которую представляет атом. Атом ID используется для дифференциации дочерних атомов того же типа с тем же родителем; ID атома должен быть уникальным для данного родителя и типа. В дополнение к атому ID каждый атом имеет индекс на основе 1, описывающий его порядок относительно других дочерних атомов того же родителя с тем же типом атома. Можно однозначно определить атом QT одним из трех способов:

  • Его смещением в его контейнере атома QT

  • Его родительским атомом введите, и индекс

  • Его родительским атомом введите, и ID

Можно сохранить и получить атомы в контейнере атома QT индексом, ID или обоими. Например, для использования контейнера атома QT в качестве динамического массива или древовидной структуры можно сохранить и получить атомы индексом. Для использования контейнера атома QT в качестве базы данных можно сохранить и получить атомы ID. Можно также создать, сохранить, и получить атомы с помощью и ID и индексировать для создания произвольно комплекса, расширяемой структуры данных.

Рисунок 1-5 показывает контейнер атома QT, имеющий два дочерних атома. Первый дочерний атом (смещение = 10) является листовым атомом, имеющим тип атома 'abcd', ID 1 000 и индекс 1. Второй дочерний атом (смещение = 20) имеет тип атома 'abcd', ID 900 и индекс 2. Поскольку два дочерних атома имеют тот же тип, у них должен быть различный IDs. Второй дочерний атом является также родительским атомом трех атомов.

Рисунок 1-5  контейнер атома QT с двумя дочерними атомами
A QT atom container with two child atoms

Первый дочерний атом (смещение = 30) имеет тип атома 'abcd', ID 100 и индекс 1. Это не имеет никаких дочерних элементов, и при этом это не имеет данных. Второй дочерний атом (смещение = 40) имеет тип атома 'word', ID 100 и индекс 1. Атом имеет данные, таким образом, это - листовой атом. Второй атом (смещение = 40) имеет тот же ID как первый атом (смещение = 30), но различный тип атома. Третий дочерний атом (смещение = 50) имеет тип атома 'abcd', ID 1 000 и индекс 2. Его тип атома и ID совпадают с типом другого атома (смещение = 10) с различным родителем.

Большинство функций атома QT берет два параметра для указания определенного атома: контейнер атома, содержащий атом и смещение атома в структуре данных контейнера атома. Вы получаете смещение атома путем вызова также QTFindChildByID или QTFindChildByIndex. Смещение атома может быть лишено законной силы, если изменяется контейнер атома QT, содержащий его.

При вызывании любой функции атома QT, для которой Вы указываете родительский атом в качестве параметра, можно передать константу kParentAtomIsContainer как смещение атома, чтобы указать, что указанный родительский атом является самим контейнером атома. Например, Вы вызвали бы QTFindChildByIndex функция и передача kParentAtomIsContainer постоянный для родительского параметра атома, чтобы указать, что требуемый дочерний атом является дочерним элементом самого контейнера атома.

Файлы фильма в формате QuickTime

Формат файла QuickTime описывает характеристики файлов фильма в формате QuickTime. Файл фильма в формате QuickTime содержит ресурс фильма в формате QuickTime или иначе указывает на один или несколько внешних источников с помощью ссылок фильма. Выборки носителей, используемые фильмом (такие как видеокадры или группы аудиосэмплов), могут быть включены в файл ролика или могут быть внешними к файлу ролика в одном или более файлах, потоках или других источниках.

Фильм в формате QuickTime не ограничивается видео и аудио; это может использовать любое подмножество или комбинацию типов среды, которые QuickTime поддерживает, включая видео, звук, неподвижные изображения, текст, Flash, 3D модели и обзоры виртуальной реальности. Это поддерживает и основанные на времени и нелинейные интерактивные среды.

В файловых системах, поддерживающих расширения файла, файлы фильма в формате QuickTime должны иметь расширение .mov. На платформе Macintosh файлы QuickTime имеют тип файла Mac OS 'MooV'. Файлы фильма в формате QuickTime должны всегда связываться с типом MIME "video/quicktime", содержит ли фильм видео.

Файл фильма в формате QuickTime структурирован как набор атомов, которые вместе идентифицируют файл как фильм в формате QuickTime, описывают структуру фильма и могут содержать демонстрационные данные, должен был проигрывать фильм. Не все атомы требуются.

Формат файла расширяем, и время от времени новые типы атома представлены. Если Ваше приложение встречается с неизвестным типом атома в файле QuickTime, оно должно просто проигнорировать его. Это позволяет формату файла быть расширенным, не повреждая существующие приложения и обеспечивает меру прямой совместимости. Поскольку первое поле в любом атоме содержит свой размер, включая любые содержавшие атомы, просто пропустить до конца неизвестного атома, вводят и продолжают анализировать файл.

Исключение является атомом типа файла, обычно идентифицирующим файл как фильм в формате QuickTime. Если настоящее, этот атом предшествует какому-либо атому фильма, данным фильма, предварительному просмотру или атомам свободного пространства. При обнаружении с одним из этих других типов атома до нахождения атома типа файла можно предположить, что не присутствует атом типа файла. (Этот атом представлен в Спецификации Формата файла QuickTime на 2004 и не присутствует в файлах фильма в формате QuickTime, создаваемых до 2004).

В то время как другие атомы могут быть в любом порядке, если не указано в этом документе, по практическим причинам существует рекомендуемый порядок, который необходимо использовать при создании файла фильма в формате QuickTime. Например, атом, содержащий ресурс фильма, должен предшествовать любым атомам, содержащим демонстрационные данные фильма. Если Вы следуете за этим рекомендуемым порядком атома, возможно проигрывать фильм по сети, в то время как файл ролика находится в процессе загрузки.

Файл фильма в формате QuickTime должен содержать атом фильма, содержащий или структуру фильма или ссылку на один или несколько альтернативных источников фильма, внешних к файлу. Вообще говоря, эти альтернативные источники будут файлами фильма в формате QuickTime, содержащими структуры фильма.

Файл фильма в формате QuickTime обычно содержит один или несколько атомов данных фильма, содержащих демонстрационные данные носителей, такие как видеокадры и группы аудиосэмплов. Не может быть никаких атомов данных фильма в файле, однако, поскольку фильм может зависеть от демонстрационных данных, внешних к файлу ролика, такому как внешние файлы данных или прямые трансляции в Интернете. Единственный атом данных фильма может содержать демонстрационные данные для множества различных носителей. Вообще говоря, возможно содержать все выборки носителей, используемые фильмом в единственном атоме данных фильма. Атомы данных фильма могут быть довольно большими, и иногда превышать 2^32 байты.

Рисунок 1-6 показывает существенные типы атома в файле фильма в формате QuickTime, в котором сохранены другие атомы. Кроме того, файл может содержать атомы свободного пространства, атомы предварительного просмотра и другие атомы, не перечисленные в этой спецификации формата файла. Должны быть проигнорированы неизвестные типы атома.

Рисунок 1-6  структура файла фильма в формате QuickTime
The structure of a QuickTime movie file

Таблица 1-1 перечисляет основные типы атома.

Таблица 1-1  Основные типы атома файла QuickTime

Тип Atom

Использовать

'ftyp'

Совместимость типа файла — идентифицирует тип файла и дифференцирует его от подобных типов файлов, таких как MPEG 4 файла и JPEG 2 000 файлов.

'moov'

Метаданные ресурса фильма о фильме (число и тип дорожек, расположение демонстрационных данных, и т.д.). Описывает, где данные фильма могут быть найдены и как интерпретировать их.

'mdat'

Демонстрационные данные фильма — выборки носителей, такие как видеокадры и группы аудиосэмплов. Обычно эти данные могут быть интерпретированы только при помощи ресурса фильма.

'free'

Неиспользуемое место, доступное в файле.

'skip'

Неиспользуемое место, доступное в файле.

'wide'

Если следующий атом превышает 2^32 байты, не перемещая содержание следующего атома, зарезервированное пространство — может быть перезаписано расширенным полем размера.

'pnot'

Ссылка на данные предварительного просмотра фильма.

Следующие разделы описывают эти основные типы атома (за исключением атома фильма) более подробно, включая описания других атомов, которые может содержать каждый основной атом. Атом фильма описан отдельно в Атомах Фильма

Atom совместимости типа файла

Атом совместимости типа файла, также названный атомом типа файла, позволяет читателю определять, является ли это типом файла, который понимает читатель. В частности атом типа файла идентифицирует спецификации типа файла, с которыми файл совместим. Это позволяет читателю различать среди тесно связанных типов файлов, таких как файлы фильма в формате QuickTime, MPEG 4 и JPEG 2 000 файлов (все из которых могут содержать атомы типа файла, атомы фильма и атомы данных фильма).

Когда файл совместим больше чем с одной спецификацией, атом типа файла перечисляет все совместимые типы и указывает предпочтительный бренд, или лучше всего используйте среди совместимых типов. Например, аудиоплеер с помощью совместимого с QuickTime формата файла мог бы идентифицировать лучшее использование файла в качестве музыкального файла для того проигрывателя, но также и идентифицировать его как фильм в формате QuickTime.

Атом типа файла служит дальнейшей цели различить среди различных версий или спецификаций того же типа файла, позволяя ему передать больше информации, чем расширение файла или один только тип MIME. Атом типа файла также имеет преимущество того, чтобы быть внутренним к файлу, где это - меньше подвергающееся случайному изменению, чем тип MIME или расширение файла.

Атом типа файла является дополнительным, но строго рекомендуемый. Если настоящее, это должен быть первый значительный атом в файле, предшествуя атому фильма (и каким-либо атомам свободного пространства, атому предварительного просмотра или атомам данных фильма).

Атом типа файла имеет значение типа атома 'ftyp' и содержит следующие поля:

Размер

32-разрядное целое без знака, указывающее число байтов в этом атоме.

Ввести

32-разрядное целое без знака, идентифицирующее тип атома, обычно представленный как четыре кода символа; это поле должно быть установлено в 'ftyp'.

Major_Brand

32-разрядное целое без знака, которое должно быть установлено в 'qt  ' (отметьте два запаздывающих пробела ASCII) для файлов фильма в формате QuickTime. Если файл совместим с многократными брендами, все такие бренды перечислены в полях Compatible_Brands, и Major_Brand идентифицирует предпочтительный бренд, или лучше всего используйте.

Minor_Version

32-разрядное поле, указывающее версию спецификации формата файла. Для файлов фильма в формате QuickTime это принимает форму четырех значений двоично-десятичного числа, указывая век, год и месяц Спецификации Формата файла QuickTime, сопровождаемой нулем двоично-десятичного числа. Например, для вспомогательной версии в июне 2004, это поле установлено в значения BCD 20 04 06 00.

Compatible_Brands []

Серия 32-разрядных целых чисел без знака, перечисляющих совместимые форматы файлов. Главный бренд должен появиться в списке совместимых брендов. Одна или более записей «заполнителя» с нулем значения разрешены; такие записи должны быть проигнорированы.

Если ни одно из полей Compatible_Brands не установлено в 'qt  ', тогда файл не является файлом фильма в формате QuickTime и не совместим с этой спецификацией. Приложения должны возвратить ошибку и закрыть файл или иначе вызвать средство импорта файла, надлежащее одному из указанных брендов, предпочтительно главный бренд. QuickTime в настоящее время возвращает ошибку при попытке открыть файл, тип файла которого, расширение файла или тип MIME идентифицируют его как фильм в формате QuickTime, но чей атом типа файла не включает 'qt  ' бренд.

Если Вы создаете тип файла, который полностью совместим с форматом файла QuickTime, одно из полей Compatible_Brand должно быть установлено в 'qt  '; иначе QuickTime не распознает файл как фильм в формате QuickTime.

Атомы свободного пространства

Оба free и skip атомы определяют неиспользуемое место в файле данных фильма. Эти атомы состоят из только заголовка атома (размер, и введите поля), сопровождаемый надлежащим числом байтов свободного пространства. При чтении фильма в формате QuickTime приложение может безопасно пропустить эти атомы. При записи или обновлении фильма, можно снова использовать пространство, связанное с этими типами атома.

A wide атом обычно предшествует атому данных фильма. wide атом состоит только из поля размера и типа. Это занимает 8 байтов — достаточно пространства для добавления расширенного поля размера к заголовку атома, следующего, не перемещая содержание того атома. Если атом растет для превышения 2^32 байты в размере, и этому предшествует a wide атом, можно создать новый заголовок атома, содержащий расширенное поле размера путем перезаписи существующего заголовка атома и предыдущего wide атом.

Атомы данных фильма

Как со свободными атомами и атомами пропуска, атом данных фильма структурирован вполне просто. Это состоит из заголовка атома (размер атома и поля типа), сопровождаемый данными носителей фильма. Ваше приложение может понять данные в этом атоме только при помощи метаданных, сохраненных в атоме фильма. Этот атом может быть довольно большим, и может превысить 2^32 байты, когда поле размера будет установлено в 1, и заголовок будет содержать 64-разрядное расширенное поле размера.

Атомы предварительного просмотра

Атом предварительного просмотра содержит информацию, позволяющую Вам находить, что изображение предварительного просмотра связалось с фильмом в формате QuickTime. Изображение предварительного просмотра или плакат, является представительным изображением, подходящим для дисплея пользователю в, например, диалоговые окна Open. Рисунок 1-7 изображает расположение атома предварительного просмотра.

Рисунок 1-7  расположение атома предварительного просмотра
The layout of a preview atom

Атом предварительного просмотра имеет значение типа атома 'pnot' и, после его заголовка атома, содержит следующие поля:

Размер

32-разрядное целое число, указывающее число байтов в этом атоме предварительного просмотра.

Ввести

32-разрядное целое число, идентифицирующее тип атома; это поле должно быть установлено в 'pnot'.

Дата модификации

32-разрядное целое без знака, содержащее дату, указывающую, когда предварительный просмотр обновился. Данные находятся в стандартном формате Macintosh.

Номер версии

16-разрядное целое число, которое должно быть установлено в 0.

Тип Atom

32-разрядное целое число, указывающее тип атома, содержащего данные предварительного просмотра. Как правило, это установлено в 'PICT' указать изображение QuickDraw.

Индекс Atom

16-разрядное целое число, идентифицирующее, какой атом указанного типа должен использоваться в качестве предварительного просмотра. Как правило, это поле установлено в 1 указать, что необходимо использовать первый атом типа, указанного в поле типа атома.