Типы Atom данных носителей

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

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

Эта глава разделена на следующие главные разделы:

Видео носители

Видео носители используются для хранения сжатых и несжатых данных изображения в фильмах в формате QuickTime. Это имеет тип среды'vide'.

Видео демонстрационное описание

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

Поле формата данных видео демонстрационного описания указывает тип сжатия, использовавшегося для сжатия данных изображения или представления цветового пространства несжатых видеоданных. Таблица 4-1 показывает некоторые поддерживаемые форматы. Список не является исчерпывающим, и подвергается дополнению.

Таблица 4-1  Некоторые форматы сжатия изображений

Тип сжатия

Описание

'cvid'

Cinepak

'jpeg'

JPEG

'smc '

Графика

'rle '

Анимация

'rpza'

Видео Apple

'kpcd'

Фотография Kodak CD

'png '

Переносимая сетевая графика

'mjpa'

JPEG движения (формат A)

'mjpb'

JPEG движения (формат B)

'SVQ1'

Видео Соренсона, версия 1

'SVQ3'

Видео Соренсона 3

'mp4v'

Видео MPEG 4

'avc1'

Видео H.264

'dvc '

Видео NTSC DV 25

'dvcp'

Видео PAL DV 25

'gif '

Формат обмена графическими данными CompuServe

'h263'

Видео H.263

'tiff'

Тегированный формат файлов изображений

'raw '

Несжатый RGB

'2vuY´

Несжатый Y´CbCr, 8 битов за компонент 4:2:2

'yuv2'

Несжатый Y´CbCr, 8 битов за компонент 4:2:2

'v308'

Несжатый Y´CbCr, 8 битов за компонент 4:4:4

'v408'

Несжатый Y´CbCr, 8 битов за компонент 4:4:4:4

'v216'

Несжатый Y´CbCr, 10, 12, 14, или 16 битов за компонент 4:2:2

'v410'

Несжатый Y´CbCr, 10 битов за компонент 4:4:4

'v210'

Несжатый Y´CbCr, 10 битов за компонент 4:2:2

Видео демонстрационное описание носителей добавляет следующие поля к общему демонстрационному описанию.

Версия

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

Уровень версии

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

Поставщик

32-разрядное целое число, указывающее разработчика компрессора, генерировавшего сжатые данные. Часто это поле содержит'appl'для указания Apple, Inc.

Временное качество

32-разрядное целое число, содержащее значение от 0 до 1 023 указаний степени временного сжатия.

Пространственное качество

32-разрядное целое число, содержащее значение от 0 до 1 024 указаний степени пространственного сжатия.

Width

16-разрядное целое число, указывающее ширину исходного изображения в пикселях.

Высота

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

Горизонтальное разрешение

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

Вертикальное разрешение

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

Размер данных

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

Количество кадра

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

Имя компрессора

32-байтовая строка Паскаля, содержащая имя компрессора, создавшего изображение, такой как "jpeg".

Глубина

16-разрядное целое число, указывающее пиксельную глубину сжатого изображения. Значения 1, 2, 4, 8, 16, 24, и 32 указывают глубину цветных изображений. Значение 32 должно использоваться, только если изображение содержит альфа-канал. Значения 34, 36, и 40 указывают 2-, 4-, и 8-разрядная шкала полутонов, соответственно, для полутоновых изображений.

Таблица цветов ID

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

. Если таблица цветов в самом демонстрационном описании, ID установлен в 0, таблица цветов содержится, таблица цветов сразу следует таблице цветов поле ID в демонстрационном описании. Посмотрите Атомы Таблицы цветов для полного описания таблицы цветов.

Видео демонстрационные расширения описания

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

Табличное 4-2  Видео демонстрационные расширения описания

Дополнительный тип

Описание

'gama'

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

'fiel'

Два 8-разрядных целых числа, определяющие полевую обработку. Эта информация используется приложениями для изменения распакованных данных изображения или компонентами декомпрессора для определения полевого порядка дисплея. Это расширение обязательно для всех, распаковал форматы данных Y´CbCr. Первый байт указывает полевое количество и может быть установлен в 1 или 2. Значение 1 используется для изображений прогрессивного сканирования; значение 2 указывает чередованные изображения. Когда полевое количество равняется 2, второй байт указывает полевое упорядочивание: какое поле содержит самую верхнюю строку развертки, какое поле должно быть выведено на экран самое раннее, и которая сохранена сначала в каждой выборке. Каждая выборка состоит из двух отличных сжатых изображений, каждый кодирующий одно поле: поле с самой верхней строкой развертки, T, и другое поле, B. Следующее определяет разрешенные варианты: 0 – существует только одно поле. 1 – T выведен на экран самый ранний, T сохранен сначала в файле. 6 – B выведен на экран самый ранний, B сохранен сначала в файле. 9 – B выведен на экран самый ранний, T сохранен сначала в файле. 14 – T выведен на экран самый ранний, B сохранен сначала в файле.

'mjqt'

Таблица квантования по умолчанию для потока данных JPEG движения.

'mjht'

Таблица Huffman по умолчанию для потока данных JPEG движения.

'esds'

MPEG 4 элементарный потоковый атом дескриптора. Это расширение требуется для видео MPEG 4. Для получения дополнительной информации посмотрите MPEG 4 Элементарный Потоковый Atom Дескриптора ('esds').

'avcC'

H.264 AVCConfigurationBox. Это расширение требуется для видео H.264, как определено в ISO/IEC 14496-15. Для получения дополнительной информации посмотрите Atom Конфигурации Декодера AVC (‘avcC’).

'pasp'

Попиксельная пропорция. Это расширение обязательно для форматов видео то использование неквадратные пиксели. Для получения дополнительной информации посмотрите Попиксельную пропорцию ('pasp').

'colr'

Цветные параметры — расширение описания изображения, требуемое для всех, распаковало типы видео Y´CbCr. Для получения дополнительной информации посмотрите Цветные Атомы Параметра ('colr').

'clap'

Чистая апертура — пространственные отношения компонентов Y´CbCr относительно канонического центра изображения. Это позволяет точное выравнивание для составления композита видеоизображений, полученных с помощью различных систем. Это - обязательное расширение для всех, распаковал форматы данных Y´CbCr. Для получения дополнительной информации посмотрите Чистую Апертуру ('хлопок').

Попиксельная пропорция ('pasp')

Это расширение указывает отношение высоты к ширине пикселей, найденных в видео выборке. Когда неквадратные пиксели используются, это - требуемое расширение для MPEG 4 и распаковало форматы видео Y´CbCr. Когда квадратные пиксели используются, это является дополнительным.

Размер

32-разрядное целое число без знака, содержащее размер атома попиксельной пропорции.

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'pasp'.

hSpacing

32-разрядное целое число без знака, указывающее пространство по горизонтали пикселей, таких как luma выборка моментов для видео Y´CbCr или YUV.

vSpacing

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

Единицы измерения для hSpacing и vSpacing параметры не указаны, как только вопросы отношения. Единицы измерения для высоты и ширины должны быть тем же, как бы то ни было.

Таблица 4-3 показывает некоторые общие попиксельные пропорции.

Таблица 4-3  Общие попиксельные пропорции

Описание

hSpacing

vSpacing

4:3 квадратные пиксели (составляют NTSC или PAL),

1

1

4:3 неквадратные 525 (NTSC)

10

11

4:3 неквадратные 625 (PAL)

59

54

16:9 аналог (составляют NTSC или PAL),

4

3

16:9 цифровые 525 (NTSC)

40

33

16:9 цифровые 625 (PAL)

118

81

1920x1035 HDTV (на SMPTE 260M-1992)

113

118

1920x1035 HDTV (на RP SMPTE 187-1995)

1018

1062

1920x1080 HDTV или 1280x720 HDTV

1

1

MPEG 4 элементарный потоковый Atom дескриптора ('esds')

Этот атом содержит MPEG 4 элементарный потоковый атом дескриптора. Это - требуемое расширение видео демонстрационного описания для видео MPEG 4. Это расширение появляется в видео демонстрационных описаниях только, когда тип кодека 'mp4v'.

Размер

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

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'esds'

Версия

Обнуляется 8-разрядное целое число без знака.

Флаги

24-разрядное поле, зарезервированное для флагов, в настоящее время обнуляемых.

Элементарный потоковый дескриптор

Элементарный потоковый дескриптор для видео MPEG 4, как определено в спецификации ISO/IEC MPEG 4 14496-1 и подвергающийся ограничениям для хранения в MPEG 4 файла, указанные в ISO/IEC 14496-14.

Atom конфигурации декодера AVC (‘avcC’)

Этот атом содержит атом конфигурации декодера MPEG 4. Это - требуемое расширение видео демонстрационного описания для видео H.264. Это расширение появляется в видео демонстрационных описаниях только, когда тип кодека ‘avc1’.

Размер

32-разрядное целое число без знака, содержащее размер атома конфигурации декодера AVC.

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'avcC'.

Запись конфигурации декодера AVC

AVCDecoderConfigurationRecord для видео H.264, как определено в спецификации ISO/IEC MPEG 4 14496-15, и подвергающийся ограничениям для хранения в файле MPEG 4, также указанном в ISO/IEC 14496-15.

Цветные атомы параметра ('colr')

Этот атом является требуемым расширением для несжатых форматов данных Y´CbCr. 'colr' расширение используется для отображения, численные значения пикселей в файле к общему представлению раскрашивают, какие изображения могут быть правильно сравнены, объединены и выведены на экран. Общим представлением является CIE трехцветные значения XYZ (определенный в Публикации CIE № 15.2).

Использование общего представления также позволяет Вам правильно отображаться между Y´CbCr и цветовыми пространствами RGB и правильно компенсировать гамму в различных системах.

'colr' расширение заменяет ранее определенный 'gama' Расширение Описания изображения. Писатели файлов QuickTime никогда не должны писать и в Описание Изображения, и читатели файлов QuickTime должны проигнорировать 'gama' если 'colr' присутствует.

'colr' расширение разработано для работы на многократные приложения обработки изображений, такие как видео и печать. Каждое приложение, управляемое его собственным набором исторических и экономических фактов, имеет свой собственный набор параметров, должен был отобразить от пиксельных значений до CIE XYZ.

CIE представление XYZ отображается на различных сохраненных форматах Y´CbCr с помощью единого набора функций передачи и матриц. Коэффициенты функции передачи и матричные значения сохранены как индексы в таблицу канонических ссылок. Это предоставляет поддержку для многократных видеосистем при ограничении объема возможных значений к ряду распознанных стандартов.

'colr' атом содержит четыре поля: цветной тип параметра и три индекса. Индексы к таблице основных устройств, таблице коэффициентов функции передачи и таблице матриц.

Рисунок 4-1 показывает расположение этого атома.

Рисунок 4-1  расположение цветного атома
Color atom

Таблица матриц указывает матрицу, используемую во время перевода, как показано на рисунке 4-2.

Цветной тип параметра

32-разрядное поле, содержащее четыре кода символа для цветного типа параметра. В настоящее время определяемые типы 'nclc' для видео, и 'prof' для печати. Цветной тип параметра различает печать и видео отображения.

Если цветной тип параметра 'prof', тогда это поле сопровождается профилем ICC. Это - цветовая модель, используемая ColorSync Apple. Содержание этого типа не определяется в этом документе. Свяжитесь с Apple для получения дополнительной информации о 'prof' ввести 'colr' расширение.

Если цветной тип параметра 'nclc' тогда этот атом содержит следующие поля:

Индекс основных устройств

16-разрядное целое без знака, содержащее индекс в таблицу, указывающую координаты цветности CIE 1931 xy белой точки и красных, зеленых, и синих основных устройств. Таблица основных устройств указывает белую точку и красные, зеленые, и синие точки основного цвета для видеосистемы.

Индекс функции передачи

16-разрядное целое без знака, содержащее индекс в таблицу, указывающую нелинейные коэффициенты функции передачи раньше, переводило между значениями цветового пространства RGB и значениями Y´CbCr. Таблица коэффициентов функции передачи указывает, что нелинейные функциональные коэффициенты раньше переводили между сохраненными значениями Y´CbCr и видеосъемкой или системой отображения, как показано на рисунке 4-2.

Матричный индекс

16-разрядное целое без знака, содержащее индекс в таблицу, указывающую коэффициенты матрицы преобразования раньше, переводило между значениями цветового пространства RGB и значениями Y´CbCr. Таблица матриц указывает матрицу, используемую во время перевода, как показано на рисунке 4-2.

Функция передачи и матрица используются как показано на рисунке 4-2.

  Передача рисунка 4-2 между RGB и цветовыми пространствами Y´CbCr
Transfer between RGB and Y[′]CbCr color spaces

Значения Y´CbCr, сохраненные в файле, нормализованы к диапазону [0,1] для Y´ и [-0.5, +0.5] для Cb и Cr при выполнении этих операций. Нормализованные значения тогда масштабируются к надлежащей битовой глубине для определенного формата Y´CbCr перед хранением в файле как показано на рисунке 4-3.

Рисунок 4-3  Нормализованные значения, с помощью символа E с нижним индексом для Y´, Cb или Cr
The normalized values are shown using the symbol E with a subscript for Y[′], Cb, or Cr:

Эти нормализованные значения могут быть отображены на сохраненные целочисленные значения определенного типа Y сжатия´, Cb и компоненты Cr с помощью двух различных схем, которые мы вызовем Схему A и Схему B.

Замыслите использование «Широкий диапазон», отображающий (полный масштаб) с Y без знака´ и дополнительными парами значениями Cb и Cr как показано на рисунке 4-4.

  Уравнения рисунка 4-4 для сохраненных значений Y´CbCr битовой глубины n в схеме A
Equations for stored Y[′]CbCr values of bit-depth of n in scheme A

Это отображает нормализованные значения на сохраненные значения так, чтобы, например, 8-разрядные значения без знака для Y´ пошли от 0-255, как нормализованное значение идет от 0 до 1, и 8-разрядный подписанный оцененный за Cb, и Cr идут от-127 до +127, как нормализованные значения идут от-0.5 до +0.5.

Схема B использует «Видео Диапазон», отображающийся с Y без знака´, и сместила двоичные значения Cb и Cr.

  Уравнения рисунка 4-5 для сохраненных значений Y´CbCr битовой глубины n в схеме B
Equations for stored Y[′]CbCr values of bit-depth n in scheme B

Это отображает нормализованные значения на сохраненные значения так, чтобы, например, 8-разрядные значения без знака для Y´ пошли от 16 до 235, как нормализованное значение идет от 0 to1, и 8-разрядный без знака оцененный за Cb, и Cr идут от 16 до 240, как нормализованные значения идут от-0.5 до +0.5.

Для 10-разрядных выборок, Y´ имеет диапазон 64 - 940, когда нормализованное значение идет от 0 до 1, и Cb и Cr имеют диапазон 65–960, когда нормализованные значения идут от –0.5 до +0.5.

Y´ целое без знака. Cb и Cr смещаются двоичные целые числа.

Определенный Y´, Cb и значения компонентов Cr v резервируются как сигналы синхронизации и не должны появляться в буфере. Для n = 8 битов, это значения 0 и 255. Для n = 10 битов, это значения 0, 1, 2, 3, 1020, 1021, 1022, и 1023. Писатель изображения QuickTime ответственен за исключение этих значений. Читатель изображения QuickTime может предположить, что они не присутствуют.

Остающиеся значения компонентов, выходящие за пределы отображения для схемы B (1 - 15 и 241 - 254 для n = 8 битов и 4 - 63 и 961 - 1 019 для n = 10 битов) размещают случайное отклонение от номинала фильтра и проскакивание в обработке изображений. В некоторых приложениях эти значения используются для переноса другой информации (например, прозрачность). Писатель изображения QuickTime может использовать эти значения, и читатель изображения QuickTime должен ожидать эти значения.

Следующие таблицы показывают основные значения, передают функции и матрицы, обозначенные элементами индекса в 'colr' атом.

R, G, и значения B в Таблице 4-4 являются трехцветными значениями (такими как candelas/meter^2), чье отношение к CIE значения XYZ могут быть получены на основные устройства и белую точку, указанную в таблице, с помощью метода, описанного в RP SMPTE 177-1993. В этом экземпляре R, G, и значения B нормализованы к диапазону [0,1].

Табличная 4-4  Таблица основных устройств, индекса и значений

Индекс

Значения

0

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

1

ITU-R рекомендации BT.709-2, SMPTE 274M-1995, и SMPTE 296M-1997 белый x = 0,3127 года = 0.3290 (CIE III. D65) красный x=0.640 y = 0.330 зеленых x = 0.300 года = 0.600 синих x = 0,150 года = 0.060

2

Основные значения неизвестны

3–4

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

5

SMPTE RP 145-1993, SMPTE170M-1994, 293M-1996, 240M-1995, и SMPTE 274M-1995 белый x = 0,3127 года = 0.3290 (CIE III. D65) красный x = 0,64 года = 0.33 зеленых x = 0,29 года = 0.60 синих x = 0,15 года = 0.06

6

ITU-R BT.709-2, SMPTE 274M-1995, и SMPTE 296M-1997 белый x = 0,3127 года = 0.3290 (CIE III. D65) красный x = 0,630 года = 0.340 зеленых x = 0,310 года = 0.595 синих x = 0,155 года = 0.070

7–65535

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

Функции передачи, перечисленные в Таблице 4-5, используются как показано на рисунке 4-2.

Табличная 4-5  Таблица передачи функционирует индекс и значения

Индекс

Видео стандарты

0

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

1

ITU-R рекомендации BT.709-2, SMPTE 274M-1995, 296M-1997, 293M-1996, 170M-1994

Ew’ = 4 500 Вт для 0 <= W <0.018

Ew’ = 1.099 W0.45 - 0.099 для 0,018 <= W <= 1

2

Содействующие значения неизвестны

3–6

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

7

Рекомендация SMPTE 240M-1995 и 274M-1995

Ew’ = 4 Вт для 0 <= W <0.0228

Ew’ = 1.1115 W0.45 - 0.115 для 0,0228 <= W <= 1

8–65535

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

Последовательность MPEG 2 выводит на экран расширение transfer_sics определяет код 6, чья функция передачи идентична этому в коде 1. Писатели QuickTime должны отобразиться от 6 до 1 при преобразовании из transfer_characteristics к transferFunction.

BT.470-4 ITU-R рекомендации указал «принятое гамма значение получателя, для которого первичные сигналы предварительно исправлены» как 2,2 для NTSC и 2.8 для систем PAL. Эта информация является и неполной и устаревшей. Современные 525-и с 625 строками цифровой и системы NTSC/PAL используют функцию передачи с кодом 1.

Матричные значения показаны в Таблице 4-6, и в Матричных значениях для индекса кодируют 1. Эти данные показывают формулу для получения нормализованного значения Y´ в диапазоне [0,1]. Можно получить формулу для нормализованных значений Cb и Cr следующим образом:

Если уравнение для нормализованного Y´ имеет форму:

EY’ = KG’EG’ + КБ' ЭБ+KR’ER

Тогда формулы для нормализованного Cb и Cr:

ECb = (0.5 / (1 КБ’)) (EB ’-EY’)

ECr = (0.5 / (1-KR’)) (ER ’-EY’)

Табличная 4-6  Таблица матричного индекса и значений

Индекс

Видео стандарт

0

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

1

ITU-R рекомендации BT.709-2 (1125/60/2:1 только), SMPTE 274M-1995, 296M-1997

EY’ = 0,7152 EG’ + 0,0722 EB’ + 0.2126 ER

2

Содействующие значения неизвестны

3–5

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

6

ITU-R рекомендации BT.601-4 и система BT.470-4 B и G, SMPTE 170M-1994, 293M-1996

EY’ = 0,587 EG’ + 0,114 EB’ + 0.299 ER

7

SMPTE 240M-1995, 274M-1995

EY’ = 0,701 EG’ + 0,087 EB’ + 0.212 ER

8–65535

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

Уберите апертуру ('хлопок')

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

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

Чистое апертурное расширение содержит ширину в пикселях, высоту в строках изображения, и горизонталь и вертикальное смещение между сохраненным центром изображения и каноническим центром изображения для данной видеосистемы. Ширина обычно является шириной канонической чистой апертуры для видеосистемы, разделенной на попиксельную пропорцию хранивших данных. Смещения также принимают во внимание любое «сверхсканирование» в сохраненном изображении. Высота и ширина должны быть положительными значениями, но смещения могут быть положительными, отрицательными, или нуль.

Эти значения даны как отношения двух 32-разрядных чисел, так, чтобы приложения могли вычислить точные значения с минимальной ошибкой округления. В то время как поле знаменателя установлено в 1, для целых значений значение должно быть сохранено в поле числителя.

Размер

32-разрядное целое без знака, содержащее размер 'clap' атом.

Ввести

32-разрядное целое без знака, содержащее четыре кода символа 'clap'.

apertureWidth_N (числитель)

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

apertureWidth_D (знаменатель)

32-разрядное целое число со знаком, содержащее или часть знаменателя дробной ширины или номер 1.

apertureHeight_N (числитель)

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

apertureHeight_D (знаменатель)

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

horizOff_N (числитель)

32-разрядное целое число со знаком, содержащее любого горизонтальное смещение чистого апертурного центра минус (ширина 1)/2 или часть числителя дробного смещения. Это значение обычно является нулем.

horizOff_D (знаменатель)

32-разрядное целое число со знаком, содержащее или часть знаменателя горизонтального смещения или номер 1.

vertOff_N (числитель)

32-разрядное целое число со знаком, содержащее любого вертикальное смещение чистого апертурного центра минус (высота 1)/2 или часть числителя дробного смещения. Это значение обычно является нулем.

vertOff_D (знаменатель)

32-разрядное целое число со знаком, содержащее или часть знаменателя вертикального смещения или номер 1.

Видео демонстрационные данные

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

Несжатый RGB

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

  • Для глубин 1, 2, 4, и 8, сохраненные значения являются индексами в таблицу цветов, указанную в таблице цветов поле ID.

  • Для глубины 16, пиксели сохранены как 5-5-5 значений RGB с высоким битом каждого 16-разрядного целочисленного набора к 0.

  • Для глубины 24, пиксели сохранены упакованные вместе в порядке RGB.

  • Для глубины 32, пиксели сохранены 8-разрядным альфа-каналом, сопровождаемым 8-разрядными компонентами RGB.

Данные RGB могут храниться в составном или планарном формате. Составной формат хранит данные RGB для каждого пикселя непрерывно, в то время как планарный формат хранит R, G, и данные B отдельно, таким образом, информация о RGB для данного пикселя найдена с помощью того же смещения в многократные таблицы. Например, данные для двух пикселей могли быть представлены в составном формате как RGB-RGB или в планарном формате как BB GG RR.

Несжатый Y´CbCr (включая yuv2)

Цветовое пространство Y´CbCr широко используется для цифрового видео. В этом формате данных яркость сохранена как единственное значение (Y), и информация цветности хранится как два компонента цветового различия (Cb и Cr). Cb является различием между синим компонентом и ссылочным значением; Cr является различием между красным компонентом и ссылочным значением.

Это обычно упоминается как формат «YUV» с «U», стоящим - в для Cb и «V» положение - в для Cr. Это использование не строго корректно, как YUV, YIC, и Y´CbCr являются моделями разного цвета для PAL, NTSC и цифрового видео, но большинство форматов данных Y´CbCr и кодеков описывают или даже называют как некоторый вариант «YUV».

Значения Y, Cb и Cr могут быть представлены с помощью множества битовых глубин, балансируя между точностью для размера файла. Точно так же значения цветности могут быть подвыбраны, записав значение цвета на только один пиксель из два, например, или составив в среднем значение цвета смежных пикселей. Эта подвыборка является формой сжатия, но если никакое дополнительное сжатие с потерями не выполняется на выбранном видео, это все еще упоминается как «несжатое» видео Y´CbCr. Кроме того, четвертый компонент может быть добавлен к видео Y´CbCr для записи альфа-канала.

Число компонентов (Y´CbCr с или без альфы) и любая подвыборка обозначено с помощью отношений трех или четырех чисел, такой как 4:2:2 для указания 4 битов Y к 2 битам каждый из Cb и Cr (подвыборка цветности), или 4:4:4 для равного хранения Y, Cb и Cr (никакая подвыборка), или 4:4:4:4 для Y´CbCr плюс альфа без подвыборки. Отношения обычно не обозначают фактические битовые глубины.

Несжатые видеоданные Y´CbCr обычно сохранены следующим образом:

  • Y´, Cb и компоненты Cr каждой строки сохранены пространственно слева направо и временно от самого раннего до последнего.

  • Строки поля или кадра сохранены пространственно от начала до конца и временно самые ранние к последнему.

  • Y´ целое без знака. Cb и Cr являются дополнительными парами целыми числами со знаком.

yuv2 поток, например, кодируется в серии 4-байтовых пакетов. Каждый пакет представляет два смежных пикселя на той же строке развертки. Байты в каждом пакете упорядочиваются следующим образом:

    y0 u y1 v

y0 значение яркости для левого пикселя; y1 яркость для правильного пикселя. u и v цветные значения, совместно использующиеся обоими пикселями.

Точное преобразование между RGB и цветовыми пространствами Y´CbCr требует вычисления для каждого компонента каждого пикселя. Преобразование в качестве примера из yuv2 в RGB представлено следующими уравнениями:

r = 1.402 * v + y +.5

g = y-.7143 * v-.3437 * u +.5

b = 1.77 * u + y +.5

R, g, и b оценивают диапазон от 0 до 255.

Коэффициенты в этих уравнениях получены из операций над матрицей и зависят от ссылочных значений, используемых для основных цветов и для белого. QuickTime использует канонические значения для этих ссылочных коэффициентов на основе опубликованных стандартов. Демонстрационное расширение описания для форматов Y´CbCr включает a 'colr' атом, содержащий индексы в таблицу канонических ссылок. Это предоставляет поддержку для многократных видео стандартов, не открывая дверь в ошибки ввода данных для сохраненных содействующих значений. Обратитесь к опубликованным стандартам для формул, и методы раньше получали коэффициенты преобразования из записей таблицы.

JPEG

QuickTime хранит изображения JPEG согласно правилам, описанным в ISO спецификация JPEG, номер документа DIS 10918-1.

Видео MPEG 4

Видео MPEG 4 использует 'mp4v' формат данных. Демонстрационное описание требует элементарного потокового дескриптора ('esds') расширение стандартного видео демонстрационного описания. Если неквадратные пиксели используются, попиксельная пропорция ('pasp') расширение также требуется. Для получения дополнительной информации на этих расширениях, посмотрите Попиксельную пропорцию ('pasp') и MPEG 4 Элементарный Потоковый Atom Дескриптора ('esds').

Видео MPEG 4 соответствует документам ISO/IEC 14496-1/2000 (E) и 14496-2:1999/Amd.1:2000 (E).

JPEG движения

JPEG движения (M-JPEG) является вариантом ISO спецификация JPEG для использования с потоками цифрового видео. Вместо того, чтобы сжать все изображение в единственный поток битов, JPEG движения сжимает каждое видео поле отдельно, возвращая получающиеся потоки битов JPEG последовательно в единственном кадре.

Существует две разновидности использующегося в настоящее время JPEG движения. Эти два формата отличаются на основе своего использования маркеров. JPEG движения форматирует маркеры поддержек; формат B JPEG движения не делает. Следующие параграфы описывают, как QuickTime хранит демонстрационные данные JPEG движения. Рисунок 4-6 показывает пример JPEG движения демонстрационные данные двойного поля. Рисунок 4-7 показывает пример Движения - JPEG B демонстрационные данные двойного поля.

Рисунок 4-6  JPEG движения демонстрационные данные двойного поля
Motion-JPEG A dual-field sample data

Каждое поле формата A JPEG движения полностью соответствует ISO спецификация JPEG, и поэтому поддерживает маркеры приложения. QuickTime использует маркер APP1 для хранения управляющей информации, следующим образом (все поля 32-разрядные целые числа):

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

Непредсказуемый; должен быть установлен в 0.

Тег

Идентифицирует тип данных; это поле должно быть установлено в 'mjpg'.

Размер поля

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

Заполненный размер поля

Содержит размер данных изображения, включая байты клавиатуры. Некоторое видеооборудование может добавить байты клавиатуры к данным изображения; это поле, вместе с полем размера поля, позволяет Вам вычислять, сколько байтов клавиатуры было добавлено.

Смещение к следующему полю

Смещение, в байтах, от запуска полевых данных к запуску следующего поля в потоке битов. Это поле должно быть установлено в 0 в данных маркера последнего поля.

Таблица Quantization смещается

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

Таблица Huffman смещается

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

Запустите смещения кадра

Смещение от запуска полевых данных к запуску маркера изображения. Это поле никогда не должно устанавливаться в 0.

Запустите смещения сканирования

Смещение, в байтах, от запуска полевых данных к запуску маркера сканирования. Это поле никогда не должно устанавливаться в 0.

Запустите смещения данных

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

Формат B JPEG движения не поддерживает маркеры. Вместо маркера, поэтому, QuickTime вставляет заголовок в начале потока битов. Снова, все поля являются 32-разрядными целыми числами.

Рисунок 4-7  JPEG движения B демонстрационные данные двойного поля
Motion-JPEG B dual-field sample data
Зарезервированный

Непредсказуемый; должен быть установлен в 0.

Тег

