Partager via


Obtention des fonctionnalités de format via IWMDMDevice

La méthode recommandée pour interroger un appareil pour ses fonctionnalités de lecture est IWMDMDevice3::GetFormatCapability. Toutefois, si un appareil ne prend pas en charge cette méthode, l’application peut plutôt appeler IWMDMDevice::GetFormatSupport pour récupérer un tableau de formats audio pris en charge en tant que structures _WAVEFORMATEX et des formats MIME sous forme de chaînes à partir de l’appareil.

Les étapes suivantes montrent comment une application peut utiliser cette méthode pour interroger un appareil pour les formats pris en charge :

  1. Appelez GetFormatSupport pour récupérer des tableaux de formats audio et mime.
  2. Parcourir les formats audio récupérés et examiner chaque structure _WAVEFORMATEX pour essayer de trouver un format audio acceptable
  3. Effectuez une boucle dans les chaînes de format MIME récupérées (si vous le souhaitez) pour rechercher un type de fichier acceptable. Le Kit de développement logiciel (SDK) ne définit pas de constantes pour les formats MIME ; vous devez utiliser des valeurs standard du secteur (qui se trouvent sur le site Web iana.org). Un appareil doit répertorier les types MIME spécifiques qu’il prend en charge.

Le code C++ suivant illustre la récupération des fonctionnalités de format à partir d’un appareil, à l’aide de 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;
}

Découverte des fonctionnalités de format d’appareil

Obtention des fonctionnalités de format sur les appareils qui prennent en charge IWMDMDevice3