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

QuickTime Визуальный Контекст - Установка Атрибута kQTVisualContextOutputColorSpaceKey

Q: Как я устанавливаю атрибут пространства цвета вывода при создании QuickTime Текстура OpenGL Визуальный Контекст?

A: Как я устанавливаю атрибут пространства цвета вывода при создании QuickTime Текстура OpenGL Визуальный Контекст?

Оба QuickTime Визуальное создание Контекста APIs, QTOpenGLTextureContextCreate и QTPixelBufferContextCreate возьмите словарь соединенных атрибутов значения ключа, влияющих на аспекты создаваемого контекста. Единственные атрибуты могут также быть установлены после создания путем вызова QTVisualContextSetAttribute. Полный список визуальных атрибутов контекста может быть найден в ImageCompression.h.

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

Key: kQTVisualContextWorkingColorSpaceKey

Value: CGColorSpaceRef

Description:

The color space in which QuickTime will perform image processing. If this attribute is not set, images will be
processed in the output color space.
Key: kQTVisualContextOutputColorSpaceKey

Value: CGColorSpaceRef

Description:

The color space of images produced by this visual context. If this attribute is not set, images may be in any
color space.

Для установки атрибута пространства цвета вывода сначала создайте словарь атрибутов, содержащий a CGColorSpaceRef соединенный с kQTVisualContextOutputColorSpaceKey ключ, затем передайте, это приписывает словарь QTOpenGLTextureContextCreate как показано в перечислении 1. Перечисление 2 демонстрирует, как создать a CGColorSpaceRef от профиля дисплея.

Перечисление 1  Визуальное создание Контекста с атрибутами.

QTVisualContextRef  theVisualContext;

...

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                         [self displayColorSpace], kQTVisualContextOutputColorSpaceKey, nil];

error = QTOpenGLTextureContextCreate(kCFAllocatorDefault, (CGLContextObj)[[self openGLContext] CGLContextObj],
                                    (CGLPixelFormatObj)[[self pixelFormat] CGLPixelFormatObj],
                                    (CFDictionaryRef)attributes,
                                    &theVisualContext);
if (noErr == error) {
    [self setVisualContext:theVisualContext];
} ...

...

Перечисление 2  , Создающее пространство цвета отображения.

...

// return currently set display color space
- (CGColorSpaceRef)displayColorSpace
{
    return mDisplayColorSpace;
}

// set the display color space, this function in null safe
- (void)setDisplayColorSpace:(CGColorSpaceRef)inDisplayColorSpace
{
    CGColorSpaceRetain(inDisplayColorSpace);
    CGColorSpaceRelease(mDisplayColorSpace);

    mDisplayColorSpace = inDisplayColorSpace;
}

// update the display color space
- (void)updateDisplayColorSpace:(CGDirectDisplayID)inDisplayID
{
    CMProfileRef profile;

    if (noErr == CMGetProfileByAVID((CMDisplayIDType)inDisplayID, &profile)) {
        CGColorSpaceRef theDisplayColorSpace = CGColorSpaceCreateWithPlatformColorSpace(profile);

        [self setDisplayColorSpace:theDisplayColorSpace];

        CGColorSpaceRelease(theDisplayColorSpace);

        CMCloseProfile(profile);
    } else {
        [self setDisplayColorSpace:NULL];
    }

    if (NULL != [self visualContext]) {
        QTVisualContextSetAttribute(qtVisualContext,
                                    kQTVisualContextOutputColorSpaceKey,
                                    [self displayColorSpace]);
    }
}

...

Ссылки



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


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

Новый документ, описывающий, как сконфигурировать QuickTime Текстура OpenGL Визуальный Контекст с атрибутом kQTVisualContextOutputColorSpaceKey.