« 現在の時間とフレーム | メイン | フィルタのCOMコンポーネント化 »

2004年08月27日

吉里吉里2/KAG3ムービー拡張日誌:: IBasicVideoの実装

    

サンプルを見ながらクラスを作成。
CBaseControlVideo::NonDelegatingQueryInterfaceとCBaseControlVideo::GetVideoFormatさえ作れば、目的を達成できるが、他にいろいろ純粋仮想関数があるので、それも実装しないといけない。
ほとんどはE_NOTIMPLエラーを返すだけだが。

とりあえずは、今までグローバルにあったMediaTypeをBufferRendererに保存するように変更。動作確認。
IBasicVideoをサポートするクラスを作成し、追加したらクラスファクトリ系のグローバル変数が必要だと言われる。
つまり、CBaseControlVideoを継承したクラスを作ると
Textures error LNK2001: 外部シンボル ""class CFactoryTemplate * g_Templates" (?g_Templates@@3PAVCFactoryTemplate@@A)" は未解決です。
Textures error LNK2001: 外部シンボル ""int g_cTemplates" (?g_cTemplates@@3HA)" は未解決です。
などが出るようだ。

CBaseControlVideoを継承したクラスを持ったフィルタを作ると、IBasicVideoがフィルタグラフから使われる(検索される)ようになるわけで、そしたらフィルタが登録されていないといけないと言うわけだろうか。
これは、どんどん本格的なフィルタになっていく・・・。と言うか、クラスファクトリを実装してレジストリの登録とかをやったら、もう普通のフィルタです。
でも、そうなると独自メソッドはインターフェイスとして実装しないといけないことになって・・・。
ちょっと大変です。
しかも、レジストリへ登録とかになってくると、インストーラがどうとか言うことになって・・・
IBasicVideoはもういいか。
とりあえずは、LayerDrawとOverlay別々の処理にしておいて、将来的にきちんとしたフィルタとして実装する?
と言っても、かなり近い将来になりそうだけど。
とりあえず、その方針にして、両方を平行で進めることにしよう。
よし、ローカルの実験用リポジトリをブランチだ。



投稿者 Takenori : 2004年08月27日 10:34




comments powered by Disqus
Total : Today : Yesterday : なかのひと