...ing logging 4.0

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

DirectShow : Mux フィルタ

動画の記録をするために,またもやDirectShowの世界へ突入中.
今度は前より少しだけわかるみたい.
初めて自分でフィルタを接続できた(^^;
これで,プレビューあり/なしを選択でき,かつ,キャプチャすることができた.
今のところは無圧縮なのでデータ量が膨大.
圧縮処理が軽めのcodecでも使うかもしれない.
でも画質が落ちると致命的なのでこのままかも・・・.

研究室の遺産CVideoCameraクラスの一部を,次のように変更したのでメモ.


// AVI Mux フィルタを作成する。
LPCOLESTR filename = L".\\test.avi";
if( ((ICaptureGraphBuilder2 *)pBuilder)->SetOutputFileName( &MEDIASUBTYPE_Avi, filename, (IBaseFilter**)&pMux, NULL) != S_OK )
 return FALSE;

// AVI Mux フィルタを接続
if(((ICaptureGraphBuilder2 *)pBuilder)->RenderStream(
 &PIN_CATEGORY_CAPTURE,
 &MEDIATYPE_Video,
 ((IBaseFilter *)pCap),
 NULL, // 圧縮フィルタなし
 (IBaseFilter*)pMux // NULL ならデフォルトのレンダラ
 ) != S_OK)
 return FALSE;