デコードとインデックスファイル

ほげ
0
muken@混沌の良人 @ChaosSoulLover

インデックスファイルの役割まとめ ・過去に遡りすぎたり、リトライ等による読み込みの削減 ・ファイル自体が持つインデックス情報を訂正したものの記録 ・パラメータセットとキーフレームの対応関係の構築による正確なデコード

2020-11-15 07:11:48
muken@混沌の良人 @ChaosSoulLover

最初のはシークをたびたび繰り返す編集では重くのしかかってくるし、その次の2つはそもそも一度デコードしないと知り得ないことなので、インデックスファイル無しでは実現不可能です。 これらが必要ない用途ならインデックスファイルは不要でしょう。

2020-11-15 07:15:28
muken@混沌の良人 @ChaosSoulLover

L-SMASH WorksのREADMEにWhy is Index file needed?みたいな項目作るべきか・・・。

2020-11-15 07:22:56
muken@混沌の良人 @ChaosSoulLover

3番目の役割の説明が難解すぎてきついな・・・。 絶対一般人にはわからないやつだ。

2020-11-15 07:24:14
muken@混沌の良人 @ChaosSoulLover

キーフレームがあります。 キーフレームはよくシークできるフレームと言われますが、実際は違います。 条件があります。そのキーフレームのアクセス時にそれをデコードするのに必要な情報も同時にどこかしらから取得できること、を満たしている必要があります。

2020-11-15 07:29:34
muken@混沌の良人 @ChaosSoulLover

全てのキーフレームからシークできるように、デコードするのに必要な情報をキーフレームごとに対応するように記録するのがインデックスファイルの役割の一つです。

2020-11-15 07:29:35
muken@混沌の良人 @ChaosSoulLover

こうすればあるキーフレームにシークした時にインデックスファイルを参照すれば、デコードに必要な情報がすぐ手に入り、そこからエラーなくデコードができます。もしインデックスファイルがなければ、そのキーフレームに必要が情報がキーフレームの側についてなくて、エラーとなるかもしれません。

2020-11-15 07:32:04
muken@混沌の良人 @ChaosSoulLover

すげー噛み砕くとこうなるが、キーフレーム is 何になるだろうな・・・。

2020-11-15 07:32:54
muken@混沌の良人 @ChaosSoulLover

H.264/AVCで例えると、 キーフレーム = IDRピクチャ等 デコードに必要な情報 = SPSとPPS ですね。 通常はIDRピクチャの手前にSPS/PPSが付いてるんですが、BD m2tsだと付いてないやつが頻出します。

2020-11-15 07:35:32
muken@混沌の良人 @ChaosSoulLover

お隣同士のSPS/PPSの中身が同じとは限らないので、 例えば SPS1PPS1IDR1・・・IDR2・・・SPS2PPS2IDR3・・・IDR4 と並んでた時に、IDR2からIDR4にシークすると、SPS1PPS1の情報でIDR4をデコードすることになるのでエラーになります。 これを防ぐのが別途SPS2PPS2を記録したインデックスファイルです。

2020-11-15 07:39:37