Тип данных; это поле должно быть установлено в 'mjpg'.

Размер поля

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

Заполненный размер поля

Размер данных изображения, включая байты клавиатуры. Некоторое видеооборудование может добавить байты клавиатуры к данным изображения; это поле, вместе с полем размера поля, позволяет Вам вычислять, сколько байтов клавиатуры было добавлено.

Смещение к следующему полю

Смещение, в байтах, от запуска полевых данных к запуску следующего поля в потоке битов. Это поле должно быть установлено в 0 в данных заголовка второго поля.

Таблица Quantization смещается

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

Таблица Huffman смещается

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

Запустите смещения кадра

Смещение от запуска полевых данных к данным изображения поля. Это поле никогда не должно устанавливаться в 0.

Запустите смещения сканирования

Смещение, в байтах, от запуска полевых данных к запуску данных сканирования.

Запустите смещения данных

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

Заголовок формата B JPEG движения должен быть кратным числом 16 в размере. Когда Вы добавляете байты клавиатуры к заголовку, устанавливаете их в 0.

Поскольку формат B JPEG движения не поддерживает маркеры, поток битов JPEG не имеет байтов NULL (0x00) вставленными после байтов данных, установленных в 0xFF.

Звуковые носители

Звуковые носители используются для хранения сжатых и несжатых аудиоданных в фильмах в формате QuickTime. Это имеет тип среды'soun'. В этом разделе описываются звуковое демонстрационное описание и формат хранения звуковых файлов с помощью различных форматов данных.

Звучите как демонстрационные описания

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

Поле формата данных содержит формат аудиоданных. Это может указать формат сжатия или один из нескольких несжатых форматов аудио. Таблица 4-7 показывает список некоторых поддерживаемых звуковых форматов.

Таблица 4-7  Частичный список поддерживаемых форматов аудио QuickTime.

Формат

4 кода символа

Описание

Не указанный

0x00000000

Этот дескриптор формата не должен использоваться, но может быть найден в некоторых файлах. Выборки, как предполагается, сохранены в также 'raw ' или 'twos' формат, в зависимости от поля объема выборки в звуковом описании.

kSoundNotCompressed

'NONE'

Этот дескриптор формата не должен использоваться, но может быть найден в некоторых файлах. Выборки, как предполагается, сохранены в также 'raw ' или 'twos' формат, в зависимости от поля объема выборки в звуковом описании.

k8BitOffsetBinaryFormat

'raw '

Выборки сохранены несжатые в двоичном формате смещения (диапазон значений от 0 до 255; 128 тишина). Они сохранены как 8-разрядные двоичные файлы смещения.

k16BitBigEndianFormat

'twos'

Выборки сохранены несжатые в two's-дополнительном формате (демонстрационный диапазон значений от-128 до 127 для 8-разрядного аудио, и-32768 к 32 767 для аудио на 1-биты; 0 всегда тишина). Эти выборки сохранены в 16-разрядном формате с обратным порядком байтов.

k16BitLittleEndianFormat

'sowt'

16-разрядный прямой порядок байтов, дополнение пар

kMACE3Compression

'MAC3 '

Выборки были сжаты с помощью MACE 3:1. (Устаревший).

kMACE6Compression

'MAC6 '

Выборки были сжаты с помощью MACE 6:1. (Устаревший).

kIMACompression

'ima4'

Выборки были сжаты с помощью IMA 4:1.

kFloat32Format

'fl32'

32-разрядная плавающая точка

kFloat64Format

'fl64'

64-разрядная плавающая точка

k24BitFormat

'in24'

24-разрядное целое число

k32BitFormat

'in32'

32-разрядное целое число

kULawCompression

'ulaw'

uLaw 2:1

kALawCompression

'alaw'

uLaw 2:1

kMicrosoftADPCMFormat

0x6D730002

Код Microsoft ADPCM-ACM 2

kDVIIntelIMAFormat

0x6D730011

DVI/Intel IMAADPCM-ACM кодирует 17

kDVAudioFormat

'dvca'

Аудио DV

kQDesignCompression

'QDMC'

Музыка QDesign

kQDesign2Compression

'QDM2'

Музыкальная версия 2 QDesign

kQUALCOMMCompression

'Qclp'

QUALCOMM PureVoice

kMPEGLayer3Format

0x6D730055

Уровень 3 MPEG 1, CBR только (pre-QT4.1)

kFullMPEGLay3Format

'.mp3'

Уровень 3 MPEG 1, CBR & VBR (QT4.1 и позже)

kMPEG4AudioFormat

'mp4a'

MPEG 4, усовершенствованное кодирование звука (AAC)

kAC3AudioFormat

'ac-3'

Стандарт сжатия цифрового аудио (AC 3, улучшенный AC 3)

Звучите как демонстрационное описание (версия 0)

В настоящее время существует три версии звукового демонстрационного описания, версии 0, 1 и 2. Версия 0 поддерживает только несжатое аудио в сырых данных ('raw ') или дополнение пар ('twos') формат, несмотря на то, что они иногда неправильно указываются как также 'NONE' или 0x00000000.

Версия

16-разрядное целое число, содержащее демонстрационную версию описания (в настоящее время 0 или 1).

Уровень версии

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

Поставщик

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

Число каналов

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

Объем выборки (биты)

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

Сжатие ID

16-разрядное целое число, которое должно быть установлено в 0 для описаний звука версии 0. Это может быть установлено в –2 для некоторых описаний звука версии 1; посмотрите Переопределенные Демонстрационные Таблицы.

Размер пакета

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

Частота дискретизации

32-разрядная фиксированная точка без знака номер (16.16), указывающий уровень, на котором были получены звуковые выборки. Целочисленная часть этого числа должна соответствовать масштаб времени носителей. Много более старых файлов версии 0 имеют значения 22 254,5454 или 11127.2727, но большинство файлов имеет целочисленные значения, такой как 44 100. Частоты дискретизации, больше, чем 2^16, не поддерживаются.

Версия 0 звукового формата описания принимает несжатое аудио в 'raw ' или 'twos' формат, 1 или 2 канала, 8 или 16 битов за выборку, и сжатие ID 0.

Звучите как демонстрационное описание (версия 1)

Поле версии в демонстрационном описании установлено в 1 для этой версии звуковой структуры описания. В версии 1 звукового описания, представленного в QuickTime 3, звуковая запись описания расширяется 4 полями, каждый 4 байта длиной, и включает возможность добавить атомы к звуковому описанию.

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

Эти поля представляют идею пакета. Для несжатого аудио пакет является выборкой от единственного канала. Для сжатого аудио это поле не имеет никакого реального значения; условно, это обрабатывается как 1/number-of-channels.

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

Четыре новых поля:

Выборки на пакет
Число несжатых кадров, сгенерированных сжатым кадром (несжатый кадр является одной выборкой от каждого канала). Это - также продолжительность кадра, выраженная в масштабе времени носителей, где масштаб времени равен частоте дискретизации. Для несжатых форматов это поле всегда равняется 1.
Байты на пакет
Для несжатого аудио, числа байтов в выборке для единственного канала. Это заменяет более старое sampleSize поле, установленное в 16. Это значение вычисляется путем деления типа телосложения числом каналов. То же вычисление выполняется для вычисления значения этого поля для сжатого аудио, но результат вычисления не обычно значим для сжатого аудио.
Байты на кадр
Число байтов в кадре: для несжатого аудио, несжатого кадра; для сжатого аудио, сжатого кадра. Это может быть вычислено путем умножения байтов на поле пакета числом каналов.
Байты на выборку
Размер несжатой выборки в байтах. Даже если объем выборки больше, чем 2 байта, это установлено в 1 для 8-разрядного аудио, 2 для всех других случаев.

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

Упростить воспроизведение на устройствах, поддерживающих только один или два канала аудио в 'raw ' или 'twos' формат (такой как самый ранний Macintosh и компьютеры Windows), все другие несжатые форматы аудио обрабатываются как сжатые форматы, позволяя простому компоненту «декомпрессора» выполнить необходимое преобразование формата во время воспроизведения. Аудиосэмплы обрабатываются как непрозрачные сжатые кадры для этих типов данных, и поля для объема выборки и байтов на выборку не значимы.

Новые поля соответствуют CompressionInfo структура, используемая менеджером по Звуку Macintosh (который использует 16-разрядные значения) описать коэффициент сжатия фиксированных алгоритмов сжатия аудио отношения. Если эти поля не используются, они установлены в 0. Средства чтения файлов только должны проверить, чтобы видеть если samplesPerPacket 0.

Переопределенные демонстрационные таблицы

. если сжатие демонстрационные таблицы, оптимизированные для сжатого аудио, ID в демонстрационном описании установлен в –2, использование звуковой дорожки переопределило

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

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

С введением поддержки воспроизведения аудио с переменной скоростью передачи (VBR) в QuickTime 4.1 было переопределено содержание многих этих полей, так, чтобы кадр сжатого аудио был обработан как единственная выборка носителей. Выборка к блоку и блок смещают точку атомов к сжатым кадрам, и таблица объема выборки документирует размер кадров. Размер является постоянным для аудио CBR, но может варьироваться для VBR.

Таблица времени к выборке документирует продолжительность кадров. Если масштаб времени установлен в частоту дискретизации, которая типична, продолжительность равняется числу несжатых выборок в каждом кадре, который является обычно постоянным даже для VBR (распространено использовать фиксированную продолжительность кадра). Если различный масштаб времени носителей используется, необходимо преобразовать от модулей масштаба времени до модулей частоты дискретизации для вычисления числа выборок.

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

Чтобы указать, что это новое значение используется, описание звука версии 1 используется, и поле ID сжатия установлено в –2. samplesPerPacket поле и bytesPerSample поле не обязательно значимо для аудио с переменной скоростью передачи, но эти поля должны быть установлены правильно в случаях, где значения являются постоянными; другие два новых поля ( bytesPerPacket и bytesPerFrame) резервируются и должен быть установлен в 0.

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

Звучите как демонстрационное описание (версия 2)

QuickTime 7 представил новую версию звукового демонстрационного описания, версию 2, расширяющую возможности QuickTime включать аудио высокого разрешения с другим расширением звуковой демонстрационной структуры описания. В QuickTime 7 звуковые и аудио средства основываются на средствах платформы Core Audio, и Звуковой менеджер был осужден. В этой версии звукового демонстрационного описания поле формата установлено в ‘lpcm’ для несжатых данных. Для упакованных форматов данных поле формата установлено в код типа сжатия (обычно ‘mp4a’) и специфические особенности сжатия и другие функции QuickTime 7 предоставляются расширениями.

Поле версии установлено в 2 для этой версии звуковой демонстрационной структуры описания.

Звуковая демонстрационная структура описания v2 добавляет следующие новые поля, добавляя к v1 структуре и переименовывая эти четыре поля, добавленные в v1, чтобы помочь гарантировать назад совместимость более старыми приложениями. Поля версии 2:

Версия

16-разрядное целое число, содержащее демонстрационную версию описания (набор к 2).

Уровень версии

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

Поставщик

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

always3

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

always16

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

alwaysMinus2

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

always0

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

always65536

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

sizeOfStructOnly

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

audioSampleRate

64-разрядное число с плавающей точкой, представляющее число аудио кадров в секунду, например: 44,100.0.

numAudioChannels

32-разрядный целочисленный полевой набор к числу звуковых каналов; любое назначение канала будет выражено в расширении.

always7F000000

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

constBitsPerChannel

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

formatSpecificFlags

32-разрядное целочисленное поле, переносящее флаговые значения LPCM, определенные во флаговых значениях LPCM ниже.

constBytesPerAudioPacket

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

constLPCMFramesPerAudioPacket

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

Некоторые определения для звуковой демонстрационной версии 2 описания:

  • Кадр LPCM: одна несжатая выборка в каждом из каналов (например, аудио на 44100 Гц имеет 44100 кадров в секунду LPCM, моно ли это, стерео, 5.1, или другие возможные значения). Другими словами, Кадры LPCM, разделенные на audioSampleRate значение является продолжительностью в секундах.

  • Аудио Пакет: Для сжатого аудио аудио пакет является естественным сжатым устройством доступа того формата. Для несжатого аудио аудио пакет является просто одним кадром LPCM.

  • Поля, снабженные префиксом «константой»: Отметьте три звуковых демонстрационных поля описания v2, имена которых запускаются с «константы». Если значение является константой, эти поля являются только ненулевыми. Нуль в каждом поле подразумевает, что значение является переменным. Например: аудио AAC имело бы нуль в constBytesPerAudioPacket потому что AAC имеет измеренные аудио пакеты переменной. Кодеки с переменными пакетами аудио продолжительности устанавливают нуль в constLPCMFramesPerAudioPacket.

Флаговые значения LPCM

formatSpecificFlags полевые переносы отмечают значительный к расположению и форматированию аудиопотоков, определенных в основах Core Audio для звукового демонстрационного описания v2. Они перечисляются в файле интерфейса Apple QuickTime/CoreAudioFormat.h и подвергаются более полной интерпретации в контексте AudioStreamBasicDescription тип данных. Посмотрите CoreAudio, “Ссылка Платформы Core Audio” в Библиотеке Разработчика OS X.

enum
{
    kAudioFormatFlagIsFloat                  = (1 << 0),  // 0x1
    kAudioFormatFlagIsBigEndian              = (1 << 1),  // 0x2
    kAudioFormatFlagIsSignedInteger          = (1 << 2),  // 0x4
    kAudioFormatFlagIsPacked                 = (1 << 3),  // 0x8
    kAudioFormatFlagIsAlignedHigh            = (1 << 4),  // 0x10
    kAudioFormatFlagIsNonInterleaved         = (1 << 5),  // 0x20
    kAudioFormatFlagIsNonMixable             = (1 << 6),  // 0x40
    kAudioFormatFlagsAreAllClear             = (1 << 31),
    
    kLinearPCMFormatFlagIsFloat              = kAudioFormatFlagIsFloat,
    kLinearPCMFormatFlagIsBigEndian          = kAudioFormatFlagIsBigEndian,
    kLinearPCMFormatFlagIsSignedInteger      = kAudioFormatFlagIsSignedInteger,
    kLinearPCMFormatFlagIsPacked             = kAudioFormatFlagIsPacked,
    kLinearPCMFormatFlagIsAlignedHigh        = kAudioFormatFlagIsAlignedHigh,
    kLinearPCMFormatFlagIsNonInterleaved     = kAudioFormatFlagIsNonInterleaved,
    kLinearPCMFormatFlagIsNonMixable         = kAudioFormatFlagIsNonMixable,
    kLinearPCMFormatFlagsSampleFractionShift = 7,
    kLinearPCMFormatFlagsSampleFractionMask  = (0x3F << kLinearPCMFormatFlagsSampleFractionShift),
    kLinearPCMFormatFlagsAreAllClear         = kAudioFormatFlagsAreAllClear,
    
    kAppleLosslessFormatFlag_16BitSourceData = 1,
    kAppleLosslessFormatFlag_20BitSourceData = 2,
    kAppleLosslessFormatFlag_24BitSourceData = 3,
    kAppleLosslessFormatFlag_32BitSourceData = 4
};

Звучите как демонстрационные расширения описания

Все расширения SoundDescription запись сделана с помощью атомов. Это означает, что один или несколько атомов могут быть добавлены до конца SoundDescription запись с помощью стандарта [размер, введите] механизм, используемый всюду по архитектуре фильма в формате QuickTime. Расширения были сначала добавлены со звуковым демонстрационным описанием v1.

Для иллюстрирования этого, для звукового демонстрационного описания v1, расширения добавляются следующим последнее поле структуры с атомами QuickTime. Реализация структуры похожа на это:

struct SoundDescriptionV1 {
    // original fields
    SoundDescription    desc;
    // fixed compression ratio information
    unsigned long   samplesPerPacket;
    unsigned long   bytesPerPacket;
    unsigned long   bytesPerFrame;
    unsigned long   bytesPerSample;
    // optional, additional atom-based fields --
    // ([long size, long type, some data], repeat)
};

Версия 2 звукового демонстрационного описания поддерживает тот же механизм для добавления расширений. В звуковой демонстрационной структуре описания v2, sizeOfStructOnly значение поля обеспечивает смещение для расширений.

siSlopeAndIntercept Atom

siSlopeAndIntercept атом содержит slope, intercept, minClip, и maxClip параметры, относящиеся к компоненту декомпрессора.

Во время выполнения, содержание типа siSlopeAndIntercept и siDecompressorSettings атомы предоставлены для компонента декомпрессора через стандарт SetInfo механизм Звукового менеджера.

struct SoundSlopeAndInterceptRecord {
    Float64                 slope;
    Float64                 intercept;
    Float64                 minClip;
    Float64                 maxClip;
};
typedef struct SoundSlopeAndInterceptRecord SoundSlopeAndInterceptRecord;
siDecompressionParam Atom ('волна')

siDecompressionParam атом предоставляет возможность, чтобы хранить данные, определенные для поданного декомпрессора звука SoundDescription запись. Как пример, некоторые аудио алгоритмы распаковки, такие как ADPCM Microsoft, требуют, чтобы ряд внеполосных значений сконфигурировал декомпрессор. Они сохранены в атоме этого типа.

Этот атом содержит другие атомы с настройками декомпрессора звука и является требуемым расширением звукового демонстрационного описания для аудио MPEG 4. A 'wave' блок для 'mp4a' обычно содержит (в порядке), по крайней мере, a 'frma' атом, 'mp4a' атом, 'esds' атом и атом Atom (0x00000000) Разделителя.

Содержание другого siDecompressionParam атомы зависят от декомпрессора звука.

Размер

32-разрядное целое число без знака, содержащее размер атома параметров распаковки.

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'wave'.

Дополнительные атомы

Атомы, содержащие необходимые внеполосные параметры распаковки для звукового декомпрессора. Для аудио MPEG 4 ('mp4a'), это включает элементарный потоковый дескриптор ('esds'), формат ('frma'), и атомы разделителя.

Atom формата ('frma')

Этот атом показывает формат данных сохраненных звуковых носителей.

Размер

32-разрядное целое число без знака, содержащее размер атома формата.

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'frma'.

Формат данных

Значение этого поля копируется с поля формата данных звукового демонстрационного описания.

Atom (0x00000000) разделителя

Этот атом присутствует для указания конца звукового описания. Это не содержит данных и имеет поле типа нуля (0x00000000) вместо четырех кодов символа.

Размер

32-разрядное целое число без знака, содержащее размер атома параметров распаковки (всегда набор к 8).

Ввести

32-разрядный целочисленный набор без знака к нулю (0x00000000). Это - редкий экземпляр, в котором поле типа не является кодом ASCII с четырьмя символами.

MPEG 4 элементарный потоковый Atom дескриптора ('esds')

Этот атом является требуемым расширением звукового демонстрационного описания для аудио MPEG 4. Этот атом содержит элементарный потоковый дескриптор, определяющийся в ISO/IEC FDIS 14496.

Размер

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

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'esds'.

Версия

Обнуляется 32-разрядное поле без знака.

Элементарный потоковый дескриптор

Элементарный потоковый дескриптор для аудио MPEG 4, как определено в спецификации ISO/IEC MPEG 4 14496.

Atom расположения звукового канала ('канал')

Этот атом является дополнительным расширением звукового демонстрационного описания, указывающего разметки звукового канала для звуковых носителей, содержавшихся в фильмах в формате QuickTime. Это - полный атом, сопровождаемый структурой расположения звукового канала с обратным порядком байтов, как определено платформой Core Audio Apple. Разметки звукового канала могут быть применены и к сжатым и к несжатым звуковым форматам.

Размер

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

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'chan'

Версия

1-байтовая спецификация версии атома расположения звукового канала.

Флаги

3-байтовое пространство для флагов расположения звукового канала.

Расположение звукового канала

Обратный порядок байтов AudioChannelLayout структура, как определено в CoreAudioTypes.h. Посмотрите Библиотеку Разработчика OS X для подробных данных платформы CoreAudio.

Подзаголовок следует за ссылочным Atom дорожки

Звуковые дорожки могут иметь ссылку дорожки типа 'folw' (для «следует») к единственной дорожке подзаголовка из числа дорожек подзаголовка в той же альтернативной группе; если звуковая дорожка выбрана, эту дорожку подзаголовка нужно считать значением по умолчанию, чтобы выбрать. Используйте это, только если совместимость между языковыми тегами не возможна по некоторым причинам лишение возможности иначе выбрать дорожку по умолчанию. Посмотрите Preparing Sound and Subtitle Alternate Groups для Использования с Устройствами Apple для соответствующей информации.

Звучите как демонстрационные данные

Формат данных, хранивших в звуковых выборках, абсолютно зависит от типа сжатых данных, хранивших в звуковом демонстрационном описании. Следующие разделы обсуждают некоторые форматы, поддерживаемые QuickTime.

Несжатый 8-разрядный звук

Восьмиразрядное аудио сохранено в двоичных смещением кодировках. Если данные находятся в стерео, левые и правые каналы чередованы.

Несжатый 16-разрядный звук

Шестнадцатиразрядное аудио может быть сохранено в two's-дополнительных кодировках. Если данные находятся в стерео, левые и правые каналы чередованы.

IMA, uLaw, и aLaw

  • IMA 4:1

    Схема кодирования IMA основывается на стандарте, разработанном Международной Мультимедийной Ассоциацией для сжатия аудио импульсно-кодовой модуляции (PCM). QuickTime использует небольшое изменение формата для обеспечения произвольного доступа. IMA является 16-разрядным форматом аудио, поддерживающим 4:1 сжатие. Это определяется следующим образом:

    kIMACompression = FOUR_CHAR_CODE('ima4'), /*IMA 4:1*/
  • uLaw 2:1 и aLaw 2:1

    uLaw (mu-закон) схема кодирования используется в североамериканских и японских телефонных системах и входит в употребление для обмена речевой информации, и в PBXs, системах голосовой почты и Радиовещании по интернету (через MIME). В кодировании uLaw 14 битов линейных демонстрационных данных сокращены до 8 битов логарифмических данных.

    aLaw схема кодирования используется в Европе и остальной части мира.

    kULawCompression и форматы kALawCompression обычно находятся в .au форматы.

Форматы с плавающей точкой

Оба kFloat32Format и kFloat64Format несжатые форматы с плавающей точкой. В зависимости от специфичных для кодека данных, связанных с демонстрационным описанием, значения с плавающей точкой могут быть в (сетевом) или прямом порядке байтов с обратным порядком байтов (Intel) порядком байтов. Это отличается от 16-разрядных форматов, где существует единый формат для каждого расположения порядка байтов.

24-и 32-разрядные целочисленные форматы

Оба k24BitFormat и k32BitFormat целочисленные несжатые форматы. В зависимости от специфичных для кодека данных, связанных с демонстрационным описанием, значения с плавающей точкой могут быть в (сетевом) или прямом порядке байтов с обратным порядком байтов (Intel) порядком байтов.

kMicrosoftADPCMFormat и Кодеки Звука kDVIIntelIMAFormat

kMicrosoftADPCMFormat и kDVIIntelIMAFormat кодек предоставляет функциональной совместимости QuickTime файлы WAV и AVI. Четыре кодов символов, используемые Microsoft для их форматов, являются числовыми. Для построения формата поддерживаемого кодека QuickTime этого типа Microsoft, числовой ID взят для генерации четырех кодов символа формы 'msxx' где xx берет числовой ID.

Кодек Звука kDVAudioFormat

Аудио DV звучит как кодек, kDVAudioFormat, декодирует аудио, найденное в потоке DV. Так как кадр DV содержит и видео и аудио, этот кодек знает, как пропустить видео части кадра и только получить аудио части. Аналогично, видеокодек пропускает аудио части и представляет только изображение.

Кодек Звука kQDesignCompression

kQDesignCompression звуковой кодек является QDesign 1 (предварительный QuickTime 4) формат. Обратите внимание на то, что существует также формат QDesign 2, четыре кода символа которого 'QDM2'.

Кодеки MPEG 1 уровня 3 (MP3)

Кодеки уровня 3 (MP3) QuickTime MPEG прибывают в две определенных разновидности, как показано в Таблицу 4-7. Первое (kMPEGLayer3Format) используется исключительно в случае с постоянной скоростью передачи (CBR) (предварительный QuickTime 4). Другой (kFullMPEGLay3Format) используется и в CBR и в случаях с переменной скоростью передачи (VBR). Обратите внимание на то, что они - тот же кодек внизу.

Аудио MPEG 4

Аудио MPEG 4 сохранено как звуковая дорожка с форматом данных 'mp4a' и определенные дополнения к звуковому демонстрационному описанию и атому звуковой дорожки. В частности:

Аудиоданные сохранены как элементарный аудиопоток MPEG 4, как определено в спецификации 14496-1 ISO/IEC.

Форматы, не использующиеся в настоящее время: MACE 3:1 и 6:1

Эти форматы сжатия являются устаревшими: MACE 3:1 и 6:1.

Это 8-разрядные звуковые форматы кодека, определенные следующим образом:

kMACE3Compression = FOUR_CHAR_CODE('MAC3'), /*MACE 3:1*/
kMACE6Compression = FOUR_CHAR_CODE('MAC6'), /*MACE 6:1*/

Синхронизированные носители метаданных

Структура дорожки используется для хранения синхронизированных метаданных в фильмах в формате QuickTime. Этот раздел обеспечивает обзор синхронизированной структуры дорожки метаданных и описывает синхронизированные демонстрационные описания метаданных и формат хранения синхронизированных выборок носителей метаданных. Синхронизированная структура дорожки метаданных имеет тип среды ‘meta’.

Обзор синхронизированных метаданных

Синхронизированная дорожка метаданных синхронизирует ссылки метаданных на дорожки носителей для определенных периодов времени носителей через ссылку дорожки, редактирование и структуры списка редактирования. Это - специализация структуры дорожки, использующей основной атом информации о носителях типа ‘minf’, и обработчик дорожки вводит набор значений к ‘meta’. Основной атом информации о носителях содержит универсальный атом заголовка носителя типа ‘gmhd’.

Поскольку дорожка метаданных не является ни визуальной, ни слуховой, следующие свойства дорожки должны иметь эти значения:

  • Ширина дорожки и высота дорожки каждый набор к 0.

  • Набор томов дорожки к 0.

  • Набор матрицы дорожки к единичной матрице.

Фильм в формате QuickTime не может содержать ни один, один, или несколько синхронизированных дорожек метаданных. Синхронизированные дорожки метаданных могут относиться к многократным дорожкам. Дорожки метаданных соединяются с дорожками, они описывают использование ссылки дорожки типа ‘cdsc’. Дорожка метаданных содержит ‘cdsc’ ссылка дорожки. Если дорожка метаданных описывает характеристики всего фильма, не должно быть никакой ссылки дорожки типа 'cdsc' между ним и другой дорожкой. Эти дорожки метаданных, как могут полагать, содержат глобальные метаданные для фильма.

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

  • Поверхности обнаруживаются в сцене

  • Основанная на местоположении информация (такая как GPS)

  • Апертура камеры и другая изменяющаяся связанная с камерой информация

  • Авторское право и другая информация для отдельных клипов, отредактированных вместе

  • Информация, такая как изменения сцены и имена агента добавила к фильму в производстве

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

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

Синхронизированное демонстрационное описание метаданных

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

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

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

Поле формата данных содержит формат синхронизированных носителей метаданных, установленный в 'mebx'.

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

Таблица ключа Metadata

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

Атом скорости передачи

Дополнительный атом, содержащий данные, сигнализирующие скорость передачи мультимедийного потока

Ключевой табличный Atom метаданных

Ключевой табличный атом метаданных содержит таблицу ключей и отображений к данным полезной нагрузки в соответствующих синхронизированных выборках носителей метаданных. Тип ключевого табличного атома метаданных установлен в ‘keys’.

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

Если ключевой табличный атом метаданных не содержит ключ, который ищет клиент, никакие синхронизированные выборки носителей метаданных, связанные с этим демонстрационным описанием, не содержат значения с тем ключом.

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

Если возможно удалить неиспользованные записи и переписать демонстрационное описание метаданных эффективно, это предпочтено.

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

Рисунок 4-8  расположение ключевого табличного атома метаданных:
Размер

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

Ввести

32-разрядный набор значений целого без знака к 'keys’

Таблица ключа Metadata

Массив ключевых атомов метаданных

Atom скорости передачи

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

Рисунок 4-9  расположение небольшого количества атома уровня:
Размер

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

Ввести

32-разрядный набор значений целого без знака к 'btrt’

Размер буфера

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

Макс. скорость передачи

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

Средняя скорость передачи данных

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

Ключевой Atom метаданных

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

Например, если ключевой атом метаданных имеет тип атома 'stuf', любые атомы типа 'stuf' в синхронизированных выборках метаданных, совместно использующих это демонстрационное описание, содержат значение для этого ключа. Любое значение, помещающееся в 32-разрядное целое число с обратным порядком байтов, может использоваться (такой как 'stuf' или целое число 72). Если FourCC используется, рекомендуется, чтобы значение было мнемосхемой, если это возможно. Например, ключевой тип атома метаданных ‘actr’ мог бы содержать информацию об агентах в фильме. Посмотрите Демонстрационный Формат данных Метаданных ниже.

Существует два зарезервированных типа атома для ключевых атомов метаданных: 0 и 0xFFFFFFFF.

