視訊轉譯器篩選
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
影片轉譯器篩選條件是健全的全用途視訊轉譯器。
注意
在 Windows XP 和更新版本上,預設視訊轉譯器是 視訊混合轉譯器篩選 7 (VMR-7)。 VMR-7 和視訊轉譯器都有易記名稱「影片轉譯器」。在舊版平臺上,視訊轉譯器是預設轉譯器。 請參閱 選擇正確的轉譯器。
視訊轉譯器會使用 DirectDraw 和重疊表面,如果視訊卡支持它們。 Filter Graph 管理員會公開 IVideoWindow 介面,讓應用程式能夠在影片轉譯器上設定和擷取屬性。 使用較新的視訊卡,影片轉譯器支援全螢幕轉譯。 否則,篩選圖形管理員會自動切換至全螢幕轉譯器 全螢幕模式 篩選。 如需詳細資訊,請參閱 IVideoWindow::p ut_FullScreenMode。
![重要]
一般而言,此篩選的視訊視窗會在篩選圖形管理員所建立的背景工作線程上處理訊息。 Howerver,如果應用程式使用 CoCreateInstance直接建立篩選,則影片視窗會處理應用程式線程上的訊息。 在此情況下,應用程式線程必須有訊息迴圈,才能將訊息分派至影片視窗。 此外,線程必須結束,直到最後一個 Release 呼叫 Video Renderer,這會在篩選圖形管理員關閉時發生。 否則,應用程式可能會死結。
標籤 | 價值 |
---|---|
篩選介面 | IBaseFilter、IBasicVideo、IBasicVideo2、IDirectDrawVideo、IKsPropertySet、IMediaPosition、IMediaSeeking、IQualityControl、IQualProp、IVideoWindow |
輸入釘選媒體類型 | 未壓縮的視訊格式。 |
輸入釘選介面 | IMemInputPin、IOverlay、IPin、IPinConnectionIQualityControl |
輸出釘選媒體類型 | 不適用。 |
輸出釘選介面 | 不適用。 |
篩選 CLSID | CLSID_VideoRenderer |
屬性頁 CLSID | 沒有屬性頁。 |
可執行 | quartz.dll |
優點 | Windows XP 和更新版本:MERIT_UNLIKELY |
篩選類別目錄 | CLSID_LegacyAmFilterCategory |
言論
在偵錯版本的 Quartz.dll中,如果LOG_TRACE偵錯層級設定為 5 或更新版本,視訊轉譯器會在視訊視窗上顯示每個畫面的時間戳。 這些數位不會出現在 DLL 的零售版本中。 如需詳細資訊,請參閱 偵錯輸出函式。
下列備註適用於篩選開發人員:
如果視訊圖形卡支援 YUV 重疊表面,影片轉譯器會接受 YUV 格式。 不過,當影片轉譯器第一次連接到上游篩選時,需要符合目前監視器設定色彩深度的 RGB 格式。 例如,如果目前的顯示設定是24位色彩,上游篩選必須能夠提供24位 RGB 視訊。 當篩選圖形切換至執行狀態時,影片轉譯器會交涉動態格式變更為適當的 YUV 色彩空間。
透過使用 RGB 類型進行連線,影片轉譯器可確保它可以使用 GDI,以防無法使用 DirectDraw。 如果另一個應用程式使用視訊記憶體,如果視訊矩形跨越多監視器系統上的兩個監視器,或視訊矩形完全被另一個視窗遮蔽,則會切換至 GDI。
注意
視訊混合轉譯器不會執行這種類型的動態格式變更,而且不需要 RGB 媒體類型,因為它永遠不會使用 GDI 進行轉譯。
若要交涉格式變更,影片轉譯器會呼叫 IPin::QueryAccept 與新的媒體類型。 如果上游篩選條件傳回S_OK,影片轉譯器會將新媒體附加至下一個範例。 上游篩選條件應該在每個範例上呼叫 IMediaSample::GetMediaType。 如果 GetMediaType 傳回非NULL 值,表示格式變更,而且上游篩選應該透過切換輸出類型來回應。 (請勿在 QueryAccept 方法中切換類型。上游篩選至少應該接受主要 RGB 類型,而且在理想情況下應該支援常見的 YUV 類型。 在串流期間,視訊轉譯器可能會在任何次數的 YUV 和 RGB 類型之間來回切換。 影片轉譯器不接受上游篩選所起始的動態格式變更。
當影片轉譯器繪製到 DirectDraw 重疊表面時,它會為其輸入釘選配置單一緩衝區。 如果上游篩選嘗試使用多個緩衝區強制連接,影片轉譯器將無法使用重疊表面。
相關主題