IAudioClient::GetMixFormat 方法 (audioclient.h)
GetMixFormat 方法會擷取音訊引擎用於其共用模式數據流內部處理的數據流格式。
語法
HRESULT GetMixFormat(
[out] WAVEFORMATEX **ppDeviceFormat
);
參數
[out] ppDeviceFormat
指標變數的指標,方法會將混合格式的位址寫入其中。 此參數必須是指針變數的有效非 NULL 指標。 方法會將 其 ADDRESSATEX (或 WAVEFORMATEXTENSIBLE) 結構寫入此變數。 方法會配置 結構的記憶體。 呼叫端會藉由呼叫 CoTaskMemFree 函式,負責釋出不再需要的記憶體。 如果 GetMixFormat 呼叫失敗, *ppDeviceFormat 為 NULL。 如需 有關其為「其」、 「SQLATEXTENSIBLE」和 「CoTaskMemFree」的詳細資訊,請參閱 Windows SDK 檔。
傳回值
如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括,但不限於下表所示的值。
傳回碼 | Description |
---|---|
|
音訊端點裝置已解除叢集,或音訊硬體或相關聯的硬體資源已重新設定、停用、移除,否則無法使用。 |
|
Windows 音訊服務未執行。 |
|
參數 ppDeviceFormat 為 NULL。 |
|
記憶體不足。 |
備註
用戶端可以在呼叫 IAudioClient::Initialize 方法之前呼叫這個方法。 為音訊端點裝置建立共用模式數據流時, Initialize 方法一律接受從相同裝置上的 GetMixFormat 呼叫取得的數據流格式。
混合格式是音訊引擎在內部用於共用模式數據流數字處理的格式。 此格式不一定是音訊端點裝置所支援的格式。 因此,呼叫端可能無法成功建立具有 透過呼叫 GetMixFormat 取得格式的獨佔模式數據流。
例如,為了促進數位音訊處理,音訊引擎可能會使用混合格式,將樣本表示為浮點值。 如果裝置只支援整數 PCM 範例,則引擎會在裝置與引擎之間的連線上,將樣本轉換成或從整數 PCM 值。 不過,為了避免重新取樣,引擎可能會使用混合格式搭配裝置支援的取樣率。
若要判斷 Initialize 方法是否可以建立具有特定格式的共用模式或獨佔模式數據流,請呼叫 IAudioClient::IsFormatSupported 方法。
它本身無法指定通道與說話者位置的對應。 此外,雖然 WAVEFORMATEX 會指定每個音訊樣本的容器大小,但它無法在樣本中指定精確度的位數 (,例如,24 位容器中的 20 位有效位數) 。 不過, WAVEFORMATEXTENSIBLE 結構可以同時指定通道與喇叭的對應,以及每個樣本中精確度的位數。 基於這個理由, GetMixFormat 方法會擷取格式描述元,該描述元的格式格式為 一種其格式 ,而不是獨立 的WAVEFORMATEX 結構。 透過 ppDeviceFormat 參數,此方法會將指標輸出到此其其開始的其內嵌於此 WAVEFORMATEXTENSIBLE 結構開頭的其指標。 如需關於其與其產生方式的詳細資訊,請參閱 Windows DDK 檔。
如需 GetMixFormat 方法的詳細資訊,請參閱 裝置格式。 如需呼叫 GetMixFormat 的程式代碼範例,請參閱下列主題:
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | audioclient.h |