A local_key_id из 0 указывает, что ключевой атом метаданных не использован и не должен быть интерпретирован. Эта индикация позволяет ключу быть отмеченным как неиспользованная в синхронизированном демонстрационном описании метаданных, не требуя, чтобы демонстрационное описание и родительские атомы были переписаны или изменены.

A local_key_id из 0xFFFFFFFF не должен происходить в ключевом атоме метаданных. Это резервируется для будущего использования и может произойти как тип атома в синхронизированных выборках метаданных.

Все другие коды типа доступны для использования в качестве a local_key_id.

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

Ключевой атом метаданных должен содержать атом объявления метаданных.

Рисунок 4-10  расположение ключевого атома метаданных:
Размер

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

Ввести

32-разрядный набор значений целого без знака к local_key_id

Переменный массив атомов

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

Ключевой Atom объявления метаданных

Ключевой атом объявления метаданных содержит ключевое пространство имен и значение ключа того пространства имен для данных значений. Тип ключевого атома объявления метаданных ‘keyd’.

Рисунок 4-11  расположение ключевого атома объявления метаданных:
Размер

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

Ввести

32-разрядный набор значений целого без знака к 'keyd’

Key_namespace

32-разрядный идентификатор, описывающий домен и структуру key_value

Например, это могло указать это key_value обратно-адресная строка стиля (такой как «com.apple.quicktime. ISO6709»), двоичный четыре кода символа (такие как a 'cprt' пользовательский ключ данных), Универсальный идентификатор ресурса (URI) или другие структуры (такие как собственные форматы от других стандартов метаданных). Должны быть зарегистрированы новые ключевые пространства имен, но потому что обратно-адресная строка стиля может часто использоваться, использование обратно-адресного ключевого пространства имен может быть достаточным для большей части использования.

Массив Key_value

Массив 8-разрядных байтов без знака, содержащих значение ключа

Интерпретация этого массива определяется связанным key_namespace поле. Посмотрите таблицу QuickTime Metadata Keys для примеров.

Atom определения типа данных метаданных

Атом определения типа данных метаданных может использоваться для указания типа данных ключевого значения атома метаданных. Тип атома определения типа данных метаданных ‘dtyp’.

Рисунок 4-12  расположение атома определения типа данных метаданных:
Размер

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

Ввести

32-разрядный набор значений целого без знака к 'dtyp’

Пространство имен типа данных

32-разрядный идентификатор, описывающий, как интерпретировать тип данных для значения

Новые типы пространства имен должны быть зарегистрированы в Apple.

Массив типа данных

Массив 8-разрядных байтов без знака, содержащих обозначение типа данных для значений в синхронизированных выборках носителей метаданных, имеющих этот ключ. Интерпретация этого массива определяется связанным datatype namespace.

Комбинация datatype namespace и datatype array укажите тип данных (или структура) значения элемента метаданных. datatype namespace тип указывает интерпретацию datatype array значение. Эта спецификация определяет два datatype namespace типы:

  • Если datatype namespace 0, datatype array содержит 32-разрядное целое без знака с обратным порядком байтов, соответствующее известному типу, указанному в Таблице 3-5. Например, известный тип 1 указывает, что текст UTF-8 и 23 указывает 32-разрядное число с плавающей точкой с обратным порядком байтов.

  • Если datatype namespace 1, datatype array содержит обратно-адресный стиль строка UTF-8, указывающая расширенный тип данных. Если тип данных не имеет соответствующего известного типа данных, этот тип пространства имен типа данных может использоваться. Datatype array состоит из байтов чувствительной к регистру строки UTF-8 без nul (‘\0’) разделитель. Например, гипотетическое datatype array «com.company.my-пользовательский-тип-данных» мог зарегистрировать пользовательский тип данных, принадлежащий владельцу регистрации DNS «mycompany.com».

A datatype namespace кроме 0 или 1 может произойти в синхронизированной дорожке метаданных, возможно записанной согласно более поздней версии этой спецификации. Значения элемента метаданных с нераспознанными типами данных должны быть проигнорированы. Несмотря на это, некоторая обработка все еще возможна на элементе метаданных с нераспознанным типом данных, такова как копирование его между дорожками.

Atom локали метаданных

Значение метаданных может дополнительно быть тегировано с его локалью так, чтобы оно могло быть выбрано основанное на языке пользователя, стране, и т.д. Это тегирование позволяет включать несколько ключей того же ключевого типа (например, авторское право или описание сцены), но с отличающимися локалями для пользователей с различными языками или расположениями. Тип атома локали метаданных ‘loca’.

Если атом локали метаданных отсутствует, значения метаданных нужно считать подходящими для всех локалей.

Рисунок 4-13  расположение атома локали метаданных:
Размер

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

Ввести

32-разрядный набор значений целого без знака к 'loca’

Строка языкового стандарта

ЗАВЕРШЕННАЯ NULL строка символов UTF-8, содержащих языковой тег, соответствующий RFC 4646 (BCP 47). Примеры включают 'en-США ', FR франка' или 'zh-CN'.

Синхронизированный демонстрационный формат данных метаданных

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

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

Если никакие значения для какого-либо ключа не присутствуют какое-то время диапазон, один подход должен включать «NULL» или не имеющую ссылки выборку носителей метаданных (см. Не имеющий ссылки, или NULL синхронизировал демонстрационные данные метаданных) для диапазона времени. Синхронизированная выборка носителей метаданных нулевого байта не может использоваться, потому что все объемы выборки должны быть одним или более байтами. Также “пустое редактирование” записи списка редактирования дорожки могло использоваться, чтобы указать, что нет никаких метаданных для диапазона времени фильма.

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

Синхронизированная демонстрационная структура носителей метаданных

Синхронизированные демонстрационные данные носителей метаданных состоят из некоторого числа связанных атомов. A local_key_id значение определяет тип атома для каждого из атомов. local_key_id значение соответствует a local_key_id определенный для ключевого атома метаданных в ключевом табличном атоме метаданных для синхронизированной выборки метаданных. Никакая специальная интерпретация не сделана относительно 32-разрядного значения local_key_id. Его интерпретация базируется исключительно на том, что определяется в соответствующем ключе метаданных связанного демонстрационного описания метаданных.

local_key_id значение 0 резервируется и может использоваться в качестве атома заполнителя в meda выборке. Такой атом не имеет никакого предписанного содержания. (См. Ключевой Atom Метаданных.)

local_key_id значение 0xFFFFFFFF также резервируется. В будущем это может быть задокументировано для содержания определенной полезной нагрузки. Это local_key_id не должен использоваться или интерпретироваться иначе. Если читатель находит атом с local_key_id из 0xFFFFFFFF и не понимает его формат, атом должен быть проигнорирован.

Синхронизированная выборка носителей метаданных может содержать атомы с типами кроме определенных в ключевом табличном атоме метаданных и кроме двух зарезервированных значений 0 и 0xFFFFFFFF. Несмотря на то, что этой практике обескураживают, любые экземпляры таких атомов могут быть интерпретированы согласно их стандартному значению (такой как ‘free’) или частным способом, пока они не распространены как ключи.

Пример:

Рассмотрите формат метаданных для географического расположения точки с помощью координат, как определено в ISO 6709. Синхронизированная выборка носителей метаданных, создаваемая для этих данных, могла бы иметь a local_key_id значение ‘wher’ и получающаяся выборка метаданных содержала бы информацию (такой как “+27.5916+086.5640+8850 /”) в соответствии ‘wher’ атом. Нет никакой интерпретации этого типа атома или требования что это быть ‘wher’.

Постоянный размер синхронизированные демонстрационные данные метаданных

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

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

Во втором подходе может варьироваться размер отдельных значений метаданных. Возможно создать выборки метаданных постоянного размера путем определения максимального синхронизированного объема выборки носителей метаданных и использования не имеющих ссылки атомов для составления в целом этого размера. Подход:

  1. Определите постоянный желаемый размер атома носителей метаданных.

  2. Заполните атомы, содержащие значения метаданных (см. Синхронизированный Демонстрационный пример Структуры Носителей Метаданных выше).

  3. Если необходимо, добавьте один или несколько не имеющих ссылки атомов для достижения постоянного размера атома носителей метаданных.

Не имеющий ссылки или NULL синхронизировал демонстрационные данные метаданных

Синхронизированная выборка метаданных идентифицируется ее полученным типом атома, предоставленным local_key_id значение в ключевых таблицах описания выборки метаданных. Не имеющий ссылки атом метаданных, означая тот, не идентифицирующийся в ключевых таблицах и не наличии зарезервированного значения 0xFFFFFFFF, можно считать выборкой носителей метаданных «NULL», так как ее тип неизвестен в локальном пространстве имен, и ее данные не будут интерпретироваться. Нет никакого предписанного типа атома, указывающего выборку метаданных NULL несмотря на то, что тип 0 рекомендуется, как упомянуто в Ключевом описании Atom Метаданных выше. Используя не имеющие ссылки подарки атомов полезный способ предоставить дополнение при структурировании дорожки для демонстрационных данных метаданных постоянного размера или когда существуют выполнения без метаданных, вкрапленных выполнениями метаданных в данной дорожке, вместо того, чтобы использовать многократные редактирования дорожки.

Объединение многократных потоков метаданных в ту же дорожку

Поскольку два «потока» или дорожки значений метаданных могли бы произойти, где диапазоны времени для одного потока не совпадают с теми из другого потока, соглашение рекомендуется, если оба потока значений метаданных объединены в единственную новую дорожку метаданных (обычно из-за некоторого производственного процесса). В любой точке во временной шкале, где значение метаданных входит в объем или выходит из объема, новые выборки метаданных должны быть начаты с объединения всего подарка значений метаданных к диапазону времени, заменив существующие перекрытые выборки для той части диапазона времени носителей.

Например, эти данные показывают результаты объединения метаданных от двух дорожек метаданных:

Рисунок 4-14  , Комбинирующий потоки метаданных

В новой объединенной дорожке может использоваться единственное синхронизированное демонстрационное описание метаданных, содержащее ключи A и B. Создавание демонстрационных описаний для каждой комбинации (A, B, {A, B}) возможно, но обескуражен, поскольку это делает определение того, является ли ключ в более сложных дорожках.

Отношения уровня фильма среди дорожек

Дорожка «представления» (например, видео или аудио) может иметь больше чем одну дорожку метаданных, связанную с ним через 'cdsc' введите ссылки дорожки. Объединение всех метаданных через те дорожки нужно считать метаданными для дорожки представления — так же, как если бы была единственная дорожка метаданных со всеми соответствующими метаданными.

Если больше чем одно значение метаданных того же типа находится в дорожках метаданных, существует потенциальный конфликт. В этом случае уровень дорожек метаданных должен использоваться для установления, который должен использоваться. Дорожки с меньшими значениями уровня (т.е.-1 меньше чем 0) берут приоритет, и их значения метаданных должны использоваться. Если две дорожки имеют то же значение уровня, последнюю дорожку в порядке треков фильма (порядок 'trak' атомы в 'moov' атом), переопределю значения метаданных от дорожек ранее в порядке.

Если дорожка метаданных не имеет отношения к другой дорожке определенным ссылкой дорожки ‘cdsc’, это нужно считать глобальной дорожкой метаданных — ее метаданные, применяющиеся ко всему фильму. Если бы часть дорожки применилась бы к дорожке представления, и часть применялась бы глобально, метаданные нужно перенести в двух дорожках, первая ссылка на дорожку представления и другой не ссылка на любую дорожку.

Носители временного кода

Носители временного кода используются, чтобы хранить данные временного кода в фильмах в формате QuickTime. Это имеет тип среды 'tmcd'.

Демонстрационное описание временного кода

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

Поле формата данных в демонстрационном описании всегда устанавливается в 'tmcd'.

Обработчик носителей временного кода также добавляет некоторые свои собственные поля к демонстрационному описанию.

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

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

Флаги

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

Кадр отбрасывания

Указывает, является ли временной код кадром отбрасывания. Установите его в 1, если временной код является кадром отбрасывания. Значение этого флага является 0x0001.

24-часовой макс.

Указывает ли обертки временного кода после 24 часов. Установите его в 1, если переносится временной код. Значение этого флага является 0x0002.

Отрицательные времена OK

Указывает, позволяются ли отрицательные временные стоимости. Установите его в 1, если временной код поддерживает отрицательные величины. Значение этого флага является 0x0004.

Счетчик

Указывает, соответствует ли временная стоимость значению счетчика ленты. Установите его в 1, если значения временного кода являются значениями счетчика ленты. Значение этого флага является 0x0008.

Масштаб времени

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

Продолжительность кадра

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

Число кадров

8-разрядное целое число, содержащее число кадров в секунду для формата временного кода. Если время является счетчиком, это - число кадров для каждой встречной галочки.

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

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

Исходная ссылка

Пользовательский атом данных, содержащий информацию об исходной ленте. Единственная в настоящее время используемая пользовательская запись списка данных 'name' ввести. Эта запись содержит текстовый элемент, указывающий имя исходной ленты.

Atom информации о носителях временного кода

Носители временного кода также требуют атома информации о носителях. Этот атом содержит информационное управление, как текст временного кода выведен на экран. Этот атом информации о носителях сохранен в основном атоме информации о носителях (см. Основные Атомы информации о Носителях для получения дополнительной информации). Тип атома информации о носителях временного кода 'tcmi'.

Атом информации о носителях временного кода содержит следующие поля:

Размер

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

Ввести

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

Версия

1-байтовая спецификация версии этого атома информации о носителях временного кода.

Флаги

3-байтовое пространство для флагов информации о носителях временного кода. Установите это поле в 0.

Шрифт текста

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

Текстовая поверхность

16-разрядное целое число, указывающее стиль шрифта. Установите это поле в 0 для обычного текста. Можно включить другие параметры стиля при помощи один или больше битовых масок, перечисленных в Таблице 4-8.

Табличные 4-8  текстовые номинальные стоимости

Значение

Значение

0x0001

Полужирный

0x0002

Курсив

0x0004

Подчеркивание

0x0008

Схема

0x0010

Тень

0x0020

Уплотнить

0x0040

Расшириться

Размер текста

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

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

16-разрядное целое число, резервирующееся для использования Apple. Установите это поле в 0.

Цвет текста

48-разрядное значение цвета RGB для текста временного кода.

Цвет фона

48-разрядный цвет фона RGB для текста временного кода.

Имя шрифта

Строка Паскаля, указывающая имя шрифта текста временного кода.

Демонстрационные данные временного кода

Выборка носителей временного кода зарегистрирована как 32-разрядное целое число, интерпретируемое на основе значения флага Counter в демонстрационном описании временного кода.

Если флаг Counter установлен в 1 в демонстрационном описании временного кода, демонстрационные данные являются 32-разрядным целым числом без знака. Значение счетчика временного кода определяется путем деления этого 32-разрядного целого числа без знака числом поля кадров в демонстрационном описании временного кода.

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

Часы

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

Отрицательный

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

Минуты

7-разрядное целое число, содержащее стартовое число минут.

Секунды

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

Кадры

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

Текстовые носители

Текстовые носители используются, чтобы хранить текстовые данные в фильмах в формате QuickTime. Это имеет тип среды 'text'.

Текстовое демонстрационное описание

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

Поле формата данных в демонстрационном описании всегда устанавливается в 'text'.

Текстовый обработчик носителей также добавляет некоторые свои собственные поля к демонстрационному описанию.

Флаги дисплея

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

Не делайте автоматического масштаба

Текстовое масштабирование средств управления. Когда дорожка масштабируется, если этот флаг установлен в 1, текстовые обратные течения обработчика носителей текст вместо того, чтобы масштабироваться. Значение этого флага является 0x0002.

Используйте цвет фона фильма

Цвет фона средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей игнорирует поле цвета фона в текстовом демонстрационном описании и использует цвет фона фильма вместо этого. Значение этого флага является 0x0008.

Прокрутите в

Текстовая прокрутка средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей прокручивает текст, пока последний из текста не в поле зрения. Значение этого флага является 0x0020.

Прокрутите

Текстовая прокрутка средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей прокручивает текст, пока не не стало последнего из текста. Значение этого флага является 0x0040.

Горизонтальная прокрутка

Текстовая прокрутка средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей прокручивает текст горизонтально; иначе, это прокручивает текст вертикально. Значение этого флага является 0x0080.

Обратная прокрутка

Текстовая прокрутка средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей прокручивает вниз (при прокрутке вертикально) или назад (при прокрутке горизонтально; обратите внимание на то, что горизонтальная прокрутка также зависит от текстового выравнивания). Значение этого флага является 0x0100.

Непрерывная прокрутка

Текстовая прокрутка средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей выводит на экран новые выборки путем прокрутки старых. Значение этого флага является 0x0200.

Падающая тень

Падающая тень средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей выводит на экран текст с падающей тенью. Значение этого флага является 0x1000.

Сглаживание

Сглаживание средств управления. Если этот флаг установлен в 1, текстовое сглаживание использования обработчика носителей при рисовании текста. Значение этого флага является 0x2000.

Ключевой текст

Цвет фона средств управления. Если этот флаг установлен в 1, текстовый обработчик носителей не выводит на экран цвет фона, так, чтобы текстовый фон наложения отследил. Значение этого флага является 0x4000.

Текстовое выравнивание

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

Цвет фона

48-разрядный цвет RGB, указывающий цвет фона текста.

Текстовое поле по умолчанию

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

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

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

Число шрифта

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

Поверхность шрифта

16-разрядное целое число, указывающее стиль шрифта. Установите это поле в 0 для обычного текста. Можно включить другие параметры стиля при помощи один или больше битовых масок, перечисленных в Таблице 4-9.

Табличные 4-9  номинальные стоимости Шрифта

Значение

Значение

0x0001

Полужирный

0x0002

Курсив

0x0004

Подчеркивание

0x0008

Схема

0x0010

Тень

0x0020

Уплотнить

0x0040

Расшириться

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

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

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

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

Основной цвет

48-разрядный цвет RGB, указывающий основной цвет текста.

Текстовое имя

Строка Паскаля, указывающая имя шрифта для использования для отображения текста.

Текстовый Atom информации о носителях

Текстовые носители также требуют текстового атома информации о носителях. Этот атом информации о носителях сохранен в основном атоме информации о носителях ('minf') в основном атоме заголовка информации о носителях ('gmhd') (см. Основные Атомы информации о Носителях). Тип текстового атома информации о носителях 'text'.

Атом информации о носителях временного кода содержит следующие поля:

Размер

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

Ввести

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

Матричная структура

Матричная структура связала с этим текстом носители. Это должно быть единичной матрицей. Матрица показывает, как отобразить точки от одного координатного пространства в другого. Посмотрите Матрицы для обсуждения того, как матрицы дисплея используются в QuickTime и видят рисунок 2-3 для иллюстрации матричной структуры в атоме.

Текстовые демонстрационные данные

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

Таблица 4-10 перечисляет в настоящее время определяемые текстовые демонстрационные расширения.

Табличные 4-10  текстовые демонстрационные расширения

Текстовое демонстрационное расширение

Описание

'styl'

Информация о стилях для текста. Позволяет Вам переопределять стиль по умолчанию в демонстрационном описании или определять больше чем один стиль для выборки. Данные являются фрагментом стиля TextEdit.

'ftab'

Таблица имен шрифтов. Каждая запись таблицы содержит число шрифта (сохраненный в 16-разрядном целом числе), и имя шрифта (сохраненный в строке Паскаля).This атом требуется если 'styl' атом присутствует.

'hlit'

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

'hclr'

Цвет подсветки. Этот атом указывает 48-разрядный цвет RGB для использования для выделения.

'drpo'

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

'drpt'

Прозрачность падающей тени. Данные являются 16-разрядным целым числом между 0 и 256 указаниями степени прозрачности падающей тени. Значение 256 делает падающую тень абсолютно непрозрачной.

'imag'

Данные растрового шрифта. Этот атом содержит еще два атома. 'idat' атом содержит сжатые данные изображения, которые будут использоваться для рисования текста, когда требуемые шрифты не доступны. 'idsc' атом содержит видео демонстрационное описание, описывающее формат сжатых данных изображения.

'metr'

Выделение растрового шрифта. Этот атом содержит метрическую информацию, управляющую выделением когда 'imag' атом используется для рисования.

Гипертекст и соединенный проводом текст

Гипертекст используется в качестве действия, берущего Вас к веб-URL; как веб-URL, это кажется синим и подчеркнутым. Гипертекст сохранен в демонстрационном потоке атома текстовой дорожки как тип 'htxt'. Тот же механизм используется для хранения соединенных проводом действий, соединенных с текстовыми строками. Текстовая строка может быть соединена проводом для действия как гипертекстовая ссылка, когда щелкнувшийся, или выполнять любого определило соединенное проводом действие QuickTime, когда щелкнувшийся. Для получения дополнительной информации на соединенных проводом действиях, посмотрите Соединенную проводом Грамматику Действия.

Хранившие данные являются a QTAtomContainer. Корневой атом гипертекста в этом контейнере является атомом соединенного проводом текста типа 'wtxt'. Это - родитель для всех отдельных гипертекстовых объектов.

Для каждого гипертекстового элемента родительский атом имеет тип 'htxt'. Это - тип атома контейнера атома. Два дочерних элемента этого атома, определяющие смещение гипертекста в текстовом потоке:

kRangeStart         strt // unsigned long
kRangeEnd           end  // unsigned long

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

 
kQTEventType, (kQTEventMouseClick, kQTEventMouseClickEnd,
                    kQTEventMouseClickEndTriggerButton,
                    kQTEventMouseEnter, kQTEventMouseExit)
...
kTextWiredObjectsAtomType, 1
    kHyperTextItemAtomType, 1..n
         kRangeStart, 1
            long
        kRangeEnd, 1
            long
 
    kAction     // The known range of track movie sprite actions
 

Закрытые носители ввода субтитров

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

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

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

Закрытое озаглавливающее демонстрационное описание

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

Поле формата данных в демонстрационном описании должно быть установлено в 'c608' или 'c708'. Дорожка субтитров должна использовать только один формат данных.

Закрытые озаглавливающие демонстрационные данные

Формат закрытых озаглавливающих демонстрационных данных является последовательностью одного или более атомов, один из которых должен быть 'cdat' атомом. Должны быть проигнорированы нераспознанные атомы.

Размер

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

Ввести

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

Примечание: Apple резервирует все типы атома со строчными буквами и числами.

Демонстрационные данные

Для дорожки CEA-608 данные являются массивом одной или более пар байта для канала передачи данных 1/поля 1 («CC1») потока данных CEA-608, каждое соответствие пары байта видеокадру. Для получения дополнительной информации о содержании, обратитесь к спецификации CEA-608-E, Строка 21 Услуга передачи данных, апрель 2008.

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

Примечание: Каретка пар байта для других элементов источника CEA-608-E данные кадра не описана здесь. Если поддерживается, другие типы атома и их содержание будут задокументированы.

Для дорожки CEA-708, должен быть отформатированным согласно ANSI CEA-708-E спецификация, август 2013.

Включая многократные дорожки субтитров

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

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

  • Дорожки субтитров должны быть тегированы с надлежащим языком.

Носители подзаголовка

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

Демонстрационное описание подзаголовка

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

Поле формата данных в демонстрационном описании в настоящее время всегда устанавливается в 'tx3g'. Должны быть проигнорированы нераспознанные форматы данных. Текстовые носители, описанные здесь, основываются на текстовом поле, определенном в 3GPP Синхронизированная текстовая спецификация, но обеспечивают различный тип дорожки и обработчик носителей, специально разработанный для подзаголовков.

Обработчик носителей подзаголовка добавляет некоторые свои собственные поля к демонстрационному описанию.

Флаги дисплея

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

Вертикальное размещение

Средства управления вертикальное размещение текста подзаголовка. Если этот флаг установлен, обработчик носителей подзаголовка использует главную координату границ дисплея переопределения 'tbox' текстовое поле для определения вертикального размещения подзаголовка, как описано в Размере Заголовка Дорожки Подзаголовка и Размещении. Иначе, подзаголовок выводит на экран у основания видео. Значение этого флага является 0x20000000.

Вызываются некоторые выборки

Указывает, содержат ли какие-либо выборки подзаголовка вызванные атомы. Если этот флаг установлен, по крайней мере одна выборка содержит принудительное ('frcd') атом, как описано в Демонстрационных Данных Подзаголовка. Значение этого флага является 0x40000000.

Все выборки вызываются

Если этот флаг установлен, обработчик носителей подзаголовка обрабатывает все выборки как вызванные подзаголовки, независимо от присутствия или отсутствия a 'frcd' атом. Значение этого флага является 0x80000000. Если этот флаг установлен, флаг Some Samples Are Forced должен также быть установлен (делающий 0xC0000000).

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

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

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

8-разрядное целое число, которое должно быть установлено в-1 (отрицательный).

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

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

Текстовое поле по умолчанию

64-разрядный прямоугольник, указывающий область для получения текста (каждый 16 битов указывают вершину, оставленную, нижняя часть и право, соответственно) в дорожке подзаголовка. Этот прямоугольник должен заполнить размерности заголовка дорожки точно; т.е. вершина 0, оставленный 0, нижняя часть является высотой заголовка дорожки подзаголовка, и право является шириной заголовка дорожки подзаголовка. Посмотрите Размер Заголовка Дорожки Подзаголовка и Размещение.

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

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

Идентификатор шрифта

16-разрядное значение, которое должно быть установлено в тот же идентификатор шрифта как в таблице шрифтов ('ftab' расширение).

Поверхность шрифта

8-разрядное целое число, указывающее стиль шрифта. Установите это поле в 0 для обычного текста. Можно включить другие параметры стиля при помощи один или больше битовых масок, перечисленных в Таблице 4-11.

Табличные 4-11  номинальные стоимости Шрифта

Значение

Значение

0x0001

Полужирный

0x0002

Курсив

0x0004

Подчеркивание

Размер шрифта

8-разрядное значение, которое должно всегда быть 0,05 умноженными высотой заголовка видеотрека. Например, если заголовок видеотрека является 720 точками в высоте, это должно быть 36 (точки). Этот размер должен использоваться в записи стиля по умолчанию и в любых записях стиля на выборку. Если подзаголовок не помещается в текстовое поле, обработчик носителей подзаголовка может принять решение уменьшить размер шрифта так, чтобы соответствовал подзаголовок.

Основной цвет

32-разрядный цвет RGBA, указывающий цвет текста, 8 битов каждый для красного, зеленого, синего цвета, и альфа (прозрачность). Например, это было бы (0 0 0 255) для непрозрачного черного цвета или (255,255,255,255) для непрозрачного белого. Темные цвета не рекомендуются, поскольку текст мог быть помещен на темный фон.

Таблица шрифтов

Атом типа 'ftab' это идентифицирует шрифт для использования для отображения текста. Посмотрите Atom Таблицы шрифтов.

Atom таблицы шрифтов

Этот атом указывает, что шрифт раньше выводил на экран подзаголовок.

Размер

32-разрядное целое число без знака, содержащее размер атома таблицы шрифтов.

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'ftab'.

Количество

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

Идентификатор шрифта

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

Длина имени шрифта

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

Имя шрифта

Должна быть или «Засечка» или «Sans Serif».

Демонстрационные данные подзаголовка

Демонстрационные данные подзаголовка состоят из 16-разрядного слова, указывающего длину (число байтов) текста подзаголовка, сопровождаемого текстом подзаголовка и затем дополнительными демонстрационными расширениями. Текст подзаголовка является текстом Unicode, закодированным или как текст UTF-8 или как текст UTF-16, начинающийся с BYTE ORDER UTF-16 MARK ('\uFEFF') в порядке с прямым порядком байтов или с обратным порядком байтов. Нет никакого нулевого завершения для текста.

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

Таблица 4-12 перечисляет в настоящее время определяемые демонстрационные расширения подзаголовка.

Табличные 4-12  демонстрационные расширения Подзаголовка

Демонстрационное расширение подзаголовка

Описание

'frcd'

Присутствие этого атома указывает, что выборка содержит принудительный подзаголовок. Это расширение не имеет никаких данных.

Принудительные подзаголовки показаны автоматически в надлежащих случаях без любого взаимодействия от пользователя. Если какая-либо выборка содержит принудительный подзаголовок, флаг Some Samples Are Forced (0x40000000) должен также быть установлен во флагах дисплея.

Рассмотрите пример, где основной язык содержания является английским, но пользователь принял решение слушать французский, называют аудио. Если сцена в видеодисплеях что-то на английском языке, который важен для графика или содержания (такого как газетный заголовок), принудительный подзаголовок, выводит на экран содержание, переведенное на французский язык. В этом случае подзаголовок соединяется («вызванный») к французской звуковой дорожке языка.

Если этот атом не присутствует, подзаголовок является обычно просто переводом звукового содержимого, которое пользователь может принять решение вывести на экран или скрыть.

'styl'

Информация о стилях для подзаголовка. Этот атом позволяет Вам переопределять стиль по умолчанию в демонстрационном описании или определять больше чем один стиль в выборке. Посмотрите Atom Стиля Подзаголовка.

'tbox'

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

'twrp'

Текстовая обертка. Установите однобайтовую полезную нагрузку в 0x00 ни для какого обертывания или 0x01 для автоматического мягкого обертывания.

Atom стиля подзаголовка

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

Размер

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

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'styl'.

Количество записи

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

Запись стиля текста подзаголовка

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

