言い訳しようそうしよう!
■ 速いPCなら…
速いPCなら適当にネットにあるソースのコピペでずれはほぼ出ないと思いますが‥‥
うちで使ってるコードはサムネイルの処理などで結構重いので、、、、
音声同期もしてないのに30fps出せません(笑)
int interval_ms = (int)(1000 / movie.Fps);
// レスポンスが悪い(環境によってはオーバーヘッドが数十ミリ秒)ので問題山積
await Task.Delay(interval_ms);
なんてやったらどんどん遅く(毎フレーム遅延していく)なりますので、開始時間からのフレームをタイマーを使って計算してフレームの取得しています。
いままで15fpsに制限をしていたわけではありませんが、Skylakeではそのあたりの表示フレーム速度でしたの気づきにくかったわけです^^;
今回フレームのコピーが速くなって、「全体的に重い」から「一部が速くなる」=早くなったり遅くなったり感じます。
表示フレームっていうものが最終目標なので、個々のインターバルで遅延を避ける処理と、表示開始時間からの誤差で調節するのがベストかなと実装してます。
※デバッグ段階ですが…(;^_^A アセアセ・・・
30fpsで表示できる環境も増えたこともあり、30フレームおきにスクロールする下のサムネイルを作成している関係で、その時にカクっとなります。
スクロールエリアの長さにもよりますが、FHDモニタで最大表示した時に、33msですべてを処理できるコードがかけてませんm(__)m
別スレッドにしたりやりたいことはいろいろあるのですが、さぼってやってません(^◇^;
・24fps(映画やアニメ)の動画のフレーム取得がこけている(5フレームおきに参照フレームがおかしくなるバグ)
・音声ストリーム&字幕ストリームの増減で参照フレームがおかしくなりタイムアウトで処理落ちするバグ
など大きいバグの壁の前に挫折している状況です。
一つ躓くと前に進めない挫折組なので、回避できてないうちは多分集中できないかと…
githubにts再生の良い参考例は上がらないかしら~おほほほほ。と丸投げしてますヘ(゚∀゚ヘ)アヒャ
NVDEC使ったら変わるんかな?(?_?)エ?
■ 待ち時間に関していろいろ頑張っている方が多数おられるのでその一例を…
