- アニメのエンコに賭ける青春って幸せ!
268 : ◆47o/marumo [sage]:2007/12/06(木) 03:48:59 ID:fzu2DUGa - >>265
現在の x264 実装ではないです。--bframes 7 とか 11 とかで --b-pyramid 試してみたことがあるのですが、参照 B フレームは中央の 1 枚しか入ら ないので遅延は 2 フレームが最大になります。 ただし、--bframes 7 のときに P0 b1 B2b b3 B4a b5 B6b b7 P8 のように (P0, P8, B4a, B2b, b1, b3, B6b, b5, b7 と) エンコードする H.264/AVC 実装があると、そちらでは 3 フレームの遅延が発生します。 pack は pack されてる参照フレームの出力タイミングをどうやって CODEC に 通知するかという点が問題になります。MPEG-4 (14496-2) では Not Coded と いう特別なフレームが規格で用意されていたので規格と矛盾することなく packed bitstream というハックをすることができたのですけど、H.264/AVC だとそれがないんですね。
| - アニメのエンコに賭ける青春って幸せ!
270 : ◆47o/marumo [sage]:2007/12/06(木) 20:14:57 ID:fzu2DUGa - B 関連のデコード遅延は AVI の問題に含めるべきかどうか微妙なんですよね。
現状、AVI の再生環境は完全に DirectShow のみになっている (VLC Player のように自前で全部面倒を見てるプレイヤーは除いて) わけで、DirectShow 環境では VFW の single in, single out に縛られる必要は本来ないはずなん ですよ。 AVI Splitter -> Dec(ffdshow) -> Render 上のフィルタグラフで再生するときに、デコーダ内部でバッファして、表示 順どおりに正しいタイムスタンプを付けてレンダラーに渡してやればいいだけ なんですから。(A/V 同期はレンダラーがタイムスタンプを見て勝手にやって くれる) 例えば、 I0 -> I0 として出力 P4 -> デコードだけしてまだ出力しない B2 -> デコードだけでまだ出力しない b1 -> b1 として出力 b3 -> ここで B2 を出力 P8 -> b3 を出力 …途中略… EoS 通知 -> バッファ分を順次出力 ということが DirectShow ではできるはずなんですね。 この場合、AVI 段階で VFW を救おうと下手に対策する (拡張 AVI 出力での β対策とかが例として適切です) と DirectShow 環境ではかえってズレが 発生することになります。
| - アニメのエンコに賭ける青春って幸せ!
271 : ◆47o/marumo [sage]:2007/12/06(木) 20:19:38 ID:fzu2DUGa - 実際のところ ffdshow はどーゆー処理をしているのだろうと映像フレームに
タイムスタンプを焼き込むフィルタを作って実際の数値を確認してみようかと したのですが……。 FLV 出力とか STD-B25 とかに浮気を始めて途中放置になっちゃってます。
|
|