DXVAHD_STREAM_STATE_LUMA_KEY_DATA 结构 (dxvahd.h)

使用 Microsoft DirectX 视频加速高清 (DXVA-HD) 时,指定输入流的 luma 键。

语法

typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
  BOOL  Enable;
  FLOAT Lower;
  FLOAT Upper;
} DXVAHD_STREAM_STATE_LUMA_KEY_DATA;

成员

Enable

如果 为 TRUE,则启用 luma 键。 否则,将禁用 luma 键。 默认值为 FALSE

Lower

luma 键的下限。 范围是 [0...1]. 默认状态值为 0.0。

Upper

luma 键的上限。 范围是 [0...1]. 默认状态值为 0.0。

备注

若要使用此状态,设备必须支持 DXVAHD_FEATURE_CAPS_LUMA_KEY 功能标志 指示的 luma 键。 若要查询此功能,请调用 IDXVAHD_Device::GetVideoProcessorDeviceCaps。 如果设备支持 luma 键法,它会在 DXVAHD_VPDEVCAPS 结构的 FeatureCaps 成员中设置 DXVAHD_FEATURE_CAPS_LUMA_KEY 标志。

如果设备不支持 luma 键,则 IDXVAHD_VideoProcessor::SetVideoProcessStreamState 方法会因此状态失败。

如果输入格式为 RGB,则设备还必须支持 DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY 功能。 此功能标志在 DXVAHD_VPDEVCAPS 结构的 InputFormatCaps 成员中设置。 如果标志不存在,设备将忽略 RGB 输入的 luma 键值。

LowerUpper 的值使用 [0...1] 的名义范围提供 luma 键的下限和上限。 给定每个通道 n 位的格式,这些值将转换为 luma 值,如下所示:

val = f * ((1 << n)-1)

luma 值位于上限和下限 (非独占) 的任何像素被视为透明。

例如,如果像素格式使用 8 位光度,则上限的计算方式如下:

BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)

请注意,在乘以 255 之前,该值将固定到 [0...1] 范围。

示例

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

媒体基础结构