SI信息
INFORMATION OF PSI
"PSI是對單一TS流的描述,是TS流中的引導信息"
PSI信息由節目關聯表PAT、條件接收表CAT、節目映射表PMT和網絡信息表NIT組成。這些表會被插入到TS流中。PSI信息是對單一TS流的描述,它是TS流的引導信息;PSI信息指定了如何從一個攜帶多個節目的傳輸流中找到指定的節目(見Q1)。
下面給出的是節目引導信息(或稱節目特定信息,PSI)的四個表結構。
結構名 |
中文 |
所定義標準 |
PID |
描述 |
PAT |
節目關聯表 |
MPEG2標準 |
0x0000 |
將節目號碼和節目映射表PID相關聯,是獲取數據的開始 |
PMT |
節目映射表 |
MPEG2標準 |
在PAT中指出 |
指定一個或多個節目的PID |
CAT |
條件接收表 |
MPEG2標準 |
0x0001 |
將一個或多個專用EMM流分別與唯一的PID相關聯 |
NIT |
網絡信息表 |
SI標準 |
PAT中指出 |
描述整個網絡,如多少個TS流、頻點和調製方式等信息 |
雖然這四個結構可以視爲簡單的表,但事實上,它們被進一步劃分爲各個段,並插入到TS包中。
PAT解析
PARSINGOF PAT
"PAT是機頂盒接收的入口點,是它獲取數據的開始"
節目關聯表PAT的意義在於,它描述了當前TS流中包含了哪些PID;只有根據獲得的PID,用戶纔可以以此作爲憑據找出其他表(如PMT表)及其信息。所以PAT是機頂盒接收的入口點,是它獲取數據的開始;要保證一個TS流能被正常接收,則至少要有一個完整有效的PAT。
下面給出了PID字段的取值要求:
值 |
描述 |
0x0000 |
PAT |
0x0001 |
CAT |
0x0002~0x000F |
保留 |
0x0010~0x1FFE |
可賦給network_PID、Program_map_PID、elementary_PID或作其他用途 |
0x1FFF |
空的分組 |
PAT的表結構分析
ANALYZEOF THE STRUCTUREOF PAT
首先,對PAT的表結構進行分析。下面給出了PAT表的基本結構:
節目關聯段
Syntax(句法結構) No. ofbits(所佔位數) Identifier(識別符) Note(註釋)
program_association_section(){
table_id 8 uimsbf
Section_syntax_indicator 1 bslbf 通常設爲“1”
"0" 1 bslbf
Reserved 2 bslbf
Section_length 12 uimsbf 見註釋
transport_stream_id 16 uimsbf 見註釋
Reserved 2 bslbf
Version_number 5 uimsbf 見註釋
Current_next_indicator 1 bslbf 見註釋
Section_number 8 uimsbf 見註釋
last_section_number 8 uimsbf 見註釋
for(i=0;i<N;i++){
program_number 16 uimsbf 見註釋
reserved 3 bslbf
if(program_number == 0){
network_PID 13 uimsbf 見註釋
}
else{
program_map_PID 13 uimsbf 見註釋
}
}
CRC_32 32 rpchof 見註釋
}
這裏我們注意關注五個字段:
table_id(賦值):PAT的table_id應爲0x00
transport_stream_id(傳輸流標誌):用以標識來源於網絡中任何其他複合流的TS流
program_number(節目號):規定program_map_PID可適用的節目。當值爲0x0000時,其後的PID參照將是網絡PID。它可以作爲一個指示符號,例如用於廣播通道。
network_PID(網絡PID):僅當program_number爲0x00時使用
program_map_PID(節目映射PID):據此找出相應的PMT表
PAT的實例分析
ANALYZEOF REAL EXAMPLE OF PAT
藉助碼流分析儀,我們可以很清楚地以實例的方式更加清晰地瞭解PAT的結構。下面給出的就是一個TS流的PAT分析情況:
根據上表可以看出,這個TS流裏共有6套節目,其映射關係PID分別爲0xc9、0xcb、0xce、0xcc、0xcd和0xca。(注:0xc9=201)
下面給出的是PMT的簡單解析:
兩相比較,可以很清楚地知道,PAT是如何鎖定各個PMT的(每個節目都有一個自己的PMT)。
Q1:如何找到一個特定的節目?
1.已知節目名稱(或id等信息)
P248
首先要從節目關聯表PAT中獲取這個節目的節目映射表PMT的PID值,再從TS流中找出與此PID值相對應的節目映射表PMT;再從PMT中獲取構成這個節目的基本碼流的PID值,從而根據該PID過濾出相應的視頻、音頻和數據等基本碼流。最後解碼恢復爲原始信號。
PMT解析
PARSINGOF PMT
"PMT是連接節目號與節目元素的橋樑"
節目映射表PMT的意義在於,它給出了節目號與組成這個節目元素之間的映射;也就是說,PMT是連接節目號與節目元素的橋樑。我們知道,一個電視節目至少包含了視頻和音頻數據,而每一個節目的視音頻數據都是以包的形式在TS流中傳輸的;所以說,一個TS流包含了多個節目的視頻和音頻數據包。要想過濾出一個TS流中其中一個節目的視頻和音頻,則需要知道這個節目中視頻和音頻的標識號PID。PMT表的作用就在於,它提供了每個節目視頻、音頻(或其他)數據包的PID。
PMT的表結構分析
ANALYZEOF THE STRUCTUREOF PMT
先給出PMT表的段結構:
Syntax (句法結構) No. of
bits(所佔位數) Identifier(識別符) Note(註釋)
program_map_section(){
table_id 8 uimsbf
Section_syntax_indicator 1 bslbf 通常設爲“1”
"0" 1 bslbf
Reserved 2 bslbf
Section_length 12 uimsbf 見註釋
program_number 16 uimsbf
Reserved 2 bslbf
Version_number 5 uimsbf 見註釋
Current_next_indicator 1 bslbf 見註釋
Section_number 8 uimsbf 見註釋
last_section_number 8 uimsbf 見註釋
reserved 3 bslbf
PCR_PID 13 uimsbf 見註釋
reserved 4 bslbf
program_info_length 12 uimsbf 頭兩位爲"00"
for(i=0;i<N;i++){
descriptor()
}
for(i=0;i<N1;i++){
stream_type 8 uimsbf 見註釋
reserved 3 bslbf
elementary_PID 13 uimsbf 見註釋
reserved 4 bslbf
ES_info_length 12 uimsbf 頭兩位爲"00"
for(j=0;j<N2;j++){
descriptor();
}
}
CRC_32 32 rpchof 見註釋
}
這裏着重介紹兩個字段:
elementary_PID:標識了該節目(program_number)攜帶的基本流的識別號PID
stream_type:流類型,指出了PID爲elementary_PID的基本流的類型
附:流類型取值說明
取值 |
描述 |
0x00 |
國際標準保留 |
0x01 |
視頻 |
0x02 |
視頻或受限參數視頻流 |
0x03 |
音頻 |
0x04 |
音頻 |
0x05 |
private_sections |
0x06 |
包含專用數據的PES分組 |
0x07 |
ISO/IEC 13533 MHEG |
0x08 |
|
0x09 |
ITU-T Rec.H.222.1 |
0x0A~0x0D |
GB/T類型 |
0x0E |
GB/T輔助 |
0x0F~0x7F |
GB/T保留 |
0x80~0xFF |
用戶專用 |
PMT的實例分析
首先,注意到這張PMT表的progam_number=0xc9,就是我們在上面解析PAT表得到的。
從上面可以知道,節目號爲0xc9(即201)的節目有兩個單元流:
流名稱 |
標識號 |
類型 |
說明 |
MPEG2視頻 |
ES PID=0x21 |
stream_type=0x02 |
ES PID即爲elementary_PID |
MPEG1音頻 |
ES PID=0x28 |
stream_type=0x03 |
ES PID即爲elementary_PID |
elementary_PID和stream_type的意義在於,告知接收機基本流的類型和識別PID。要想獲取這個節目的視頻,只需要對PID爲0x21的數據包進行過濾,並交由視頻處理模塊處理。下圖所示(除了節目名稱,還需要SDT表信息)即爲PAT和PMT共同獲取的信息。
上圖給出了在一個TS流中PSI各表之間的聯繫。首先從PAT表出發,獲取當前有哪些節目號(program_map_PID),再根據這些節目號找出program_number相同的PMT;獲取到PMT後,即可根據elementary_PID和stream_type來確定要過濾哪些含有基本流的TS包,以及這些包裏面是什麼類型的數據。這樣,機頂盒就可以過濾出相應的節目(視頻和音頻數據)來收看了。