Начальный символ

16-разрядное значение, которое является смещением первого символа, который должен использовать стиль, указанный в этой записи. Нуль (0) является первым символом в подзаголовке.

Конечный символ

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

Идентификатор шрифта

16-разрядное значение, которое должно быть установлено в тот же идентификатор шрифта как в таблице шрифтов ('ftab' расширение).

Поверхность шрифта

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

Размер шрифта

8-разрядное значение, указывающее размер шрифта. См. Демонстрационное Описание Подзаголовка для получения дополнительной информации.

Основной цвет

32-разрядный цвет RGBA, указывающий цвет текста. См. Демонстрационное Описание Подзаголовка для получения дополнительной информации.

Атом Текстового поля

Это дополнительное расширение определяет текстовое поле для выборки подзаголовка, чтобы использоваться, как описано в Таблице 4-12. Если настоящее, это переопределяет текстовое поле по умолчанию в связанном демонстрационном описании. Если демонстрационные флаги Дисплея описания подзаголовка не включают флаг Vertical Placement (0x20000000), атом Текстового поля не должен быть включен ни в какую выборку дорожки подзаголовка.

Размер

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

Ввести

32-разрядное поле без знака, содержащее четыре кода символа 'tbox'.

Текстовое поле

64-разрядный прямоугольник, указывающий область для получения текста (каждый 16 битов указывают вершину, оставленную, нижняя часть и право, соответственно) в дорожке подзаголовка. Этот прямоугольник должен заполнить размерности ширины дорожки точно. Верхние и нижние координаты могут варьироваться, потому что они используются, чтобы поместить и измерить текст подзаголовка вертикально. Вершина используется для размещения текста; высота определяется нижней частью минус вершина. Ни вершина, ни нижняя часть не должны быть вне размерностей дорожки подзаголовка. Посмотрите Размер Заголовка Дорожки Подзаголовка и Размещение.

Размер заголовка дорожки подзаголовка и размещение

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

Значение размерностей дорожки и матрицы дорожки отличается в зависимости от отсутствия или присутствия флага Vertical Placement (0x20000000) в демонстрационных флагах дисплея описания подзаголовка. Когда Вертикальное Размещение не установлено, подзаголовки всегда помещаются у основания видео. Когда Вертикальное Размещение установлено, вертикальная позиция подзаголовков может варьироваться основанная на атоме Текстового поля ('tbox') в каждой выборке.

В обоих случаях ширина дорожки подзаголовка должна совпасть с шириной дорожки своего связанного основного видео ('vide') дорожка.

Если флаг Vertical Placement (0x20000000) флаг дисплея демонстрационного описания не установлен, следующее должно быть истиной:

  • Высота дорожки подзаголовка должна быть 0.15 * 'vide' высота заголовка дорожки. Это предусматривает пространство для двух строк текста подзаголовка. Например, если 'vide' высота заголовка дорожки составляет 720 пикселей, тогда 'sbtl'высота заголовка дорожки должна быть 108 (пиксели).

  • Вертикальное размещение дорожки подзаголовка определяется матрицей дорожки, которая должна быть простой вертикальной матрицей перевода, смещающей подзаголовок вниз на 0,85 * 'vide' высота заголовка дорожки. Для обработчика носителей подзаголовка, соблюдающего tx3g правила, это располагает подзаголовки на нижней части 15 процентов видео. Обработчики носителей могут принять решение сместить подзаголовки далее вниз в некоторых режимах; например, в режиме воспроизведения, выводящем на экран черные полосы выше и ниже содержания, видео могло быть смещено и подзаголовки, перемещенные вниз в черную область.

  • Выборки подзаголовка не должны содержать демонстрационное расширение данных текстового поля ('tbox') потому что не позволяется никакое управление вертикальным размещением.

Также, если флаг Vertical Placement (0x20000000) флаг дисплея демонстрационного описания установлен, следующее должно быть истиной:

  • Высота дорожки подзаголовка должна быть высотой заголовка видеотрека вместо 0,15 * высота видеотрека. Поскольку размерности дорожки подзаголовка соответствуют размерности видеотрека, текст подзаголовка может быть расположен в нижнюю часть или вершину видео, в отличие от этого когда не установлен флаг Vertical Placement.

  • Матрица дорожки должна быть единичной матрицей.

  • Размещение подзаголовка определяется главной координатой одного из двух прямоугольников. Если демонстрационное расширение данных текстового поля переопределения ('tbox') присутствует, оно используется. Иначе, текстовое поле по умолчанию в демонстрационном описании используется. Некоторые проигрыватели будут использовать главную координату, чтобы определить, является ли подзаголовок в верхней части размерностей дорожки, и поместите подзаголовок наверху видео, иначе поместив его у основания видео. Другие проигрыватели могли бы использовать главную координату точно, помещая подзаголовок в указанной вертикальной координате. Поскольку обе среды воспроизведения возможны для части содержания, это, рекомендуют, чтобы главная координата 0 использовалась для размещения наверху и главной координаты, равной высоте дорожки минус высота подзаголовка, которая будет использоваться. Таким образом, если содержание играется в любом виде проигрывателя, его размещение предсказуемо.

Ссылка на связанную принудительную дорожку подзаголовка

Дорожка подзаголовка может содержать ссылку дорожки типа 'forc' к парной дорожке подзаголовка, содержащей только вызванные подзаголовки.

Соединение двух дорожек подзаголовка могло бы быть необходимым если синхронизация принудительных выборок подзаголовка (см. 'frcd') отличается от регулярного текста подзаголовка, такой как тогда, когда принудительный дисплей подзаголовка наложился бы своевременно с дисплеем регулярного подзаголовка. Если синхронизации являются тем же, единственная дорожка подзаголовка должна использоваться.

Для соединения двух дорожек одна дорожка подзаголовка может содержать любую комбинацию принудительных и невызванных (регулярных) выборок подзаголовка, и другая дорожка должна содержать только вызванные подзаголовки. Дорожки должны быть в той же альтернативной группе и быть тегированы с тем же расширенным языковым тегом и кодом языка. Первая, регулярная дорожка тогда использует ссылку дорожки типа 'forc' для ссылки на вторую, принудительную только дорожку. (Смешивание расширенных языковых тегов или кодов для того же языка в той же альтернативной группе не определено.)

Посмотрите Альтернативные Дорожки Подзаголовка и Ссылочные Атомы Дорожки для получения дополнительной информации.

Музыкальные носители

Музыкальные носители используются для хранения основанных на примечании аудиоданных, таких как данные MIDI, в фильмах в формате QuickTime. Это имеет тип среды 'musi'.

Музыкальное демонстрационное описание

Музыкальное демонстрационное описание использует стандартный демонстрационный заголовок описания, как описано в разделе Sample Description Atoms.

Поле формата данных в демонстрационном описании всегда устанавливается в 'musi'. Музыкальный обработчик носителей добавляет дополнительное 32-разрядное целочисленное поле к демонстрационному описанию, содержащему флаги. В настоящее время никакие флаги не определяются, и это поле должно быть установлено в 0.

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

Музыкальные демонстрационные данные

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

MPEG 1 носитель

MPEG 1 носитель используется для хранения MPEG 1 видеопоток, MPEG 1, аудиопотоки уровня 2, и мультиплексировал MPEG 1 аудио-и видеопоток в фильмах в формате QuickTime. Это имеет тип среды 'MPEG'.

Демонстрационное описание MPEG 1

Демонстрационное описание MPEG 1 использует стандартный демонстрационный заголовок описания, как описано в Демонстрационных Атомах Описания.

Поле формата данных в демонстрационном описании всегда устанавливается в 'MPEG'. MPEG 1 обработчик носителей не добавляет дополнительных полей к демонстрационному описанию.

Демонстрационные данные MPEG 1

Каждая выборка в MPEG 1 носитель является всем потоком MPEG 1. Это означает, что единственная выборка MPEG 1 может составить несколько сотен мегабайтов в размере. Кодирование MPEG 1, используемое QuickTime, соответствует стандарту ISO, как описано в документе CD 11172 ISO.

Носители Sprite

Носители Sprite используются, чтобы хранить символьно-ориентированные данные анимации в фильмах в формате QuickTime. Это имеет тип среды 'sprt'.

Демонстрационное описание Sprite

Демонстрационное описание спрайта использует стандартный демонстрационный заголовок описания, как описано в Демонстрационных Атомах Описания.

Поле формата данных в демонстрационном описании всегда устанавливается в 'sprt'. Обработчик носителей спрайта не добавляет дополнительных полей к демонстрационному описанию.

Демонстрационные данные Sprite

Все выборки спрайта сохранены в структурах атома QT. Носители спрайта используют оба ключевых кадра и кадры differenced. Ключевые кадры содержат все данные изображения спрайта и начальные установки для каждого из свойств спрайта.

Ключевой кадр всегда содержит совместно используемый атом данных типа 'dflt'. Этот атом содержит данные, которые будут совместно использованы спрайтами, состоя в основном из данных изображения и демонстрационных описаний. Совместно используемый атом данных содержит единственный атом контейнера изображения спрайта со значением типа атома 'imct' и Значение идентификатора 1.

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

Ключевой кадр также должен содержать определения для каждого спрайта в атомах типа 'sprt'. Атомы Sprite должны иметь Идентификационные номера, запускаются в 1 и рассчитывают последовательно вверх. Каждый атом спрайта содержит список свойств. Таблица 4-13 показывает все в настоящее время определяемые свойства спрайта.

  Свойства Table 4-13 Sprite

Имя свойства

Значение

Описание

kSpritePropertyMatrix

1

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

kSpritePropertyVisible

4

Указывает, видим ли спрайт. Для создания спрайта видимым Вы устанавливаете видимое свойство спрайта в true.

kSpritePropertyLayer

5

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

kSpritePropertyGraphicsMode

6

Указывает графический режим и совмещенный цвет, указывающий, как смешать спрайт с любыми спрайтами позади него и с фоном. Для установки графического режима спрайта Вы вызываете SetSpriteProperty, передача указателя на a ModifierTrackGraphicsModeRecord структура.

kSpritePropertyActionHandlingSpriteID

8

Указывает другой спрайт ID, делегирующим события QT.

kSpritePropertyImageIndex

100

Содержит атом ID атома изображения спрайта.

Выборка переопределения отличается от выборки ключевого кадра двумя способами. Во-первых, выборка переопределения не содержит совместно используемый атом данных. Все совместно используемые данные должны появиться в ключевом кадре. Во-вторых, только те свойства спрайта, изменяющие потребность, которая будет указана. Если ни одно из свойств спрайта не изменяется в данном кадре, то спрайту не нужен атом в кадре differenced.

Выборка переопределения может использоваться одним из двух способов: объединенный, как с видео ключевыми кадрами, для построения текущего кадра; или текущий кадр может быть получен путем объединения только ключевого кадра и текущей выборки переопределения.

Обратитесь к разделу Sprite Track Media Format для получения информации о том, как выборки переопределения обозначены в файле, с помощью kSpriteTrackPropertySampleFormat и поведение по умолчанию kKeyFrameAndSingleOverride формат.

Свойства дорожки Sprite

В дополнение к определению свойств для отдельных спрайтов можно также определить свойства, применяющиеся ко всей дорожке спрайта. Эти свойства могут переопределить поведение по умолчанию или обеспечить подсказки для обработчика носителей спрайта. Следующие свойства дорожки спрайта поддерживаются:

kSpriteTrackPropertyBackgroundColor

Указывает цвет фона для дорожки спрайта. Цвет фона используется для любой области, не покрытой регулярными спрайтами или фоновыми спрайтами. Если Вы не указываете цвет фона, использование дорожки спрайта, черное как цвет фона по умолчанию.

kSpriteTrackPropertyOffscreenBitDepth

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

kSpriteTrackPropertySampleFormat

Указывает демонстрационный формат для дорожки спрайта. Если Вы не указываете демонстрационный формат, дорожка спрайта использует формат по умолчанию, kKeyFrameAndSingleOverride.

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

Свойства дорожки спрайта и их соответствующие типы данных перечислены в Таблице 4-14.

Таблица 4-14  свойства дорожки Sprite

Тип Atom

Atom ID

Листовой тип данных

kSpriteTrackPropertyBackgroundColor

1

RGBColor

kSpriteTrackPropertyOffscreenBitDepth

1

unsigned short

kSpriteTrackPropertySampleFormat

1

long

kSpriteTrackPropertyHasActions

1

Boolean

kSpriteTrackPropertyQTIdleEventsFrequency

1

UInt32

kSpriteTrackPropertyVisible

1

Boolean

kSpriteTrackPropertyScaleSpritesToScaleWorld

1

Boolean

Формат носителя дорожки Sprite

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

Рисунок 4-15 показывает, что высокоуровневая структура спрайта отслеживает выборку ключевого кадра. Каждый атом в контейнере атома представлен его типом атома, атом ID, и, если это - листовой атом, тип его данных.

Рисунок 4-15  демонстрационный контейнер атома ключевого кадра
A key frame sample atom container

Контейнер атома QT содержит один дочерний атом для каждого спрайта в выборке ключевого кадра. Каждый атом спрайта имеет тип kSpriteAtomType. Спрайт IDs пронумерован от 1 до числа спрайтов, определенных выборкой ключевого кадра (numSprites).

Каждый атом спрайта содержит листовые атомы, определяющие свойства спрайта, как показано на рисунке 4-16. Например, kSpritePropertyLayer свойство определяет уровень спрайта. Каждый атом свойства спрайта имеет тип атома, соответствующий свойству и ID 1.

  Атомы рисунка 4-16, описывающие спрайт и его свойства
Atoms that describe a sprite and its properties

В дополнение к атомам спрайта контейнер атома QT содержит один атом типа kSpriteSharedDataAtomType с ID 1. Атомы, содержавшие совместно используемым атомом данных, описывают данные, совместно использующиеся всеми спрайтами. Совместно используемый атом данных содержит один атом типа kSpriteImagesContainerAtomType с ID 1 (рисунок 4-17).

Атом контейнера изображения содержит один атом типа kImageAtomType для каждого изображения в выборке ключевого кадра. Атом изображения IDs пронумерован от 1 до числа изображений (numImages). Каждый атом изображения содержит листовой атом, содержащий данные изображения (тип kSpriteImageDataAtomType) и дополнительный листовой атом (тип kSpriteNameAtomType) это содержит имя изображения.

  Атомы рисунка 4-17, описывающие изображения спрайта
Atoms that describe sprite images

Атомы формата носителя Sprite

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

И выборки ключевого кадра и выборки переопределения поддерживают атомы действия спрайта. Выборки переопределения переопределяют действия на уровне события QuickTime. В действительности то, что Вы делаете путем переопределения, должно полностью заменить один обработчик событий и все его действия с другим. Дорожка спрайта kSpriteTrackPropertySampleFormat свойство не имеет никакого эффекта на то, как выполняются действия. Поведение подобно значению по умолчанию kKeyFrameAndSingleOverride отформатируйте, где, если в данной выборке переопределения нет никакого обработчика для события, обработчик ключевого кадра используется, если существует тот.

Расширения формата носителя Sprite

В этом разделе описываются некоторые типы атома, и IDs раньше расширял формат носителя дорожки спрайта, таким образом включая возможности спрайта действия.

Полное описание грамматики для выборок обработчика носителей спрайта, включая расширения спрайта действия, включено в раздел Sprite Media Handler Track Properties QT Atom Container Format.

Атомы свойства дорожки Sprite

Следующие константы представляют типы атома для свойств дорожки спрайта. Эти атомы применяются к целой дорожке, не только к единственной выборке.

Постоянные описания
kSpriteTrackPropertyHasActions

Необходимо добавить атом этого типа с его листовым набором данных к true если Вы хотите, чтобы контроллер фильма выполнил действия в Ваших носителях дорожки спрайта. Листовые данные атома имеют тип Boolean. Значение по умолчанию false, таким образом, очень важно добавить атом этого типа, если Вы хотите, чтобы интерактивность имела место.

kSpriteTrackPropertyQTIdleEventsFrequency

Необходимо добавить атом этого типа, если Вы хотите, чтобы спрайты в Вашей дорожке спрайта получили kQTEventIdle События QuickTime. Листовые данные атома имеют тип UInt32. Значение является минимальным числом галочек, которые должны передать перед следующим QTIdle событие отправляется. Каждая галочка является 1/60-й из одной секунды. Для указания “Неактивный максимально быстро” установите значение в 0. Значение по умолчанию kNoQTIdleEvents, что означает, не отправляют неактивных событий.

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

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

kSpriteTrackPropertyVisible

Можно заставить всю дорожку спрайта быть невидимой путем установки значения этого Boolean свойство к false. Это полезно для использования дорожки спрайта, поскольку скрытая дорожка кнопки — например, помещая невидимую дорожку спрайта по видеотреку позволила бы символам в видео быть активируемыми по щелчку. Значение по умолчанию видимо (true).

kSpriteTrackPropertyScaleSpritesToScaleWorld

Можно заставить каждый спрайт повторно масштабироваться, когда дорожка спрайта изменена путем установки значения этого Boolean свойство к true. Установка этого свойства может улучшить производительность получения и качество масштабированной дорожки спрайта. Это особенно полезно для изображений спрайта, сжатых с кодеками, которые независимы от разрешения, таковы как кодек Кривой. Значение по умолчанию для этого свойства false.

Atom носителей Sprite и типы данных

Следующие константы представляют типы атома для носителей спрайта:

enum {
    kSpriteAtomType                     = 'sprt',
    kSpriteImagesContainerAtomType      = 'imct',
    kSpriteImageAtomType                = 'imag',
    kSpriteImageDataAtomType            = 'imda',
    kSpriteImageDataRefAtomType         = 'imre',
    kSpriteImageDataRefTypeAtomType     = 'imrt',
    kSpriteImageGroupIDAtomType         = 'imgr',
    kSpriteImageRegistrationAtomType    = 'imrg',
    kSpriteImageDefaultImageIndexAtomType ='defi',
    kSpriteSharedDataAtomType           = 'dflt',
    kSpriteNameAtomType                 = 'name',
    kSpriteImageNameAtomType            = 'name',
    kSpriteUsesImageIDsAtomType         = 'uses',
    kSpriteBehaviorsAtomType            = 'beha',
    kSpriteImageBehaviorAtomType        = 'imag',
    kSpriteCursorBehaviorAtomType       = 'crsr',
    kSpriteStatusStringsBehaviorAtomType = 'sstr',
    kSpriteVariablesContainerAtomType    = 'vars',
    kSpriteStringVariableAtomType        = 'strv',
    kSpriteFloatingPointVariableAtomType = 'flov'
    kSpriteSharedDataAtomType           = 'dflt',
    kSpriteURLLinkAtomType              = 'url '
    kSpritePropertyMatrix               = 1
    kSpritePropertyVisible              = 4
    kSpritePropertyLayer                = 5
    kSpritePropertyGraphicsMode         = 6
    kSpritePropertyImageIndex           = 100
    kSpritePropertyBackgroundColor      = 101
    kSpritePropertyOffscreenBitDepth    = 102
    kSpritePropertySampleFormat         = 103
};
Постоянные описания
kSpriteAtomType

Атом является родительским атомом, описывающим спрайт. Это содержит атомы, описывающие свойства спрайта. Дополнительно, это может также включать атом типа kSpriteNameAtomType это определяет имя спрайта.

kSpriteImagesContainerAtomType

Атом является родительским атомом, содержащим атомы типа kSpriteImageAtomType.

kSpriteImageAtomType

Атом является родительским атомом, содержащим атом типа kSpriteImageDataAtomType. Дополнительно, это может также включать атом типа kSpriteNameAtomType это определяет имя изображения.

kSpriteImageDataAtomType

Атом является листовым атомом, содержащим данные изображения.

kSpriteSharedDataAtomType

Атом является родительским атомом, содержащим совместно используемые данные спрайта, такие как контейнер атома типа kSpriteImagesContainerAtomType.

kSpriteNameAtomType

Атом является листовым атомом, содержащим имя спрайта или изображения. Листовые данные составлены из одного или более символов ASCII.

kSpritePropertyImageIndex

Листовой атом, содержащий изображение, индексирует свойство, имеющее тип short. Этот атом является дочерним атомом kSpriteAtom.

kSpritePropertyLayer

Листовой атом, содержащий свойство слоя, имеющее тип short. Этот атом является дочерним атомом kSpriteAtom.

kSpritePropertyMatrix

Листовой атом, содержащий матричное свойство, имеющее тип MatrixRecord. Этот атом является дочерним атомом kSpriteAtom.

kSpritePropertyVisible

Листовой атом, содержащий видимое свойство, имеющее тип short. Этот атом является дочерним атомом kSpriteAtom.

kSpritePropertyGraphicsMode

Листовой атом, содержащий свойство графического режима, имеющее тип ModifyerTrackGraphicsModeRecord. Этот атом является дочерним атомом kSpriteAtom.

kSpritePropertyBackgroundColor

Листовой атом, содержащий свойство цвета фона, имеющее тип RGBColor. Этот атом используется в дорожке спрайта MediaPropertyAtom контейнер атома.

kSpritePropertyOffscreenBitDepth

Листовой атом, содержащий предпочтительную внеэкранную битовую глубину, имеющую тип short. Этот атом используется в дорожке спрайта MediaPropertyAtom контейнер атома.

kSpritePropertySampleFormat

Листовой атом, содержащий демонстрационное свойство формата, имеющее тип short. Этот атом используется в дорожке спрайта MediaPropertyAtom контейнер атома.

kSpriteImageRegistrationAtomType

Изображения Sprite имеют регистрационную точку по умолчанию 0, 0. Для указания различной точки добавьте атом типа kSpriteImageRegistrationAtomType как дочерний атом kSpriteImageAtomType и набор его листовые данные к a FixedPoint значение с желаемой регистрационной точкой.

kSpriteImageGroupIDAtomType

Необходимо присвоить группу IDs наборам эквивалентных изображений в выборке ключевого кадра. Например, если выборка содержит десять изображений, где первые два изображения эквивалентны, и последние восемь изображений эквивалентны, тогда Вы могли присвоить группу ID 1 000 к первым двум изображениям и группе ID 1 001 к последним восьми изображениям. Это делит изображения на выборку в два набора. Фактический ID не имеет значения, это просто должно быть уникальное положительное целое число.

Каждое изображение в выборке ключевого кадра носителей спрайта присваивается группе. Добавьте атом типа kSpriteImageGroupIDAtomType как дочерний элемент kSpriteImageAtomType атом и набор его листовые данные к длинному, содержащему группу ID.

Важный: Если Вы хотите спрайт к изображениям на дисплее с неэквивалентными описаниями изображения (т.е. изображения с различными размерностями), необходимо присвоить группу IDs выборке спрайта.

Для каждого из следующих типов атома (добавленный к QuickTime 4) — кроме kSpriteBehaviorsAtomType— Вы заполняете структуру QTSpriteButtonBehaviorStruct, который содержит значение для каждого из четырех состояний.

kSpriteBehaviorsAtomType

Это - родительский атом kSpriteImageBehaviorAtomType, kSpriteCursorBehaviorAtomType, и kSpriteStatusStringsBehaviorAtomType.

kSpriteImageBehaviorAtomType

Указывает imageIndex.

kSpriteCursorBehaviorAtomType

Указывает cursorID.

kSpriteStatusStringsBehaviorAtomType

Указывает ID строковой переменной, содержавшейся в дорожке спрайта для отображения в области состояния браузера.

Примечание: Все носители спрайта — в частности листовые данные в контейнерах атома QT для выборки и свойств дорожки спрайта — должны быть записаны в формате с обратным порядком байтов.

kSpriteUsesImageIDsAtomType

Этот атом позволяет спрайту указывать, какие изображения он использует — другими словами, подмножество изображений что imageIndex свойство может относиться к.

Вы добавляете атом типа kSpriteUsesImageIDsAtomType как дочерний элемент a kSpriteAtomType атом, устанавливая его листовые данные в массив атома QT IDs. Этот массив содержит IDs используемых изображений, не индексы.

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

kSpriteImageRegistrationAtomType

Изображения Sprite имеют регистрационную точку по умолчанию 0, 0. Для указания различной точки Вы добавляете атом типа kSpriteImageRegistrationAtomType как дочерний атом kSpriteImageAtomType и набор его листовые данные к a FixedPoint значение с желаемой регистрационной точкой.

kSpriteImageGroupIDAtomType

Необходимо присвоить группу IDs наборам эквивалентных изображений в выборке ключевого кадра. Например, если выборка содержит десять изображений, где первые два изображения эквивалентны, и последние восемь изображений эквивалентны, тогда Вы могли присвоить группу ID 1 000 к первым двум изображениям и группе ID 1 001 к последним восьми изображениям. Это делит изображения на выборку в два набора. Фактический ID не имеет значения; это просто должно быть уникальное положительное целое число.

Каждое изображение в выборке ключевого кадра носителей спрайта присваивается группе. Вы добавляете атом типа kSpriteImageGroupIDAtomType как дочерний элемент kSpriteImageAtomType атом и набор его листовые данные к длинному, содержащему группу ID.

Важный: Если Вы хотите спрайт к изображениям на дисплее с неэквивалентными описаниями изображения (т.е. изображения с различными размерностями), необходимо присвоить группу IDs выборке спрайта.

Вы используете следующие типы атома, добавленные к QuickTime 4, чтобы указать, что на изображение ссылаются и как получить доступ к нему.

kSpriteImageDataRefAtomType

Добавьте этот атом как дочерний элемент kSpriteImageAtomType атом вместо a kSpriteImageDataAtomType. Его ID должен быть 1. Его данные должны содержать ссылку на данные (подобный dataRef параметр GetDataHandler).

kSpriteImageDataRefTypeAtomType

Добавьте этот атом как дочерний элемент kSpriteImageAtomType атом. Его ID должен быть 1. Его данные должны содержать тип ссылки на данные (подобный dataRefType параметр GetDataHandler).

kSpriteImageDefaultImageIndexAtomType

Можно дополнительно добавить этот атом как дочерний элемент kSpriteImageAtomType атом. Его ID должен быть 1. Его данные должны содержать a short, который указывает индекс изображения традиционного изображения для использования при ожидании изображения, на которое ссылаются, для загрузки.

Следующие константы представляют форматы дорожки спрайта. Значение константы указывает, как должны быть интерпретированы выборки переопределения в дорожке спрайта. Вы устанавливаете формат дорожки спрайта путем создания a kSpriteTrackPropertySampleFormat атом.

enum {
    kKeyFrameAndSingleOverride      = 1L << 1,
    kKeyFrameAndAllOverrides        = 1L << 2
};
Постоянные описания
kKeyFrameAndSingleOverride

Текущее состояние дорожки спрайта определяется новой выборкой ключевого кадра и текущей выборкой переопределения. Это - формат по умолчанию.

kKeyFrameAndAllOverrides

Текущее состояние дорожки спрайта определяется новой выборкой ключевого кадра и всеми последующими выборками переопределения до и включая текущую выборку переопределения.

Способы поведения кнопки Sprite

В QuickTime 4 и позже, спрайты в дорожке спрайта могут указать простые способы поведения кнопки. Эти способы поведения могут управлять изображением спрайта, системным курсором и сообщением о состоянии, выведенным на экран в веб-браузере. Они также обеспечивают ярлык для единого набора действий, которые могут привести к более эффективным фильмам в формате QuickTime.

Способы поведения кнопки могут быть добавлены к спрайту. Эти способы поведения предназначаются для создания общей задачи из создания кнопок в дорожке спрайта простой — Вы в основном просто заполняете шаблон.

Три типа способов поведения доступны; можно выбрать одни или более способов поведения. Каждое изменение тип свойства, связанного с кнопкой и, инициировано состояниями мыши notOverNotPressed, overNotPressed, overPressed, и notOverPressed. Эти три измененные свойства:

Установка значения свойства к –1 среднему значению не изменяет его.

Дорожка спрайта обрабатывает разрешение одному действию спрайта как активная кнопка за один раз.

Способы поведения добавляются в начале списка спрайта действий, таким образом, они могут быть переопределены действиями при желании.

Для использования способов поведения Вы заполняете новые атомы следующим образом, с помощью ключа описания, указанного в Ключе Описания Контейнера Atom QT:

kSpriteAtomType
    <kSpriteBehaviorsAtomType>, 1
 
        <kSpriteImageBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteCursorBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteStatusStringsBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]

Ключ описания контейнера Atom QT

Поскольку атом QT, основанные на контейнере структуры данных широко используются в QuickTime, ключ описания, представлен здесь. Его использование проиллюстрировано в следующих разделах, Свойства Дорожки Обработчика Носителей Sprite Формат контейнера Atom QT и Выборка Обработчика Носителей Sprite Форматы контейнера Atom QT.

[(QTAtomFormatName)] =
    atomType_1, id, index
        data
    atomType_n, id, index
        data

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

 // optional atom
 // required atom
<atomType>
atomType

Атом ID может быть числом, если он требуется, чтобы быть константой, или это может быть список допустимого атома IDs, указав, что позволяются многократные атомы этого типа.

3               // one atom with id of 3
(1..3)          // three atoms with id's of 1, 2, and 3
(1, 5, 7)       // three atoms with id's of 1, 5, and 7
(anyUniqueIDs)  // multiple atoms each with a unique id

Индекс атома может быть 1, если только один атом этого типа позволяется, или это может быть диапазон от 1 до некоторой константы или переменный.

