將音訊解碼為 S/PDIF
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows 媒體格式 11 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
使用 Windows Media Audio 9 Professional 編解碼器編碼的音訊,可以解碼為 (S/PDIF) 。 若要產生 S/PDIF 輸出,請執行下列步驟:
- 呼叫 IWMReader::Open 方法,開啟包含 Windows Media Audio 9 Professional 資料流程的檔案。
- 識別您想要之資料流程的輸出編號。 如需詳細資訊,請參閱 識別輸出編號。
- 呼叫 IWMReaderAdvanced2::SetOutputSetting 方法來設定 S/PDIF 輸出。 針對設定名稱使用g_wszEnableWMAProSPDIFOutput。 資料類型 WMT_TYPE_BOOL;將值設定為 TRUE 以啟用 S/PDIF 輸出。
- 藉由呼叫IWMReader::GetOutputFormat方法來取得所需輸出格式 (的IWMOutputMediaProps) 輸出屬性介面。 如需列舉輸出格式的詳細資訊,請參閱 指派輸出格式。
- 呼叫 IWMReader::SetOutputProps 方法來設定輸出格式。 傳入步驟 4 中取得之 IWMOutputMediaProps 介面的指標。
- 進行任何其他設定變更並開始播放。
注意
您可以使用 IWMSyncReader 介面的對應方法,在同步讀取器上執行上述步驟。
下列範例程式碼示範如何將音訊資料流程設定為將音訊輸出為 S/PDIF 資料。 此函式假設檔案已在讀取器中載入,而且已識別輸出編號。 如需使用此程式碼的詳細資訊,請參閱 使用程式碼範例。
HRESULT SetSPDIF(DWORD dwOutputNum, IWMReader* pReader)
{
HRESULT hr = S_OK;
IWMReaderAdvanced2* pReaderAdv = NULL;
IWMOutputMediaProps* pOutputProps = NULL;
BOOL fValue = TRUE;
// Get the advanced reader interface.
hr = pReader->QueryInterface(IID_IWMReaderAdvanced2,
(void**)&pReaderAdv);
GOTO_EXIT_IF_FAILED(hr);
// Set S/PDIF output.
hr = pReaderAdv->SetOutputSetting(dwOutputNum,
g_wszEnableWMAProSPDIFOutput,
WMT_TYPE_BOOL,
(BYTE*)&fValue,
sizeof(BOOL));
GOTO_EXIT_IF_FAILED(hr);
// Get the first output format for the stream.
// NOTE: You could also enumerate the available output formats
// and pick one to use.
hr = pReader->GetOutputFormat(dwOutputNum, 0, &pOutputProps);
GOTO_EXIT_IF_FAILED(hr);
// Set the output properties back on the reader.
hr = pReader->SetOutputProps(dwOutputNum, pOutputProps);
Exit:
SAFE_RELEASE(pReaderAdv);
SAFE_RELEASE(pOutputProps);
return hr;
}
相關主題