共用方式為


使用 DMO 媒體緩衝區

輸入資料會使用媒體緩衝區傳遞至編解碼器 DMO。 媒體緩衝區是實作 IMediaBuffer 介面的物件。 您可以針對此目的實作類別,或者,如果您在應用程式中使用 Windows Media Format SDK,您可以使用該 SDK 中定義的緩衝區物件。

如果您實作自己的緩衝區類別,請小心處理緩衝區記憶體的方式。 當您傳遞輸入範例時,DMO 會保留緩衝區的參考,直到完成範例為止。 您可以立即釋放 IMediaBuffer 介面的參考,但您無法知道編解碼器何時不再需要其參考。 若要確定物件刪除本身時釋放記憶體,您應該實作 類別,讓它在內部配置和釋放緩衝區的記憶體。

由於 DMO 會保留對緩衝區的參考,所以使用有限的緩衝區集區並不簡單。 最簡單的解決方案是為每個範例配置新的緩衝區,雖然這樣做沒有效率。

更好的解決方案是實作 物件來管理緩衝區集區。 若要這樣做,請在IMediaBuffer實作的Release方法中撰寫程式碼,以呼叫緩衝區管理員的方法 (,而不是在參考計數捨棄為零時刪除本身) 。 接著,緩衝區管理員可以維護配置之緩衝區物件的指標清單。 在緩衝區管理員中建立方法來檢查可用緩衝區清單,並傳回指標,以便您的應用程式在需要時存取緩衝區。 此方法應該視需要建立新的緩衝區,並將其新增至清單。

使用編解碼器 DMO