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. |