1. 程式人生 > >[DirectShow] vmr-9(Video Mixing Renderer 9) Filter (視訊混合渲染處理器9 filter)

[DirectShow] vmr-9(Video Mixing Renderer 9) Filter (視訊混合渲染處理器9 filter)

 由此翻譯純屬自己的筆記及練習一下英語閱讀。翻譯錯和翻譯得極爛的地方要是我今後水平得到提到的話會來修改修改的。

1 VMR-9

VMR-9VideoMixing  Renderer9(視訊混合渲染器9Filter

DirectX9裡,視訊混合渲染(VMR-9filterDirectX所支援的所有平臺提供先進的視訊渲染能力。VMR-9集成了DirectX 9 3D所有的能力,如使用者可以“很輕鬆”地將一個視訊新增到遊戲中或者其它3D裝置中,或者用Direct3D的畫素著色器或其它效果來改造視訊圖片。

vmr-9filter 不支援視訊埠。

為了維持VMR-9向後的相容性,VMR-9

不被設定為任何系統上的預設渲染器。如果要使用這個filtervmr-9),需要將此filter準確地新增到filter graph 中,在此filtervmr-9)連線到其它任何輸入pins之前需要被配置。Vmr-9使用自己的一套介面、結構及列舉器,這些都不是跟vmr-7的這些介面、結構、列舉器都完全一樣的。

Vmr-9支援16種顯示器。

Vmr-9支援幾種不同的渲染模式。在不同的渲染模式下支援不同的介面:

  • 支援所有模式的介面: IAMCertifiedOutputProtection、IAMFilterMiscFlags、IBaseFilter、IMediaPosition、IMediaSeeking
    、IQualityControl、IQualProp、IVMRAspectRatioControl9IVMRDeinterlaceControl9、IVMRMixerBitmap9、IVMRMixerControl9
  • 支援Renderless mode模式下的介面:IVMRSurfaceAllocatorNotify9
  • 支援Windowed mode模式下的介面:IBasicVideoIBasicVideo2、IVideoWindow、IVMRMonitorConfig9
  • 支援windoless mode的介面:IVMRMonitorConfig9、IVMRWindowlessControl9

通過呼叫

IVMRFilterConfig9::SetRenderingMode方法設定vmr-9的渲染模式。想要更多的資訊,請參考VMRModes of Operation

2 備註

1.   一個程式可以自定義一個暴露以下介面allocator-presenter物件

  • IVMRImagePresenter9
  • IVMRImagePresenterConfig9(對於實現allocator-presenter來說此介面可選)
  • IVMRSurfaceAllocator9
  • IVMRSurfaceAllocatorEx9(可選)
  • IVMRWindowslessControl9(可選)

2.    使用者程式也可以提供一個自定義外掛組合器暴露以下介面

IVMRImageCompositor

要用自定義的compositor配置VMR呼叫ICMRFilterConfig9::SetImageCompositor。

3目前的總結

對於一個源視訊,一般的renderer  filter就可以播放。

使用vmr-9可以播放視訊。Vmr-9還可以跟Direct3D 功能結合起來在Direct3D遊戲中加入視訊,也可以使用Direct3D的著色器來處理視訊影象。可以將源視訊檔案通過vmr-9,然後vmr-9將視訊影象傳遞給Direct3D表面,然後通過Direct3D的功能來處理影象再顯示。