Date

Video Capture Filter の Preview ピンからキャプチャするときの留意点を書いておく。

  • プレビュー時は、 ImageSinkFilter を生成および接続しない。
  • Enter キー押下タイミングで次の処理を実行する。
    1. フィルタグラフを Stop
    2. ImageSinkFilter のインスタンス生成して AddFilter
    3. RenderStream 実行
    4. IFileSinkFilter::SetFileName の実行
    5. フィルタグラフを Run
  • IMediaEventEx::SetNotifyWindow でフィルタグラフのイベントを補足し、event code が、 EC_CAP_FILE_COMPLETED のとき次の処理を実行する。
    1. フィルタグラフを Stop
    2. SmartTee フィルタのピンを解除し、 ImageSinkFilterRemoveFilter する。
    3. フィルタグラフを Run

これで、Preview ピンから任意のタイミングで撮影できるようになった。その他の気づいたこととして、

  • WM_CREATE のタイミングでフィルタグラフを作成すると、ウィンドウがアクティブにならなかったりする。そこで、 WM_WINDOWPOSCHANGED のタイミングでフィルタグラフを作成すると良いようです。
  • IFileSinkFilter::SetFileName は、ピンが接続された後に呼び出さないと例外が発生する。RenderStream を呼び出した後に実行する。

Comments

comments powered by Disqus