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

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

Флаги экспорта фильма

flags параметр для ConvertMovieToFile функция указывает ряд флагов преобразования фильма. QuickTime обеспечивает этот флаг:

enum {
    showUserSettingsDialog  = 2,
    movieToFileOnlyExport   = 4,
    movieFileSpecValid      = 8
};

Срок

Определение

showUserSettingsDialog

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

movieToFileOnlyExport

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

movieFileSpecValid

Если этот флаг установлен и showUserSettingsDialog флаг установлен, name поле outputFile параметр используется в качестве имени по умолчанию экспортируемого файла в диалоговом окне Save As.

Флаги импорта фильма

flags параметр для ConvertFileToMovieFile и PasteHandleIntoMovie функции specifiy ряд флагов преобразования фильма. QuickTime обеспечивает один дополнительный флаг:

enum {
    showUserSettingsDialog  = 2
};

Срок

Определение

showUserSettingsDialog

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

Выравнивание флагов

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

enum {
    flattenFSSpecPtrIsDataRefRecordPtr  = 1L << 4
};

Срок

Определение

flattenFSSpecPtrIsDataRefRecordPtr

Установите этот флаг в 1 если FSSpec указатель является a DataReferencePtrMovie Типы данных. Эта возможность позволяет Вам сгладить фильмы для устройств кроме файловых систем.

Интересные флаги времен

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

Эти функции работают хорошо на большинство типов среды, включая видео и текст. Однако, потому что QuickTime хранит весь поток MPEG как единственную выборку, продвигаясь в следующие демонстрационные пропуски до конца последовательности. Для решения этой проблемы QuickTime представил новый флаг для интересных вызовов времени: nextTimeStep. Даже если существуют многократные кадры на выборку, для всех типов среды включая видео, текст и MPEG, этот флаг возвращает время следующего кадра. Приложения, реализующие единственные шаговые возможности, должны всегда использовать этот флаг вместо nextTimeMediaSample.

enum {
    nextTimeStep    = 1 << 4
};

Срок

Определение

nextTimeStep

Поиски следующего кадра в носителях фильма. Установите этот флаг в 1 для продвижения в следующий кадр.

Полноэкранные флаги

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

enum {
    fullScreenHideCursor            = 1L << 0,
    fullScreenAllowEvents           = 1L << 1,
    fullScreenDontChangeMenuBar     = 1L << 2,
    fullScreenPreflightSize         = 1L << 3
};

Срок

Определение

fullScreenHideCursor

Если этот флаг установлен, BeginFullScreen скрывает курсор. Это полезно, если Вы собираетесь играть фильм в формате QuickTime и не хотите, чтобы курсор был видим по фильму.

fullScreenAllowEvents

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

fullScreenDontChangeMenuBar

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

fullScreenPreflightSize

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

Текстовые демонстрационные флаги дисплея

displayflags параметр для TextMediaAddTESample и TextMediaAddTextSample функции управляют поведением текстового обработчика носителей. QuickTime обеспечивает эти флаги:

enum {
    dfContinuousScroll      = 1 << 9,
    dfFlowHoriz             = 1 << 10,
    dfContinuousKaraoke     = 1 << 11,
    dfDropShadow            = 1 << 12,
    dfAntiAlias             = 1 << 13,
    dfKeyedText             = 1 << 14,
    dfInverseHilite         = 1 << 15,
    dfTextColorHilite       = 1 << 16
};

Срок

Определение

dfContinuousScroll

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

dfFlowHoriz

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

dfContinuousKaraoke

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

dfDropShadow

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

dfAntiAlias

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

dfKeyedText

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

dfInverseHilite

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

dfTextColorHilite

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

Типы данных

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

Входные типы модификатора

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

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

Следующие входные типы в настоящее время определяются:

enum {
    kTrackModifierTypeMatrix            = 1,
    kTrackModifierTypeClip              = 2,
    kTrackModifierTypeGraphicsMode      = 5,
    kTrackModifierTypeVolume            = 3,
    kTrackModifierTypeBalance           = 4,
    kTrackModifierTypeImage            = 'vide',
    kTrackModifierObjectMatrix          = 6,
    kTrackModifierObjectGraphicsMode    = 7,
    kTrackModifierType3d4x4Matrix       = 8,
    kTrackModifierCameraData            = 9 
    kTrackModifierSoundLocalization     = 10
};

Срок

Определение

kTrackModifierTypeMatrix

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

kTrackModifierTypeClip

Данные, отправленные в этот ввод, должны быть в форме области QuickDraw. Область пересечена с исходным полем дорожки.

