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

Voir aussi

DXVA-HD

DXVAHD_STREAM_STATE

Structures vidéo Direct3D

IDXVAHD_VideoProcessor::SetVideoProcessStreamState

Media Foundation Structures