Compartilhar via


Obtendo recursos de formato por meio de IWMDMDevice

O método recomendado para consultar um dispositivo para seus recursos de reprodução é IWMDMDevice3::GetFormatCapability. No entanto, se um dispositivo não der suporte a esse método, o aplicativo poderá chamar IWMDMDevice::GetFormatSupport para recuperar uma matriz de formatos de áudio com suporte como estruturas de _WAVEFORMATEX e formatos MIME como cadeias de caracteres do dispositivo.

As etapas a seguir mostram como um aplicativo pode usar esse método para consultar um dispositivo para formatos com suporte:

  1. Chame GetFormatSupport para recuperar matrizes de formatos de áudio e mime.
  2. Faça um loop pelos formatos de áudio recuperados e examine cada estrutura _WAVEFORMATEX para tentar encontrar um formato de áudio aceitável
  3. Faça um loop pelas cadeias de caracteres de formato MIME recuperadas (se desejado) para encontrar um tipo de arquivo aceitável. O SDK não define constantes para formatos MIME; você deve usar valores padrão do setor (que podem ser encontrados no site do iana.org). Um dispositivo deve listar os tipos MIME específicos aos quais ele dá suporte.

O código C++ a seguir demonstra a recuperação de recursos de formato de um dispositivo, usando GetFormatSupport.

// Function to print out device caps for a device 
// that supports only IWMDMDevice.
void CWMDMController::GetCaps(IWMDMDevice* pDevice)
{
    HRESULT hr = S_OK;

    // Get all capabilities for audio and mime support.
    _WAVEFORMATEX* pAudioFormats;
    LPWSTR* pMimeFormats;
    UINT numAudioFormats = 0;
    UINT numMimeFormats = 0;
    hr = pDevice->GetFormatSupport(
        &pAudioFormats,
        &numAudioFormats,
        &pMimeFormats,
        &numMimeFormats);
    if (FAILED(hr)) return;

    // Print out audio format data.
    if (numAudioFormats > 0)
    {
        // TODO: Display a banner for the supported audio-format listing.
    }
    else
    {
        // TODO: Display a message indicating that no audio formats are supported.
    }
    for (int i = 0; i < numAudioFormats; i++)
    {
       // TODO: For each valid audio format, display the max channel, 
       // max samples/second, avg. bytes/sec, block alignment, and 
       // max bits/sample values.
    }

    // Print out MIME formats.
    if (numMimeFormats > 0)
        // TODO: Display a banner to precede the MIME format listing.
    else
        // TODO: Display a banner indicating that no MIME formats are supported.
    for (i = 0; i < numMimeFormats; i++)
    {
        // TODO: Display the specified MIME format.
    }
    return;
}

Descobrindo recursos de formato de dispositivo

Obtendo recursos de formato em dispositivos que dão suporte a IWMDMDevice3