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 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 鍵處理,它會在 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 位 luma,則會計算上限,如下所示:

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

媒體基礎結構