設定數據單位延伸模組
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器 和 接收寫入器已取代它。 來源讀取器 和 接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式碼盡可能使用 Source Reader 和 Sink Writer,而不是 Windows Media Format 11 SDK。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
寫入 ASF 檔案的範例除了媒體範例本身之外,也可以包含其他資訊。 這項資訊包含在數據單位擴展中。 如需資料單位延伸模組的詳細資訊,請參閱 數據單位延伸模組。
若要使用數據單位延伸模組,您必須在配置檔中設定數據流以接受它們。 若要設定數據流的數據單位延伸模組,請執行下列步驟。
- 呼叫 IWMStreamConfig的 QueryInterface 方法,以取得 IWMStreamConfig2 介面的指標。
- 呼叫 IWMStreamConfig2::AddDataUnitExtension 註冊數據流的數據單位延伸模組類型。
您可以呼叫 IWMStreamConfig2::GetDataUnitExtensionCount,以擷取已註冊的數據單位延伸模組類型數目,以檢查目前為數據流註冊的所有數據單位擴充類型。 然後,您可以使用呼叫 IWMStreamConfig2::GetDataUnitExtension,從而遍歷所有類型。
數據單位擴充在配置為數據流時會被指派大小。 許多數據單位擴充系統都會使用固定大小的數據(通常是 結構)。 不過,您也可以將數據單位延伸模組設定為可變大小,方法是將大小設定為 0xFFFF。 在編碼時指派的每個數據單元擴展都可以是介於 1 個字節到 65534 個字節之間的任何大小。 可變大小的數據單位延伸模組也稱為動態數據單位延伸模組。
使用動態數據單位延伸模組的優點是您可以視需要附加延伸模組數據。 如果您定義具有設定大小的數據單位延伸模組,則數據流的每個範例都必須包含該大小的擴充數據,即使您沒有某些範例的數據也一樣。 使用動態數據單位延伸模組,您可以從某些範例省略數據單位延伸模組,以節省空間並減少頻寬需求。 不過,如果數據單位延伸的大小是可變大小,讀取對象就無法根據靜態大小來驗證接收的延伸模塊數據。 您必須確認您收到的擴充資料是有效的,而不是惡意篡改的位元串流。
必須使用 INSSBuffer3::SetProperty 方法,在範例上設定個別數據單位延伸模組。 如需詳細資訊,請參閱 設定數據單位延伸模組。
相關主題