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 |