структура DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA (dxvahd.h)

Задает выходное цветовое пространство для операций заливки при использовании Microsoft DirectX Video Acceleration High Definition (DXVA-HD).

Синтаксис

typedef struct _DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA {
  union {
    struct {
      UINT Usage : 1;
      UINT RGB_Range : 1;
      UINT YCbCr_Matrix : 1;
      UINT YCbCr_xvYCC : 1;
      UINT Reserved : 28;
    };
    UINT Value;
  };
} DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA;

Члены

Usage

Указывает, предназначены ли выходные данные для воспроизведения или обработки видео (например, редактирования или разработки). Устройство может оптимизировать обработку в зависимости от типа. Значение состояния по умолчанию — 0 (воспроизведение).

Значение Значение
0
Воспроизведения.
1
Обработка видео.

RGB_Range

Задает диапазон цветов RGB. Значение состояния по умолчанию — 0 (полный диапазон).

Значение Значение
0
Полный диапазон (0–255).
1
Ограниченный диапазон (16–235).

YCbCr_Matrix

Задает матрицу передачи YCbCr. Значение состояния по умолчанию — 0 (BT.601).

Значение Значение
0
ITU-R BT.601.
1
ITU-R BT.709.

YCbCr_xvYCC

Указывает, используется ли в выходных данных обычный YCbCr или расширенный YCbCr (xvYCC). Значение состояния по умолчанию равно нулю (обычное значение YCbCr).

Значение Значение
0
Обычный YCbCr.
1
Расширенный YCbCr (xvYCC).

Reserved

Value

Комментарии

Элемент RGB_Range применяется к выходным данным RGB, а элементы YCbCr_Matrix и YCbCr_xvYCC — к выходным данным YCbCr (YUV). Если устройство выполняет преобразование цветового пространства в цвет фона, оно использует значения, которые применяются к обоим цветовым пространствам.

Расширенный YCbCr можно использовать с любой матрицей передачи. Расширенный YCbCr не изменяет черную или белую точку— черная точка по-прежнему имеет значение 16, а белая — 235. Однако расширенные значения YCbCr явно допускают черные значения в диапазоне от 1 до 15 и более белые значения в диапазоне 236–254. При использовании расширенного YCbCr драйвер не должен обрезать значения luma в номинальном диапазоне 16–235.

Если устройство поддерживает расширенные функции YCbCr, оно устанавливает флаг возможности DXVAHD_DEVICE_CAPS_xvYCC в элементе DeviceCaps структуры DXVAHD_VPDEVCAPS . В противном случае устройство игнорирует значение элемента YCbCr_xvYCC и обрабатывает все выходные данные YCbCr как обычные YCbCr. Чтобы получить возможности устройства, вызовите IDXVAHD_Device::GetVideoProcessorDeviceCaps.

Если выходной формат является форматом RGB с широкой гаммой, выходные данные могут выпадать за пределы номинального диапазона sRGB [0...1]. Это особенно верно, если один или несколько входных потоков используют расширенный YCbCr.

Примеры

HRESULT DXVAHD_SetOutputColorSpace(
    IDXVAHD_VideoProcessor *pVP,
    BOOL bPlayback,     // TRUE = playback, FALSE = video processing
    UINT RGB_Range,     // 0 = 0-255, 1 = 16-235
    UINT YCbCr_Matrix,  // 0 = BT.601, 1 = BT.709
    UINT YCbCr_xvYCC    // 0 = Conventional YCbCr, 1 = xvYCC
    )
{
    DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA data =
    {
        bPlayback ? 0 : 1,
        RGB_Range ? 1 : 0,
        YCbCr_Matrix ? 1 : 0,
        YCbCr_xvYCC ? 1 : 0
    };

    HRESULT hr = pVP->SetVideoProcessBltState(
        DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE,
        sizeof(data),
        &data
        );

    return hr;
}

Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Верхняя часть dxvahd.h

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

DXVA-HD

DXVAHD_BLT_STATE

Структуры видео Direct3D

IDXVAHD_VideoProcessor::SetVideoProcessBltState

Структуры Media Foundation