TSConverterのソースを読んでみた

あちこち手を出して、どれもなかなか収束しない今日この頃。できれば、PT2から読み出してファイルに出力するフェーズで、TSConverterと同様の処理で、ワンセグデータを切り出しておけば、一旦ファイルにして後で切り出すより軽いかな、と。
さらっと読んでみた感じ、こんな流れか。

  • ワンセグのVideo/AudioのPIDを探すところ
  • それぞれをファイルに出力するところ
  • タイムコードを振るところ
  • MP4Boxを呼ぶところ
  • DtsEditを呼ぶところ

1番目のは、0x1fc8のPMTを拾って、stream_typeがVideo/Audioのelementary_PIDを取ればいいので楽勝
2番めの、.264と.aacのファイルを切り出すところがTSConverterのツボっぽい。とりあえず現状、何をやってるのかさっぱり分からん。音ずれがないように?なんか同期を取ってダミーをはさんでいるようなのだが。
3番目以降は別に切り出して、スクリプトから順番に実行する方がすっきりするような。

これを参考に、自前TSパーサーにもPESヘッダの解析を入れてみた。TSを食わせてみた出力からすると、

  • そのPIDがtableを指してたら、unit_start_indicatorが1の時の、payloadの先頭バイトはpointer_field
  • そのPIDがPESを指してたら、unit_start_indicatorが1の時の、payloadの先頭バイトはPESヘッダの先頭

ということで正しいんだろうか。なんとも面倒な。