TS頭詳解

Transport Stream是由一連串的TS packets所構成,每個TS packet的長度固定是188 bytes,總共有幾個TS packet則由需傳輸的數據量決定。

TS packet主要可以分成二個部分:packet header和payload。Payload中放置的可能是video PES packets、audio PES packets或其他數據。TS packet header則又可分成二個部分:固定爲4 bytes的prefix和可變長度的adaptation field。Prefix中最重要的功能是,標示其後有沒有adaptation field,有沒有payload。Prefix中最重要的字段是”PID”(Packet IDentifier),PID的功能類似郵件包裹上的標籤,指出包裹內容是什麼資料。Adaptation中最重要的是包含PCR字段(Program Clock Reference),PCR是一種time stamp,decoder依此推算出時序。

Prefix的字段說明:

sync_byte:
此字段共有8 bits,其值爲’0x47’,用來當作packet同步的信息。

transport_error_indicator:
是一個1 bit flag,辨別packet是否有錯。若設爲’1’表示此TS packet至少1 bit發生錯誤,直到更正後才重設爲’0’。

payload_unit_start_indicator:
是一個1 bit flag。根據這個TS packet究竟是包含PES packet或包含PSI data,而分成二種情形:

若此TS packet的payload包含的是PES packet,設爲’1’表示payload的開頭是某個PES packet的第一個byte(注意!只能有一個PES packet開始於此TS packet的payload);設爲’0’則代表沒有PES packet開始於此TS packet的payload。

若此TS packet的payload包含的是PSI data,設爲’1’表示此TS packet帶有PSI section的第一個byte,而payload的第一個byte將是point_field,用來指出PSI section第一個byte的位置;’0’則表示payload中沒有point_field。

另外,若此TS packet爲null packet,此flag設爲’0’。

transport_priority:
是一個1 bit indicator。設爲’1’的packet比其他相同PID的packets有較高的priority。

PID:
共有13 bits。指出payload中資料的種類,如表1-1:
表1-1
value Description
0x0000 Program Association Table
0x0001 Conditional Access Table
0x0002~0x000F Reserved
0x0010~0x1FFE may be assigned network_PID,Program_map_PID,elementary_PID,or for other purposes
0x1FFF 

transport_scrambling_control:
共有2 bits。指出payload的scrambling mode,但TS packet header(包括prefix和adaptation_field)不可scramble。如表1-2:
表1-2
value description
00 not scrambled
01 user defined
10 user defined
11 user defined
adaptation_field_control:
共有2 bits。指出此TS packet header之後是否跟着adaptation field或payload。如下表1-3:
表1-3
value Description
00 reserved for future use by ISO/IEC
01 no adaptation_field, payload only
10 adaptation_field only, no payload
11 adaptation_field followed by payload

continuity_counter:
共有4 bits。隨每個相同PID的TS packet而增加其值,到達最大值後從0重新計數,但若此packet的adaptation_field爲’00’或’10’,此域值不會增加。若有連續兩個相同PID的TS packet,它們的continuity_counter值相同,而adaptation_field設爲’01’或’11’,表示它們是duplicate packets。當discontinuity_indicator設爲’1’,則continuity_counter值發生discontinuity。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章