« MSDNをインストール | メイン | 連続再生について »

2004年08月14日

吉里吉里2/KAG3ムービー拡張日誌:: ソースフィルタの変更

    

asyncio.h/.cppとasyncrdr.h/.cppをそのままコピーしてきて、吉里吉里のCIStreamReaderとCIStreamProxyを別ファイルに分離して、それをインクルード。
VC.NET 2003でビルドするとasyncio.cppでビルドエラーが。
単に型チェックが厳しくなっただけのようだ。
asyncio.cppの422行目のCreateThreadへ渡す関数ポインタを(LPTHREAD_START_ROUTINE)にキャストしたらビルドが通る。たぶん、これで大丈夫だろう(あまりこういうことはしない方がいいけど)。

ビルドが通ることを確認したので、ソースフィルタを変更する。
と言っても、AddFilterでCIStreamReaderをグラフに追加し、その出力ピンとレンダーをつなぐだけ。
IStreamはとりあえずSHCreateStreamOnFileでお手軽に生成。
でも、SHCreateStreamOnFileに渡すファイル名はなぜかマルチバイト文字セット。
仕方なく、WideCharToMultiByteで変換する。
なんで、ワイド文字列(Unicode)じゃないのだろうか?
シェル系はワイド文字列が多かったはずだが・・・あれ?逆だったかな?
まあ、いいか。どっちでも。面倒だけど。
で、前回と同じように再生されることを確認。
なんか、かなりあっさりと出来た。

次はいよいよメモリからの再生。
でも、そんなに難しくはなさそう。
IStreamを継承したクラスを作って、ぽんっと渡せば済みそうだし。



投稿者 Takenori : 2004年08月14日 07:25



コメント

SHCreateStreamOnFileは通常のWin32APIと同様にA/Wの区別があるので直接SHCreateStreamOnFileWを呼べばわざわざWideCharToMultiByteで変換する必要はありませんよ。

投稿者 hoge : 2005年05月19日 17:32

なるほど、SHCreateStreamOnFileWがあったのですね。
アドバイスありがとうございます。

投稿者 Takenori : 2005年05月20日 19:16


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