kTrackModifierTypeGraphicsMode

Данные, отправленные в этот ввод, должны быть в форме a ModifierTrackGraphicsModeRecord тип данных. Содержание записи используется в качестве установки графического режима для дорожки. Графический режим не объединен с текущим графическим режимом дорожки, а скорее переопределяет его.

kTrackModifierTypeVolume

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

kTrackModifierTypeBalance

Данные, отправленные в этот ввод, должны быть в форме 8-разрядного числа фиксированной точки. Это - тот же формат, в котором сохранены значения баланса QuickTime. Значение баланса используется в качестве установки баланса для дорожки. В отличие от модификатора объема, это не связывается с текущим уровнем баланса дорожки, но переопределяет текущий уровень баланса.

kTrackModifierTypeImage

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

kTrackModifierObjectMatrix

Данные, отправленные в этот ввод, должны быть в форме QuickTime MatrixRecordMovie Типы данных. Матрица отправляется в определенный объект в дорожке получения, как указано kTrackModifierObjectID атом во входной карте. Матрица действует как переопределение к текущей матрице объекта. Например, матрица могла быть отправлена в спрайт в дорожке спрайта. Это заставило бы спрайт перемещаться, не вся дорожка спрайта, как будет kTrackModifierMatrixMovie Типы данных.

kTrackModifierObjectGraphicsMode

Данные, отправленные в этот ввод, должны быть в форме a ModifierTrackGraphicsModeRecord тип данных. Содержание записи используется для варьирования непрозрачности объекта в дорожке. Например, Вы использовали бы данные, отправленные в этот ввод, чтобы варьироваться непрозрачность спрайта в дорожке спрайта, вместо того, чтобы изменить непрозрачность всей дорожки спрайта.

kTrackModifierSoundLocalization

Данные, отправленные в этот ввод, должны быть в форме звуковой записи данных локализации (SSpLocalizationDataMovie Типы данных). Эти данные уже переопределяют звуковые настройки локализации в использовании дорожкой.

Ссылки на данные

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

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

struct DataReferenceRecord {
    OSType  dataRefType;
    Handle  dataRef;
};
typedef struct DataReferenceRecord DataReferenceRecord;
typedef DataReferenceRecord *DataReferencePtr;

Поле

Определение

dataRefType

Указывает тип ссылки на данные. Для ссылки на данные псевдонима Вы устанавливаете параметр на rAliasType, указание, что ссылка является псевдонимом. Для ссылки на данные дескриптора, установленной параметр на HandleDataHandlerSubTypeMovie Типы данных.

dataRef

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

Идентификаторы фильма

Вы идентифицируете структуру данных для Панели инструментов Фильма посредством типа данных, предоставляющегося Панелью инструментов Фильма. Следующие типы данных в настоящее время определяются:

Ввести

Определение

Media

Указывает носители для работы. Ваше приложение получает идентификатор носителей из таких функций Панели инструментов Фильма как NewTrackMedia и GetTrackMedia.

Movie

Указывает фильм для работы. Ваше приложение получает идентификатор фильма из таких функций как NewMovie, NewMovieFromFile, и NewMovieFromHandle.

MovieEditState

Указывает состояние редактирования фильма для работы. Ваше приложение получает идентификатор состояния редактирования фильма при создании состояния редактирования путем вызова NewMovieEditState функция.

QTCallBack

Указывает обратный вызов для работы. Вы получаете идентификатор обратного вызова из NewCallBack функция.

TimeBase

Указывает основу времени для работы. Ваше приложение получает идентификатор основы времени из NewTimeBase или GetMovieTimeBase функции.

Track

Указывает дорожку для работы. Ваше приложение получает идентификатор дорожки из таких функций Панели инструментов Фильма как NewMovieTrack и GetMovieTrack.

TrackEditState

Указывает состояние редактирования дорожки для работы. Ваше приложение получает идентификатор состояния редактирования дорожки при создании состояния редактирования путем вызова NewTrackEditState функция.

UserData

Указывает пользовательский список данных для работы. Вы получаете пользовательский идентификатор списка данных путем вызова GetMovieUserData, GetTrackUserData, или GetMediaUserData функции.

Константы

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

#define kFix1 = (0x00010000);       /* fixed point value equal to 1.0 */
#define gestaltQuickTime 'qtim'           /* Movie Toolbox availability */
#define MovieFileType 'MooV'              /* movie file type */
#define VideoMediaType 'vide'             /* video media type */
#define SoundMediaType 'soun'             /* sound media type */
#define MediaHandlerType 'mhlr'           /* media handler type */
#define DataHandlerType 'dhlr'            /* data handler type */
#define TextMediaType 'text'              /* text media type */
#define GenericMediaType 'gnrc'           /* base media handler type */
#define DoTheRightThing = 0L              /* indicates default flag settings
                                                for Movie Toolbox functions */  
