Поделиться через


структура 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

См. также раздел

DXVA-HD

DXVAHD_STREAM_STATE

Видеоструктуры Direct3D

IDXVAHD_VideoProcessor::SetVideoProcessStreamState

Структуры Media Foundation