Compartilhar via


estrutura DXVAHD_STREAM_STATE_LUMA_KEY_DATA (dxvahd.h)

Especifica a chave luma para um fluxo de entrada, ao usar a DXVA-HD (Alta Definição de Aceleração de Vídeo) do Microsoft DirectX.

Sintaxe

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

Membros

Enable

Se TRUE, o keying do luma estará habilitado. Caso contrário, o keying luma será desabilitado. O valor padrão é FALSE.

Lower

O limite inferior para a chave luma. O intervalo é [0... 1]. O valor de estado padrão é 0,0.

Upper

O limite superior para a tecla luma. O intervalo é [0... 1]. O valor de estado padrão é 0,0.

Comentários

Para usar esse estado, o dispositivo deve dar suporte ao keying de luma, indicado pelo sinalizador de funcionalidade DXVAHD_FEATURE_CAPS_LUMA_KEY . Para consultar essa funcionalidade, chame IDXVAHD_Device::GetVideoProcessorDeviceCaps. Se o dispositivo der suporte ao keying luma, ele definirá o sinalizador DXVAHD_FEATURE_CAPS_LUMA_KEY no membro FeatureCaps da estrutura DXVAHD_VPDEVCAPS .

Se o dispositivo não der suporte ao keying de luma, o método IDXVAHD_VideoProcessor::SetVideoProcessStreamState falhará nesse estado.

Se o formato de entrada for RGB, o dispositivo também deverá dar suporte à funcionalidade DXVAHD_INPUT_FORMAT_CAPS_RGB_LUMA_KEY . Esse sinalizador de funcionalidade é definido no membro InputFormatCaps da estrutura DXVAHD_VPDEVCAPS . Se o sinalizador não estiver presente, o dispositivo ignorará o valor da chave luma para entrada RGB.

Os valores inferior e superior fornecem os limites inferior e superior da chave luma, usando um intervalo nominal de [0...1]. Dado um formato com n bits por canal, esses valores são convertidos em valores luma da seguinte maneira:

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

Qualquer pixel cujo valor de luma se enquadra nos limites superior e inferior (inclusivo) é tratado como transparente.

Por exemplo, se o formato de pixel usar luma de 8 bits, o limite superior será calculado da seguinte maneira:

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

Observe que o valor é fixado no intervalo [0...1] antes de multiplicar por 255.

Exemplos

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

Requisitos

   
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho dxvahd.h

Confira também

DXVA-HD

DXVAHD_STREAM_STATE

Estruturas de vídeo Direct3D

IDXVAHD_VideoProcessor::SetVideoProcessStreamState

Estruturas do Media Foundation