/* sound volume values in trackVolume parameter of NewMovieTrack function */
#define kFullVolume         = 0x100       /* full, natural volume
                                                 (8.8 format) */ 
#define kNoVolume           =   0         /* no volume */
/* constants for whichMediaTypes parameter of GetMovieNextInterestingTime
    function */
#define VisualMediaCharacteristic 'eyes'  /* visual media */
#define AudioMediaCharacteristic 'ears'   /* audio media */
 
enum
{
/* media quality settings in quality parameter of SetMediaQuality function */
    mediaQualityDraft           = 0x0000,    /* lowest quality level */
    mediaQualityNormal          = 0x0040,    /* acceptable quality level */
    mediaQualityBetter          = 0x0080,    /* better quality level */
    mediaQualityBest            = 0x00C0     /* best quality level */
};
 
/*values for callBackFlags field of QuickTime callback header structure used
    by clock components to communicate scheduling information about a
    callback event to the Movie Toolbox */
enum
{
    qtcbNeedsRateChanges           = 1,    /* rate changes */
    qtcbNeedsTimeChanges          = 2,    /* time changes */
    qtcbNeedsStartStopChanges      = 4     /* time base changes at start &
                                                stop times */ 
};
 
/* dialog items to include in dialog box definition for use with
    SFPGetFilePreview function */
enum
{
    sfpItemPreviewAreaUser         = 11,       /* user preview area */
    sfpItemPreviewStaticText       = 12,       /* static text preview */
    sfpItemPreviewDividerUser      = 13,       /* user divider preview */
    sfpItemCreatePreviewButton     = 14,       /* create preview button */
    sfpItemShowPreviewButton       = 15        /* show preview button */
};
 
enum
{                       
    movieInDataForkResID           = -1        /* magic resource ID */
};
 
/* flags for LoadIntoRAM functions */
enum
{
    keepInRam                  = 1<<0,     /* load and make so data  
                                                 cannot be purged */ 
    unkeepInRam                = 1<<1,     /* mark data so it can be purged */ 
    flushFromRam               = 1<<2,     /* empty handles and purge data
                                                 from memory */ 
    loadForwardTrackEdits      = 1<<3,     /* load only data around track edits;
                                                 play movie forward */ 
    loadBackwardTrackEdits     = 1<<4      /* load only data around edits;
                                                 play movie in reverse */ 
};
 
/* flag for PasteHandleIntoMovie function */
enum
{
    pasteInParallel = 1         /* changes function to take contents and type of
                                    handle and add to movie */ 
};
 
/* text description display flags used in TextMediaAddTextSample and
      TextMediaAddTESample */
enum
{
    dfDontDisplay           = 1<<0,   /* don't display the text */
    dfDontAutoScale         = 1<<1,   /* don't scale text as track
                                           bounds grows or shrinks */ 
    dfClipToTextBox         = 1<<2,   /* clip update to the text box */
    dfUseMovieBGColor       = 1<<3,   /* set text background to movie's
                                           background color */ 
    dfShrinkTextBoxToFit    = 1<<4,   /* compute minimum box to fit the
                                           sample */ 
    dfScrollIn              = 1<<5,   /* scroll text in until last of
                                           text is in view */ 
    dfScrollOut             = 1<<6    /* scroll text out until last of text is
                                           gone (if dfScrollIn is also set, 
                                           scroll in then out) */ 
    dfHorizScroll           = 1<<7,   /* scroll text horizontally; otherwise,
                                           it's vertical */ 
    dfReverseScroll         = 1<<8    /* vertically scroll down and horizontally
                                         scroll up; justification-dependent */ 
};
 
/* find flags for TextMediaFindNextText function */
    findTextEdgeOK           = 1<<0,     /* OK to find text at specified
                                              sample time */ 
    findTextCaseSensitive    = 1<<1,     /* case-sensitive search */
    findTextReverseSearch    = 1<<2,     /* search from sampleTime backward */
    findTextWraparound      = 1<<3,     /* wrap search when beginning or end
                                              of movie is reached */  
 
/* return display flags for application-defined text function */
enum
{
    txtProcDefaultDisplay    = 0,        /* use the media's default settings */
    txtProcDontDisplay       = 1,        /* don't display the text */
    txtProcDoDisplay         = 2         /* display the text */
};
 
