次の方法で共有


サポートされている DXVA-HD 形式の確認

サポートされている入力形式の確認

Microsoft DirectX Video Acceleration High Definition (DXVA-HD) デバイスでサポートされている入力形式の一覧を取得するには、次の操作を行います。

  1. デバイス機能を取得するには 、IDXVAHD_Device::GetVideoProcessorDeviceCaps を呼び出します。
  2. DXVAHD_VPDEVCAPS構造体の InputFormatCount メンバーを確認します。 このメンバーは、サポートされている入力形式の数を指定します。
  3. サイズ InputFormatCount の D3DFORMAT 値の配列割り当てます。
  4. この配列を IDXVAHD_Device::GetVideoProcessorInputFormats メソッドに渡します。 メソッドは、配列に入力形式の一覧を入力します。

これらの手順を示すコードは次のようになります。

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

サポートされている出力形式の確認

DXVA-HD デバイスでサポートされている出力形式の一覧を取得するには、次の操作を行います。

  1. デバイス機能を取得するには 、IDXVAHD_Device::GetVideoProcessorDeviceCaps を呼び出します。
  2. DXVAHD_VPDEVCAPS構造体の OutputFormatCount メンバーを確認します。 このメンバーは、サポートされている入力形式の数を指定します。
  3. サイズ OutputFormatCountD3DFORMAT 値の配列を割り当てます。
  4. この配列を IDXVAHD_Device::GetVideoProcessorOutputFormats メソッドに 渡します。 メソッドは、配列に出力形式の一覧を入力します。

これらの手順を示すコードは次のようになります。

// 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