DXVAHD_STREAM_STATE_LUMA_KEY_DATA structure (dxvahd.h)
Spécifie la clé luma pour un flux d’entrée, lors de l’utilisation de Microsoft DirectX Video Acceleration High Definition (DXVA-HD).
Syntaxe
typedef struct _DXVAHD_STREAM_STATE_LUMA_KEY_DATA {
BOOL Enable;
FLOAT Lower;
FLOAT Upper;
} DXVAHD_STREAM_STATE_LUMA_KEY_DATA;
Membres
Enable
Si la valeur est TRUE, la touche luma est activée. Sinon, la touche luma est désactivée. La valeur par défaut est FALSE.
Lower
Limite inférieure de la touche luma. La plage est [0... 1]. La valeur d’état par défaut est 0,0.
Upper
Limite supérieure pour la touche luma. La plage est [0... 1]. La valeur d’état par défaut est 0,0.
Notes
Pour utiliser cet état, l’appareil doit prendre en charge la touche luma, indiquée par l’indicateur de fonctionnalité DXVAHD_FEATURE_CAPS_LUMA_KEY . Pour rechercher cette fonctionnalité, appelez IDXVAHD_Device::GetVideoProcessorDeviceCaps. Si l’appareil prend en charge la touche luma, il définit l’indicateur DXVAHD_FEATURE_CAPS_LUMA_KEY dans le membre FeatureCaps de la structure DXVAHD_VPDEVCAPS .
Si l’appareil ne prend pas en charge la clé luma, la méthode IDXVAHD_VideoProcessor::SetVideoProcessStreamState échoue pour cet état.
Si le format d’entrée est RVB, l’appareil doit également prendre en charge la fonctionnalité DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY . Cet indicateur de fonctionnalité est défini dans le membre InputFormatCaps de la structure DXVAHD_VPDEVCAPS . Si l’indicateur n’est pas présent, l’appareil ignore la valeur de clé luma pour l’entrée RVB.
Les valeurs de Lower et Upper donnent les limites inférieure et supérieure de la clé luma, en utilisant une plage nominale de [0...1]. Étant donné un format avec n bits par canal, ces valeurs sont converties en valeurs luma comme suit :
val = f * ((1 << n)-1)
Tout pixel dont la valeur luma se situe dans les limites supérieure et inférieure (inclusive) est traité comme transparent.
Par exemple, si le format de pixel utilise luma 8 bits, la limite supérieure est calculée comme suit :
BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)
Notez que la valeur est limitée à la plage [0...1] avant de multiplier par 255.
Exemples
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;
}
Spécifications
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
En-tête | dxvahd.h |