« MSDNをインストール | メイン | 連続再生について »
2004年08月14日
吉里吉里2/KAG3ムービー拡張日誌:: ソースフィルタの変更
Tweet @jin1016をフォロー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