структура DXVAHD_STREAM_STATE_LUMA_KEY_DATA (dxvahd.h)
Задает клавишу luma для входного потока при использовании высокого разрешения Microsoft DirectX Video Acceleration (DXVA-HD).
Синтаксис
typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
BOOL Enable;
FLOAT Lower;
FLOAT Upper;
} DXVAHD_STREAM_STATE_LUMA_KEY_DATA;
Члены
Enable
Если задано значение TRUE, функция luma keying включена. В противном случае клавиши luma отключены. Значение по умолчанию — FALSE.
Lower
Нижняя граница клавиши luma. Диапазон равен [0... 1]. Значение состояния по умолчанию — 0,0.
Upper
Верхняя граница клавиши luma. Диапазон равен [0... 1]. Значение состояния по умолчанию — 0,0.
Комментарии
Чтобы использовать это состояние, устройство должно поддерживать функцию luma keying, обозначенную флагом возможности DXVAHD_FEATURE_CAPS_LUMA_KEY . Чтобы запросить эту возможность, вызовите IDXVAHD_Device::GetVideoProcessorDeviceCaps. Если устройство поддерживает luma keying, оно устанавливает флаг DXVAHD_FEATURE_CAPS_LUMA_KEY в элементе FeatureCapsструктуры DXVAHD_VPDEVCAPS .
Если устройство не поддерживает ключ luma, метод IDXVAHD_VideoProcessor::SetVideoProcessStreamState для этого состояния завершается сбоем.
Если входной формат — RGB, устройство также должно поддерживать возможность DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY . Этот флаг возможности задается в элементе InputFormatCaps структуры DXVAHD_VPDEVCAPS . Если флаг отсутствует, устройство игнорирует значение клавиши luma для входных данных RGB.
Значения Lower и Upper дают нижние и верхние границы клавиши luma, используя номинальный диапазон [0...1]. В формате с n битами на канал эти значения преобразуются в значения luma следующим образом:
val = f * ((1 << n)-1)
Любой пиксель, значение лумы которого находится в пределах верхней и нижней границ (включительно), обрабатывается как прозрачный.
Например, если в пиксельном формате используется 8-битовая luma, верхняя граница вычисляется следующим образом:
BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)
Обратите внимание, что значение прижимается к диапазону [0...1] перед умножением на 255.
Примеры
HRESULT DXVAHD_SetLumaKey(
IDXVAHD_VideoProcessor *pVP,
UINT stream,
BOOL bEnable,
float fLower, // Lower bound for the luma key.
float fUpper // Upper bound for the luma key.
)
{
DXVAHD_STREAM_STATE_LUMA_KEY_DATA luma = { bEnable, fLower, fUpper };
HRESULT hr = pVP->SetVideoProcessStreamState(
stream,
DXVAHD_STREAM_STATE_LUMA_KEY,
sizeof(luma),
&luma
);
return hr;
}
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | dxvahd.h |