enum
{
hintsScrubMode              = 1<<0,    /* toolbox can display key frames when
                                              movie is repositioned */ 
hintsAllowInterlace         = 1<<6,    /* use interlace option for compressor
                                              components */ 
hintsUseSoundInterp          = 1<<7    /* turn on sound interpolation */
};
typedef unsigned long playHintsEnum;

Коды результата

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

Постоянный

Значение

Описание

couldNotResolveDataRef

- 2000

Не может использовать эту ссылку на данные

badImageDescription

- 2001

Проблема с этим описанием изображения

badPublicMovieAtom

- 2002

Файл ролика повреждается

cantFindHandler

- 2003

Не может определить местоположение этого обработчика

cantOpenHandler

- 2004

Не может открыть этот обработчик

badComponentType

- 2005

Компонент не может разместить эти данные

noMediaHandler

- 2006

Носители не имеют никакого обработчика носителей

noDataHandler

- 2007

Носители не имеют никакого обработчика данных

invalidMedia

- 2008

Это носители повреждается или недопустимо

invalidTrack

- 2009

Эта дорожка повреждается или недопустима

invalidMovie

- 2010

Этот фильм повреждается или недопустим

invalidSampleTable

- 2011

Эта демонстрационная таблица повреждается или недопустима

invalidDataRef

- 2012

Эта ссылка на данные недопустима

invalidHandler

- 2013

Этот обработчик недопустим

invalidDuration

- 2014

Это значение продолжительности недопустимо

invalidTime

- 2015

Эта временная стоимость недопустима

cantPutPublicMovieAtom

- 2016

Не может записать в этот файл ролика

badEditList

- 2017

Список редактирования дорожки повреждается

mediaTypesDontMatch

- 2018

Эти носители не соответствуют

progressProcAborted

- 2019

Ваша процедура прогресса возвратила ошибку

movieToolboxUninitialized

- 2020

Вы не инициализировали Панель инструментов Фильма

wfFileNotFound

- 2021

Не может определить местоположение этого файла

cantCreateSingleForkFile

- 2022

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

invalidEditState

- 2023

Это состояние редактирования недопустимо

nonMatchingEditState

- 2024

Это состояние редактирования не допустимо для этого фильма

staleEditState

- 2025

Фильм или дорожка были расположены

userDataItemNotFound

- 2026

Не может определить местоположение этого пользовательского элемента данных

maxSizeToGrowTooSmall

- 2027

Максимальный размер должен быть больше

badTrackIndex

- 2028

Это индексное значение дорожки не допустимо

trackIDNotFound

- 2029

Не может определить местоположение дорожки с этим Значением идентификатора

trackNotInMovie

- 2030

Эта дорожка не находится в этом фильме

timeNotInTrack

- 2031

Эта временная стоимость за пределами этой дорожки

timeNotInMedia

- 2032

Эта временная стоимость является за пределами этого носителями

badEditIndex

- 2033

Это индексное значение редактирования не допустимо

internalQuickTimeError

- 2034

Внутренняя ошибка

cantEnableTrack

- 2035

Не может включить эту дорожку

invalidRect

- 2036

Указанный прямоугольник имеет недопустимые координаты

invalidSampleNum

- 2037

Нет никакой выборки с этим демонстрационным числом

invalidChunkNum

- 2038

Нет никакого блока с этим числом блока

invalidSampleDescIndex

- 2039

Демонстрационное индексное недопустимое значение описания

invalidChunkCache

- 2040

Кэш блока повреждается

invalidSampleDescription

- 2041

Это демонстрационное описание недопустимо или повреждено

dataNotOpenForRead

- 2042

Не может читать из этого источника данных

dataNotOpenForWrite

- 2043

Не может записать в этот источник данных

dataAlreadyOpenForWrite

- 2044

Источник данных уже открыт для записи

dataAlreadyClosed

- 2045

Вы уже закрыли этот источник данных

endOfDataReached

- 2046

Конец данных

dataNoDataRef

- 2047

Никакое значение ссылки на данные не найдено

noMovieFound

- 2048

Панель инструментов не может найти фильм в файле ролика

invalidDataRefContainer

- 2049

Недопустимая ссылка на данные

badDataRefIndex

- 2050

Индексное значение ссылки на данные недопустимо

noDefaultDataRef

- 2051

Не удалось найти ссылку на данные по умолчанию

couldNotUseAnExistingSample

- 2052

Панель инструментов фильма не могла использовать выборку

featureUnsupported

- 2053

Панель инструментов фильма не поддерживает эту функцию