1               // one atom of this type is allowed, index is always  1
(1..3)          // three atoms with indexes 1, 2, and 3
(1..numAtoms)   // numAtoms atoms with indexes of 1 to numAtoms

Данные могут быть листовыми данными, в которых его тип данных перечислен в скобках [], или это может быть вложенное дерево атомов.

[theDataType]   // leaf data of type theDataType
childAtoms      // a nested tree of atoms

Вложенный QTAtom определения формата [(AtomFormatName)] могут появиться в определении.

Свойства дорожки обработчика носителей Sprite формат контейнера Atom QT

[(SpriteTrackProperties)]
    <kSpriteTrackPropertyBackgroundColor, 1, 1>
        [RGBColor]
    <kSpriteTrackPropertyOffscreenBitDepth, 1, 1>
        [short]
    <kSpriteTrackPropertySampleFormat, 1, 1>
        [long]
    <kSpriteTrackPropertyScaleSpritesToScaleWorld, 1, 1>
        [Boolean]
    <kSpriteTrackPropertyHasActions, 1, 1>
        [Boolean]
    <kSpriteTrackPropertyVisible, 1, 1>
        [Boolean]
    <kSpriteTrackPropertyQTIdleEventsFrequency, 1, 1>
        [UInt32]

Выборка обработчика носителей Sprite форматы контейнера Atom QT

[(SpriteKeySample)] =
    [(SpritePropertyAtoms)]
    [(SpriteImageAtoms)]
 
 
[(SpriteOverrideSample)] =
    [(SpritePropertyAtoms)]
 
 
[(SpriteImageAtoms)]
    kSpriteSharedDataAtomType, 1, 1
        <kSpriteVariablesContainerAtomType>, 1
            <kSpriteStringVariableAtomType>, (1..n) ID is  SpriteTrack
                            Variable ID to be set
                                                [CString]
            <kSpriteFloatingPointVariableAtomType>, (1..n)  ID is
                            SpriteTrack Variable ID to be set
                                                [float]
 
        kSpriteImagesContainerAtomType, 1, 1
            kSpriteImageAtomType, theImageID, (1 .. numImages)
                kSpriteImageDataAtomType, 1, 1
                    [ImageData is ImageDescriptionHandle prepended  to
                                                            image  data]
                <kSpriteImageRegistrationAtomType, 1, 1>
                    [FixedPoint]
                <kSpriteImageNameAtomType, 1, 1>
                    [pString]
                <kSpriteImageGroupIDAtomType, 1, 1>
                    [long]
 
 
