2004年11月10日 15時07分 旧ブログより
DirectShowをC#にて、呼び出すためのラッパに追加のコードを入れましょうな話
最近は、こちらを利用してますんで、過去の話ですが...
こんにちわ!
当地は朝から、強雨となっております。
ってことで、C#.NET@VS2003にて仕事しておりまして、
必要に迫られ、DVエンコーダをDirectShowにて接続、
映像表示するシステムなんぞ、突貫で作っております。
んで、MSさん、何を血迷ったのか、DirectX関連のラッパークラスは、ほとんど準備しているみたいなんですが、
なぜかDirectShow周りだけ、ラッパークラスを準備していない(怒)VC++での実装実績はありましたんで、
VCにてDirectShow周りをアクセスするアンマネージDLLを作成して、C#から呼んでやろうかとも考えましたが…
code project内にDirectShowのインタフェースラッパーを発見、必要最低限の実装だけど、なんとなく使えそう(ニヤリッ)
こいつをC#上のプロジェクトから呼んでやりましたが、問題なさそうでしたんで、こいつでシステム、作り上げてやりました。
ただし、DVエンコーダの解像度を切り替えるインタフェースラッパーの実装は、ありませんでしたので、
私が、作りこんでみました。合ってるかどうかは、謎ですが(苦笑)とりあえず、この実装で、問題は出ておりませんです…
必要とされる方は、ご自由にお使いください(もちろん、自己責任でよろしく!)
C#:
- [ComVisible(true), ComImport,
- Guid("b8e8bd60-0bfe-11d0-af91-00aa00b67a42"),
- InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
- public interface IIPDVDec
- {
- int get_IPDisplay(
- [Out] out int displayPix);
- int put_IPDisplay(
- [In] int displayPix);
- }
- public enum DVDECODERRESOLUTION
- {
- DVDECODERRESOLUTION_720x480 = 1000,
- DVDECODERRESOLUTION_360x240 = 1001,
- DVDECODERRESOLUTION_180x120 = 1002,
- DVDECODERRESOLUTION_88x60 = 1003
- }
んでは、仕事に戻りますぅ~~



