« BOM 付き UTF-8 に対応 | メイン | vomMFEVR は全体的に非同期 »

2014年08月05日

吉里吉里Z 開発:: Media Foundation を使った再生

    

Windows7 で H.264 を再生しようとしたら DirectShow では再生できなくて、Media Foundation を使用しないと再生できない。
以前、Media Foundation で再生は出来るようにしていたので、それをブランチに入れた。
これでモードに vomMFEVR が追加されて、vomMFEVR モードで再生すると Media Foundation を使った再生になる。

その後実装を見ていたら IMFPMediaPlayer でプロパティを設定したりする作りになっていたが、IMFTopology を自前で作って再生する形に書き換えていたので、そちらにじわじわ書き換え中。
その場合 IMFMediaSession から IMFGetService を取得して、そこから各種インターフェイスを取得して、そのインターフェイス経由で設定する COM の面倒くさいところ盛りだくさんな形に。
IMFPMediaPlayer では簡略化されていて楽なんだけど、ファイル直接指定での再生は問題ないものの、吉里吉里のストリームを渡して再生する形ではどうにもうまく再生できなかったので、IMFTopology で自前で作る形に前に書き換えていた。
残りはプロパティやシークなどを埋めていくだけだけど、色々検索してインターフェイス探していかないといけないので大変。

Media Foundation は、Vista だと WMV くらいしかサポートしてない。
Windows 7 になると AVI / H.264 もサポートされているので、やっと使える感じに。

最初 IMFPMediaPlayer を使っていた関係で Windows7 以降用になると思っていたけど、IMFTopology で作るようにしていたので、Vista 以降ならそのままで動きそう。
Vista だと再生できるのは WMV のみなので意味がないけど。
Vista で H.264 再生しようとした場合はたぶん例外吐くはず。
XP だと起動時に DLL がないと言われて起動しないはず。
ビルド時の指定で XP を対象としたとしても。
そもそもプラットフォームツールセットを XP にするとビルドエラーがいろいろ出たはず。

1時間コーディングで色々と作っていたけど、1時間で完成させられるもので欲しいものが思い浮かばなくなってきたので、1日1時間好きなものを進めることにした。



投稿者 Takenori : 2014年08月05日 01:51




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