トップページ > DTV > 2007年12月06日 > fzu2DUGa

書き込み時間帯一覧

時間01234567891011121314151617181920212223Total
書き込み数0001000000000000000020003



使用した名前一覧書き込んだスレッド一覧
◆47o/marumo アニメのエンコに賭ける青春って幸せ!

書き込みレス一覧

アニメのエンコに賭ける青春って幸せ!
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 とかに浮気を始めて途中放置になっちゃってます。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。