[(SpritePropertyAtoms)]
    <kQTEventFrameLoaded>, 1, 1
        [(ActionListAtoms)]
        <kCommentAtomType>, (anyUniqueIDs), (1..numComments)
            [CString]
 
    kSpriteAtomType, theSpriteID, (1 .. numSprites)
        <kSpritePropertyMatrix, 1, 1>
            [MatrixRecord]
        <kSpritePropertyVisible, 1, 1>
            [short]
        <kSpritePropertyLayer, 1, 1>
            [short]
        <kSpritePropertyImageIndex, 1, 1>
            [short]
        <kSpritePropertyGraphicsMode, 1, 1>
            [ModifierTrackGraphicsModeRecord]
 
        <kSpriteUsesImageIDsAtomType, 1, 1>
            [array of QTAtomID's, one per image used]
 
        <kSpriteBehaviorsAtomType>, 1
 
        <kSpriteImageBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteCursorBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
        <kSpriteStatusStringsBehaviorAtomType>
            [QTSpriteButtonBehaviorStruct]
 
        <[(SpriteActionAtoms)]>
 
 
[(SpriteActionAtoms)] =
    kQTEventType, theQTEventType, (1 .. numEventTypes)
            [(ActionListAtoms)] //see the next section Wired Action
                                //Grammar for a description
            <kCommentAtomType>, (anyUniqueIDs), (1..numComments)
                [CString]

Соединенная проводом грамматика действия

Соединенная проводом грамматика действия, показанная в этом разделе, позволяет обработчикам событий QT быть выраженными в фильме в формате QuickTime. Спрайт, текст, VR, 3D, и обработчики носителей Flash вся поддержка встраивание обработчиков событий QT в их выборках носителей.

[(ActionListAtoms)] =
    kAction, (anyUniqueIDs), (1..numActions)
        kWhichAction    1, 1
            [long whichActionConstant]
        <kActionParameter>  (anyUniqueIDs), (1..numParameters)
            [(parameterData)] ( whichActionConstant, paramIndex  )
    // either leaf data or child atoms
        <kActionFlags>  parameterID,  (1..numParamsWithFlags)
            [long actionFlags]
        <kActionParameterMinValue>  parameterID,  (1.. numParamsWithMin)
            [data depends on param type]
        <kActionParameterMaxValue>  parameterID,  (1.. numParamsWithMax)
            [data depends on param type]
        [(ActionTargetAtoms)]
 
        <kCommentAtomType>, (anyUniqueIDs), (1..numComments)
            [CString]
 
[(ActionTargetAtoms)] =
    <kActionTarget>
        <kTargetMovie>
            [no data]
    <kTargetChildMovieTrackName>
        <PString childMovieTrackName>
    <kTargetChildMovieTrack>
        [IDlong childMovieTrackID]
    <kTargetChildMovieTrackIndex>
            [long childMovieTrackIndex]
        <kTargetChildMovieMovieName>
            [PString childMovieName]
        <kTargetChildMovieMovieID>
            [long childMovieID]
        <kTargetTrackName>
            [PString trackName]
        <kTargetTrackType>
            [OSType trackType]
        <kTargetTrackIndex>
            [long trackIndex]
            OR
            [(kExpressionAtoms)]
        <kTargetTrackID>
            [long trackID]
            OR
            [(kExpressionAtoms)]
        <kTargetSpriteName>
            [PString spriteName]
        <kTargetSpriteIndex>
            [short spriteIndex]
            OR
            [(kExpressionAtoms)]
        <kTargetSpriteID>
            [QTAtomID spriteIID]
            OR
            [(kExpressionAtoms)]
        <kTargetQD3DNamedObjectName>
            [CString objectName]
 
[(kExpressionAtoms)] =
    kExpressionContainerAtomType, 1, 1
        <kOperatorAtomType, theOperatorType, 1>
            kOperandAtomType, (anyUniqueIDs), (1..numOperands)
                [(OperandAtoms)]
        OR
        <kOperandAtomType, 1, 1>
            [(OperandAtoms)]
[(ActionTargetAtoms)] =
    <kActionTarget>
 
        <kTargetMovieName>
            [Pstring MovieName]
        OR
        <kTargetMovieID>
            [long MovieID]
            OR
            [(kExpressionAtoms)]
 
[(OperandAtoms)] =
    <kOperandExpression> 1, 1
        [(kExpressionAtoms)]        // allows for recursion
    OR
    <kOperandConstant> 1, 1
        [ float theConstant ]
    OR
    <kOperandSpriteTrackVariable> 1, 1
        [(ActionTargetAtoms)]
        kActionParameter, 1, 1
            [QTAtomID spriteVariableID]
    OR
    <kOperandKeyIsDown> 1, 1
        kActionParameter, 1, 1
            [UInt16 modifierKeys]
        kActionParameter, 2, 2
            [UInt8 asciiCharCode]
    OR
    <kOperandRandom> 1, 1
        kActionParameter, 1, 1
            [short minimum]
        kActionParameter, 2, 2
            [short maximum]
    OR
    <any other operand atom type>
        [(ActionTargetAtoms)]

Формат для данных параметра зависит от индекса параметра и действия.

В большинстве случаев, kActionParameter атом является листовым атомом, содержащим данные; для нескольких параметров это содержит дочерние атомы.

whichAction соответствует типу действия, указанному листовыми данными a kWhichAction атом.

paramIndex индекс параметра kActionParameter атом.

[(parameterData)] ( whichAction, paramIndex ) =
{
    kActionMovieSetVolume:
        param1:     short volume
 
    kActionMovieSetRate
        param1:     Fixed rate
 
    kActionMovieSetLoopingFlags
        param1:     long loopingFlags
 
    kActionMovieGoToTime
        param1:     TimeValue time
 
    kActionMovieGoToTimeByName
        param1:     Str255 timeName
 
    kActionMovieGoToBeginning
        no params
 
    kActionMovieGoToEnd
        no params
 
    kActionMovieStepForward
        no params
 
    kActionMovieStepBackward
        no params
 
    kActionMovieSetSelection
        param1:     TimeValue startTime
        param2:     TimeValue endTime
 
    kActionMovieSetSelectionByName
        param1:     Str255 startTimeName
        param2:     Str255 endTimeName
 
    kActionMoviePlaySelection
        param1:     Boolean selectionOnly
 
    kActionMovieSetLanguage
        param1:     long language
 
    kActionMovieChanged
        no params
 
    kActionTrackSetVolume
        param1:     short volume
 
    kActionTrackSetBalance
        param1:     short balance
 
    kActionTrackSetEnabled
        param1:     Boolean enabled
 
    kActionTrackSetMatrix
        param1:     MatrixRecord matrix
 
    kActionTrackSetLayer
        param1:     short layer
 
    kActionTrackSetClip
        param1:     RgnHandle clip
 
    kActionSpriteSetMatrix
        param1:     MatrixRecord matrix
 
    kActionSpriteSetImageIndex
        parm1:      short imageIndex
 
    kActionSpriteSetVisible
        param1:     short visible
 
    kActionSpriteSetLayer
        param1:     short layer
 
    kActionSpriteSetGraphicsMode
        param1:     ModifierTrackGraphicsModeRecord graphicsMode
 
    kActionSpritePassMouseToCodec
        no params
 
    kActionSpriteClickOnCodec
        param1:     Point localLoc
 
    kActionSpriteTranslate
        param1:     Fixed x
        param2:     Fixed y
        param3:     Boolean isRelative
 
    kActionSpriteScale
        param1:     Fixed xScale
        param2:     Fixed yScale
 
    kActionSpriteRotate
        param1:     Fixed degrees
 
    kActionSpriteStretch
        param1:     Fixed p1x
        param2:     Fixed p1y
        param3:     Fixed p2x
        param4:     Fixed p2y
        param5:     Fixed p3x
        param6:     Fixed p3y
        param7:     Fixed p4x
        param8:     Fixed p4y
 
 
    kActionQTVRSetPanAngle
        param1:     float panAngle
 
    kActionQTVRSetTiltAngle
        param1:     float tileAngle
 
    kActionQTVRSetFieldOfView
        param1:     float fieldOfView
 
    kActionQTVRShowDefaultView
        no params
 
    kActionQTVRGoToNodeID
        param1:     UInt32 nodeID
 
    kActionMusicPlayNote
        param1:     long sampleDescIndex
        param2:     long partNumber
        param3:     long delay
        param4:     long pitch
        param5:     long velocity
        param6:     long duration
 
    kActionMusicSetController
        param1:     long sampleDescIndex
        param2:     long partNumber
        param3:     long delay
        param4:     long controller
        param5:     long value
 
    kActionCase
        param1:     [(CaseStatementActionAtoms)]
 
    kActionWhile
        param1:     [(WhileStatementActionAtoms)]
 
    kActionGoToURL
        param1:     CString urlLink
 
    kActionSendQTEventToSprite
        param1:     [(SpriteTargetAtoms)]
        param2:     QTEventRecord theEvent
 
    kActionDebugStr
        param1:     Str255 theMessageString
 
    kActionPushCurrentTime
        no params
 
    kActionPushCurrentTimeWithLabel
        param1:     Str255 theLabel
 
    kActionPopAndGotoTopTime
        no params
 
    kActionPopAndGotoLabeledTime
        param1:     Str255 theLabel
 
    kActionSpriteTrackSetVariable
        param1:     QTAtomID variableID
        param2:     float value
 
    kActionApplicationNumberAndString
        param1:     long aNumber
        param2:     Str255 aString
}

И [(CaseStatementActionAtoms)] и [(WhileStatementActionAtoms)] являются дочерними атомами a kActionParameter 1, 1 атом.

[(CaseStatementActionAtoms)] =
    kConditionalAtomType, (anyUniqueIDs), (1..numCases)
        [(kExpressionAtoms)]
        kActionListAtomType 1, 1
            [(ActionListAtoms)] // may contain nested conditional  actions
 
[(WhileStatementActionAtoms)] =
    kConditionalAtomType, 1, 1
        [(kExpressionAtoms)]
        kActionListAtomType 1, 1
            [(ActionListAtoms)] // may contain nested conditional  actions

Носители промежуточного кадра

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

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

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

Демонстрационное описание промежуточного кадра

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

Поле формата данных в демонстрационном описании всегда устанавливается в 'twen'. Обработчик носителей промежуточного кадра не добавляет дополнительных полей к демонстрационному описанию.

Демонстрационные данные промежуточного кадра

Демонстрационные данные промежуточного кадра хранятся в структурах атома QT.

На корневом уровне существуют один или несколько атомов записи промежуточного кадра; эти атомы имеют значение типа атома 'twen'. Каждый атом записи промежуточного кадра полностью описывает одну работу интерполяции. Эти атомы должны быть последовательно пронумерованы, запустившись в 1, с помощью поля ID атома.

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

Промежуточный кадр запускает атом (тип атома 'twst').

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

Атом продолжительности промежуточного кадра (тип атома 'twdu').

Этот атом указывает, сколько времени должна продлиться интерполяция. Время выражено в системе координат времени носителей. Если этот атом не присутствует, продолжительность, как предполагается, является продолжительностью выборки.

Атом данных промежуточного кадра (тип атома 'twdt').

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

Атом типа промежуточного кадра (тип атома 'twnt').

Описывает тип интерполяции для выполнения.

Таблица 4-15 показывает все в настоящее время определяемые типы промежуточного кадра. Все типы промежуточного кадра в настоящее время поддерживаются с помощью линейной интерполяции.

Табличный 4-15  Промежуточный кадр вводит значения

Тип промежуточного кадра

Значение

Данные промежуточного кадра

16-разрядное целое число

1

Два 16-разрядных целых числа.

32-разрядное целое число

2

Два 32-разрядных целых числа.

32-разрядная фиксированная точка

3

Два 32-разрядных числа фиксированной точки.

Точка: два 16-разрядных целых числа

4

Две точки.

Прямоугольник: четыре 16-разрядных целых числа

5

Два прямоугольника.

Область QuickDraw

6

Два прямоугольника и область. Атом записи промежуточного кадра должен содержать a 'qdrg' атом со Значением идентификатора атома 1. Область преобразовывается через получающиеся матрицы.

Матрица

7

Две матрицы.

Цвет RGB: три 16-разрядных целых числа

8

Два цвета RGB.

Графический режим с цветом RGB

9

Два графических режима с цветом RGB. Только цвет RGB интерполирован. Графические режимы должны быть тем же.

Каждый тип промежуточного кадра отличают от других типов эти характеристики:

  • Входные значения или структуры определенного типа

  • Определенное число входных значений или структур (чаще всего один или два)

  • Выходные значения или структуры определенного типа

  • Определенный алгоритм раньше получал выходные значения

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

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

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

Категории типа промежуточного кадра

Каждый из типов промежуточного кадра, поддерживаемых QuickTime, принадлежит одной из этих категорий:

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

  • QuickDraw вставляют промежуточные кадры типы, большинство которых имеет пар структур QuickDraw, таких как точки или прямоугольники, как введено. Для этих типов один или несколько элементов структуры интерполированы, такой как h и v интерполированный значения для точек и каждый элемент интерполированы отдельно от других.

  • 3D типы промежуточного кадра, имеющие QuickDraw 3D структура такой как TQ3Matrix4x4 или TQ3RotateAboutAxisTransformData как введено. Для этих типов определенная 3D трансформация выполняется на данных для генерации вывода.

  • Тип промежуточного кадра многоугольника, берущий три четырехсторонних многоугольника, как введено. Один многоугольник (такой как границы для спрайта или дорожки) преобразовывается, и оба другие указывают запуск и конец диапазона многоугольников, в которые работа промежуточного кадра отображает его. Можно использовать вывод (a MatrixRecord структура данных) для отображения исходного многоугольника в любой промежуточный многоугольник. Промежуточный многоугольник интерполирован от запуска и многоугольников конца в течение каждого определенного времени в продолжительности промежуточного кадра.

  • Типы промежуточного кадра пути, как введшие поток данных вектора QuickTime для пути. Четыре из типов промежуточного кадра пути также как ввели процент длины пути; для этих типов возвращаются или точка на пути или структура данных. Два других типа промежуточного кадра пути обрабатывают путь как функцию: каждый возвращается y значение точки на пути с данным x значение и другие возвраты x значение точки на пути с данным y значение.

  • Тип промежуточного кадра списка, как введший контейнер атома QT, содержащий листовые атомы указанного типа атома. Для этой категории типа промежуточного кадра продолжительность работы промежуточного кадра разделена на число листовых атомов указанного типа. Для моментов времени в первом временном разделении возвращаются данные для первого листового атома; для подразделения второго раза возвращаются данные для второго листового атома; и т.д. Получающаяся работа промежуточного кадра продолжается на дискретных шагах (один шаг для каждого листового атома) вместо относительно непрерывной вставки промежуточных кадров, произведенной другими категориями типа промежуточного кадра.

Промежуточный кадр контейнер Atom QT

Характеристики промежуточного кадра указаны атомами в промежуточном кадре контейнер атома QT.

Промежуточный кадр контейнер атома QT может содержать атомы, описанные в следующих разделах.

Общие атомы промежуточного кадра

kTweenEntry

Указывает атом промежуточного кадра, который может быть или единственным атомом промежуточного кадра, атомом промежуточного кадра в последовательности промежуточного кадра или атомом промежуточного кадра интерполяции.

Его родитель является промежуточным кадром контейнер атома QT (который Вы указываете с константой kParentAtomIsContainer).

Индекс a kTweenEntry атом указывает, когда он был добавлен к контейнеру атома QTr; добавленное первое имеет индекс 1, вторые 2, и т.д. ID a kTweenEntry атомом может быть любой ID, который уникален среди kTweenEntry атомы содержатся в том же контейнере атома QuickTime.

Этот атом является родительским атомом. Это должно содержать следующие дочерние атомы:

  • A kTweenType атом, указывающий тип промежуточного кадра.

  • Один или больше kTweenData атомы, содержащие данные для атома промежуточного кадра. Каждый kTweenData атом может содержать различные данные, которые будут обработаны компонентом промежуточного кадра, и компонент промежуточного кадра может обработать данные от только одного kTweenData атом время. Например, приложение может использовать промежуточный кадр списка для анимации спрайтов. kTweenEntry атом для атома промежуточного кадра мог содержать три набора данных анимации, один для перемещения спрайта слева направо, один для перемещения спрайта справа налево, и один для перемещения спрайта сверху донизу. В этом случае, kTweenEntry атом для атома промежуточного кадра содержал бы три kTweenData атомы, один для каждого набора данных. Приложение указывает желаемый набор данных путем указания ID kTweenData атом для использования.

    A kTweenEntry атом может содержать любой из следующих дополнительных дочерних атомов:

  • A kTweenStartOffset атом, указывающий временной интервал, начинающийся в начале выборки носителей промежуточного кадра, после которой начинается работа промежуточного кадра. Если этот атом не включен, работа промежуточного кадра начинается в начале выборки носителей промежуточного кадра.

  • A kTweenDuration атом, указывающий продолжительность работы промежуточного кадра. Если этот атом не включен, продолжительность работы промежуточного кадра является продолжительностью выборки носителей, содержащей его.

    Если a kTweenEntry атом указывает промежуточный кадр пути, он может содержать следующий дополнительный дочерний атом:

  • A kTweenFlags атом, содержащий флаги, управляющие работой промежуточного кадра. Если этот атом не включен, никакие флаги не установлены.

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

    Если a kTweenEntry атом указывает дорожку промежуточного кадра интерполяции, он должен содержать следующие дочерние атомы:

  • A kTweenInterpolationID атом для каждого kTweenData атом, который будет интерполирован. ID каждого kTweenInterpolationID атом должен соответствовать ID kTweenData атом, который будет интерполирован. Данные для a kTweenInterpolationID атом указывает a kTweenEntry атом, содержащий дорожку промежуточного кадра интерполяции для использования для kTweenData атом.

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

  • A kTweenOutputMin атом, указывающий значение минимальной производительности атома промежуточного кадра интерполяции. Значение этого атома используется, только если существует также a kTweenOutputMax атом с тем же родителем. Если этот атом не включен и существует a kTweenOutputMax атом с тем же родителем, компонентным использованием промежуточного кадра 0 как минимальное значение при масштабировании выходных значений интерполяции вставляют промежуточные кадры дорожка.

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

kTweenStartOffset

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

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenStartOffset атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных TimeValue.

Этот атом является дополнительным. Если это не включено, работа промежуточного кадра начинается в начале выборки носителей промежуточного кадра.

kTweenDuration

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

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenDuration атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных TimeValue.

Этот атом является дополнительным. Если это не включено, продолжительность работы промежуточного кадра является продолжительностью выборки носителей, содержащей его.

kTweenData

Содержит данные для атома промежуточного кадра.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать любое число kTweenData атомы.

Индекс a kTweenData атом указывает, когда он был добавлен к kTweenEntry атом; добавленное первое имеет индекс 1, вторые 2, и т.д. ID a kTweenData атомом может быть любой ID, который уникален среди kTweenData атомы содержатся в том же kTweenEntry атом.

По крайней мере один kTweenData атом требуется в a kTweenEntry атом.

Для единственных атомов промежуточного кадра, a kTweenData атом является листовым атомом. Это может содержать данные любого типа.

Для атомов промежуточного кадра многоугольника, a kTweenData атом является листовым атомом. Тип данных его данных Fixed[27], который указывает три многоугольника.

Для промежуточных кадров пути, a kTweenData атом является листовым атомом. Тип данных его данных Handle, который содержит вектор QuickTime.

В атомах промежуточного кадра интерполяции, a kTweenData атом является листовым атомом. Это может содержать данные любого типа. Атом промежуточного кадра интерполяции может быть любыми атомами промежуточного кадра кроме атома промежуточного кадра списка, возвращающего временную стоимость.

В атомах промежуточного кадра списка, a kTweenData атом является родительским атомом, который должен содержать следующие дочерние атомы:

  • A kListElementType атом, указывающий тип атома элементов атома промежуточного кадра.

  • Один или более листовых атомов типа, указанного kListElementType атом. Данные для каждого атома являются результатом работы промежуточного кадра списка.

kNameAtom

Указывает имя атома промежуточного кадра. Имя, которое является дополнительным, не используется компонентами промежуточного кадра, но оно может использоваться приложениями или другим программным обеспечением.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kNameAtom атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Его тип данных String.

Этот атом является дополнительным. Если это не включено, атом промежуточного кадра не имеет имени.

kTweenType

Указывает тип промежуточного кадра (тип данных данных для работы промежуточного кадра).

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenType атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных OSType.

Этот атом требуется.

Атомы промежуточного кадра пути
kTweenFlags

Содержит флаги, управляющие работой промежуточного кадра. Один флаг, управляющий атомами промежуточного кадра пути, определяется:

  • kTweenReturnDelta флаг применяется только для соединения каналом атомов промежуточного кадра (промежуточные кадры типа kTweenTypePathToFixedPoint, kTweenTypePathToMatrixTranslation, kTweenTypePathToMatrixTranslationAndRotation, kTweenTypePathXtoY, или kTweenTypePathYtoX). Если флаг установлен, компонент промежуточного кадра возвращает изменение в значении с прошлого раза, когда это было вызвано. Если флаг не установлен, или если компонент промежуточного кадра не был ранее вызван, компонент промежуточного кадра возвращает нормальный результат для атома промежуточного кадра.

    Его родительский атом является a kTweenEntry атом.

    A kTweenEntry атом может содержать только один kTweenFlags атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

    Этот атом является листовым атомом. Тип данных его данных Long.

    Этот атом является дополнительным. Если это не включено, никакие флаги не установлены.

kInitialRotationAtom

Указывает начальный угол вращения для атома промежуточного кадра пути типа kTweenTypePathToMatrixRotation, kTweenTypePathToMatrixTranslation, или kTweenTypePathToMatrixTranslationAndRotation.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kInitialRotationAtom атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Его тип данных Fixed.

Этот атом является дополнительным. Если это не включено, никакое начальное вращение атома промежуточного кадра не выполняется.

Атомы промежуточного кадра списка
kListElementType

Указывает тип атома элементов в атоме промежуточного кадра списка.

Его родительский атом является a kTweenData атом.

A kTweenEntry атом может содержать только один kListElementType атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Его тип данных QTAtomType.

Этот атом требуется в kTweenData атом для атома промежуточного кадра списка.

3D атомы промежуточного кадра
kTween3dInitialCondition

Указывает начальное преобразование для 3D атома промежуточного кадра, тип промежуточного кадра которого является одним из следующего: kTweenType3dCameraData, kTweenType3dMatrix, kTweenType3dQuaternion, kTweenType3dRotate, kTweenType3dRotateAboutAxis, kTweenType3dRotateAboutAxis, kTweenType3dRotateAboutPoint, kTweenType3dRotateAboutVector, kTweenType3dScale, или kTweenType3dTranslate.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTween3dInitialCondition атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных является одним из значений, перечисленных в Таблице 4-16.

Табличные 4-16  типы Промежуточного кадра

Тип промежуточного кадра

Тип данных

kTweenType3dCameraData

TQ3CameraData

kTweenType3dMatrix

TQ3Matrix4x4

kTweenType3dQuaternion

TQ3Quaternion

kTweenType3dRotate

TQ3RotateTransformData

kTweenType3dRotateAboutAxis

TQ3RotateAboutAxisTransformData

kTweenType3dRotateAboutPoint

TQ3RotateAboutPointTransformData

kTweenType3dRotateAboutVector

TQ3PlaneEquation

kTweenType3dScale

TQ3Vector3D

kTweenType3dTranslate

TQ3Vector3D

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

Атомы промежуточного кадра интерполяции
kTweenOutputMax

Указывает максимальное выходное значение атома промежуточного кадра интерполяции. Если a kTweenOutputMax атом включен для промежуточного кадра интерполяции, выходные значения для атома промежуточного кадра масштабируются, чтобы быть в минимальных и максимальных значениях. Минимальное значение является любой значением kTweenOutputMin атом или, если существует нет kTweenOutputMin атом, 0. Например, если атом промежуточного кадра интерполяции имеет значения между 0 и 4, и он имеет kTweenOutputMin и kTweenOutputMax атомы со значениями 1 и 2, соответственно, значением 0 (минимальное значение прежде, чем масштабироваться) масштабируются к 1 (минимум, указанный kTweenOutputMin атом), значение 4 (максимальное значение прежде, чем масштабироваться) масштабируется к 2 (максимум, указанный kTweenOutputMax атом), и значение 3 (три четверти пути между максимальными и минимальными значениями прежде, чем масштабироваться) масштабируется к 1,75 (три четверти пути между значениями kTweenOutputMin и kTweenOutputMax атомы).

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenOutputMax атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных Fixed.

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

kTweenOutputMin

Указывает значение минимальной производительности атома промежуточного кадра интерполяции. Если оба kTweenOutputMin и kTweenOutputMax атомы включены для атома промежуточного кадра интерполяции, выходные значения для атома промежуточного кадра масштабируются, чтобы быть в минимальных и максимальных значениях. Например, если атом промежуточного кадра интерполяции имеет значения между 0 и 4, и он имеет kTweenOutputMin и kTweenOutputMax атомы со значениями 1 и 2, соответственно, значением 0 (минимальное значение прежде, чем масштабироваться) масштабируются к 1 (минимум, указанный kTweenOutputMin атом), значение 4 (максимальное значение прежде, чем масштабироваться) масштабируется к 2 (максимум, указанный kTweenOutputMax атом), и значение 3 (три четверти пути между максимальными и минимальными значениями прежде, чем масштабироваться) масштабируется к 1,75 (три четверти пути между значениями kTweenOutputMin и kTweenOutputMax атомы).

Если a kTweenOutputMin атом включен, но a kTweenOutputMax атом не, QuickTime не масштабирует значения промежуточного кадра интерполяции.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenOutputMin атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных Fixed.

Этот атом является дополнительным. Если это не включено, но a kTweenOutputMax атом, компонентное использование промежуточного кадра 0 как минимальное значение для масштабирования значений атома промежуточного кадра интерполяции.

kTweenInterpolationID

Указывает атом промежуточного кадра интерполяции для использования для указанного kTweenData атом. Может быть любое число kTweenInterpolationID атомы для атома промежуточного кадра, один для каждого kTweenData атом, который будет интерполирован.

Его родительский атом является a kTweenEntry атом.

Индекс a kTweenInterpolationID атом указывает, когда он был добавлен к kTweenEntry атом; добавленное первое имеет индекс 1, вторые 2, и т.д. ID a kTweenInterpolationID атом должен соответствовать атому ID kTweenData атом, который будет интерполирован и будет уникален среди kTweenInterpolationID атомы содержатся в том же kTweenEntry атом.

Этот атом является листовым атомом. Тип данных его данных QTAtomID.

Этот атом требуется для атома промежуточного кадра интерполяции.

Атомы промежуточного кадра области
kTweenPictureData

Содержит данные для изображения QuickDraw. Используемый только a kTweenTypeQDRegion атом.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenPictureData или kTweenRegionData атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных Picture.

Любой a kTweenPictureData или kTweenRegionData атом требуется для kTweenTypeQDRegion атома.

kTweenRegionData

Содержит данные для области QuickDraw. Используемый только a kTweenTypeQDRegion атом.

Его родительский атом является a kTweenEntry атом.

A kTweenEntry атом может содержать только один kTweenRegionData или kTweenPictureData атом. ID этого атома всегда равняется 1. Индекс этого атома всегда равняется 1.

Этот атом является листовым атомом. Тип данных его данных Region.

Любой a kTweenPictureData или kTweenRegionData атом требуется для a kTweenTypeQDRegion промежуточный кадр.

Атомы промежуточного кадра последовательности
kTweenSequenceElement

Указывает запись в последовательности промежуточного кадра.

Его родитель является промежуточным кадром контейнер атома QT (который Вы указываете с константой kParentAtomIsContainer).

ID a kTweenSequenceElement атом должен быть уникальным среди kTweenSequenceElement атомы в том же контейнере атома QT. Индекс a kTweenSequenceElement атом указывает свой порядок в последовательности; первая запись в последовательности имеет индекс 1, вторые 2, и т.д.

Этот атом является листовым атомом. Тип данных его данных TweenSequenceEntryRecord, структура данных, содержащая следующие поля:

endPercent

Значение типа Fixed это указывает точку в продолжительности выборки носителей промежуточного кадра, при которой заканчивается запись последовательности. Это выражено как процент; например, если значение 75.0, концы записи последовательности после того, как протекли три четверти общей продолжительности выборки носителей промежуточного кадра. Запись последовательности начинается после конца предыдущей записи последовательности или, для первой записи в последовательности, в начале выборки носителей промежуточного кадра.

tweenAtomID

Значение типа QTAtomID это указывает kTweenEntry атом, содержащий промежуточный кадр для элемента последовательности. kTweenEntry атом и kTweenSequenceElement атом должен оба быть дочерними атомами того же промежуточного кадра контейнер атома QT.

dataAtomID

Значение типа QTAtomID это указывает kTweenData атом, содержащий данные для промежуточного кадра. Этот атом должен быть дочерним атомом атома, указанного tweenAtomID поле.

Дорожки модификатора

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

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

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

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

Посмотрите Фильмы Создания с Дорожками Модификатора для получения дополнительной информации об использовании дорожек модификатора.

Ограничения пространственных дорожек модификатора

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

Чтобы гарантировать, что фильм поддерживает постоянное расположение и размер, Панель инструментов Фильма ограничивает область, в которой может быть выведена на экран пространственно измененная дорожка. «Естественная» форма фильма определяется областью, возвращенной GetMovieBoundsRgn функция. Панель инструментов отсекает все пространственно измененные дорожки против области, возвращенной GetMovieBoundsRgn. Это означает, что дорожка может переместиться за пределами ее начальных граничных областей, но она не может переместиться вне объединенных начальных граничных областей всех дорожек в фильме. Области, раскрытые движущейся дорожкой, обрабатываются панелью инструментов таким же образом как области, раскрытые дорожками с пустыми редактированиями.

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

Ссылки дорожки

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

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

Ссылки дорожки также используются для создания списков главы, как описано в Списках Главы.

Каждая дорожка фильма содержит список своих ссылок дорожки. Каждая ссылка дорожки идентифицирует другую связанную дорожку. Та связанная дорожка идентифицируется ее идентификатором дорожки. Сама ссылка дорожки содержит информацию, позволяющую Вам классифицировать ссылки типом. Эта информация типа хранится в OSType тип данных. Вы свободны указать любое значение типа, которое Вы хотите. Отметьте, однако, что Apple зарезервировал все строчные значения типа.

Можно создать столько ссылок дорожки, сколько Вы хотите, и можно создать больше чем одну ссылку данного типа. Каждая ссылка дорожки данного типа присваивается индексное значение. Индексные значения запускаются в 1 для каждого различного ссылочного типа. Панель инструментов Фильма поддерживает эти индексные значения, так, чтобы они всегда запустили в 1 и количество 1.

Используя AddTrackReference функция, можно связать одну дорожку с другим. DeleteTrackReference функция удалит то отношение. SetTrackReference и GetTrackReference функции позволяют Вам изменять существующую ссылку дорожки так, чтобы она идентифицировала различную дорожку. GetNextTrackReferenceType и GetTrackReferenceCount функции позволяют Вам сканировать все ссылки дорожки дорожки.

Для списка ссылочных типов дорожки посмотрите Ссылочные Атомы Дорожки.

Списки главы

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

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

Для создания списка главы необходимо создать текстовую дорожку с одной выборкой для каждой главы. Время дисплея для каждой выборки соответствует точке в фильме, отмечающем начало той главы. Необходимо также создать ссылку дорожки типа 'chap' от включенной дорожки фильма к текстовой дорожке. Это 'chap' отследите ссылку, превращающую текстовую дорожку в список главы. Дорожка, содержащая ссылку, может иметь любой тип (аудио, видео, MPEG, и т.д.), но это должно быть позволено для списка главы быть распознанным.

Учитывая включенную дорожку myVideoTrack, например, можно использовать AddTrackReference функция для создания ссылки главы:

    AddTrackReference( myVideoTrack, theTextTrack,
        kTrackReferenceChapterList,
        &addedIndex );

kTrackReferenceChapterList определяется в Movies.h. Это имеет значение 'chap'.

Текстовая дорожка, составляющая список главы, не должна быть включена, и обычно не. Если это будет включено, то текстовая дорожка будет выведена на экран как часть фильма, точно так же, как любая другая текстовая дорожка, в дополнение к функционированию как список главы.

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

3D Носители

Фильмы в формате QuickTime хранят 3D данные изображения в основные носители. Это носители имеет тип среды 'qd3d'.

3D демонстрационное описание

3D демонстрационное описание использует стандартный демонстрационный заголовок описания, как описано в Демонстрационных Табличных Атомах.

Поле формата данных в демонстрационном описании всегда устанавливается в 'qd3d'. 3D обработчик носителей не добавляет дополнительных полей к демонстрационному описанию.

3D демонстрационные данные

3D выборки сохранены в 3D формате Метафайла, разработанном для 3D QuickDraw.

Потоковые медиа

Фильмы в формате QuickTime хранят данные потоковой передачи в дорожке потоковых медиа. Это носители имеет тип среды 'strm'.

Демонстрационное описание потоковых медиа

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

Демонстрационное описание потоковых медиа документируется в заголовочный файл QuickTime QTSMovie.h, как показано в Перечислении 4-1.

  Демонстрационное описание Потоковых медиа перечисления 4-1

struct QTSSampleDescription {
    long                            descSize;
    long                            dataFormat;
    long                            resvd1;     /* set to 0*/
    short                           resvd2;     /* set to 0*/
    short                           dataRefIndex;
    UInt32                          version;
    UInt32                          resvd3;     /* set to 0*/
    SInt32                          flags;
                                                /* qt atoms follow:*/
                                    /* long size, long type, some  data*/
                                                /* repeat as necessary*/
};
typedef struct QTSSampleDescription     QTSSampleDescription;

Демонстрационный формат зависит от dataFormat поле QTSSampleDescription. dataFormat поле может быть любым значением, которое Вы указываете. В настоящее время определяемые значения 'rtsp' и 'sdp '.

Если 'rtsp', выборкой может быть просто rtsp URL. Это может также быть любое значение, что можно вставить a .rtsp файл, как определено в

http://streaming.apple.com/qtstreaming/documentation/userdocs/rtsptags.htm

Если 'sdp ', тогда выборка является файлом SDP. Это использовалось бы для получения многоадресной широковещательной передачи.

Носители подсказки

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

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

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

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

Как правило, вывод подсказок выполняется носителями packetizer компоненты. QuickTime выбирает надлежащие носители packetizer для каждой дорожки и направляет вывод каждого packetizer через предоставленного Apple пакетного разработчика для создания дорожки подсказки. Одна дорожка подсказки создается для каждой streamable дорожки в фильме.

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

Поддержка потоковой передачи в формате файла QuickTime основана на следующих соображениях:

Получающиеся потоки, отправленные серверами под направлением дорожек подсказки, не должны содержать трассировку информации о QuickTime. Этот подход не требует, чтобы QuickTime, или его структуры или стиль объявления, использовался или в данных по проводу или в станции декодирования. Например, файл QuickTime с помощью видео H.261 и аудио DVI, переданного потоком в соответствии с Протоколом реального времени (RTP), приводит к потоку пакетов, который полностью совместим со спецификациями IETF для упаковки тех codings в RTP.

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

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

Добавление дорожек подсказки к фильму

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

Демонстрационное время выборки подсказки соответствует демонстрационному времени носителей, содержавшихся в пакетах, сгенерированных той выборкой подсказки. Выборка подсказки может также содержать время передачи для каждого пакета. (Формат для выборки подсказки является определенным для типа дорожки подсказки.)

Дорожка подсказки может иметь различный масштаб времени, чем свои дорожки носителей, на которые ссылаются.

flags поле в атоме заголовка дорожки ('tkhd') должен быть установлен в 0x000000, указав, что дорожка неактивна и не является частью фильма, предварительного просмотра или плаката.

subType поле атома описания обработчика ('hdlr') содержит 'hint', указание, что тип среды является подсказками пакетирования.

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

  • Выравнивание (когда существуют списки редактирования),

  • Добавление или удаление выборок

  • Изменение масштаба времени дорожки

  • Изменение демонстрационных описаний

Atom заголовка носителя подсказки пакетирования

В фильмах в формате QuickTime, атом информации о носителях ('minf') содержит данные заголовка, определенные для носителей. Для дорожек подсказки заголовок носителя является основным атомом информации о носителях ('gmhd'). Дорожка подсказки должна содержать основной атом информации о носителях.

Пользовательский Atom данных дорожки подсказки

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

  • Пользовательский тип атома данных 'hinf'.

Это содержит статистику для дорожки подсказки. 'hinf' атом содержит дочерние атомы, как определено в Таблице 4-17. В некоторых случаях, существуют и 32-разрядные и 64-разрядные доступные счетчики. Должны быть проигнорированы любые неизвестные типы.

  • Пользовательский тип атома данных 'hnti'.

Это может содержать дочерние атомы. Дочерние атомы, запускающиеся с 'sdp ' (отметьте, снова, пространство), содержите текст SDP для этой дорожки. Текст от этих дочерних атомов должен быть вставлен в надлежащее место в тексте SDP для фильма после любого общего текста SDP. Это походит на уровень фильма 'hnti' атом.

Информационный Atom подсказки фильма

Фильм может содержать 'hnti' пользовательский атом данных фильма, который может содержать один или несколько дочерних атомов. Дочернее содержание атома запускается с 4 байтов, указывающих транспорт и 4 байта, указывающие тип данных, содержавшихся в остальной части дочернего атома. В настоящее время единственный определенный транспорт 'rtp ' (отметьте пространство), и единственный определенный тип данных содержания 'sdp ' (отметьте пространство). Должны быть пропущены дочерние атомы, транспорт которых или комбинации типа Вы не распознаете.

Текст в атоме типа 'rtp sdp ' должен быть вставлен (в надлежащем месте) в информацию SDP, сгенерированную от этого файла (например, сервером потоковой передачи) перед любой информацией SDP для определенных дорожек.

Таблица 4-17 описывает тип и значения 'hnti' атом.

Таблица 4-17  'hinf' тип атома, содержащий дочерние атомы

Ввести

Значение

Описание

'trpY´

8 байтов

Общее количество байтов, которые будут отправлены, включая 12-байтовые заголовки RTP, но не включая любые сетевые заголовки.

'totl'

4 байта

4-байтовая версия 'trpY´

'nump'

8 байтов

Общее количество сетевых пакетов, которые будут отправлены (если приложение знает, существует 28-байтовый сетевой заголовок, оно может умножиться 28 этим числом и добавить его к 'trpY´ значение для получения истинного числа байтов отправило.

'npck'

4 байта

4-байтовая версия 'nump'

'tpyl'

8 байтов

Общее количество байтов, которые будут отправлены, не включая 12-байтовые заголовки RTP.

'tpaY´

4 байта

4-байтовая версия 'tpyl'

'maxr'

8 байтов

Максимальная скорость передачи данных. Этот атом содержит два числа: g, сопровождаемый m (оба 32-разрядных значения). g является гранулярностью в миллисекундах. m является максимальной скоростью передачи данных, данной ту гранулярность.

Например, если g составляет 1 секунду, то m является максимальной скоростью передачи данных за любую 1 секунду. Там может быть многократным 'maxr' атомы, с различными значениями для g. Максимальное вычисление скорости передачи данных не включает сетевых заголовков (но действительно включает 12-байтовые заголовки RTP).

'dmed'

8 байтов

Число байтов от носителей отслеживает, чтобы быть отправленным.

'dimm'

8 байтов

Число байтов непосредственных данных, которые будут отправлены.

'drep'

8 байтов

Число байтов повторных данных, которые будут отправлены.

'tmin'

4 байта

Самое маленькое относительное время передачи, в миллисекундах.

'tmax'

4 байта

Самое большое относительное время передачи, в миллисекундах.

'pmax'

4 байта

Самый большой пакет, в байтах; включает 12-байтовый заголовок RTP.

'dmax'

4 байта

Самая большая пакетная продолжительность, в миллисекундах.

'payt'

Переменная

Тип полезной нагрузки, включающий число полезной нагрузки (32 бита), сопровождаемые rtpmap строка полезной нагрузки (строка Паскаля).

Нахождение исходной дорожки носителей от дорожки подсказки

Как любая другая дорожка QuickTime, дорожки подсказки могут содержать ссылочные атомы дорожки. Точно один из них должен иметь ссылочный тип дорожки 'hint', и его внутренний список должен содержать по крайней мере одну дорожку ID, который является дорожкой ID исходной дорожки носителей. Как другие ссылочные атомы дорожки, могут быть пустые ссылки в этом списке, обозначенном дорожкой ID 0. Для дорожек подсказки, относящихся больше чем к одной дорожке, индекс (запускающийся в 1, и включая любые 0 записей) используется в поле справочного указателя дорожки носителей в некоторых пакетных режимах записи таблицы данных.

Например, если у Вас есть видео MPEG 1 в аудио уровня 2 ID 11 и MPEG 1 дорожки в ID 12 дорожки, и Вы создаете дорожку подсказки RTP, инкапсулирующую их в транспорте MPEG 2, необходимо обратиться к обеим дорожкам. Можно также предположить, что существуют некоторые пустые записи и другие ссылки дорожки в ссылочном списке атома атома дорожки подсказки. Таким образом, это могло бы быть похожим на это: 11, 0, 0, 14, 0, 12, 0. При сборке пакетов от аудиотреков и видеотреков 11 и 12 Вы используете их индексы списка (1 и 6) в дорожке носителей касательно индексного поля.

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

Дорожки подсказки RTP

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

В RTP каждый мультимедийный поток, такой как аудиотрек или видеотрек, отправляется как отдельный поток RTP. Следовательно, каждая дорожка носителей в фильме имеет связанную дорожку подсказки RTP, содержащую данные, необходимые для packetize это для транспорта RTP, и каждая дорожка подсказки содержит ссылку дорожки назад на ее связанную дорожку носителей.

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

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

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

Это - исключение, а не правило, как бы то ни было. В целом мультиплексирование достигается при помощи мультиплексирования уровня порта IP, не путем чередования данных от многократных потоков в единственный сеанс RTP.

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

Демонстрационный формат данных подсказки

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

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

Демонстрационное описание для дорожек подсказки определяется в Таблице 4-18.

Табличная 4-18  Подсказка отслеживает демонстрационное описание

Поле

Байты

Размер

4

Формат данных

4

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

6

Индекс ссылки на данные

2

Версия дорожки подсказки

2

В последний раз совместимая подсказка отслеживает версию

2

Максимальный размер пакета

4

Дополнительная таблица данных

переменная

Полевые описания
Размер

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

Формат данных

Четыре кода символа, указывающие формат данных подсказки, отслеживают выборки. Только 'rtp ' в настоящее время определяется. Обратите внимание на то, что четвертый символ в 'rtp ' пробел ASCII (0x20). Не пытайтесь к packetize данным, формат которых Вы не распознаете.

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

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

Индекс ссылки на данные

Это поле косвенно указывает, где счесть дорожку подсказки демонстрационными данными. Ссылка на данные является файлом, или ресурс указал по условию ссылочный атом ('dref') в атоме информации о данных ('dinf') из дорожки подсказки. Атом информации о данных может содержать таблицу ссылок на данные, и индекс ссылки на данные является 16-разрядным целым числом, говорящим Вам, какая запись в той таблице должна использоваться. Обычно, дорожка подсказки имеет единственную ссылку на данные, и этот элемент индекса установлен в 0.

Версия дорожки подсказки

16-разрядное целое без знака, указывающее версию подсказки, отслеживает спецификацию. Это в настоящее время устанавливается в 1.

В последний раз совместимая подсказка отслеживает версию

16-разрядное целое без знака, указывающее самую старую подсказку, отслеживает версию, с которой эта дорожка подсказки обратно совместима. Если Ваше приложение понимает версию дорожки подсказки, указанную этим полем, это может работать с этой дорожкой подсказки.

Максимальный размер пакета

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

Дополнительная таблица данных

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

Это поле всегда содержит маркированную запись, указывающую масштаб времени RTP для данных RTP. Все другие маркированные записи являются дополнительными.

Три тега данных в настоящее время определяются для данных RTP. Один тег определяется для использования с любым типом данных. Можно создать дополнительные теги. Теги идентифицируются с помощью четырех кодов символов. Теги с помощью всех строчных букв резервируются Apple. Проигнорируйте любые маркированные данные, которые Вы не понимаете.

Записи таблицы структурированы как атомы. Структура записей таблицы показана в Таблице 4-19.

Таблица 4-19  структура записей таблицы

Поле

Формат

Байты

Продолжительность записи

32-разрядное целое число

4

Тег данных

Код с 4 символами

4

Данные

Переменная

Продолжительность записи - 8

Маркированные записи для 'rtp ' формат данных определяется следующим образом:

'tims'

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

'tsro'

32-разрядное целое число, указывающее смещение для добавления к сохраненной метке времени при отправке пакетов RTP. Если эта запись не присутствует, случайное смещение должно использоваться, как указано IETF. Если эта запись 0, используйте смещение 0 (никакое смещение).

'snro'

32-разрядное целое число, указывающее смещение для добавления к порядковому номеру при отправке пакетов RTP. Если эта запись не присутствует, случайное смещение должно использоваться, как указано IETF. Если эта запись 0, используйте смещение 0 (никакое смещение).

Демонстрационные данные подсказки пакетирования для формата данных 'rtp'

В этом разделе описываются демонстрационные данные для 'rtp ' формат. 'rtp ' формат предполагает, что сервер отправляет данные с помощью Транспортного протокола реального времени (RTP). Этот формат также предполагает, что сервер «знает» о заголовках RTP, но не требует, чтобы сервер знал что-либо об определенных заголовках носителя, включая заголовки носителя, определенные в различных проектах IETF.

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

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

Масштаб времени дорожки подсказки RTP должен быть обоснованно выбран так, чтобы там соответствовал, располагая с интервалами между выборками (а также соответствующий интервал между временами передачи для пакетов в выборке).

Демонстрационные данные подсказки пакетирования содержат элементы данных, перечисленные в Таблице 4-20.

Табличное 4-20  Пакетирование подсказывает элементы данных

Демонстрационные данные подсказки пакетирования

Байты

Количество записи

2

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

2

Пакетная таблица записи

Переменная

Дополнительные данные

Переменная

Полевые описания
Количество записи

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

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

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

Пакетная таблица записи

Таблица переменной длины, содержащая пакетные записи. Пакетные записи определяются ниже.

Дополнительные данные

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

Пакетная запись содержит элементы данных, перечисленные в Таблице 4-21.

Табличные 4-21  Пакетные элементы данных записи

Пакетная запись

Байты

Относительное время передачи пакетов

4

Информация заголовка RTP

2

Порядковый номер RTP

2

Флаги

2

Количество записи

2

Дополнительная информация TLVs

0 или переменная

Таблица данных

переменная

Относительное время передачи пакетов

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

Информация заголовка RTP

16-разрядное целое число, указывающее различные значения, которые будут установлены в заголовке RTP. Биты поля определяются следующим образом.

../art/qtff_l_t1.gif

Поле информации заголовка RTP содержит элементы, перечисленные в Таблице 4-22.

Таблица 4-22  элементы информации заголовка RTP

Поле

Bit#

Описание

P

2

1-разрядное число, соответствующее дополнению (P), укусило в заголовке RTP. Этот бит не должен, вероятно, быть установлен, так как сервер, которому нужно различное пакетное дополнение, должен был бы не дополнить и повторно дополнить сам пакет.

X

3

1-разрядное число, соответствующее расширению (X) бит в заголовке RTP. Этот бит не должен, вероятно, быть установлен, так как сервер, который должен отправить его собственное расширение RTP, или не был бы в состоянии или будет вынужден заменить любые расширения от дорожки подсказки.

M

8

1-разрядное число, соответствующее маркеру (M), укусило в заголовке RTP.

Тип полезной нагрузки

9-15

7-разрядное число, соответствующее полю типа полезной нагрузки (PT) заголовка RTP.

Все неопределенные биты резервируются и должны быть обнулены. Обратите внимание на то, что расположение определенных битов находится в том же местоположении бита как в заголовке RTP.

Порядковый номер RTP

16-разрядное целое число, указывающее порядковый номер RTP для этого пакета. Сервер RTP добавляет случайное смещение к этому порядковому номеру прежде, чем передать пакет. Это поле позволяет повторную передачу пакетов — например, тот же пакет может быть собран с тем же порядковым номером и различное (более позднее) время передачи пакетов. Каждые 10 секунд может ретранслироваться текстовая выборка с продолжительностью 5 минут, так, чтобы клиенты, пропускающие исходную демонстрационную передачу (возможно, они начали проигрывать фильм в середине) были обновлены максимум после 10 секунд.

Флаги

16-разрядное поле, указывающее определенные атрибуты для этого пакета. Определенные биты показаны на рисунке 4-18.

  Пакет рисунка 4-18 приписывает флаги
Количество записи

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

Дополнительная информация TLVs

Дополнительные информационные TLVs, перечисленные в Таблице 4-23, присутствуют, если и только если X биты установлены в поле флагов. Это обеспечивает способ расширить формат дорожки подсказки, не изменяя версию при разрешении обратной совместимости.

Таблица 4-23  Дополнительная информация TLVs

Дополнительная информация TLVs

Байты

Дополнительный информационный размер

4

Размер TLV

4

Тип TLV

4

Данные TLV

Дополненный к 4-байтовой границе (интервал (Размер TLV-8 +3) / 4 * 4

Размер TLV

4

Тип TLV

4

Данные TLV

Дополненный к 4-байтовой границе (интервал (Размер TLV-8 +3) / 4 * 4

Размер TLV и т.д

...

Дополнительный информационный размер

32-разрядное число, которое является общим размером всей дополнительной информации TLVs в этом пакете, включая 4 байта, используемые для этого поля. Пустая Дополнительная информационная таблица TLVs просто была бы дополнительным информационным размером, имея значение 4. (В этом случае это было бы более эффективно просто не установить X биты и сохранило бы 4 байта только для представления пустой таблицы.)

Размер TLV

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

Тип TLV

32-разрядный тег (с четырьмя символами OSType) идентификация TLV. Серверы должны проигнорировать типы TLV, которые они не распознают. Обратите внимание на то, что типы TLV, содержащие все строчные буквы, резервируются Apple.

Данные TLV

Данные для TLV.

Для поддержки MPEG (и другие типы данных), чья метка времени RTP монотонно не увеличивается и непосредственно вычисленная от демонстрационной метки времени, тип TLV, перечисленный в Таблице 4-24, определяется.

Таблица 4-24  тип TLV

Размер

Ввести

Описание данных

12

'rtpo'

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

Таблица данных

Таблица, определяющая данные, которые будут помещены в часть полезной нагрузки пакета RTP. Эта таблица определяет различные места, данные могут быть получены. Записи таблицы перечислены в Таблице 4-25.

Табличные 4-25  записи Таблицы данных

Запись таблицы данных

Байты

Источник данных

1

Данные

15

Поле источника данных таблицы записи указывает, как должны быть интерпретированы другие 15 байтов записи. Значения от 0 до 4 определяются. Различные форматы таблицы данных определяются ниже.

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

Режимы данных

Никакой-Op режим данных

Запись таблицы данных имеет формат ни для какого-op режима, показанного на рисунке 4-19.

Рисунок 4-19  Никакой-op формат режима данных
Полевые описания
Источник данных = 0

Значение 0 указывает, что должна быть проигнорирована эта запись таблицы данных.

Непосредственный режим данных

Запись таблицы данных имеет формат для непосредственного режима, показанного на рисунке 4-20.

Рисунок 4-20  Непосредственная запись таблицы режима данных
Полевые описания
Источник данных = 1

Значение 1 указывает, что данные должны быть сразу взяты от байтов следующих данных.

Непосредственная длина

8-разрядное целое число, указывающее число байтов для взятия от следующих данных. Юридические значения колеблются от 0 до 14.

Непосредственные данные

14 байтов данных для размещения в часть полезной нагрузки пакета. Только первое число байтов, обозначенных непосредственным полем длины, используется.

Демонстрационный режим

Запись таблицы данных имеет формат для демонстрационного режима, показанного на рисунке 4-21.

  Формат записи таблицы режима Sample рисунка 4-21
Полевые описания
Источник данных = 2

Значение 2 указывает, что данные должны быть взяты от демонстрационных данных дорожки.

Дорожка касательно индекса

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

Длина

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

Демонстрационное число

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

Смещение

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

Байты на блок сжатия

16-разрядное целое без знака, указывающее число байтов, следующее из сжатия числа выборок в Выборках на блочное поле сжатия. Значение 0 эквивалентно значению 1.

Выборки на блок сжатия

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

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

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

(CB = NS * BPCB / SPCB)

где CB = сжал байты, NS = число выборок, BPCB = байты на блок сжатия и SPCB = выборки на блок сжатия.

Пример:

Блок сжатия GSM обычно является 160 выборками, упакованными в 33 байта.

Так, BPCB = 33 и SPCB = 160.

Выборка подсказки запрашивает 33 байта данных, запускающихся при 161-й выборке носителей. Предположите, что первый блок QuickTime содержит по крайней мере 320 выборок. Таким образом, после определения, что эти данные прибудут из блока 1, и знающий, где блок 1 запускается, необходимо использовать это отношение для корректировки смещения в файл, где будут найдены требуемые выборки:

chunk_number = 1; /* calculated by walking the sample-to-chunk atom  */
first_sample_in_this_chunk = 1; /* also calculated from that atom  */
chunk_offset = chunk_offsets[chunk_number]; /* from the stco atom  */
data_offset = (sample_number - first_sample_in_this_chunk) * BPCB  / SPCB;
read_from_file(chunk_offset + data_offset, length); /* read our  data */

Демонстрационный режим описания

Запись таблицы данных имеет формат для демонстрационного режима описания, показанного на рисунке 4-22.

  Демонстрационный формат режима описания рисунка 4-22
Полевые описания
Источник данных = 3

Значение 3 указывает, что данные должны быть взяты от демонстрационной таблицы описания дорожки носителей.

Дорожка касательно индекса

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

Длина

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

Демонстрационный индекс описания

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

Смещение

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

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

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

Дополнительные данные

Поле переменной длины, содержащее данные, на которые указывает подсказка, отслеживает демонстрационные записи режима в таблице данных.

Носители VR

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

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

Обратите внимание на то, что много структур атома содержат два поля версии, majorVersion и minorVersion. Значения этих полей соответствуют константам kQTVRMajorVersion и kQTVRMinorVersion найденный в заголовочном файле QuickTimeVRFormat.h. Для файлов QuickTime 2.0 эти значения равняются 2 и 0.

QuickTime обеспечивает много подпрограмм и для создающих и для получающих доступ контейнеров атома.

Некоторые листовые атомы в мире VR и контейнерах атома информации об узле содержат поля, указывающие ID строковых атомов, которые являются одноуровневыми элементами листового атома. Например, атом заголовка мира VR содержит поле для имени сцены. Строковый атом является листовым атомом, тип атома которого kQTVRStringAtomType ('vrsg'). Его атом ID то, что указан относящимся листовым атомом.

Строковый атом содержит строку. Структура строкового атома определяется QTVRStringAtom тип данных.

typedef struct QTVRStringAtom {
    UInt16                              stringUsage;
    UInt16                              stringLength;
    unsigned char                       theString[4];
} QTVRStringAtom, *QTVRStringAtomPtr;
Полевые описания
stringUsage

Строковое использование. Это поле не использовано.

stringLength

Длина, в байтах, строки.

theString

Строка. Строковая структура атома расширяется для содержания этой строки.

Каждый строковый атом может также иметь одноуровневый листовой атом, названный строковым атомом кодирования. Строка, кодирующая тип атома атома, kQTVRStringEncodingAtomType ('vrse'). Его атом ID совпадает с атомом соответствующего строкового атома. Строковый атом кодирования содержит единственную переменную, TextEncoding, a UInt32, как определено в заголовочном файле TextCommon.h. Значение TextEncoding вручен, вместе со строкой, к подпрограмме QTTextToNativeText для преобразования для дисплея на текущей машине. Подпрограмма QTTextToNativeText найден в заголовочном файле Movies.h.

Контейнер Atom мира VR

Контейнер атома мира VR (мир VR, если коротко) включает такую информацию как имя для всей сцены, узел по умолчанию ID и значение по умолчанию свойства обработки изображений, а также список узлов, содержавшихся в дорожке QTVR.

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

Структура контейнера атома мира VR показана на рисунке 4-23. Атомы компонента определяются, и их структуры показаны в следующих разделах.

  Структура рисунка 4-23 контейнера атома мира VR
Structure of the VR world atom container

Структура Atom заголовка мира VR

Атом заголовка мира VR является листовым атомом. Его тип атома kQTVRWorldHeaderAtomType ('vrsc'). Это содержит имя сцены и узла по умолчанию ID, который будет использоваться, когда файл сначала открыт, а также поля резервируются для будущего использования.

Структура атома заголовка мира VR определяется QTVRWorldHeaderAtom тип данных.

typedef struct VRWorldHeaderAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    QTAtomID                            nameAtomID;
    UInt32                              defaultNodeID;
    UInt32                              vrWorldFlags;
    UInt32                              reserved1;
    UInt32                              reserved2;
} VRWorldHeaderAtom, *QTVRWorldHeaderAtomPtr;
QT
QT
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

nameAtomID

ID строкового атома, содержащего имя сцены. Тот атом должен быть одноуровневым элементом атома заголовка мира VR. Если никакой строковый атом имени не существует, значение этого поля 0.

defaultNodeID

ID узла по умолчанию (т.е. узел, который будет выведен на экран, когда файл сначала открыт).

vrWorldFlags

Ряд флагов для мира VR. Это поле не использовано.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

Обработка изображений родительского Atom

Родительский атом обработки изображений является родительским атомом одного или более специфичными для узла атомами обработки изображений. Его тип атома kQTVRImagingParentAtomType ('imgp'). Только обзорам определили атом обработки изображений.

Отображающий обзор Atom

Отображающий обзор атом описывает значение по умолчанию характеристики обработки изображений для всех панорамных узлов в сцене. Этот атом переопределяет собственные значения по умолчанию VR QuickTime.

Отображающий обзор атом имеет тип атома kQTVRPanoImagingAtomType ('impn'). Обычно существует один отображающий обзор атом для каждого режима обработки изображений, таким образом, проигнорирован атом ID, в то время как это должно быть уникально для каждого атома. QuickTime VR выполняет итерации через все отображающие обзор атомы.

Структура отображающего обзор атома определяется QTVRPanoImagingAtom тип данных:

typedef struct QTVRPanoImagingAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    UInt32                              imagingMode;
    UInt32                              imagingValidFlags;
    UInt32                              correction;
    UInt32                              quality;
    UInt32                              directDraw;
    UInt32                              imagingProperties[6];
    UInt32                              reserved1;
    UInt32                              reserved2;
} QTVRPanoImagingAtom, *VRPanoImagingAtomPtr;
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

imagingMode

Режим обработки изображений, к которому применяются значения по умолчанию. Только kQTVRStatic и kQTVRMotion позволяются здесь.

imagingValidFlags

Ряд отмечает, которые указывают, какие поля свойства обработки изображений в этой структуре допустимы.

correction

Режим исправления по умолчанию для панорамных узлов. Это может быть также kQTVRNoCorrection, kQTVRPartialCorrection, или kQTVRFullCorrection.

quality

Значение по умолчанию качество обработки изображений для панорамных узлов.

directDraw

Рисующее прямым образом свойство по умолчанию для панорамных узлов. Это может быть true или false.

imagingProperties

Зарезервированный для будущих отображающих обзор свойств.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

imagingValidFlags поле в отображающей обзор структуре атома указывает, какие поля свойства обработки изображений в той структуре допустимы. Можно использовать эти битовые флаги для указания значения для того поля:

enum {
    kQTVRValidCorrection                        = 1 << 0,
    kQTVRValidQuality                           = 1 << 1,
    kQTVRValidDirectDraw                        = 1 << 2,
    kQTVRValidFirstExtraProperty                = 1 << 3
};
Постоянные описания
kQTVRValidCorrection

Режим исправления по умолчанию для отображающих обзор свойств. Если этот бит установлен, correction поле содержит режим исправления по умолчанию.

kQTVRValidQuality

Значение по умолчанию качество обработки изображений для отображающих обзор свойств. Если этот бит установлен, quality поле содержит значение по умолчанию качество обработки изображений.

kQTVRValidDirectDraw

Прямое значение по умолчанию - рисует качество для отображающих обзор свойств. Если этот бит установлен, directDraw поле владеет рисующим прямым образом имуществом по умолчанию.

kQTVRValidFirstExtraProperty

Значение по умолчанию свойство обработки изображений для отображающих обзор свойств. Если этот бит установлен, первый элемент в массиве в imagingProperties поле владеет значением по умолчанию имущество обработки изображений. Поскольку новые свойства обработки изображений добавляются, они будут сохранены в этом массиве.

Родительский Atom узла

Родительский атом узла является родителем одного или более узлов атомы ID. Тип атома родительского атома узла kQTVRNodeParentAtomType ('vrnp') и тип атома каждого узла атом ID kQTVRNodeIDAtomType ('vrni').

Существует один узел атом ID для каждого узла в файле. Атом ID узла атом ID является узлом ID узла. Узел атом ID является родителем атома расположения узла. Атом расположения узла является единственным дочерним атомом, определенным для узла атом ID. Его тип атома kQTVRNodeLocationAtomType ('nloc').

Структура Atom расположения узла

Атом расположения узла является единственным дочерним атомом, определенным для узла атом ID. Его тип атома kQTVRNodeLocationAtomType ('nloc'). Атом расположения узла описывает тип узла и его расположения.

Структура атома расположения узла определяется QTVRNodeLocationAtom тип данных:

typedef struct VRNodeLocationAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    OSType                              nodeType;
    UInt32                              locationFlags;
    UInt32                              locationData;
    UInt32                              reserved1;
    UInt32                              reserved2;
} VRNodeLocationAtom, *QTVRNodeLocationAtomPtr;
QT
QT
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

nodeType

Тип узла. Это поле должно содержать также kQTVRPanoramaType или kQTVRObjectType.

locationFlags

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

locationData

Расположение данных узла. Когда locationFlags поле kQTVRSameFile, это поле должно быть 0. Узлы найдены в файле в том же порядке, которым они найдены в списке узла.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

Пользовательские атомы курсора

Атом информации о горячей точке, обсужденный в Atom информации о Горячей точке, позволяет Вам указывать пользовательский курсор IDs для определенных горячих точек, заменяющих курсоры по умолчанию, используемые QuickTime VR. QuickTime VR позволяет Вам хранить свои пользовательские курсоры в мире VR файла ролика.

Родительский атом курсора является родителем всех пользовательских атомов курсора, сохраненных в мире VR. Его тип атома kQTVRCursorParentAtomType ('vrcp'). Дочерние атомы родителя курсора являются или атомами курсора или цветными атомами курсора. Их типы атома kQTVRCursorAtomType ('CURS') и kQTVRColorCursorAtomType ('crsr'). Эти атомы сохранены точно как курсоры, или цветные курсоры были бы сохранены как ресурс.

Контейнер Atom информации об узле

Контейнер атома информации об узле включает общую информацию об узле, таком как тип узла, ID и имя. Контейнер атома информации об узле также содержит список атомов горячей точки для узла. QuickTime фильм VR содержит один контейнер атома информации об узле для каждого узла в файле. Подпрограмма QTVRGetNodeInfo позволяет Вам получать контейнер атома информации об узле для текущего узла или для любого другого узла в фильме.

Рисунок 4-24 показывает структуру контейнера атома информации об узле.

  Структура рисунка 4-24 контейнера атома информации об узле
Structure of the node information atom container

Структура Atom заголовка узла

Атом заголовка узла является листовым атомом, описывающим тип и ID узла, а также другую информацию об узле. Его тип атома kQTVRNodeHeaderAtomType ('ndhd').

Структура атома заголовка узла определяется QTVRNodeHeaderAtom тип данных:

typedef struct VRNodeHeaderAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    OSType                              nodeType;
    QTAtomID                            nodeID;
    QTAtomID                            nameAtomID;
    QTAtomID                            commentAtomID;
    UInt32                              reserved1;
    UInt32                              reserved2;
} VRNodeHeaderAtom, *VRNodeHeaderAtomPtr;
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

