다음을 통해 공유


IWMDMDevice를 통해 형식 기능 가져오기

디바이스의 재생 기능을 쿼리하는 데 권장되는 방법은 IWMDMDevice3::GetFormatCapability입니다. 그러나 디바이스가 이 메서드를 지원하지 않는 경우 애플리케이션은 IWMDMDevice::GetFormatSupport 를 호출하여 지원되는 오디오 형식 배열을 _WAVEFORMATEX 구조로 검색하고 MIME 형식을 디바이스에서 문자열로 검색할 수 있습니다.

다음 단계에서는 애플리케이션이 이 메서드를 사용하여 디바이스에서 지원되는 형식을 쿼리하는 방법을 보여 줍니다.

  1. GetFormatSupport를 호출하여 오디오 및 MIME 형식의 배열을 검색합니다.
  2. 검색된 오디오 형식을 반복하고 각 _WAVEFORMATEX 구조를 검사하여 허용되는 오디오 형식을 찾으려고 시도합니다.
  3. 검색된 MIME 형식 문자열(원하는 경우)을 반복하여 허용되는 파일 형식을 찾습니다. SDK는 MIME 형식에 대한 상수를 정의하지 않습니다. 업계 표준 값(iana.org 웹 사이트에서 찾을 수 있습니다)을 사용해야 합니다. 디바이스는 지원하는 특정 MIME 유형을 나열해야 합니다.

다음 C++ 코드는 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;
}

디바이스 형식 기능 검색

IWMDMDevice3을 지원하는 디바이스에서 형식 기능 가져오기