« 未実装のプロパティ系を実装 | メイン | EC_UPDATEイベントと共にフレーム番号を »

2004年09月14日

吉里吉里2/KAG3ムービー拡張日誌:: 時間からフレーム番号へ

    

とりあえず、以下のようなコードで変換。

REFERENCE_TIME TimeStart;
REFERENCE_TIME TimeEnd;
GetSampleTimes( pSample, &TimeStart, &TimeEnd );
double renderTime = TimeStart / 10000000.0;
REFTIME AvgTimePerFrame;
CBaseControlVideo::get_AvgTimePerFrame( &AvgTimePerFrame );
EventParam1 = (LONG)(renderTime / AvgTimePerFrame + 0.5);

なぜか、REFERENCE_TIMEはLONGLONGで、REFTIMEはdouble。
とりあえず、doubleにあわせて計算。
最終的に四捨五入してフレーム番号とする。(レンダリング時間は処理時間を考慮して、少し遅く、もしくは早く設定されている。詳しく言えば、1フレーム目は少し遅く、それ以降は少し早くなっている。はず)
これで、だいたいいい感じのフレーム番号が出ているようだ。
でも、開始直後など時々ドロップフレームがある。
まあ、仕方ないでしょう。
このフレーム数を使って処理する部分は、ドロップフレームが発生する可能性を考慮して作らないといけない。
つまり、何フレーム目でと言う処理で、==とかで比較すると、一生一致しない可能性がある。
この点は気を付けないとな。



投稿者 Takenori : 2004年09月14日 12:29




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