Compartir a través de


Obtención de funcionalidades de formato a través de IWMDMDevice

El método recomendado para consultar un dispositivo para sus funcionalidades de reproducción es IWMDMDevice3::GetFormatCapability. Sin embargo, si un dispositivo no admite este método, la aplicación puede llamar a IWMDMDevice::GetFormatSupport para recuperar una matriz de formatos de audio admitidos como estructuras _WAVEFORMATEX y formatos MIME como cadenas del dispositivo.

En los pasos siguientes se muestra cómo una aplicación puede usar este método para consultar un dispositivo en busca de formatos admitidos:

  1. Llame a GetFormatSupport para recuperar matrices de formatos de audio y mime.
  2. Recorra en bucle los formatos de audio recuperados y examine cada estructura de _WAVEFORMATEX para intentar encontrar un formato de audio aceptable.
  3. Recorra en bucle las cadenas de formato MIME recuperadas (si lo desea) para buscar un tipo de archivo aceptable. El SDK no define constantes para formatos MIME; Debe usar valores estándar del sector (que se pueden encontrar en el sitio web de iana.org). Un dispositivo debe enumerar los tipos MIME específicos que admite.

En el código de C++ siguiente se muestra cómo recuperar funcionalidades de formato de un dispositivo mediante 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;
}

Detección de funcionalidades de formato de dispositivo

Obtención de funcionalidades de formato en dispositivos compatibles con IWMDMDevice3