« WMでストリームの例外? | メイン | Vorbis + TheoraのOgg動画ファイルを作る »

2005年10月07日

吉里吉里 ムービー拡張日誌2:: 必要なインターフェイスは?

    

Run, Pause, Stopを実装して、OnSampleでIMediaSampleを得てから、その中へ画像データなどをコピーし出力ピンのDeliverをコールするようにしたが、再生が開始されない。
IMediaControl::Runの返り値を確認してみると、S_FALSEが返ってきている。
どうやら、CBaseFilterを継承しただけのフィルタではダメなようだ。
そこで、IMediaSeekingインターフェイスを実装するべく、CSourceSeekingを継承するも、CUnknownへのキャスト時にあいまいと出てコンパイルが通らない。
仕方ないので、CSourceSeekingを継承したクラスを作り、そのクラスをフィルタクラスのメンバーに保持し、QueryInterfaceでIID_IMediaSeekingへの問い合わせがあった時はそのメンバーへのポインタを返すようにする。
これでコンパイルが通るようになったが、再生は失敗する。

他にどのインターフェイスが必要なんだろう?
もしくは、いずれかのメソッドの呼び出しの返り値などがまずいのだろうか?
もう少し追ってみる必要がありそうだ。



投稿者 Takenori : 2005年10月07日 20:05




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