« Media Foundation を使った再生 | メイン | H.264 再生に対応 »

2014年08月07日

吉里吉里Z 開発:: vomMFEVR は全体的に非同期

    

Media Foundation を使った再生 に書いたように vomMFEVR モードが追加される予定で、使用すると Media Foundation を使った再生になる。
従来のモードはすべて DirectShow を使用して再生していたが、vomMFEVR モードは Media Foundation を使う関係上振る舞いに違いが出る。

vomMFEVR モードは、動画を開いた直後は各種プロパティは正しい値が得られない。
準備が出来たことを onPeriod の perReady で通知されるようにしたが、よく考えたら onStatusChanged で ready 通知された方が良いような気もするので、少し再考する。
まあ、それはともかく準備が出来たら非同期で通知されるので、その通知があった後に各種プロパティ値を取得する必要がある。
また、play や pause 、stop なども従来は呼び出した時、その中で onStatusChanged による通知が行われていたと思うが、これも非同期となり呼び出し後 onStatusChanged で通知される。
onStatusChanged 等を使って制御していた場合、この辺り挙動が変わるので注意する必要がある。
後、今のところ再生中以外はシークできない。
再生中以外のシークは何とか対応するかもしれないが、今は非対応。
Media Foundation が再生開始時に開始位置を現在の位置から行うか、指定の位置から行う形になっていて、それ以外では位置指定がないため、再生中以外はシークしないようにしている。
シークした瞬間再生が開始されるのであれば簡単だが、そうでない場合は状態の管理をよく考えないといけない。
プロパティについても再生に支障はない程度で、従来に比べサポートしているものは少ない。
ムービープレイヤーとして支障のないくらいの機能はあるが。



投稿者 Takenori : 2014年08月07日 01:11




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