共用方式為


提供 VMR-7 的自訂Allocator-Presenter

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

配置器簡報者負責配置 DirectDraw 表面,並呈現要轉譯的視訊畫面。 在大部分情況下,預設配置器簡報者的功能會比應用程式的需求還多。 但是,藉由插入自訂配置器簡報者,應用程式可以直接存取視訊位,並完全控制轉譯程式。 這種增加電源的取捨是應用程式必須處理 DirectDraw 表面管理的額外複雜度。

使用自訂配置器簡報者

上圖顯示 VMR 和配置器簡報者所使用的通訊介面。 覆寫所有預設配置和呈現功能的自訂配置器簡報者,必須實作 IVMRImagePresenterIVMRSurfaceAllocator 介面,並選擇性地實作 IVMRWindowlessControl

若要取代預設配置器簡報者,應用程式會呼叫 IVMRSurfaceAllocatorNotify::AdviseSurfaceAllocator 方法,並將指標傳遞給新的配置器簡報者。 為了回應此呼叫,VMR 會呼叫配置器簡報者的 IVMRSurfaceAllocator::AdviseNotify 方法,以提供 VMR 之 IVMRSurfaceAllocatorNotify 介面的指標。 配置器簡報者會在使用 IVMRSurfaceAllocatorNotify::NotifyEvent 方法將事件傳遞至 VMR 時,會使用此介面指標。

作為替代解決方案,應用程式可以使用它自己的配置器簡報者和預設配置器簡報者。 在此案例中,自訂配置器簡報者只會處理需要自訂功能的呼叫,並將 VMR 的其餘呼叫傳遞至預設配置器簡報者。 在許多情況下,只需要覆寫 IVMRImagePresenter 介面。

使用兩個配置器簡報者

若要同時使用自訂配置器簡報者和預設配置器簡報者,應用程式會先呼叫 IVMRSurfaceAllocatorNotify::AdviseSurfaceAllocator 來提供新配置器簡報者的指標。 這會導致預設配置器簡報者終結,因此應用程式必須在 VMR 上呼叫 QueryInterface 並要求 IVMRSurfaceAllocator 介面來建立另一個實例。 如上圖所示,自訂配置器簡報者會覆寫 IVMRImagePresenter 介面方法,並直接將所有呼叫傳遞至 IVMRSurfaceAllocator 介面至預設實作。 此圖也會顯示在配置器簡報者上實作的 IVMRWindowlessControl 介面。

提供 VMR-9 的自訂Allocator-Presenter

VMR 無轉譯播放模式 (自訂配置器簡報者)