- 593 名前:名称未設定 mailto:sage [2006/12/01(金) 01:49:40 ID:bGp6AVw60]
- 何か変な流れになってるが、取りあえず一つだけ指摘しとく。
x264はエンコードの際に固定フレームレートを前提としてバッファを管理 しているので、可変フレームレートのタイムコードを後から埋め込むと バッファ管理がでたらめなストリームになってしまう。 だから、その方法で作成したストリームは確かに可変フレームレートになって はいるが、規格違反のゴミでしかない。 バッファ管理がよく分からない香具師は、水道の蛇口から一定量の水をバケツ に流し続けつつ、同時にコップでバケツから何度も水をすくい続ける状況を 想像するといい。 一定量流れる水が入力ストリーム、バケツがバッファ、バケツに水を溜める 作業がバッファにデータを蓄積する作業で、コップで水をすくう作業が、 1アクセスユニット(説明が面倒だから今回は1フレーム分の画像って事に しとく)のデータをデコードする事でバッファを解放する作業に相当する。 コップですくう水の量は多かったり少なかったりする(フレームの種類によって データ量が違うのは知ってるよね?)が、バケツの中の水が足りなくてコップ ですくえなかったり(アンダーフロー)、バケツから水があふれたり(オーバー フロー)しないようにコップですくう水の量を調整するのがバッファ管理。 で、固定フレームレートってのは、一定間隔でバケツからコップで水をすくい 続ける行為に相当する。 x264は固定フレームレートを前提にバッファを管理しているから、もし後から タイムコードを別途与えてしまうと、上記の例だとコップですくう水の量は そのままで、すくう間隔だけ変えてしまうのと同じになるから、アンダーフロー やオーバーフローが発生してしまう。 これが正しくバッファ管理されていないという事。
|

|