共用方式為


使用資料單元擴充功能 (Microsoft Media Foundation)

Windows 媒體音訊和視訊編解碼器設計為能與進階系統格式(ASF)容器良好協作。 ASF 是用於 Windows 媒體音訊 (WMA) 檔案和 Windows 媒體視訊 (WMV) 檔案的結構化格式。 它是專為串流數據而設計的可延伸格式。 ASF 結構的其中一個不尋常的特性,是能夠將元數據附加到個別樣本上,並將該數據與樣本一起嵌入到位元流中。 以這種方式儲存的元數據專案稱為數據 單元擴展,或 範例擴展

數據單位延伸模組可以包含編碼器、譯碼機或播放機應用程式所需的資訊。 在 Windows Media 9 系列編解碼器中實作的大部分數據單位擴充類型都包含用於譯碼和轉譯媒體之應用程式的數據。 例如,您可以將 SMPTE 時間碼新增為數據單位延伸模組,以維護源數據的 SMPTE 時間碼。 不過,下列編解碼器功能需要數據單位延伸模組:

  • 強制插入關鍵幀
  • 交錯式視訊編碼
  • 直接存取編解碼器時,使用數據單位延伸模組的困難在於物件接收延伸模組數據的機制。 Windows 媒體格式 SDK 的物件透過使用設計來支援此功能的緩衝區物件來達成這一點。 建議您使用 Windows 媒體格式 SDK 來啟用需要數據單位延伸的編解碼器功能,但您可以讓這些功能與獨立編解碼器物件搭配運作。

將擴充範例傳遞至編解碼器物件

Windows 媒體格式 SDK 會使用緩衝區對象來公開 INSSBuffer 介面。 最新的介面 INSSBuffer4。 若要將範例傳遞至具有數據單位延伸模組的編解碼器物件,您必須使用一個緩衝區對象來實作 IMediaBufferIMFMediaBuffer 介面和 INSSBuffer 介面。 您可以使用 Windows Media Format SDK 或 Microsoft Media Foundation 所建立的緩衝區對象來完成這項作業,或者您可以建立符合需求的緩衝區類別。 若要建立自己的緩衝區類別,您必須符合 INSSBuffer 介面的方法原型。 您可以在隨 Windows 媒體格式 SDK 一起安裝的 wmsbuffer.h 頭檔中找到這些介面定義。

Windows Media 編解碼器