Технические вопросы и ответы QA1460

Сеансы распаковки - Установка точности кодека и полевого режима

Q: При переходе к Сеансам Распаковки, как таковы точность кодека и опции как набор деинтерлейсинга?

A: При переходе к Сеансам Распаковки, как таковы точность кодека и опции как набор деинтерлейсинга?

Более старая Последовательность Распаковки APIs имела несколько определенных APIs для установки этих опций. Точность кодека, например, могла быть установлена, сначала создав последовательность путем вызова DecompressSequenceBeginS или после того, как последовательность создавалась путем вызова SetDSequenceAccuracy. Флаги Последовательности распаковки такой как codecDSequenceDeinterlaceFields с другой стороны, должен был бы быть установлен отдельно путем вызова SetDSequenceFlags.

APIs Сеанса Распаковки теперь представляет более объединенный подход для получения и установки опций, хотя использование свойств (это - тренд, Вы видите всюду по всему современному QuickTime API).

При создании Сеанса Распаковки одного из параметров Вы передаете ICMDecompressionSessionCreate ссылка опций сеанса распаковки (ICMDecompressionSessionOptionsRef). Эта ссылка возвращается ICMDecompressionSessionOptionsCreate и значения определенных свойств сеанса распаковки, которому возражают опции, установлены путем вызова ICMDecompressionSessionOptionsSetProperty.

ImageCompression.h содержит список перечислений для опций сеанса распаковки (kQTPropertyClass_ICMDecompressionSessionOptions), например kICMDecompressionSessionOptionsPropertyID_FieldMode для установки специальной полевой обработки. Опции режима Field UInt32 значения описаны определением типа ICMFieldMode. Эти режимы тогда используются с kICMDecompressionSessionOptionsPropertyID_FieldMode свойство.

kICMFieldMode_BothFields - Both fields should be decompressed.

kICMFieldMode_TopFieldOnly - Only the top field should be decompressed, producing a half-height image.

kICMFieldMode_BottomFieldOnly - Only the bottom field should be decompressed, producing a
                                half-height image.

kICMFieldMode_DeinterlaceFields - Both fields should be decompressed, and then filtered to reduce
                                  interlacing artifacts.

ImageCompression.h также содержит список CodecQ значения, указывающие точность распаковки. Эти значения используются с kICMDecompressionSessionOptionsPropertyID_Accuracy свойство. Если это свойство не было установлено в объекте опций сеанса распаковки, установка точности сеанса по умолчанию codecNormalQuality.

Перечисление 1  , Устанавливающее некоторые опции Decompression Session.

ICMDecompressionSessionOptionsRef sessionOptions = NULL;
CodecQ codecAccuracy = codecHighQuality;
ICMFieldMode fieldMode = kICMFieldMode_DeinterlaceFields;

...

// create a decompression session options object
err = ICMDecompressionSessionOptionsCreate(kCFAllocatorDefault, &sessionOptions);
if (noErr == err) {

    // set accuracy
    ICMDecompressionSessionOptionsSetProperty(sessionOptions,
                                              kQTPropertyClass_ICMDecompressionSessionOptions,
                                              kICMDecompressionSessionOptionsPropertyID_Accuracy,
                                              sizeof(CodecQ),
                                              &codecAccuracy);
    // set field mode
    ICMDecompressionSessionOptionsSetProperty(sessionOptions,
                                              kQTPropertyClass_ICMDecompressionSessionOptions,
                                              kICMDecompressionSessionOptionsPropertyID_FieldMode,
                                              sizeof(ICMFieldMode),
                                              &fieldMode);
}

...

// create the decompression session passing in the options object
err = ICMDecompressionSessionCreate(kCFAllocatorDefault, ..., sessionOptions, ...);
if (err) goto bail;

...

// the session will retain the options object so you can release it
// you can also change options during the session by modifying the options object
ICMDecompressionSessionOptionsRelease(sessionOptions);

...

Ссылки



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


ДатаПримечания
12.01.2006

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