最簡單的 DirectShow Source Filter (Video)
by Jing
如果你的想要寫一個自己的多媒體串流來源, 例如一個特別視訊監控系統中, 特定 camera 的串流, 讓 Windows 上所有的多媒體播放器都能看的到且用得到你的元件. 那使用 DirectShow 可能是一種最簡單而且通常是標準答案的方法, 另一個比較麻煩的方法就是寫一個 Virtual Device Device (這部份的技術, 我們會在下次提到).
雖然 Media foundation 是用來取代 DirectShow 的新一代多媒體技術, 但是現在有大量的舊有應用程式使用 DirectShow, 所以你現在研究如何製作一個最簡單的 DirectShow Source Filter 依然是一件具有價值的工作.
Outline
- Quick Guide -- 30 秒了解整個機制
- Prepare
- Project Setup
- Source Code (download)
- Dll Setup for Directshow DllEntry function
- 提供註冊 filter 實作 (for regsvr32)
- 建構 DirectShow Filter dll 必要條件
- Test
- Debug Information
- FAQs
- Download
- References
Quick Guide -- 30 秒了解整個機制
| 只要實作 CreateInstance method 以及建構子, 即可 |
|
你只要實作下面這四個 methods, filter 就會動了 // 1. 告訴後面的 Filter, 你支援的 media type HRESULT GetMediaType(CMediaType *pMediaType); // 2. 配置 buffer 給你的 media HRESULT DecideBufferSize(IMemAllocator *pAlloc,ALLOCATOR_PROPERTIES *pProperties); // 3. 填寫 media data 到 media package 中 HRESULT FillBuffer(IMediaSample *pms); // 4. 處理 qaulity control 事件 inline STDMETHOD(Notify)(IBaseFilter * pSender, Quality q); |