Condividi tramite


DXVAHD_STREAM_STATE_LUMA_KEY_DATA struttura (dxvahd.h)

Specifica la chiave luma per un flusso di input, quando si usa Microsoft DirectX Video Acceleration High Definition (DXVA-HD).

Sintassi

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

Members

Enable

Se TRUE, luma keying è abilitato. In caso contrario, luma keying è disabilitato. Il valore predefinito è FALSE.

Lower

Limite inferiore per la chiave luma. L'intervallo è [0... 1]. Il valore predefinito dello stato è 0,0.

Upper

Limite superiore per la chiave luma. L'intervallo è [0... 1]. Il valore predefinito dello stato è 0,0.

Commenti

Per usare questo stato, il dispositivo deve supportare luma keying, indicato dal flag di funzionalità DXVAHD_FEATURE_CAPS_LUMA_KEY . Per eseguire una query per questa funzionalità, chiamare IDXVAHD_Device::GetVideoProcessorDeviceCaps. Se il dispositivo supporta la chiave luma, imposta il flag di DXVAHD_FEATURE_CAPS_LUMA_KEY nel membro FeatureCaps della struttura DXVAHD_VPDEVCAPS .

Se il dispositivo non supporta la chiave luma, il metodo IDXVAHD_VideoProcessor::SetVideoProcessStreamState non riesce per questo stato.

Se il formato di input è RGB, il dispositivo deve supportare anche la funzionalità DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY . Questo flag di funzionalità è impostato nel membro InputFormatCaps della struttura DXVAHD_VPDEVCAPS . Se il flag non è presente, il dispositivo ignora il valore della chiave luma per l'input RGB.

I valori di Lower e Upper assegnano i limiti inferiori e superiori della chiave luma, usando un intervallo nominale di [0...1]. Dato un formato con n bit per canale, questi valori vengono convertiti in valori luma come indicato di seguito:

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

Qualsiasi pixel il cui valore luma rientra all'interno dei limiti superiori e inferiori (inclusivi) viene considerato trasparente.

Ad esempio, se il formato pixel usa luma a 8 bit, il limite superiore viene calcolato come segue:

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

Si noti che il valore viene bloccato all'intervallo [0...1] prima di moltiplicare per 255.

Esempio

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

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione dxvahd.h

Vedi anche

DXVA-HD

DXVAHD_STREAM_STATE

Strutture video Direct3D

IDXVAHD_VideoProcessor::SetVideoProcessStreamState

Strutture di Media Foundation