DirectShow関係4(クラスライブラリ)
1.機能
◎DirectShowインターフェース
現在利用可能なDirectShowのインターフェースを下記に示します。
IGraphBuilder, IFilterGraph, IMediaControl, IMediaPosition, IVideoWindow, IBasicVideo2, IBasicAudio, IMediaEvent, IMediaEventEx, IMediaSeeking, ICaptureGraphBuilder2, IFileSinkFilter, IAMCopyCaptureFileProgress, IAMVideoProcAmp, IBaseFilter, IPersist, IMediaFilter, IEnumFilters, IAMStreamConfig, IAMStreamSelect, IMediaSample, IPin, IEnumPins, IReferenceClock, ISampleGrabber, ISampleGrabberCB, IVMRMixerBitmap9, IVMRMixerControl9 IStreamBufferSink,IStreamBufferSource,IStreamBufferMediaSeeking,また、DirectShowのインターフェースではありませんが、
EnumSTATSTG, IStorage, IPersist, IPersistStream, ISpecifyPropertyPages, ICreateDevEnum, IPropertyBag
インターフェースは、基本的にCでの名称と同じにしています。
使い方も同じですので、引数の意味などはC用のDirectShowマニュアルを参照して下さい。
◎ユーティリティ
ユーティリティモジュールは下記の機能を提供します。
汎用関数 | ||
・ | CoCreateInstance | COMオブジェクトのインスタンスを作成します。 |
・ | ReleaseInstance | COMオブジェクトのインスタンスをを解放します。 |
・ | PtrToStructure | アンマネージ領域からデータをコピーします。 |
デバッグ関係 | ||
・ | DebugPrint | グラフの内容をコンソールに出力します。 |
・ | SaveGraphFile | グラフをGRFファイルに保存します。 |
・ | LoadGraphFile | GRFファイルからグラフを読込ます。 |
例外関係 | ||
・ | GetDirectShowMessage | 戻り値等からDirectShow関連のエラーメッセージを取得します。 |
・ | DirectShowException | DirectShow関連の例外クラスです。 |
グラフ構築関係 | ||
・ | CreateNewGraph | 新しい空のグラフを生成します。 |
・ | CreateFilter | 名称やCLSIDなどを指定しフィルタのインスタンスを生成します。 |
・ | AddFilter | 名称やCLSIDなどを指定しグラフにフィルタを追加します。 |
グラフ操作関係 | ||
・ | GraphPlay | グラフを再生させます。 |
・ | GraphStop | グラフを停止させます。 |
・ | GraphPause | グラフを一時停止させます。 |
・ | PlayLoopStart | 再生中のグラフをループ再生させます。 |
・ | PlayLoopStop | ループ再生を終了させます。 |
情報取得関係 | ||
・ | EnumFilters | カテゴリを指定しフィルタを列挙します。 |
・ | EnumPins | フィルタのピンを列挙します。 |
・ | FindPin | 条件にあうピンを検索します。 |
・ | FindInterface | グラフ内のフィルタから指定されたインターフェースを検索します。 |
・ | GetFilterName | フィルタの名称を取得します。 |
・ | GetPinName | ピンの名称を取得します。 |
・ | GetVideoSize | 映像サイズを取得します。 |
・ | GetGraphState | グラフ状態を取得します。 |
フォーマット関係 | ||
・ | EnumFormat | ピンがサポートしているフォーマットを列挙します。 |
・ | GetFormatCount | ピンがサポートしているフォーマットの個数を取得します。 |
・ | GetFormat | 現在のフォーマットを取得します。 |
・ | SetFormat | 使用するフォーマットを設定します。 |
列挙用アルゴリズム | ||
・ | EnumFiltersAlgorithm | フィルタ列挙のアルゴリズムを提供します。 |
・ | EnumPinsAlgorithm | ピン列挙のアルゴリズムを提供します。 |
・ | EnumFormatAlgorithm | フォーマット列挙のアルゴリズムを提供します。 |
プロパティページ関係 | ||
・ | OpenDiaglog | フィルタ又はピンのプロパティページを表示します。 |
メディアタイプ関係 | ||
・ | DeleteMediaType | メディアタイプの領域を解放します。 |
・ | CompGUIDString | GUID文字列同士の比較お行います。 |
・ | NormalizeGUIDString | GUID文字列を一般的な形式に整えます。 |
・ | GetMediaTypeName | メディアタイプのGUID文字列からわかりやすい名称を取得します。 |
ビデオレンダラ関係 | ||
・ | SetVideoRendererOwner | 指定されたウィンドウ/コントロール内で動画再生されるようにします。 |
・ | SetVideoRendererEventOwner | レンダラでのマウス操作を指定されたウィンドウ/コントロールで イベントとして認識できるようにします。 |
サンプルグラバ関連 | ||
・ | FrameCapture | カメラ又は動画ファイルから、 静止画データを取り込む機能を提供するクラスです。 |
カメラ選択 | ||
・ | SelectCameraDialog | カメラをユーザに選択させるダイアログです。 |
概要の所でも触れましたが、あえて「関数」という形で提供しています。
DirectShowのサポート範囲は結構広く様々な操作があって(私にとっては)複雑すぎるため、
全てをサポートできるようなクラスは私には作れません。
誰か作ってください(^^;;;
このクラスライブラリはDirectSHowの全ての機能を提供する訳ではないです。
っていうか、その一割にも満たないでしょう。
足りない機能があったらリクエストしてください。
(すぐには追加できない可能性がありますが^^;)