nodeType

Тип узла. Это поле должно содержать также kQTVRPanoramaType или kQTVRObjectType.

nodeID

Узел ID.

nameAtomID

ID строкового атома, содержащего имя узла. Этот атом должен быть одноуровневым элементом атома заголовка узла. Если никакой строковый атом имени не существует, значение этого поля 0.

commentAtomID

ID строкового атома, содержащего комментарий для узла. Этот атом должен быть одноуровневым элементом атома заголовка узла. Если никакой строковый атом комментария не существует, значение этого поля 0.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

Родительский Atom горячей точки

Родительский атом горячей точки является родителем для всех атомов горячей точки для узла. Тип атома родительского атома горячей точки kQTVRHotSpotParentAtomType ('hspa') и тип атома каждого атома горячей точки kQTVRHotSpotAtomType ('hots'). Атом ID каждого атома горячей точки является горячей точкой ID для соответствующей горячей точки. ID горячей точки определяется его значением индекса цвета, поскольку это сохранено в дорожке изображения горячей точки.

Дорожка горячей точки является 8-разрядным видеотреком, содержащим информацию о цвете, указывающую горячие точки. Для получения дополнительной информации отошлите к Программированию С QuickTime VR.

Каждый атом горячей точки является родителем многих атомов, содержащих информацию о каждой горячей точке.

Atom информации о горячей точке

Атом информации о горячей точке содержит общую информацию о горячей точке. Его тип атома kQTVRHotSpotInfoAtomType ('hsin'). Каждый атом горячей точки должен иметь атом информации о горячей точке как дочерний элемент.

Структура атома информации о горячей точке определяется QTVRHotSpotInfoAtom тип данных:

typedef struct VRHotSpotInfoAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    OSType                              hotSpotType;
    QTAtomID                            nameAtomID;
    QTAtomID                            commentAtomID;
    SInt32                              cursorID[3];
    Float32                             bestPan;
    Float32                             bestTilt;
    Float32                             bestFOV;
    FloatPoint                          bestViewCenter;
    Rect                                hotSpotRect;
    UInt32                              flags;
    UInt32                              reserved1;
    UInt32                              reserved2;
} VRHotSpotInfoAtom, *QTVRHotSpotInfoAtomPtr;
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

hotSpotType

Тип горячей точки. Этот тип указывает, который другие информационные атомы — если кто-либо — является одноуровневыми элементами этому. QuickTime VR распознает три типа: kQTVRHotSpotLinkType, kQTVRHotSpotURLType, и kQTVRHotSpotUndefinedType.

nameAtomID

ID строкового атома, содержащего имя горячей точки. Этот атом должен быть одноуровневым элементом атома информации о горячей точке. Когда мышь отодвинута горячая точка, эта строка выведена на экран в QuickTime панель контроллера VR.

commentAtomID

ID строкового атома, содержащего комментарий для горячей точки. Этот атом должен быть одноуровневым элементом атома информации о горячей точке. Если никакой строковый атом комментария не существует, значение этого поля 0.

cursorID

Массив трех IDs для пользовательских курсоров горячей точки (т.е. курсоры, переопределяющие курсоры горячей точки по умолчанию, предоставленные QuickTime VR). Первый ID (cursorID[0]) указывает курсор, выведенный на экран, когда это находится в горячей точке. Второй ID (cursorID[1]) указывает курсор, выведенный на экран, когда это находится в горячей точке, и кнопка мыши снижается. Третий ID (cursorID[2]) указывает курсор, выведенный на экран, когда это находится в горячей точке, и кнопка мыши отпускается. Для сохранения курсора по умолчанию для любой из этих операций установите соответствующий курсор ID в 0. Пользовательские курсоры должны быть сохранены в контейнере атома мира VR, как описано в Контейнере Atom Мира VR.

bestPan

Лучшее панорамирование удит рыбу для просмотра этой горячей точки.

bestTilt

Лучший угол наклона для просмотра этой горячей точки.

bestFOV

Лучшее поле зрения для просмотра этой горячей точки.

bestViewCenter

Лучшее представление центрируется для просмотра этой горячей точки; применяется только для возражения узлам.

hotSpotRect

Граничное поле для этой горячей точки, указанной как число пикселей в полном панорамном пространстве. Это поле допустимо только для панорамных узлов.

flags

Ряд флагов горячей точки. Это поле не использовано.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

Определенные информационные атомы

В зависимости от значения hotSpotType поле в информационном атоме горячей точки там может также быть типом определенный информационный атом. Тип атома специфичного для типа атома является типом горячей точки.

Соедините Atom горячей точки

Атом горячей точки ссылки указывает информацию для горячих точек типа kQTVRHotSpotLinkType ('link'). Его тип атома таким образом 'link'. Атом горячей точки ссылки содержит определенную информацию о горячей точке ссылки.

Структура атома горячей точки ссылки определяется QTVRLinkHotSpotAtom тип данных:

typedef struct VRLinkHotSpotAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    UInt32                              toNodeID;
    UInt32                              fromValidFlags;
    Float32                             fromPan;
    Float32                             fromTilt;
    Float32                             fromFOV;
    FloatPoint                          fromViewCenter;
    UInt32                              toValidFlags;
    Float32                             toPan;
    Float32                             toTilt;
    Float32                             toFOV;
    FloatPoint                          toViewCenter;
    Float32                             distance;
    UInt32                              flags;
    UInt32                              reserved1;
    UInt32                              reserved2;
} VRLinkHotSpotAtom, *VRLinkHotSpotAtomPtr;
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

toNodeID

ID узла назначения (т.е. узел, с которым эта горячая точка соединяется).

fromValidFlags

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

fromPan

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

fromTilt

Предпочтительное от угла наклона в исходном узле.

fromFOV

Предпочтительное от поля зрения в исходном узле.

fromViewCenter

Предпочтительный центр от представления в исходном узле.

toValidFlags

Ряд отмечает, которые указывают, какие настройки представления узла назначения допустимы.

toPan

Угол панорамирования для использования при отображении узла назначения.

toTilt

Угол наклона для использования при отображении узла назначения.

toFOV

Поле зрения для использования при отображении узла назначения.

toViewCenter

Центр представления для использования при отображении узла назначения.

distance

Расстояние между исходным узлом и узлом назначения.

flags

Ряд флагов горячей точки ссылки. Это поле не использовано и должно быть установлено в 0.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

Определенные поля в атоме горячей точки ссылки не используются QuickTime VR. fromValidFlags поле обычно устанавливается в 0 и другой from поля не используются. Однако эти поля могли быть довольно полезными при создании фильма перехода от одного узла до другого. from углы могут использоваться для покачивания текущего представления исходного узла для выравнивания с первым кадром фильма перехода. distance поле предназначается для использования с 3D приложениями, но также не используется QuickTime VR.

Соедините горячую точку допустимые флаги

toValidFlags поле в структуре атома горячей точки ссылки указывает, какие настройки представления должны использоваться при перемещении в узел назначения от горячей точки. Можно использовать эти битовые флаги для указания значения для того поля:

enum {
    kQTVRValidPan                               = 1 << 0,
    kQTVRValidTilt                              = 1 << 1,
    kQTVRValidFOV                               = 1 << 2,
    kQTVRValidViewCenter                        = 1 << 3
};
Постоянные описания
kQTVRValidPan

Установка для использования целевого угла панорамирования.

kQTVRValidTilt

Установка для использования целевого угла наклона.

kQTVRValidFOV

Установка для использования целевого поля зрения.

kQTVRValidViewCenter

Установка для использования целевого центра представления.

Atom горячей точки URL

Атом горячей точки URL имеет тип атома kQTVRHotSpotURLType ('url '). Атом горячей точки URL содержит строку URL для определенного веб-узла (например, http://quicktimevr.apple.com). Когда по горячей точке щелкают, VR QuickTime автоматически соединяется с этим URL.

Поддержка соединенных проводом действий

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

Как с дорожками спрайта, присутствие определенного атома в контейнере атома свойства носителей дорожки QTVR включает обработку соединенных проводом действий. Этот атом имеет тип kSpriteTrackPropertyHasActions, который имеет единственное булево значение, которое должно быть установлено в true.

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

Специфичные для горячей точки атомы обработчика событий расположены в определенном атоме горячей точки как одноуровневый элемент к информационному атому горячей точки. Для этих атомов тип атома всегда kQTEventType и ID event ввести. Поддерживаемые специфичные для горячей точки типы событий kQTEventMouseClick, kQTEventMouseClickEnd, kQTEventMouseClickEndTriggerButton, и kQTEventMouseEnter, kQTEventMouseExit.

Определенные действия, заставляющие эти события быть сгенерированными, описаны следующим образом:

kQTEventFrameLoaded ('fram')

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

kQTEventIdle ('idle')

Соединенное проводом действие, сгенерированное каждый n галочки, где n определяется содержанием kSpriteTrackPropertyQTIdleEventsFrequency атом (SInt32) в контейнере атома свойства носителей. Когда надлежащий, это событие инициировано, прежде чем любая нормальная неактивная обработка происходит для QuickTime фильм VR.

kQTEventMouseClick ('clik')

Соединенное проводом действие, сгенерированное, когда мышь теряет работоспособность по горячей точке.

kQTEventMouseClickEnd ('cend')

Соединенное проводом действие, сгенерированное, когда мышь восстанавливает работоспособность после a kQTEventMouseClick сгенерирован, независимо от того, является ли мышь все еще по горячей точке, по которой первоначально щелкают. Это событие имеет место до нормальной обработки мыши VR QuickTime.

kQTEventMouseClickEndTriggerButton ('trig')

Соединенное проводом действие, сгенерированное, когда конец щелчка инициировал горячую точку (использующий тот же критерий, как используется QuickTime VR в 2,1 для выполнения горячей точки ссылки/URL). Это событие имеет место до нормальной обработки триггера горячей точки VR QuickTime.

kQTEventMouseEnter ('entr'), kQTEventMouseExit('exit')

Соединенное проводом действие, которые сгенерированы, когда мышь прокручивается в или из горячей точки, соответственно. Эти события имеют место, снижается ли мышь и панорамируется ли фильм. Эти события имеют место после любого установленного на приложении MouseOverHotSpotProc вызывается и будет отменен, если возвращаемое значение от подпрограммы приложения указывает, что нормальная обработка сверхгорячей точки QuickTimeVR не должна иметь место.

QuickTime формат файла VR

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

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

Если QuickTime, фильм VR содержит любые панорамные узлы, тот фильм также, содержит единственную дорожку обзора, и если это содержит какие-либо объектные узлы, это также содержит дорожку отдельного объекта. Обзор и объектные дорожки содержат информацию, определенную для обзоров или объектов в фильме. Данные действительного образа и для обзоров и для объектов обычно хранятся в стандартных видеотреках QuickTime, в дальнейшем именуемых дорожках изображения. (Дорожка изображения может также быть любым типом дорожки, которая способна к отображению изображения, такова как QuickTime 3D дорожка.) Отдельные кадры в дорожке изображения для обзора составляют нарезанные кубиками кадры исходного единственного панорамного изображения. Кадры для дорожки изображения объекта представляют много различных взглядов объекта. Данные изображения горячей точки сохранены в параллельных видеотреках и для обзоров и для объектов.

Единственный узел панорамные фильмы

Рисунок 4-25 иллюстрирует базовую структуру единственного узла панорамный фильм. Как Вы видите, каждый панорамный фильм содержит по крайней мере три дорожки: дорожка QTVR, дорожка обзора и обзор отображают дорожку.

Рисунок 4-25  структура единственного узла панорамный файл ролика
The structure of a single-node panoramic movie file

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

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

Фильмы единственного объекта узла

Рисунок 4-26 иллюстрирует базовую структуру фильма единственного объекта узла. Как Вы видите, каждый объектный фильм содержит по крайней мере три дорожки: дорожка QTVR, объектная дорожка и объектная дорожка изображения.

Рисунок 4-26  структура файла ролика единственного объекта узла
The structure of a single-node object movie file

Для фильма единственного объекта узла дорожка QTVR содержит всего одну выборку. В объектной дорожке существует соответствующая выборка, время которой и продолжительность совпадают со временем и продолжительностью выборки в дорожке QTVR. Основа времени фильма используется для определения местоположения надлежащих видео выборок в объектной дорожке изображения.

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

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

Чтобы играть основанный на времени трек с объектным фильмом, необходимо синхронизировать демонстрационные данные той дорожки к запуску и времена остановки представления в объектной дорожке изображения. Например, для игры различного звука с каждым представлением объекта Вы могли бы сохранить звуковую дорожку в файле ролика с каждым набором звуковых выборок, синхронизируемых с игрой в то же время, что и изображение представления соответствующего объекта. (Этот метод также работает на видео выборки.) Другой способ добавить звук или видео состоит в том, чтобы просто играть звуковой трек или видеотрек во время анимации представления объекта; чтобы сделать это, необходимо добавить активную дорожку к объекту, который равен в продолжительности продолжительности строки объекта.

Фильмы мультиузла

Мультиузел QuickTime фильм VR может содержать любое число объектных и панорамных узлов. Рисунок 4-27 иллюстрирует структуру QuickTime фильм VR, содержащий пять узлов (в этом случае, три панорамных узла и два объектных узла).

Рисунок 4-27  структура файла ролика мультиузла
The structure of a multinode movie file

Дорожка QTVR

Дорожка QTVR является специальным типом дорожки QuickTime, ведущей список всех узлов в фильме. Тип среды для дорожки QTVR 'qtvr'. Все выборки носителей в дорожке QTVR совместно используют общее демонстрационное описание. Это демонстрационное описание содержит контейнер атома мира VR. Дорожка содержит одну выборку носителей для каждого узла в фильме. Каждый QuickTime выборка носителей VR содержит контейнер атома информации об узле.

QuickTime демонстрационная структура описания VR

Принимая во внимание, что QuickTime, выборка носителей VR является просто самой информацией об узле, все демонстрационные описания, требуется QuickTime иметь определенную структуру для первых нескольких байтов. Структура для QuickTime демонстрационное описание VR следующие:

typedef struct QTVRSampleDescription {
    UInt32                              size;
    UInt32                              type;
    UInt32                              reserved1;
    UInt16                              reserved2;
    UInt16                              dataRefIndex;
    UInt32                              data;
} QTVRSampleDescription, *QTVRSampleDescriptionPtr, **QTVRSampleDescriptionHandle;
Полевые описания
size

Размер, в байтах, демонстрационной структуры заголовка описания, включая контейнер атома мира VR, содержавшийся в data поле.

type

Демонстрационный тип описания. Для QuickTime фильмы VR этот тип должен быть 'qtvr'.

reserved1

Зарезервированный. Это поле должно быть 0.

reserved2

Зарезервированный. Это поле должно быть 0.

dataRefIndex

Зарезервированный. Это поле должно быть 0.

data

Контейнер атома мира VR. Демонстрационная структура описания расширяется для содержания этого контейнера атома.

Дорожки обзора

Дорожка обзора фильма является дорожкой, содержащей информацию о панорамных узлах в сцене. Тип среды дорожки обзора 'pano'. Каждая выборка в дорожке обзора соответствует единственному панорамному узлу. Эта выборка параллельна соответствующей выборке в дорожке QTVR. Дорожки обзора не имеют демонстрационного описания (несмотря на то, что QuickTime требует, чтобы Вы указали фиктивное демонстрационное описание, когда Вы вызываете AddMediaSample добавить выборку к дорожке обзора). Сама выборка содержит контейнер атома, включающий демонстрационный атом обзора и другие дополнительные атомы.

Демонстрационная структура Atom обзора

Демонстрационный атом обзора имеет тип атома kQTVRPanoSampleDataAtomType ('pdat'). Это описывает единственный обзор, включая справочные указатели дорожки дорожек сцены и горячей точки и информации об углах обзора по умолчанию и источнике панорамное изображение.

Структура демонстрационного атома обзора определяется QTVRPanoSampleAtom тип данных:

typedef struct VRPanoSampleAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    UInt32                              imageRefTrackIndex;
    UInt32                              hotSpotRefTrackIndex;
    Float32                             minPan;
    Float32                             maxPan;
    Float32                             minTilt;
    Float32                             maxTilt;
    Float32                             minFieldOfView;
    Float32                             maxFieldOfView;
    Float32                             defaultPan;
    Float32                             defaultTilt;
    Float32                             defaultFieldOfView;
    UInt32                              imageSizeX;
    UInt32                              imageSizeY;
    UInt16                              imageNumFramesX;
    UInt16                              imageNumFramesY;
    UInt32                              hotSpotSizeX;
    UInt32                              hotSpotSizeY;
    UInt16                              hotSpotNumFramesX;
    UInt16                              hotSpotNumFramesY;
    UInt32                              flags;
    OSType                              panoType;
    UInt32                              reserved2;
} VRPanoSampleAtom, *VRPanoSampleAtomPtr;
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

imageRefTrackIndex

Индекс изображения отслеживает ссылку. Это - индекс, возвращенный AddTrackReference функционируйте, когда дорожка изображения будет добавлена как ссылка на дорожку обзора. Может быть больше чем одна дорожка изображения для данной дорожки обзора и следовательно многократных ссылок. (Дорожка обзора могла бы иметь дорожки повторного изображения, если обзоры имеют различные характеристики, которые могли бы произойти, если бы обзоры были застрелены из различных объективов фотокамеры размера.) Если нет никакой соответствующей дорожки изображения, значение в этом поле 0.

hotSpotRefTrackIndex

Индекс горячей точки отслеживает ссылку.

minPan

Минимальный угол панорамирования, в градусах. Для полного обзора значение этого поля обычно 0.0.

maxPan

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

minTilt

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

maxTilt

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

minFieldOfView

Минимальное вертикальное поле зрения, в градусах. Для обзора с высокой разрешающей способностью типичное значение для этого поля 5.0. Значение в этом поле 0 для минимального поля зрения по умолчанию, которое составляет 5 процентов максимального поля зрения.

maxFieldOfView

Максимальное вертикальное поле зрения, в градусах. Для обзора с высокой разрешающей способностью типичное значение для этого поля 85.0. Значение в этом поле 0 для максимального поля зрения по умолчанию, которое является maxTiltminTilt.

defaultPan

Угол панорамирования по умолчанию, в градусах.

defaultTilt

Угол наклона по умолчанию, в градусах.

defaultFieldOfView

Вертикальное поле зрения по умолчанию, в градусах.

imageSizeX

Ширина, в пикселях, обзора, сохраненного в самом высоком разрешении, отображает дорожку.

imageSizeY

Высота, в пикселях, обзора, сохраненного в самом высоком разрешении, отображает дорожку.

imageNumFramesX

Число кадров, в которые панорамное изображение нарезано кубиками горизонтально. Ширина каждого кадра (который является imageSizeX/imageNumFramesX) должно быть делимым 4.

imageNumFramesY

Число кадров, в которые панорамное изображение нарезано кубиками вертикально. Высота каждого кадра (который является imageSizeY/imageNumFramesY) должно быть делимым 4.

hotSpotSizeX

Ширина, в пикселях, обзора, сохраненного в самой высокой горячей точке разрешения, отображает дорожку.

hotSpotSizeY

Высота, в пикселях, обзора, сохраненного в самой высокой горячей точке разрешения, отображает дорожку.

hotSpotNumFramesX

Число кадров, в которые панорамное изображение нарезано кубиками горизонтально для дорожки изображения горячей точки.

hotSpotNumFramesY

Число кадров, в которые панорамное изображение нарезано кубиками вертикально для дорожки изображения горячей точки.

flags

Ряд флагов обзора. kQTVRPanoFlagHorizontal был заменен panoType поле. Это используется только когда panoType поле nil указать горизонтально ориентированный цилиндрический обзор. kQTVRPanoFlagAlwaysWrap установлен, если обзор должен перенестись горизонтально, независимо от того, является ли диапазон панорамирования 360 градусами. Обратите внимание на то, что эти флаги в настоящее время поддерживаются только под OS X.

panoType

OSType описание типа обзора. Поддерживаемые типы:

  • kQTVRHorizontalCylinder

  • kQTVRVerticalCylinder

  • kQTVRCube

reserved2

Зарезервированный. Это поле должно быть 0.

Важный: новый флаг был добавлен к полю флагов QTVRPanoSampleAtom структура данных. Этот флаг управляет, как обзоры переносятся горизонтально. Если kQTVRPanoFlagAlwaysWrap установлен, тогда обертки обзора горизонтально, независимо от числа градусов в обзоре. Если флаг не установлен, то обзор переносится только, когда диапазон обзора составляет 360 градусов. Это - поведение по умолчанию.

