Allegro Moderatoな日常

PC、音楽、食事など、その時はまっている事柄についてそこはかとなく。

PATの解析

前回の追記に貼り付けたtss.pyの説明をおりまぜながら、PATの解析の話をば。

mpeg2tsは、TSパケットと呼ばれる188バイトのデータの羅列でできています。
その中でも、まず一番最初に参照しなければならないのが、PATとよばれるTSパケットです。

実際にPATを見てみると…
PAT1
こんな感じになってます。
TSパケットの先頭4バイトはTSヘッダーと呼ばれています。
PATの中身のデータは6バイト以降の水色でくくった部分で、
それ以外の不要部分は0xFFで埋められています。

PAT2
TSヘッダーの最先頭には同期ワード0x47が必ず入っていて、本来これを
基準にパケットの先頭位置を特定します。が、b25の出力後のデータは、
そこまでの処理のどこかで同期がとられていて、必ずTSパケットの先頭から出力されるようなので、
tss.pyには同期処理が入っていません。

2バイト、3バイト目はそのTSパケットの素性を現すID(PID)が入っています。
2バイト目を上位、3バイト目を下位として、下位から13ビットを取り出すとPIDになります。
ちなみにPATのPIDは0x0000と決まっています。(0x6000 & 0x1FFF = 0x0000)

4バイト目の下位4bitは巡回カウンタになっており、この次のPATでは0x5にカウントアップしています。
このカウンタ値が不連続になっていた場合、パケットの欠落があったことがわかります。

PATデータの中身を見ていきましょう。
PAT3
AV-LS300DWで再生できるようにするためにいじらなければならないのは、
?PMT情報、?セクション長、?CRCの3箇所です。

TSにはハイビジョンやワンセグなど複数の映像が多重されていますが、
それぞれの映像はPMTとよばれるTSパケットで管理されています。
このPMTのPIDは固有の値ではないので、どこかに記録されていないと判別できません。
そのPMTのPIDが記録されている部分が、PAT内の?PMT情報です。

PMT情報は4バイトでひとまとまりになっています。
上のPATの例では、3つのPMTがあり、3つの映像が多重されていることがわかります。
3バイト目を上位、4バイト目を下位として、下位から13ビットを取り出すとPIDになります。
上の例の3番目のPMT情報を例にとると、3、4バイト目は0xFFC8で、下位13ビットをとりだせば、
このPMTのPIDは0xFFC8 & 0x1FFF = 0x1FC8となります。
(ちなみに0x1FC8だけはワンセグと決まっているらしいです。)

しかし…AV-LS300DWは、PATに複数のPMT情報があると、なぜか映像を再生してくれません。
ということで、ハイビジョンのPMT情報1つだけ残します。
ハイビジョンかどうかの判定は、本来PMTを見て判別すべきなのかもしれませんが…
tss.pyでは先頭のPMT情報のみ残すようにしています。これでいままでのところは問題ありません。

?のセクション長は、その次のバイトからCRCの終わりまでのバイト数が書かれています。
当然PAT情報が減っているので、このセクション長も減らす必要があります。
セクション長は12ビットありますが、PATが255バイトを超えるようなことは無さそうなので、
tss.pyでは0x19を0x11に書きかえています。

最後に?CRCを計算しなおします。
CRCへはPATデータの頭からPMT情報のお尻までを入力します。
CRCの仕様は一般的なCCITTの32ビットCRCです。
詳細は以下の付録Bにかかれています(チェック側ですが)。

■ 参考文献
ARIB標準規格:デジタル放送に使用する番組配列情報
http://www.arib.or.jp/english/html/overview/doc/2-STD-B10v4_6.pdf

???を書き換えると、最終的に↓のようになります。
PAT4
後はこれを、全PATに対して差し替えればいいのですが、TSヘッダーの巡回カウンタ値は
保存しなければならないので、書き換えないようにご注意を。

次回はPMTの解析の話でも。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://allegro.dtiblog.com/tb.php/185-ec9f3775

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

-

管理人の承認後に表示されます

 | HOME | 

Calendar

06 | 2017-07 | 08
S M T W T F S
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

Categories

Recent Comments

Profile

son

son

ババ〜〜トリック♪

Monthly

Recent Entries

Recent Trackbacks

Appendix

顔文字教室

DTIブログポータルへ
このブログを通報
Report Abuse