...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

DirectShow : プレビュー+キャプチャ+サンプルグラバ

さて,なかなか大変なプログラミングだったが・・・.
ようやくまともに動くようになった.

レンダリング時のグラフは,家のUSBカメラではこうなる.


ソースフィルタ > スマートティー > サンプルグラバ > AVI Mux > File Writer
                   > レンダラ

大学のPCIキャプチャボードでレンダリングすると,こうなる.


ソースフィルタ > サンプルグラバ > AVI Mux > File Writer
       > レンダラ

こんな風に,どちらにしてもちゃんと表示&ファイルに書き出しされるようになった.
後はクラスのインタフェースを整えて,通常のウィンドウじゃなくてピクチャーボックスにレンダリングできるようにしたら終わりかな.

DirectShowを勉強したおかげで,COMというものも理解できた.
短く言うと,「動的リンクを行うソフトウェアコンポーネント(DLL形式)を,オブジェクト指向的に扱えるようにする仕組み」だね.
COMでの「インタフェースと実装」ってのが,プログラミング言語でのクラスの「インタフェースと実装」とは違うから,しっくりこないからわかりにくいのだ,ということにようやく気が付いた.
インタフェースはCOM共通の仕様で,実装っていうのはDLLのソフトウェアコンポーネントのことだったのね.

CComPtrやCComQIPtrなどを使えば参照カウンタの管理も少しだけマシになるようなので,使ってみている.
さー,もうひと踏ん張りだ.
できたら公開したいところだけど,OBのN田さんのが元になってるからこのままじゃ公開できない.
一から設計しなおせばいいのだが,できるだろうか?