DirectShow サンプルグラバを使うには

chakemiです。

本日は、DirectShowでサンプルグラバを使いたいときのメモ。

ご存知の方には、どうでもいいことですが、DirectShowとはVideo For Windowsに代わるマルチメディアAPIとして、WindowsAPIとは別系統のマルチメディアフレームワークとAPIになります。 ざっくりと、ソースフィルタ、トランスフォームフィルタ、レンダラーフィルタというブロックを組み合わせて「フィルタグラフ」という形に構築しフィルタグラフマネージャーの配下で動作させます。

DirectShowにはサンプルグラバフィルタという変換フィルタが用意されていて、これを使うと通過するサンプルをそのまま取得することが出来ます。 なのでソースフィルタとレンダラーフィルタの間に挿入することで、簡単にフレーム画像を取得することが出来ます。

そんな便利なサンプルグラバですが、WindowsSDK v7.0から削除されております。

DirectShowがDirectX SDKからPlatform SDK→WindowsSDKへと移管されて整理されてしまったようです。

で、やっと本題ですが、どうしても使いたい場合、 WindowsSDK v6.1もしくはそれより以前のものをインストール、またはすでにインストールされている別のPCのIncludeディレクトリから 「qedit.h」ファイルを現在使用しているSDKのIncludeディレクトリへコピーしちゃいます。

消されてしまうようなファイルなので、当然このままでは使用できなくて「dxtrans.hがありません」というエラーが発生します。

これを回避するためには dxtrans.hをコメントアウト

1
//#include "dxtrans.h"

下記のように、すべてのIDXEffectの継承の指定部分のみコメントアウト

1
2
3
4
IDxCompositor //: public IDXEffect
IDxAlphaSetter //: public IDXEffect
IDxJpeg //: public IDXEffect
IDxKey //: public IDXEffect

これで、サンプルグラバが使えるようになります。

レンダリングしたくない場合だとかに使うNullレンダラもこれで使用することができるようになります。

Comments