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