Минимальные и максимальные значения в демонстрационном атоме обзора описывают физические пределы панорамного изображения. VR QuickTime позволяет Вам устанавливать дальнейшие ограничения на то, какую часть изображения пользователь видит путем вызова QTVRSetConstraints подпрограмма. Можно также задать ограничения изображения путем добавления ограничительных атомов к демонстрационному контейнеру атома обзора. Три ограничительных типа атома kQTVRPanConstraintAtomType, kQTVRTiltConstraintAtomType, и kQTVRFOVConstraintAtomType. Каждый из этих типов атома совместно использует общую структуру, определенную QTVRAngleRangeAtom тип данных:

typedef struct QTVRAngleRangeAtom {
    Float32                             minimumAngle;
    Float32                             maximumAngle;
} QTVRAngleRangeAtom, *QTVRAngleRangeAtomPtr;
Полевые описания
minimumAngle

Минимальный угол в диапазоне, в градусах.

maximumAngle

Максимальный угол в диапазоне, в градусах.

Дорожка изображения обзора

Фактическое панорамное изображение для панорамного узла содержится в дорожке изображения обзора, которая является стандартным видеотреком QuickTime. Ссылка дорожки на эту дорожку сохранена в imageRefTrackIndex поле демонстрационного атома обзора.

QuickTime VR 2.1 потребовал, чтобы исходное панорамное изображение было повернуто 90 градусов против часовой стрелки. Эта ориентация изменилась в QuickTime VR 2.2, однако, как обсуждено позже в этом разделе.

Повернутое изображение нарезано кубиками в меньшие кадры, и каждый нарезанный кубиками кадр тогда сжат и добавлен к видеотреку как видео выборка, как показано на рисунке 4-28. Кадры могут быть сжаты с помощью любого пространственного компрессора; однако, временное сжатие не позволяется для панорамных дорожек изображения.

Рисунок 4-28  , Создающий изображение, отслеживает для обзора
Creating an image track for a panorama

QuickTime VR 2.2 не требует, чтобы исходное панорамное изображение было повернуто 90 градусов против часовой стрелки, как имел место в QuickTime VR 2.1. Повернутое изображение все еще нарезано кубиками в меньшие кадры, и каждый нарезанный кубиками кадр тогда сжат и добавлен к видеотреку как видео выборка, как показано на рисунке 4-29.

Рисунок 4-29  , Создающий изображение, отслеживает для обзора с дорожкой изображения, ориентированной горизонтально
Creating an image track for a panorama, with the image track oriented horizontally

В QuickTime 3.0 демонстрационный атом обзора (который содержит информацию о единственном обзоре) содержит panoType поле, указывающее, ориентировано ли нарезанное кубиками панорамное изображение горизонтально или вертикально.

Цилиндрические обзоры

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

Указать горизонтальную ориентацию, поле в VRPanoSampleAtom структуру данных раньше вызывают reserved1 был переименован panoType. Его тип OSType. panoType значение поля для горизонтально ориентированного цилиндра kQTVRHorizontalCylinder ('hcyl'), в то время как вертикальный цилиндр kQTVRVerticalCylinder ('vcyl'). Для совместимости с более старым QuickTime файлы VR, когда panoType поле nil, тогда цилиндр принят с битом низкоуровневым полевого набора флагов к 1, чтобы указать, является ли цилиндр горизонталью и 0, если цилиндр является вертикальным.

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

Кубические обзоры

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

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

Дорожки изображения в кубических узлах

Для кубического узла дорожка изображения содержит шесть выборок, соответствующих шести квадратным поверхностям куба. То же применяется к дорожки предварительного просмотра и горячая точка. Рисунок 4-30 показывает, как порядок выборок в дорожке соответствует ориентации поверхностей куба.

Рисунок 4-30  Кубический пробный заказ узла по сравнению с кубом обращенным к ориентации
../art/qt_l_218.gif

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

Дорожки обзора в кубических узлах

Выборка носителей для дорожки обзора содержит pano демонстрационный контейнер атома. Для кубов некоторые поля в pano демонстрационном атоме данных имеют специальные значения, обеспечивающие совместимость назад для QuickTime VR 2.2. Кубический механизм проекции игнорирует эти поля. Они позволяют просматривать кубические фильмы в более старых версиях QuickTime VR с помощью цилиндрического механизма, несмотря на то, что представление будет несколько неправильным, и верхние и нижние поверхности не будут видимы. Специальные значения показаны в Таблице 4-26.

Табличные 4-26  Поля и их специальные значения, как представлено в pano демонстрационном атоме данных, обеспечивая обратную совместимость для QuickTime VR 2.2

Поле

Значение

imageNumFramesX

4

imageNumFramesY

1

imageSizeX

Ширина кадра * 4

imageSizeY

Высота кадра

minPan

0.0

maxPan

360.0

minTilt

- 45.0

maxTilt

45.0

minFieldOfView

5.0

maxFieldOfView

90.0

flags

1

1 значение в поле флагов говорит QuickTime VR 2.2, что не повернуты кадры. QuickTime VR 2.2 обрабатывает это как горизонтальный цилиндр с четырьмя кадрами. panoType поле (раньше reserved1) должен быть установлен в kQTVRCube ('cube') так, чтобы QuickTime VR 3.0 мог распознать этот обзор как куб.

Так как определенные поля просмотра в pano демонстрационном атоме данных используются для обратной совместимости, новый атом должен быть добавлен для указания надлежащих параметров просмотра для кубического изображения. Этот атом является кубическим атомом представления (тип атома 'cuvw'). Структура данных кубического атома представления следующие:

struct QTVRCubicViewAtom {
    Float32         minPan;
    Float32         maxPan;
    Float32         minTilt;
    Float32         maxTilt;
    Float32         minFieldOfView;
    Float32         maxFieldOfView;
 
    Float32         defaultPan;
    Float32         defaultTilt;
    Float32         defaultFieldOfView;
};
typedef struct QTVRCubicViewAtom    QTVRCubicViewAtom;

Поля заполнены в, как желаемый для кубического изображения. Этот атом проигнорирован более старыми версиями QuickTime VR. Типичные минимальные и максимальные значения полей показаны в Таблице 4-27.

Табличные 4-27  Значения в течение минуты и макс. полей

Поле

Значение

minPan

0.0

maxPan

360.0

minTilt

- 90.0

maxTilt

90.0

minFieldOfView

5.0

maxFieldOfView

120.0

Вы добавляете кубический атом представления к pano демонстрационному контейнеру атома (после добавления pano демонстрационного атома данных). Тогда используйте AddMediaSample добавить контейнер атома к дорожке обзора.

Нестандартные кубы

Несмотря на то, что представление по умолчанию для кубического обзора имеет что шесть квадратных поверхностей куба, возможно отступить от этого стандартного представления. При выполнении так, новый атом должен быть добавлен к pano демонстрационному контейнеру атома. Тип атома 'cufa'. Атом является массивом структур данных типа QTVRCubicFaceData. Каждая запись в массиве описывает одну поверхность любого многогранника, определяется. QTVRCubicFaceData определяется следующим образом:

struct QTVRCubicFaceData {
    float   orientation[4];
    float   center[2];
    float   aspect;
    float   skew;
};
typedef struct QTVRCubicFaceData    QTVRCubicFaceData;

Математическое объяснение этих структур данных выходит за рамки этого документа, но будет описано в отдельном Apple Technote. Таблица 4-28 показывает то, что оценивает QuickTime использование VR за представление по умолчанию шести квадратных сторон.

Табличные 4-28  Значения используются для представления сторон

Orien-tation

Orien-tation

Orien-tation

Orien-tation

Центр

Центр

Аспект

Скос

Сторона

1

0

0

0

0

0

1

0

Передняя сторона #

–. 5

0

.5

0

0

0

1

0

Право #

0

0

1

0

0

0

1

0

# назад

.5

0

.5

0

0

0

1

0

# уехал

.5

.5

0

0

0

0

1

0

Вершина #

–. 5

.5

0

0

0

0

1

0

Нижняя часть #

Дорожки изображения горячей точки

Когда обзор содержит горячие точки, файл ролика содержит дорожку изображения горячей точки, видеотрек, содержащий параллельный обзор с горячими точками, определяемыми цветными областями. Каждый нарезанный кубиками кадр горячей точки панорамное изображение должен быть сжат с компрессором без потерь (таким как графический компрессор QuickTime). Размерности горячей точки, панорамное изображение обычно является тем же как теми из панорамного изображения дорожки изображения, но это не требуется. Размерности должны, однако, иметь то же форматное соотношение как панорамное изображение дорожки изображения. Дорожка изображения горячей точки должна быть 8 битов глубиной.

Дорожки изображения с низкой разрешающей способностью

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

Отследите структуру ссылки

С тех пор нет никаких полей в pano демонстрационном атоме данных для указания присутствия дорожек изображения с низкой разрешающей способностью, отдельный одноуровневый атом должен быть добавлен к демонстрационному контейнеру атома обзора. Ссылочный атом массива дорожки содержит массив структур ссылки дорожки, указывающих информацию о любых дорожках изображения с низкой разрешающей способностью, содержавшихся в фильме. Его тип атома kQTVRTrackRefArrayAtomType ('tref').

Структура ссылки дорожки определяется QTVRTrackRefEntry тип данных:

typedef struct QTVRTrackRefEntry {
    UInt32                              trackRefType;
    UInt16                              trackResolution;
    UInt32                              trackRefIndex;
} QTVRTrackRefEntry;
Полевые описания
trackRefType

Ссылочный тип дорожки.

trackResolution

Разрешение дорожки.

trackRefIndex

Индекс ссылки дорожки.

Число записей в ссылочном атоме массива дорожки определяется путем деления размера атома sizeof (QTVRTrackRefEntry).

kQTVRPreviewTrackRes специальное значение для trackResolution поле в QTVRTrackRefEntry структура. Это используется для указания присутствия специальной дорожки изображения предварительного просмотра.

Объектные дорожки

Объектная дорожка фильма является дорожкой, содержащей информацию об объектных узлах в сцене. Тип среды объектной дорожки 'obje'. Каждая выборка в объектной дорожке соответствует узлу отдельного объекта в сцене. Выборки объектной дорожки содержат информацию, описывающую объектные изображения, сохраненные в объектной дорожке изображения.

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

Объектные дорожки не имеют демонстрационного описания (несмотря на то, что QuickTime требует, чтобы Вы указали фиктивное демонстрационное описание, когда Вы вызываете AddMediaSample добавить выборку к объектной дорожке). Сама выборка является контейнером атома, содержащим демонстрационный атом отдельного объекта и другие дополнительные атомы.

Объектная демонстрационная структура Atom

возразите, что демонстрационный атом описывает отдельный объект, включая информацию об углах обзора по умолчанию и настройках представления. Структура объектного демонстрационного атома определяется QTVRObjectSampleAtom тип данных:

typedef struct VRObjectSampleAtom {
    UInt16                              majorVersion;
    UInt16                              minorVersion;
    UInt16                              movieType;
    UInt16                              viewStateCount;
    UInt16                              defaultViewState;
    UInt16                              mouseDownViewState;
    UInt32                              viewDuration;
    UInt32                              columns;
    UInt32                              rows;
    Float32                             mouseMotionScale;
    Float32                             minPan;
    Float32                             maxPan;
    Float32                             defaultPan;
    Float32                             minTilt;
    Float32                             maxTilt;
    Float32                             defaultTilt;
    Float32                             minFieldOfView;
    Float32                             fieldOfView;
    Float32                             defaultFieldOfView;
    Float32                             defaultViewCenterH;
    Float32                             defaultViewCenterV;
    Float32                             viewRate;
    Float32                             frameRate;
    UInt32                              animationSettings;
    UInt32                              controlSettings;
} VRObjectSampleAtom, *VRObjectSampleAtomPtr;
QT
QT
QT
Полевые описания
majorVersion

Номер основной версии формата файла.

minorVersion

Номер вспомогательной версии формата файла.

movieType

Тип контроллера фильма.

viewStateCount

Число состояний отображения объекта. Состояние отображения выбирает альтернативный набор изображений для представлений объекта. Значение этого поля должно быть положительным.

defaultViewState

Индекс на основе 1 состояния отображения по умолчанию. Когда кнопка мыши не снижается, изображение состояния отображения по умолчанию для высказанного мнения выведено на экран.

mouseDownViewState

Индекс на основе 1 состояния отображения мыши вниз. Изображение состояния отображения мыши вниз для высказанного мнения выведено на экран, в то время как пользователь удерживает кнопку мыши вниз, и курсор по объектному фильму.

viewDuration

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

columns

Число столбцов в объектной матрице изображений (т.е. число горизонтальных позиций или инкрементов в диапазоне, определенном минимальными и максимальными значениями панорамирования). Значение этого поля должно быть положительным.

rows

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

mouseMotionScale

Масштабный коэффициент движения мыши (т.е. число градусов, что объект панорамируется или наклоняется, когда курсор перетаскивается вся ширина изображения фильма VR). Значение по умолчанию 180.0.

minPan

Минимальный угол панорамирования, в градусах. Значение этого поля должно быть меньше, чем значение maxPan поле.

maxPan

Максимальный угол панорамирования, в градусах. Значение этого поля должно быть больше, чем значение minPan поле.

defaultPan

Угол панорамирования по умолчанию, в градусах. Когда объект сначала выведен на экран, это - угол панорамирования, используемый. Значение этого поля должно быть больше, чем или равным значению minPan поле и меньше чем или равный значению maxPan поле.

minTilt

Минимальный угол наклона, в градусах. Значение по умолчанию +90.0. Значение этого поля должно быть меньше, чем значение maxTilt поле.

maxTilt

Максимальный угол наклона, в градусах. Значение по умолчанию –90.0. Значение этого поля должно быть больше, чем значение minTilt поле.

defaultTilt

Угол наклона по умолчанию, в градусах. Когда объект сначала выведен на экран, это - угол наклона, используемый. Значение этого поля должно быть больше, чем или равным значению minTilt поле и меньше чем или равный значению maxTilt поле.

minFieldOfView

Минимальное поле зрения, к которому объект может масштабировать. Допустимый диапазон для этого поля от 1 до значения fieldOfView поле. Значение этого поля должно быть положительным.

fieldOfView

Поле изображений представления, в градусах, для всего объекта. Значение в этом поле должно быть больше, чем или равным значению minFieldOfView поле.

defaultFieldOfView

Поле зрения по умолчанию для объекта. Когда объект сначала выведен на экран, это - поле зрения, используемое. Значение в этом поле должно быть больше, чем или равным значению minFieldOfView поле и меньше чем или равный значению fieldOfView поле.

defaultViewCenterH

Горизонталь по умолчанию просматривает центр.

defaultViewCenterV

Вертикальный центр представления по умолчанию.

viewRate

Уровень тот представления (т.е. положительный или отрицательный уровень, в который анимация представления в объектных играх, если анимация представления включена). Значение этого поля должно быть от –100.0 до +100.0, включительно.

frameRate

Частота кадров (т.е. положительный или отрицательный уровень, на котором играет покадровая анимация в представлении, если покадровая анимация включена). Значение этого поля должно быть от –100.0 до +100.0, включительно.

animationSettings

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

controlSettings

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

movieType поле объектной демонстрационной структуры атома указывает объектный тип контроллера, т.е. пользовательский интерфейс, который будет использоваться для управления объектом.

QuickTime VR поддерживает следующие типы контроллера:

enum ObjectUITypes {
    kGrabberScrollerUI                          = 1,
    kOldJoyStickUI                              = 2,
    kJoystickUI                                 = 3,
    kGrabberUI                                  = 4,
    kAbsoluteUI                                 = 5
};
Постоянные описания
kGrabberScrollerUI

Контроллер по умолчанию, выводящий на экран руку для стрелок перетаскивания и вращения, когда курсор приезжает края окна объектов.

kOldJoyStickUI

Контроллер джойстика, выводящий на экран подобный джойстику интерфейс для вращения объекта. С этим контроллером направление панорамирования изменено от направления средства захвата.

kJoystickUI

Контроллер джойстика, выводящий на экран подобный джойстику интерфейс для вращения объекта. С этим контроллером направление панорамирования является соответствующим направлению средства захвата.

kGrabberUI

Интерфейс только для средства захвата, выводящий на экран руку для перетаскивания, но не выводящий на экран стрелки вращения, когда курсор приезжает края окна объектов.

kAbsoluteUI

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

Настройки анимации

animationSettings поле объектного демонстрационного атома является длинным целым, указывающим ряд настроек анимации для объектного узла. Настройки анимации указывают характеристики фильма, в то время как он играет. Используйте эти константы для указания настроек анимации:

enum QTVRAnimationSettings {
    kQTVRObjectAnimateViewFramesOn              = (1 << 0),
    kQTVRObjectPalindromeViewFramesOn           = (1 << 1),
    kQTVRObjectStartFirstViewFrameOn            = (1 << 2),
    kQTVRObjectAnimateViewsOn                   = (1 << 3),
    kQTVRObjectPalindromeViewsOn                = (1 << 4),
    kQTVRObjectSyncViewToFrameRate              = (1 << 5),
    kQTVRObjectDontLoopViewFramesOn             = (1 << 6),
    kQTVRObjectPlayEveryViewFrameOn             = (1 << 7)
};
Постоянные описания
kQTVRObjectAnimateViewFramesOn

Настройка анимации для игры всех кадров в состоянии текущего представления.

kQTVRObjectPalindromeViewFramesOn

Настройка анимации для игры назад и вперед анимация кадров состояния текущего представления.

kQTVRObjectStartFirstViewFrameOn

Настройка анимации для игры покадровой анимации начиная с первого кадра в представлении (т.е. во время начала представления).

kQTVRObjectAnimateViewsOn

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

kQTVRObjectPalindromeViewsOn

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

kQTVRObjectSyncViewToFrameRate

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

kQTVRObjectDontLoopViewFramesOn

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

kQTVRObjectPlayEveryViewFrameOn

Настройка анимации для игры каждого кадра представления независимо от уровня игры. Уровень игры используется для корректировки продолжительности, в которой появляется кадр, но никакие кадры не пропускаются так, уровень не точен.

Настройки управления

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

enum QTVRControlSettings {
    kQTVRObjectWrapPanOn                        = (1 << 0),
    kQTVRObjectWrapTiltOn                       = (1 << 1),
    kQTVRObjectCanZoomOn                        = (1 << 2),
    kQTVRObjectReverseHControlOn                = (1 << 3),
    kQTVRObjectReverseVControlOn                = (1 << 4),
    kQTVRObjectSwapHVControlOn                  = (1 << 5),
    kQTVRObjectTranslationOn                    = (1 << 6)
};
Постоянные описания
kQTVRObjectWrapPanOn

Установка управления, чтобы позволить перенестись во время панорамирования. Когда эта установка управления включена, пользователь может перенести от текущего ограничительного максимального значения панорамирования до ограничительного минимального значения панорамирования (или наоборот) использование кнопок мыши или клавиш со стрелками.

kQTVRObjectWrapTiltOn

Установка управления, чтобы позволить перенестись во время наклона. Когда эта установка управления включена, пользователь может перенести от текущего наклонного ограничительного максимального значения до наклонного ограничительного минимального значения (или наоборот) использование кнопок мыши или клавиш со стрелками.

kQTVRObjectCanZoomOn

Установка управления, чтобы позволить масштабировать. Когда эта установка управления включена, пользователь может изменить текущее поле зрения с помощью увеличения, и уменьшение включает клавиатуру (или использование кнопок контроллера VR).

kQTVRObjectReverseHControlOn

Установка управления для изменения направления горизонтального управления.

kQTVRObjectReverseVControlOn

Установка управления для изменения направления вертикального управления.

kQTVRObjectSwapHVControlOn

Установка управления для обмена горизонталью и вертикальными средствами управления.

kQTVRObjectTranslationOn

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

Ссылки дорожки для объектных дорожек

Ссылки дорожки на изображение объекта и дорожки горячей точки не обрабатываются тот же путь как ссылки дорожки на обзоры. Ссылочные типы дорожки являются тем же (kQTVRImageTrackRefType и kQTVRHotSpotTrackRefAtomType), но расположение справочных указателей отличается. Нет никакой записи в объектном демонстрационном атоме для справочных указателей дорожки. Вместо этого отдельные атомы с помощью VRTrackRefEntry структура сохранена как одноуровневые элементы к объектному демонстрационному атому. Типы этих атомов kQTVRImageTrackRefAtomType и kQTVRHotSpotTrackRefAtomType. Если любой из этих атомов не присутствует, то справочный указатель к соответствующей дорожке, как предполагается, 1.

Фактические представления объекта для объектного узла содержатся в объектной дорожке изображения, которая обычно является стандартным видеотреком QuickTime. (Объектная дорожка изображения может также быть любым типом дорожки, которая способна к отображению изображения, такова как QuickTime 3D дорожка.)

Как описано в Главе 1 QuickTime VR, эти представления часто получаются путем перемещения камеры вокруг объекта в определенном образце панорамирования и углов наклона. Представления должны тогда быть упорядочены в объектную матрицу изображений, которая сохранена как одномерная последовательность кадров в видеотреке фильма (см. рисунок 4-31).

Рисунок 4-31  структура изображения отслеживает для объекта
The structure of an image track for an object

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

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

Носители фильма

Носители фильма используются для инкапсуляции встроенных фильмов в фильмах в формате QuickTime. Эта функция доступна в QuickTime 4.1.

Демонстрационное описание фильма

Носители фильма не имеют уникального демонстрационного описания. Это использует минимальное демонстрационное описание, которое является SampleDescriptionRecord.

Демонстрационный формат носителей фильма

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

kMovieMediaDataReference

Тип ссылки на данные и ссылка на данные. Тип ссылки на данные сохранен как OSType в начале атома. Ссылка на данные сохранена после типа ссылки на данные. Если типом ссылки на данные является URL, и ссылка на данные для фильма на веб-сайте Apple, содержание атома было бы url http://www.apple.com/foo.mov.

Может быть больше чем один атом этого типа. Первый атом этого типа должен иметь атом ID 1. Дополнительные ссылки на данные должны быть пронумерованы последовательно.

kMovieMediaDefaultDataReferenceID

Этот атом содержит a QTAtomID это указывает ID ссылки на данные для использования при инстанцировании встроенного фильма для этой выборки. Если этот атом не присутствует, ссылка на данные с ID 1 используется.

kMovieMediaSlaveTime

Булевская переменная, указывающая действительно ли TimeBase из встроенного фильма должен быть назначен ведомым устройством к TimeBase из родительского фильма. Если TimeBase назначен ведомым устройством, нулевое время встроенного фильма будет соответствовать времени начала своей выборки носителей фильма. Далее, скорость воспроизведения встроенного фильма будет всегда совпадать с родительским фильмом. Если TimeBase не назначен ведомым устройством, встроенный фильм примет значение по умолчанию к уровню 0 и времени по умолчанию любой временной стоимости по умолчанию, с которой он инстанцировал (который может не быть 0). Если TimeBase не назначен ведомым устройством, встроенный фильм может проигрываться любым включая AutoPlay атом в выборке носителей фильма или при помощи соединенного проводом действия. Если этот атом не присутствует, встроенные значения по умолчанию фильма к не назначенный ведомым устройством.

kMovieMediaSlaveAudio

Булевская переменная, указывающая, должны ли аудио свойства встроенного фильма быть назначены ведомым устройством к тем из родительского фильма. Когда аудио назначено ведомым устройством, все аудио свойства содержания дорожки дублированы во встроенном фильме. Эти свойства включают громкость звука, баланс, бас и тройной, и измерение уровня. Если этот атом не присутствует, встроенные значения по умолчанию фильма к не назначенное ведомым устройством аудио.

kMovieMediaSlaveGraphicsMode

Булевская переменная, указывающая, как графический режим содержания дорожки применяется к встроенному фильму. Если графический режим не назначен ведомым устройством, то весь встроенный фильм отображается с помощью его собственных графических режимов. Результат получения встроенного фильма составляется на содержание фильма с помощью графического режима содержания дорожки. Если графический режим назначен ведомым устройством, то графический режим каждой дорожки во встроенном фильме проигнорирован, и вместо этого графический режим содержания дорожки используется. В этом случае дорожки встроенного фильма составляют свое получение непосредственно в содержание родительского фильма. Если этот атом не присутствует, значения по умолчанию графического режима к не назначенный ведомым устройством. Работа в режиме ведомого устройства графического режима полезна для составления композита полупрозрачных носителей – например, PNG с альфа-каналом – поверх других носителей.

kMovieMediaSlaveTrackDuration

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

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

kMovieMediaAutoPlay

Булевская переменная, указывающая, должен ли встроенный фильм начать играть, сразу будучи инстанцированным. Этот атом только используется если TimeBase из встроенного фильма не назначен ведомым устройством к родительскому фильму. Посмотрите kMovieMediaSlaveTime атом в Демонстрационном Формате Носителей Фильма для получения дополнительной информации. Если функцию автовоспроизведения будут требовать, то фильм будет проигрываться в его льготной ставке, будучи инстанцированным. Если этот атом не будет присутствовать, то встроенный фильм не будет автоматически играть.

kMovieMediaLoop

A UInt8 это указывает, как должен циклично выполниться встроенный фильм. Этот атом только используется если TimeBase из встроенного фильма не назначен ведомым устройством к родительскому фильму. Посмотрите kMovieMediaSlaveTime атом в Демонстрационном Формате Носителей Фильма для получения дополнительной информации. Если этот атом будет содержать 0, или если этот атом не будет присутствовать, то встроенный фильм не циклично выполнится. Если этот атом содержит значение 1, встроенные циклы фильма обычно — т.е. когда он достигает конца, он циклично выполняется назад к началу. Если этот атом содержит значение 2, встроенный фильм использует палиндромическое цикличное выполнение. Все другие значения резервируются.

kMovieMediaUseMIMEType

Текст (не струна до или строка Паскаля), который указывает тип MIME фильма, импортирует компонент, который должен использоваться для инстанцирования этого носители. Это полезно в случаях, где ссылка на данные может не содержать информацию о типе MIME. Если этот атом не присутствует, тип MIME ссылки на данные, как определено во время инстанцирования используется. Этот атом предназначается, чтобы позволить авторам контента метод для работы вокруг типа MIME обязательные проблемы. Это не должно обычно требоваться и не должно быть включено в выборки носителей фильма по умолчанию.

kMovieMediaTitle

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

kMovieMediaAltText

Текст (не струна до или строка Паскаля), который выведен на экран пользователю, когда встроенный фильм инстанцируют или если нельзя инстанцировать встроенный фильм. Если этот атом не присутствует, имя ссылки на данные (обычно имя файла) используется.

kMovieMediaClipBegin

A MovieMediaTimeRecord это указывает время встроенного фильма, который должен использоваться. Клип начинается, атом обеспечивает способ указать, что не должна использоваться часть начала встроенного фильма. Если этот атом не присутствует, начало встроенного фильма не изменяется. Обратите внимание на то, что этот атом не изменяет время, в которое встроенный фильм начинает играть во временной шкале родительского фильма. Если время, указанное в клипе, начинается, атом больше, чем продолжительность встроенного фильма, то встроенный фильм не будет играть вообще.

struct MovieMediaTimeRecord {
 wide            time;
TimeScale       scale;
};
kMovieMediaClipDuration

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

kMovieMediaEnableFrameStepping

Булевская переменная, указывающая, нужно ли встроенный фильм рассмотреть при выполнении операций шага, в частности использовании интересных вызовов времени с nextTimeStep флаг. Если этот атом не присутствует или установлен в false, встроенный фильм не включен в вычисления шага. Если атом установлен в true, это включено в вычисления шага.

kMovieMediaBackgroundColor

RGBColor это используется для заполнения фона, когда фильм инстанцируют или когда этому не удается инстанцировать.

kMovieMediaRegionAtom

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

kMovieMediaSpatialAdjustment

Этот атом содержит OSType это указывает, как встроенный фильм должен масштабироваться для адаптации полю дорожки. Если этот атом не присутствует, значение по умолчанию kMovieMediaFitFill. Эти режимы все на основе параметров макета SMIL.

kMovieMediaFitClipIfNecessary

Если носители будут больше, чем поле дорожки, то оно будет отсечено; если это будет меньше, то любая дополнительная область будет прозрачна.

kMovieMediaFitFill

Носители будут масштабироваться для завершенного заполнения поля дорожки.

kMovieMediaFitMeet

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

kMovieMediaFitSlice

Носители масштабируются пропорционально так, чтобы меньшая размерность была абсолютно видима.

kMovieMediaFitScroll

Не в настоящее время реализовываемый. Это в настоящее время имеет то же поведение как kMovieMediaFitClipIfNecessary. Когда реализовано, этому опишут поведение в спецификации SMIL для элемента макета прокрутки.

kMovieMediaRectangleAtom

Четыре дочерних атома, определяющие прямоугольник. Не все дочерние атомы должны присутствовать: вершина и оставленный должна и появиться вместе, ширина и высота должны оба появиться вместе. Размерности, содержавшиеся в этом прямоугольнике, используются вместо поля дорожки при применении содержания пространственного атома корректировки. Если вершина и оставленный не указана, вершина и оставлена содержания поля дорожки, используются. Если ширина и высота не указаны, ширина и высота содержания поля дорожки используются. Каждый дочерний атом содержит a UInt32.

kMovieMediaTop

Если настоящее, вершина прямоугольника

kMovieMediaLeft

Если настоящее, левая граница прямоугольника

kMovieMediaWidth

Если настоящее, ширина прямоугольника

kMovieMediaHeight

Если настоящее, высота прямоугольника