« フィルタを内包する | メイン | 動画拡張の予定と吉里吉里3について »

2005年10月09日

吉里吉里 ムービー拡張日誌2:: 使用するインターフェイスの変更

    

何とか画像が出るようになったけど、IWMReaderを使ったフィルタではいろいろと不都合が出そうだ。

ソースフィルタはひたすらデータを処理してレンダーへ送る。
Receive または GetBuffer 内でブロックされたら、そこで待つ必要がある。
と言うような動作を行うが、IWMReaderは内部でスレッドを持ち、それ自身で同期を取りながら再生を行う。
だけど、GetBuffer 内でブロックされたら停止しなければならない。
現在、OnSampleで次のフィルタへデータを送っているわけだが、この中で勝手にブロックするのはまずいだろう。
かといって、ブロックされる時にPauseしてしまうと、OnSampleが呼ばれなくなり再生がとまってしまう。
CSourceStreamの実装を見ると、GetDeliveryBufferをポーリングするような作りになっている。
つまり、止まってしまうとまずい。
なら、ワーカースレッドを作ってそいつに……と出来なくはないが、ここはおとなしくIWMSyncReaderを使うように書き換えたほうが良さそうだ。
IWMSyncReaderであれば、非同期にデータの取得が可能なので、Pauseなどの心配がない。
ってことで、WMSyncReaderサンプルを見て、IWMSyncReaderの使い方を調べないと。



投稿者 Takenori : 2005年10月09日 00:29




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