Полученная поддержка обработчика носителей
В этой главе описываются функции и константы, которые Ваш полученный обработчик носителей может поддерживать и структура данных, которую Ваш компонент может использовать для взаимодействия с основным обработчиком носителей.
Структура данных
GetMovieCompleteParams тип данных определяет расположение полной структуры параметра фильма, используемой MediaInitialize функция:
typedef struct { |
short version; /* version; always 1 */ |
Movie theMovie; /* movie identifier */ |
Track theTrack; /* track identifier */ |
Media theMedia; /* media identifier */ |
TimeScale movieScale; /* movie's time scale */ |
TimeScale mediaScale; /* media's time scale */ |
TimeValue movieDuration; /* movie's duration */ |
TimeValue trackDuration; /* track's duration */ |
TimeValue mediaDuration; /* media's duration */ |
Fixed effectiveRate; /* media's effective rate */ |
TimeBase timeBase; /* media's time base */ |
short volume; /* media's volume */ |
Fixed width; /* width of display area */ |
Fixed height; /* height of display area */ |
MatrixRecord trackMovieMatrix; /* transformation matrix */ |
CGrafPtr moviePort; /* movie's graphics port */ |
GDHandle movieGD; /* movie's graphics device */ |
PixMapHandle trackMatte; /* track's matte */ |
QTAtomContainer inputMap; /* media's input map */ |
} GetMovieCompleteParams; |
Поле |
Описание |
|---|---|
|
Указывает версию этой структуры. Это поле всегда устанавливается в 1. |
|
Идентифицирует фильм, содержащий дорожку текущих носителей. Этот идентификатор фильма предоставляется Панелью инструментов Фильма. Ваш компонент может использовать этот идентификатор для получения информации о фильме, использующем носители. |
|
Идентифицирует дорожку, содержащую текущие носители. Этот идентификатор дорожки предоставляется Панелью инструментов Фильма. Ваш компонент может использовать этот идентификатор для получения информации о дорожке, содержащей носители. Например, Вы могли бы вызвать Панель инструментов Фильма |
|
Идентифицирует текущие носители. Этот идентификатор носителей предоставляется Панелью инструментов Фильма. Ваш полученный обработчик носителей может использовать этот идентификатор для чтения выборок или демонстрационных описаний от текущих носителей, с помощью Панели инструментов Фильма |
|
Указывает масштаб времени фильма, содержащего дорожку текущих носителей. Если Панель инструментов Фильма изменяет масштаб времени фильма, панель инструментов вызывает Ваш полученный обработчик носителей |
|
Указывает масштаб времени текущих носителей. Если Панель инструментов Фильма изменяет масштаб времени Ваших носителей, панель инструментов вызывает Ваш полученный обработчик носителей |
|
Содержит продолжительность фильма. Это значение выражено в масштабе времени фильма. |
|
Содержит продолжительность дорожки. Это значение выражено в масштабе времени фильма. |
|
Содержит продолжительность носителей. Это значение выражено в масштабе времени носителей. |
|
Содержит действующую ставку носителей. Этот уровень связывает масштаб времени носителей с течением абсолютного времени и не обязательно соответствует уровню фильма. Это значение принимает во внимание любые основные основы времени, которые могут служить основе времени носителей. Значение этого поля указывает число единиц измерения времени (в масштабе времени носителей) та передача каждую секунду. Этот уровень представлен как 32-разрядное число фиксированной точки. Старший разряд 16 битов содержат целочисленную часть и младший разряд 16 битов, содержит дробную часть. Когда время перемещается назад для носителей, уровень отрицателен. Каждый раз, когда Панель инструментов Фильма изменяет действующую ставку Ваших носителей, она вызывает Ваш полученный обработчик носителей |
|
Идентифицирует основу времени носителей. |
|
Содержит текущий параметр громкости носителей. Это значение представлено как 16-разрядное число фиксированной точки. Старший разряд 8 битов содержит целочисленную часть; младший разряд 8 битов содержит дробную часть. Объем оценивает диапазон от-1.0 до 1,0. Отрицательные величины не играют звука, но сохраняют абсолютное значение параметра громкости. Если Панель инструментов Фильма изменяет объем Ваших носителей, она вызывает Ваш полученный обработчик носителей |
|
Указывает ширину, в пикселях, прямоугольника дорожки. Это поле, вместе с |
|
Указывает высоту, в пикселях, прямоугольника дорожки. Это значение соответствует y координате нижнего правого угла прямоугольника и выражено как число фиксированной точки. |
|
Указывает матрицу, преобразовывающую пиксели Ваших носителей в систему координат фильма. Панель инструментов Фильма получает эту матрицу путем конкатенации матрицы дорожки и матрицы фильма. Необходимо использовать эту матрицу каждый раз, когда Вы выводите на экран графические данные от своих носителей. Каждый раз, когда Панель инструментов Фильма изменяет эту матрицу, она вызывает Ваш полученный обработчик носителей |
|
Указывает графический порт фильма. Каждый раз, когда Панель инструментов Фильма изменяет графический мир фильма, она вызывает Ваш полученный обработчик носителей |
|
Указывает графическое устройство фильма. Каждый раз, когда Панель инструментов Фильма изменяет графический мир фильма, она вызывает Ваш полученный обработчик носителей |
|
Идентифицирует матовую область, присвоенную дорожке, использующей Ваши носители. Это поле содержит дескриптор к пиксельной карте, содержащей матовое стекло смешения. Ваш компонент не ответственен за избавление от этого матового стекла. Если нет никакого матового стекла, это поле установлено в |
|
Ссылка на входную карту носителей. Входная карта носителей не должна быть изменена или расположена. |
Флаг менеджера компонентов
Менеджер компонентов позволяет Вам указывать информацию о возможностях своего компонента в componentFlags поле записи описания компонента. В этом поле, mediaHandlerFlagBaseClient флаг указывает, что Ваш компонент получен из другого компонента. Установка этого флага к 1 говорит Менеджеру компонентов, что Ваш компонент является клиентом основного обработчика носителей.
Функции
Этот раздел перечисляет функции, которые могут поддерживаться полученными компонентами обработчика носителей.
Управление компонентом
Полученные обработчики носителей обеспечивают три функции, позволяющие Панели инструментов Фильма управлять своим отношением с обработчиком носителей. Панель инструментов Фильма вызывает Ваш MediaInitialize дать Вам возможность подготовить обеспечивать доступ к Вашим носителям. Панель инструментов Фильма предоставляет время обработки Вашему обработчику путем вызова Вашего MediaIdle функция. Ваш MediaGGetStatus функция позволяет Панели инструментов Фильма получать информацию о статусе после вызова MediaIdle.
Общее управление данными
В то время как основной обработчик носителей изолирует Ваш компонент от подробных данных доступа к данным носителей, Ваш полученный обработчик носителей все еще должен отслеживать определенную информацию для поддержки воспроизведения фильма и создания. В этом разделе рассматриваются функции, помогающие Вашему обработчику носителей управлять своей информацией.
Ваш обработчик носителей может хранить конфиденциальную информацию в своих носителях. Панель инструментов Фильма вызывает две функции-обработчика носителей, чтобы дать Вам возможность получить или хранить эту информацию. MediaPutMediaInfo функция позволяет Вам хранить свою специальную информацию в Ваших носителях. MediaGetMediaInfo функция поставляет те данные Вашему обработчику носителей.
Когда его дорожка была включена или отключена путем вызова Вашего, Панель инструментов Фильма говорит Ваш обработчик носителей MediaSetActive функция. Панель инструментов Фильма подготавливает Ваш обработчик к воспроизведению путем вызова Вашего MediaPreroll функция. Каждый раз, когда скорость воспроизведения Ваших носителей изменяется, Панель инструментов Фильма вызывает Ваш MediaSetRate функция. Каждый раз, когда дорожка, использующая Ваши носители, редактируется, Панель инструментов Фильма вызывает Ваш MediaTrackEdited функция.
Если Панель инструментов Фильма вызвала SetMediaSampleDescription функция на демонстрационном описании, это использует MediaSampleDescriptionChanged функция для уведомления обработчика носителей изменения.
Панель инструментов Фильма позволяет дорожкам быть идентифицированными различными характеристиками. Например, возможно запросить что все дорожки, содержащие информацию о звуке искаться. Чтобы определить, имеет ли дорожка данную характеристику, Панель инструментов Фильма запрашивает обработчик носителей для каждой дорожки. Панель инструментов Фильма вызывает MediaHasCharacteristic функция с заданной характеристикой.
Панель инструментов Фильма использует две функции для информирования Вас об изменениях в среде времени Ваших носителей. MediaSetMediaTimeScale функция позволяет Панели инструментов Фильма изменять масштаб времени Ваших носителей. MediaSetMovieTimeScale когда масштаб времени фильма изменился, функция позволяет Панели инструментов Фильма говорить Вам.
Другие полезные функции включают
MediaGSetActiveSegmentMediaInvalidateRegionMediaGetNextStepTimeMediaTrackReferencesChangedMediaTrackPropertyAtomChangedMediaSetTrackInputMapReferenceMediaGetSampleDataPointerMediaReleaseSampleDataPointerMediaCompareMediaSetVideoParamMediaGetVideoParamMediaSetNonPrimarySourceDataMediaGetOffscreenBufferSizeMediaSetHintsMediaGetName
Графическое управление данными
Если Ваш обработчик носителей рисует данные носителей по экрану, необходимо управлять графической средой носителей. Панель инструментов Фильма использует много функций для информирования Вас об изменениях в графической среде. Если Вы установили, Панель инструментов Фильма только вызывает эти функции handlerHasSpatial отметьте к 1 в параметре флагов MediaSetHandlerCapabilities функция.
Панель инструментов Фильма вызывает Ваш обработчик MediaSetGWorld функционируйте каждый раз, когда изменились графический порт Ваших носителей или графическое устройство. MediaSetDimensions функция позволяет Панели инструментов Фильма сообщать Вашему обработчику об изменениях в его пространственных размерностях. Каждый раз, когда или фильм или изменения матрицы дорожки, Панель инструментов Фильма вызывает Ваш MediaSetMatrix функция. Точно так же, если область отсечения Ваших носителей изменяется, Панель инструментов Фильма вызывает Ваш MediaSetClip функция.
Когда это создает изображение фильма от своих дорожек компонента, Панель инструментов Фильма должна быть в состоянии определить, какие дорожки прозрачны. Панель инструментов Фильма вызывает Ваш MediaGetTrackOpaque функция для получения этой информации о носителях.
Панель инструментов Фильма вызывает Ваш MediaGetNextBoundsChange функционируйте так, чтобы это могло изучить, когда Ваши носители затем изменят его форму дисплея. Когда Панель инструментов Фильма хочет узнать форму области, в которую Вы рисуете свои носители, это вызывает Ваш MediaGetSrcRgn функция.
Другие полезные функции включают
MediaGetDrawingRgnMediaGetGraphicsModeMediaSetGraphicsMode
Звуковое управление данными
Панель инструментов Фильма использует Ваш MediaGSetVolume функция для сообщения обработчика носителей, когда изменилась его громкость звука. Это использует MediaSetSoundLocalizationData поддерживать 3D звуковые возможности в обработчике носителей, играющем звук.
Основная функция утилиты обработчика носителей
Основной компонент обработчика носителей Apple обеспечивает служебную функцию, MediaSetHandlerCapabilities, который позволяет Вам говорить основной обработчик, что может сделать Ваш полученный обработчик.
Управление прогрессивными загрузками
Функция MediaMakeMediaTimeTable вызывается основным обработчиком носителей для создания расписания носителей каждый раз, когда приложение или другое программное обеспечение вызывают Панель инструментов QTMovieNeedsTimeTable, GetMaxLoadedTimeInMovie, MakeTrackTimeTable, или MakeMediaTimeTable функция. Когда приложение или другое программное обеспечение вызывают одну из этих функций, это выделяет разблокированный перемещаемый блок памяти для расписания, которое будет возвращено, и передает дескриптор ему в параметре смещений. Ваш полученный обработчик носителей должен изменить размеры блока для размещения расписания, которое это возвращает.
Расписание, которое возвращает Ваш полученный обработчик носителей, является двухмерной антенной решеткой длинных целых, организованной так, чтобы каждая строка в таблице содержала значения для одной ссылки на данные. Первый столбец в таблице содержит значения в течение времени в носителях, указанных startTime параметр и каждый последующий столбец содержат значения для точки в носителях, которая является позже значением, указанным timeIncrement параметр. Каждое значение длинного целого в таблице указывает смещение, в байтах, с начала ссылки на данные для той точки в носителях.
Константы
Константы, перечисленные в этом разделе, поддерживают функции, перечисленные в Функциях.
Функциональные флаги
/* flags in flags parameter of MediaSetHandlerCapabilities function */ |
enum { |
handlerHasSpatial = 1<<0, /* draws */ |
handlerCanClip = 1<<1, /* clips */ |
handlerCanMatte = 1<<2, /* reserved */ |
handlerCanTransferMode = 1<<3, /* does transfer modes */ |
handlerNeedsBuffer = 1<<4, /* use offscreen buffer */ |
handlerNoIdle = 1<<5, /* never draws */ |
handlerNoScheduler = 1<<6, /* schedules self */ |
handlerWantsTime = 1<<7, /* needs more time */ |
handlerCGrafPortOnly = 1<<8 /* color only */ |
}; |
/* values for inFlags parameter of MediaIdle function */ |
enum { |
mMustDraw = 1<<3, /* must draw now */ |
mAtEnd = 1<<4, /* current time |
corresponds to end of movie */ |
mPreflightDraw = 1<<5 /* must not draw */ |
}; |
/* values for outFlags parameter of MediaIdle function */ |
enum { |
mDidDraw = 1<<0, /* did draw */ |
mNeedsToDraw = 1<<2 /* needs to draw */ |
}; |
Типы компонента и характеристики
/* component type and subtype values */ |
#define MediaHandlerType 'mhlr' /* derived media handler */ |
#define BaseMediaType 'gnrc' /* base media handler */ |
/* constants used in the characteristic parameter of the |
MediaHasCharacteristic function */ |
#define VisualMediaCharacteristic 'eyes' /* visual media characteristic */ |
#define AudioMediaCharacteristic 'ears' /* audio media characteristic */ |
Селекторы
/* selectors for derived media handler components */ |
enum { |
kMediaInitializeSelect = 0x501, /* MediaInitialize */ |
/* MediaSetHandlerCapabilities */ |
kMediaSetHandlerCapabilitiesSelect = 0x502, |
kMediaIdleSelect = 0x503, /* MediaIdle */ |
kMediaGetMediaInfoSelect = 0x504, /* MediaGetMediaInfo */ |
kMediaPutMediaInfoSelect = 0x505, /* MediaPutMediaInfo */ |
kMediaSetActiveSelect = 0x506, /* MediaSetActive */ |
kMediaSetRateSelect = 0x507, /* MediaSetRate */ |
kMediaGGetStatusSelect = 0x508, /* MediaGGetStatus */ |
kMediaTrackEditedSelect = 0x509, /* MediaTrackEdited */ |
kMediaSetMediaTimeScaleSelect = 0x50A, /* MediaSetMediaTimeScale */ |
kMediaSetMovieTimeScaleSelect = 0x50B, /* MediaSetMovieTimeScale */ |
kMediaSetGWorldSelect = 0x50C, /* MediaSetGWorld */ |
kMediaSetDimensionsSelect = 0x50D, /* MediaSetDimensions */ |
kMediaSetClipSelect = 0x50E, /* MediaSetClip */ |
kMediaSetMatrixSelect = 0x50F, /* MediaSetMatrix */ |
kMediaGetTrackOpaqueSelect = 0x510, /* MediaGetTrackOpaque */ |
kMediaSetGraphicsModeSelect = 0x511, /* MediaSetGraphicsMode */ |
kMediaGetGraphicsModeSelect = 0x512, /* MediaGetGraphicsMode */ |
kMediaGSetVolumeSelect = 0x513, /* MediaGSetVolume */ |
kMediaSetSoundBalanceSelect = 0x514, /* MediaSetSoundBalance */ |
kMediaGetSoundBalanceSelect = 0x515, /* MediaGetSoundBalance */ |
kMediaGetNextBoundsChangeSelect = 0x516, /* MediaGetNextBoundsChange */ |
kMediaGetSrcRgnSelect = 0x517, /* MediaGetSrcRgn */ |
kMediaPrerollSelect = 0x518, /* MediaPreroll */ |
/* MediaSampleDescriptionChanged */ |
kMediaSampleDescriptionChangedSelect = 0x519, |
kMediaHasCharacteristicSelect = 0x51A /* MediaHasCharacteristic */ |
}; |
Параметры видео носителей
whichparam параметр к MediaSetVideoParam и MediaGetVideoParam функции указывают, какой видео параметр Вы хотите скорректировать. QuickTime определяет эти константы, которые можно использовать для конфигурирования whichparam параметр.
enum { |
kMediaVideoParamBrightness = 1, |
kMediaVideoParamContrast = 2, |
kMediaVideoParamHue = 3, |
kMediaVideoParamSharpness = 4, |
kMediaVideoParamSaturation = 5, |
kMediaVideoParamBlackLevel = 6, |
kMediaVideoParamWhiteLevel = 7 |
}; |
Срок |
Определение |
|---|---|
|
Значение яркости управляет полной яркостью оцифрованного видеоизображения. Значения яркости колеблются от 0 до 65 535, где 0 самая темная установка, и 65,535 самая легкая установка. |
|
Контрастные диапазоны значений от 0 до 65 535, где 0 не представляет изменения в основном изображении и больших значениях, увеличивают контраст видеоизображения (т.е. увеличивают наклон преобразования). |
|
Оттенок подобен управлению оттенком по телевидению. Это указано в градусах с набором дополнительных цветов, на расстоянии в 180 градусов (красный, 0 градусов, зеленый +120 градусов, и синий-120 градусов). QuickTime поддерживает значения оттенка, колеблющиеся от 0 (-180 градусов переключают оттенок на нижний регистр) к 65 535 (+179 градусов переключают оттенок на нижний регистр), где 32,767 представляет 0 градусов, переключают оттенок на нижний регистр. |
|
Диапазоны значений резкости от 0 до 65 535, где 0 не представляет фильтрации резкости и 65,535, представляют полную фильтрацию резкости. Более высокие значения приводят к визуальному впечатлению от увеличенной резкости изображения |
|
Степень насыщения управляет интенсивностью цвета. Например, на высоких уровнях насыщенности, красных, кажется, является красным; в низкой насыщенности, красной, кажется розовым. Допустимые степени насыщения колеблются от 0 до 65 535, где 0 минимальная степень насыщения, и 65,535 указывает максимальную насыщенность. |
|
Уровень черного относится к степени черноты в изображении. Самая высокая установка производит все-черное изображение; с другой стороны, самая низкая установка уступает мало, если таковые имеются, черный даже с черными объектами в сцене. Уровень черного оценивает диапазон от 0 до 65 535, где 0 представляет максимальное черное значение, и 65,535 представляет минимальное черное значение. |
|
Уровень белого относится к степени белизны в изображении. Уровень белого оценивает диапазон от 0 до 65 535, где 0 представляет минимальное белое значение, и 65,535 представляет максимальное белое значение |