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;