Share via


Vérification des formats DXVA-HD pris en charge

Vérification des formats d’entrée pris en charge

Pour obtenir la liste des formats d’entrée pris en charge par l’appareil Microsoft DirectX Video Acceleration Haute Définition (DXVA-HD), procédez comme suit :

  1. Appelez IDXVAHD_Device::GetVideoProcessorDeviceCaps pour obtenir les fonctionnalités de l’appareil.
  2. Vérifiez le membre InputFormatCount de la structure DXVAHD_VPDEVCAPS . Ce membre indique le nombre de formats d’entrée pris en charge.
  3. Allouez un tableau de valeurs D3DFORMAT , de taille InputFormatCount.
  4. Transmettez ce tableau à la méthode IDXVAHD_Device::GetVideoProcessorInputFormats . Les méthodes remplit le tableau avec une liste de formats d’entrée.

Le code suivant illustre ces étapes :

// Checks whether a DXVA-HD device supports a specified input format.

HRESULT CheckInputFormatSupport(
    IDXVAHD_Device          *pDXVAHD,
    const DXVAHD_VPDEVCAPS& caps,
    D3DFORMAT               d3dformat
    )
{
    D3DFORMAT *pFormats = new (std::nothrow) D3DFORMAT[ caps.InputFormatCount ];
    if (pFormats == NULL)
    {
        return E_OUTOFMEMORY;
    }

    HRESULT hr = pDXVAHD->GetVideoProcessorInputFormats(
        caps.InputFormatCount, 
        pFormats
        );

    if (FAILED(hr)) 
    { 
        goto done; 
    }

    UINT index;
    for (index = 0; index < caps.InputFormatCount; index++)
    {
        if (pFormats[index] == d3dformat)
        {
            break;
        }
    }
    if (index == caps.InputFormatCount)
    {
        hr = E_FAIL;
    }

done:
    delete [] pFormats;
    return hr;
}

Vérification des formats de sortie pris en charge

Pour obtenir la liste des formats de sortie pris en charge par l’appareil DXVA-HD, procédez comme suit :

  1. Appelez IDXVAHD_Device::GetVideoProcessorDeviceCaps pour obtenir les fonctionnalités de l’appareil.
  2. Vérifiez le membre OutputFormatCount de la structure DXVAHD_VPDEVCAPS . Ce membre indique le nombre de formats d’entrée pris en charge.
  3. Allouez un tableau de valeurs D3DFORMAT , de taille OutputFormatCount.
  4. Passez ce tableau à la méthode IDXVAHD_Device::GetVideoProcessorOutputFormats . Les méthodes remplit le tableau avec une liste de formats de sortie.

Le code suivant illustre ces étapes :

// Checks whether a DXVA-HD device supports a specified output format.

HRESULT CheckOutputFormatSupport(
    IDXVAHD_Device          *pDXVAHD,
    const DXVAHD_VPDEVCAPS& caps,
    D3DFORMAT               d3dformat
    )
{
    D3DFORMAT *pFormats = new (std::nothrow) D3DFORMAT[caps.OutputFormatCount];
    if (pFormats == NULL)
    {
        return E_OUTOFMEMORY;
    }

    HRESULT hr = pDXVAHD->GetVideoProcessorOutputFormats(
        caps.OutputFormatCount, 
        pFormats
        );

    if (FAILED(hr)) 
    { 
        goto done; 
    }

    UINT index;
    for (index = 0; index < caps.OutputFormatCount; index++)
    {
        if (pFormats[index] == d3dformat)
        {
            break;
        }
    }
    if (index == caps.OutputFormatCount)
    {
        hr = E_FAIL;
    }

done:
    delete [] pFormats;
    return hr;
}

DXVA-HD