透過 IWMDMDevice 取得格式功能
查詢裝置播放功能的建議方法是 IWMDMDevice3::GetFormatCapability。 不過,如果裝置不支援此方法,應用程式可以改為呼叫 IWMDMDevice::GetFormatSupport ,以從裝置擷取支援的音訊格式陣列,以 _WAVEFORMATEX 結構和 MIME 格式作為字串。
下列步驟顯示應用程式如何使用這個方法來查詢裝置是否有支援的格式:
- 呼叫 GetFormatSupport 以擷取音訊和 mime 格式的陣列。
- 迴圈查看擷取的音訊格式,並檢查每個 _WAVEFORMATEX 結構,以嘗試尋找可接受的音訊格式
- 視需要) 尋找可接受的檔案類型,請迴圈查看所擷取的 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;
}
相關主題