Share via


使用 Microsoft Media Foundation (Data Unit Extensions)

Windows Media 音訊和視訊編解碼器的設計目的是要與進階系統格式 (ASF) 容器搭配運作。 ASF 是用於 Windows Media Audio (WMA) 檔案和 Windows Media Video (WMV) 檔案的結構化格式。 它是專為串流資料設計的可延伸格式。 ASF 結構的其中一個不尋常的特性是能夠將中繼資料附加至個別樣本,以及將該資料內嵌在位資料流程中的樣本。 以這種方式儲存的中繼資料專案稱為資料 單位延伸模組範例延伸模組

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

  • 強制主要畫面格插入
  • 交錯視訊編碼
  • 直接存取編解碼器時,使用資料單位延伸模組的困難是物件接收延伸模組資料的機制。 這是由 Windows Media Format SDK 的物件使用設計來支援此功能的緩衝區物件來達成。 建議您使用 Windows 媒體格式 SDK 來啟用需要資料單元擴充功能的編解碼器功能,但您可以讓這些功能搭配獨立編解碼器物件使用。

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

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

Windows Media 轉碼器