Condividi tramite


Recupero delle funzionalità di formato tramite IWMDMDevice

Il metodo consigliato per eseguire query su un dispositivo per le funzionalità di riproduzione è IWMDMDevice3::GetFormatCapability. Tuttavia, se un dispositivo non supporta questo metodo, l'applicazione può invece chiamare IWMDMDevice::GetFormatSupport per recuperare una matrice di formati audio supportati come strutture _WAVEFORMATEX e formati MIME come stringhe dal dispositivo.

La procedura seguente illustra come un'applicazione può usare questo metodo per eseguire query su un dispositivo per i formati supportati:

  1. Chiamare GetFormatSupport per recuperare matrici di formati audio e mime.
  2. Eseguire il ciclo attraverso i formati audio recuperati ed esaminare ogni struttura _WAVEFORMATEX per cercare di trovare un formato audio accettabile
  3. Eseguire il ciclo attraverso le stringhe di formato MIME recuperate (se desiderato) per trovare un tipo di file accettabile. L'SDK non definisce costanti per i formati MIME; è consigliabile usare i valori standard del settore (che possono essere trovati nel sito Web iana.org). Un dispositivo deve elencare i tipi MIME specifici supportati.

Il codice C++ seguente illustra il recupero delle funzionalità di formato da un 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;
}

Individuazione delle funzionalità di formato dispositivo

Recupero delle funzionalità di formato nei dispositivi che supportano IWMDMDevice3