DirectShow基礎編程 最簡單的源Filter的編寫步驟

1.創建一個空的Dll工程,添加5個空文件分別名爲:MyOutputPin.h、MySourceFilter.h、MyOutputPin.cpp、MySourceFilter.cpp和MySourceFilter.def。

 

2.聲明兩個類,一個是Filter的實現類,一個是輸出Pin的實現類,由於是最簡單的源Filter,因此Filter只有一個輸出Pin。實現的功能是從本地磁盤讀取三個圖片文件,輪流顯示這三張圖片,效果是模擬一個視頻流。這兩個類的聲明代碼:

 

3.實現CMySourceFilter類。這個類只有兩個函數需要編寫,很簡單。

 

4.實現CMyOutputPin類,編寫Filter主要就是寫pin。

LoadBitmapFileToMemory函數的實現

 

5.主要的工作已經做完了,功能已經實現,接下來就是生成Filter。

 

6.MySourceFilter.def文件的內容

 

7.注意

1)包含頭文件 #include <initguid.h>,否則有可能提示 error LNK2001: 無法解析的外部符號 _CLSID_MyFilter

2)包含導出庫#pragma comment(lib, "winmm")

3)包含導入庫#pragma comment(lib, "strmbase.lib"),Debug下包含#pragma comment(lib, "strmbasd.lib")

 

8.大功告成。調用regsvr32註冊Filter。使用GraphEdit調試Filter。(VS2005)

在工程的屬性中選擇調試,在命令中填入GraphEdit的完整路徑,把Filter的工程作爲啓動項。按下F5,在運行的GraphEdit中選擇我們的Filter,Render pin,就可以看到一條完整的鏈路,然後run,效果出來了,三幅圖片輪流顯示在窗口中。

 

注:完整代碼下載:http://d.download.csdn.net/down/2218035/bwmwm

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章