Share via


DXVAHD_STREAM_STATE_LUMA_KEY_DATA-Struktur (dxvahd.h)

Gibt den Lumaschlüssel für einen Eingabestream an, wenn Microsoft DirectX Video Acceleration High Definition (DXVA-HD) verwendet wird.

Syntax

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

Member

Enable

Bei TRUE ist die Luma-Schlüsselerstellung aktiviert. Andernfalls ist die Luma-Schlüsselerstellung deaktiviert. Der Standardwert ist FALSE.

Lower

Die Untergrenze für den Lumaschlüssel. Der Bereich ist [0... 1]. Der Standardwert ist 0,0.

Upper

Die Obergrenze für den Lumaschlüssel. Der Bereich ist [0... 1]. Der Standardwert ist 0,0.

Hinweise

Um diesen Zustand zu verwenden, muss das Gerät luma-Keying unterstützen, die durch das DXVAHD_FEATURE_CAPS_LUMA_KEY-Funktionsflag angegeben wird. Um diese Funktion abzufragen, rufen Sie IDXVAHD_Device::GetVideoProcessorDeviceCaps auf. Wenn das Gerät luma-Keying unterstützt, wird das DXVAHD_FEATURE_CAPS_LUMA_KEY-Flag im FeatureCaps-Element der DXVAHD_VPDEVCAPS-Struktur festgelegt.

Wenn das Gerät die Lumaschlüsselung nicht unterstützt, schlägt die IDXVAHD_VideoProcessor::SetVideoProcessStreamState-Methode für diesen Zustand fehl.

Wenn das Eingabeformat RGB ist, muss das Gerät auch die DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY-Funktion unterstützen. Dieses Funktionsflag wird im InputFormatCaps-Element der DXVAHD_VPDEVCAPS-Struktur festgelegt. Wenn das Flag nicht vorhanden ist, ignoriert das Gerät den luma-Schlüsselwert für die RGB-Eingabe.

Die Werte von Lower und Upper geben die Unter- und Obergrenze des Lumaschlüssels an, wobei ein Nominalbereich von [0...1] verwendet wird. Bei einem Format mit n Bits pro Kanal werden diese Werte wie folgt in Lumawerte konvertiert:

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

Jedes Pixel, dessen Lumawert innerhalb der Oberen und Unteren Grenze (einschließlich) liegt, wird als transparent behandelt.

Wenn das Pixelformat beispielsweise 8-Bit-Luma verwendet, wird die Obergrenze wie folgt berechnet:

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

Beachten Sie, dass der Wert an den Bereich [0...1] geklemmt wird, bevor er mit 255 multipliziert wird.

Beispiele

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;
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Kopfzeile dxvahd.h

Weitere Informationen

DXVA-HD

DXVAHD_STREAM_STATE

Direct3D-Videostrukturen

IDXVAHD_VideoProcessor::SetVideoProcessStreamState

Medienfundamentstrukturen