DVB-SI理解入門指南(一)(二)(三)

DVB-SI理解入門指南(一)

數字電視與傳統模擬電視節目選擇的方式完全不同, 傳統電視的每一個頻道對應一個節目,只要調到相應的頻率, 就可以看到節目。 而在數字電視信號中,一路碼流對應多路節目,使用複用技術就可以做到了。一個物理的頻道只能給出包含多路節目的一路傳輸流。要觀看其中的某一路節目,還必須從該傳輸流中提取出該路節目的壓縮包,然後再進行解碼。 所以怎樣從衆多的傳輸流中,選中一路節目播放,就變得很複雜。在mpeg-2的傳輸流(Transport Stream)中,節目專用信息PSI(Program Specific Information),就是規定不同節目和節目中的不同成分如何複用成一個統一的碼流。以PSI爲基礎可以提供一個碼流的構成,從而幫助用戶對節目進行選擇。DVB中的服務信息SI(Service Information)則對此進行了進一步的擴展,加入了一些對用戶有用的信息,標示節目的類型,服務商,節目的相互關係等。正確的瞭解mpeg-2的PSI以及DVB的SI的結構,及其在節目組織,選擇中的應用,可以正確理解service information在DVB解碼中的地位。對於我們做好對數字節目的複用,也能起到幫助作用。
1, MPEG-2 TS中的PSI
PSI信息主要包括以下的表:
   PAT(Program Association Table):節目羣叢表,該表的PID是固定的0x0000,它的主要作用是指出該傳輸流ID,以及該路傳輸流中所對應的幾路節目流的 MAP 表和網絡信息表的PID。
   PMT(Program Map Table):節目映射表,該表的PID是由PAT提供給出的。通過該表可以得到一路節目中包含的信息,例如,該路節目由哪些流構成和這些流的類型(視頻,音頻,數據),指定節目中各流對應的PID,以及該節目的PCR所對應的PID。
   NIT(Network Information Table):網絡信息表,該表的PID是由PAT提供給出的。NIT的作用主要是對多路傳輸流的識別,NIT提供多路傳輸流,物理網絡及網絡傳輸的相關的一些信息,如用於調諧的頻率信息以及編碼方式。調製方式等參數方面的信息。
   CAT(Conditional Access Table):條件訪問表,PID - 0x0001。
除了上述的幾種表外,mpeg-2還提供了私有字段,用於實現對MPEG-2的擴充。

2, DVB中的SI
Mpeg-2的PSI中提供了不少的相關節目組成和相互關係的信息,從而使得在接收端可以正確的對多路傳輸流進行分解。但是這些信息在實際使用時仍顯得不夠,爲此在DVB中採用SI對PSI信息進行了進一步的擴展。
除了在PSI中的信息之外,DVB還定義了一些其他的一些表。
SI的主要用途有:
a、根據NIT,PAT,PMT等信息可以進行自動的頻道調諧;
b、更方便的對節目進行選擇和定位;
c、實現電子節目指南EPG(Electronic Program Guide),等等。
PSI中的信息基本上都是與當前碼流相關的,即它們所涉及的內容都與當前碼流中的部分信息相關。與PSI不同的是,SI的信息可以包括不在當前碼流中的一些服務和事件,允許用戶進行更多的選擇和了解更多的其他服務信息。
DVB規定攜帶SI信息的傳輸包必須用指定的PID,指定的PID如下表:
    TABLE TYPE    PID Value
PAT 0X0000 
CAT 0X0001
TSDT 0X0002
RESERVED 0X0003 TO 0X000F
NIT,ST 0X0010
SDT,BAT,ST 0X0011 
EIT,ST 0X0012 
RST,ST 0X0013 
TDT,TOT,ST 0X0014 
Network Synchroniztion 0X0015 
Reserved for future use 0X0016 TO 0X001B
Inband signaling 0X001C
Measurement 0X001D
DIT 0X001E 
SIT 0X001F 
在該表中可以看到同一個PID可以對應不同的表,要把這樣的表區分開來,需要進一步找到TableID 進行識別。TableID表如下:         
Value  Description 
0x00 Program_association_section
0x01 Conditional_access_section
0x02 Program_map_section
0x03 Transport_stream_description_section
0x04 TO 0x3F Reserved
0x40 Network_information_section-actual_network
0x41 Network_information_section-other_network
0x42 Service_description_section-actual_transport_stream
0x43 TO 0x45 Reserved for future use
0x46 Service_description_section-other_transport_stream
0x47 TO 0x49 Reserved for future use
0x4A Bouquet_association_section
0x4B TO 0x4D Reserved for future use
0x4E Event_information_section-actual_transport_stream,P/F
0x4F Event_information_section-other_transport_stream,P/F
0x50 TO 0x5F Event_information_section-actual_transport_stream,schedule
0x60 TO 0x6F Event_information_section-other_transport_stream,schedule
0x70 Time_data_section
0x71 Running_status_section
0x72 Stuffing_section
0x73 Time_offset_section
0x74 TO 0x7D Reserved for future use
0x7E Discontinuity_information_section
0x7F Selection_information_section
0x80 TO 0xFE User defined
0xFF Reserved
有了這兩個ID我們可以在碼流中找到我們想要的任何一張表。
SI主要包括以下一些信息表:
NIT(Network Information Table):NIT的作用主要是對多路傳輸流的識別,NIT
提供多路傳輸流,物理網絡及網絡傳輸的相關的一些信息,如用於調諧的頻率信息以
及編碼方式。調製方式等參數方面的信息。根據此信息設置IRD(Integrated Receiver
Decoder)可以進行多路傳輸流之間的切換。 
SDT(Service Description Table):用於描述系統中各路節目的名稱,該節目的提
供者,是否有相應的時間描述表等方面的信息。該表可以描述當前傳輸流,也可以描
述其他的傳輸流,這由TableID進行區分。
EIT(Event Information Table):該表示對某一路節目的更進一步的描述。它提供
事件的的名稱,開始時間,時間長度,運行狀態等。
TDT(Time and Data Table):該表提供當前的時間信息,該表用來對IRD的解碼
時鐘進行更新
BAT(Bouquet Association Table):該表提供一系列類似節目的集合。這些節目
可以不在同一個傳輸流中,利用該表可以很方便的進行相關節目或某一類節目的瀏覽
和選擇。
RST(Running Status Table):該表提供某一具體事件的的運行狀態,可用於按時
自動的切換到指定的事件
TOT(Time Offset Table):該表提供當地時間與TDT之間的關係,該表與TDT
配合使用。
TSDT(Transport Stream Description Table):由PID0x0002標識,提供傳輸流的一
些參數.
ST(Stuffing Table):該表表明其內容是無效的,只是作爲填充字節。

那麼,我們如何運用DVB中的SI 信息表呢?

DVB SI 入門(二)——DVB SI 的使用 Ben

1、網絡信息表(NIT)
網絡信息表提供一組傳輸流以及相應的調諧信息。NIT在IRD(整合接收解碼器)啓動程序中用到,並且調諧信息可以存儲到不變的存儲器中。NIT還可以用來標誌調諧信息的變化。NIT遵從如下規定:
a、當前的傳輸系統必須包含NIT。
b、當且僅當NIT包含可用的傳輸系統描述符,當前傳輸系統纔是有效的。這就指定了NIT包含有效信息的條件。在一些廣播傳輸系統邊界,TS中的NIT也被允許用來描述廣播頻道中的早期的網絡。IRD不得不選擇一個不同的機制來獲得當前傳輸系統的相應的調諧信息。例如,一個衛星IRD接受到當前傳輸系統的一個衛星傳輸系統描述符,那麼這個描述符被視爲有效,如果一個電纜IRD接收到當前傳輸系統的一個電纜傳輸系統描述符也是有效的,但是,如果電纜IRD接收到當前傳輸系統的一個衛星傳輸系統描述符,那麼這個描述符對於這個IRD就是無效的。
c、如果當前傳輸系統一個有效的NIT在SI比特流中出現,那麼這個NIT應當列出當前傳輸系統中所有的TS。
d、SI流每10秒鐘應當至少包含8個TS包來傳輸NIT或者空包。這個規定簡化了廣播傳輸邊界中NIT的復位(replacement)。使用這樣的復位機制,使得本地頻率控制使用低廉設備成爲可能。
SI使用兩個標誌來描述傳輸系統。它們分別是network_id和original_network_id。後者用來作爲一個TS中的一個服務的唯一標誌符,即使這個TS被傳送到了其他的傳輸系統之中。一個TS可以被path:original_network_id/transport_stream_id唯一標識。一個服務可以被path:original_network_id/transport_stream_id/service_id唯一標識。顯然,network_id不在這個path之內。另外,每個original_network_id中都有不同的service_id。當一個服務(同一個TS內)被傳送到另一個傳輸系統後,只有network_id改變了,original_network_id不受影響。
下面舉個例子,考慮如下情況:有兩個服務(A和B),它們源於兩個不同的傳輸系統並且碰巧有相同的service_id和transport_stream_id,它們被傳輸到一個新的傳輸系統。
在這個例子中,這兩個服務被安排在新network中的不同的TS中。如果這兩個服務被放在同一個TS中,那麼必須修改服務的ID號,因爲在同一個TS中一個service_id不能夠分配給多個服務,並且一個TS僅僅可以對應一個original_network_id。
2、BAT信息
BAT提供一組服務,這些服務提供了一個基礎,IRD在這些基礎之上向用戶展示有效的服務。BAT的傳輸是可選的。下面的規則提高了SI比特流的連貫性並且簡化了IRD的工作。
SI比特流應當在每個BAT子表中列出集錦的所有服務。
注意:一個服務可以屬於多個bouquet。這一規定使得IRD可以通過不同的TS得到一個服務。
如果IRD將bouquet中服務信息提供給用戶,那麼列在bouquet中的服務就得到保證,否則一些服務將會丟失。一個bouquet可以把不同網絡傳輸的多個TS中的服務集中起來。如果BAT中所有服務都被列在SDT中,IRD對bouquet中所有服務信息的訪問將會變得容易。同樣的,如果NIT信息給出所有TS中service的容量,IRD對service的訪問將會變得容易。
3、SDT信息
SDT用來羅列TS中service的名稱以及其他參數。每一個TS中都有一個獨立的SDT子表。爲了提高對service的採集,定義了下列規則:
強制傳輸當前TS的SDT。
SDT列出的SI比特流至少包括TS中所有服務。
另外:
當前TS(例如table_id=0x46)中SDT描述其他TS時,應當列出這個TS的所有service。
強烈推薦service_id,在一個network中一旦把一個service_id分配給了一個特定的服務,那麼這個service_id將不再變化,以便於IRD實現收藏頻道列表之類的功能。


DVB SI 入門(三) 
4.    EIT 信息
事件信息表用來傳遞當前的,將來的甚至更遠的未來的事件的信息。每個Service都有自己獨立的EIT子表。
4.1    EIT Present/Following 信息(一下簡稱EIT P/F)
下列規則簡化了EIT P/F信息的獲得。SI規範規定EIT段最大部超過4096字節。
SI流中的每個Service都有兩段來描述EIT Present/Following,section_number 0x00用來描述當前事件,section_number 0x01描述下一個事件。這些約束不適用於NVOD引用的Service,這些Service在每段中可能有多個事件描述,並且在EIT Present/Following中可能有更多的段。推薦提供事件描述event_id的升序排列。
在一個section中,SI可以用最多4096個字節來描述一個單獨的事件。
對於當前事件有如下規定:
a、同一時刻最多隻有一個當前事件。
b、當存在一個當前事件時,該事件應當被描述在EIT Present/Following的section0中。
c、當前事件中的running_status應當被給出。如下表:

e、在同一時刻,最多有一個following event。
f、如果following event存在,該事件應當在EIT Present/Following的section1中。
g、如果following event不存在,則傳輸一個section1爲空的EIT Present/Following。
h、following event的running_status應當給出,如下表:

事件的持續時間和EIT持續時間一樣,必須包含事件被置爲“not running”或者“pausing”。事件的開始時間和EIT start_time一樣,應當是整個事件的開始時間,而不是從pause恢復後的時間。
注意:一個事件的開始時間加上它的持續時間可能比following event的開始時間要小。換句話說,允許事件之間有間隔。在這種情況下,following event被看作是間隔後的事件。這個事件應當編在EIT Present/Following的section1中。
注意:開始時間和持續時間都是預定的。一些廣播服務提供商可能會更新這些信息。而另一些則更願意保持開始時間不變。例如爲了避免名爲“8點新聞”的事件被誤解,把信息中的開始時間從8:01:23改爲8:00:00。
4.2    EIT Schedule信息
1)EIT Schedule結構
遵從如下規則:
a、EIT/Schedule分配了16個table_id,0x50-0x5F給當前TS,0x60-0x6F給其它TS,這些id按照時間順序排列;
b、子表下的256個section被分爲32段(segment),每8個section一個段(segment)。Segment#1,從section0到7,segment#2,從section8到15,等等;
c、每段包含三個小時內開始的事件信息;
d、段內事件信息按照時間排列;
e、如果一個段(segment)有n節(section),而n<8,這個信息必須放在段中前n個節中,還要顯式指明最後一節的位置:S0+n-1(S0是段中第一節),這個值在EIT的segment_last_section_number中。例如,第二段只有兩節,那麼segment_last_section_number包含值8+2-1=9;
f、如果段中有節的話,段的segment_last_section_number應當有值s0+7;
g、完全空的段通過空節(不含任何loop over事件)表示,段的vsegment_last_section_number值爲s0+0;
h、段中事件的安排遵從一個時間t0。
t0是通用時間座標(Universal Time Coordinated(UTC))的“last midnight”。
舉個例子:UTC-6的下午5點,就是UTC-0的下午11點,即從“last midnight”算起23小時。因此對於UTC-6,t0就是前一天的下午6點;
i、table_id 0x50(對其它TS是0x60)的第0段,包含從午夜(UTC時間)到“今天”02:59:59(UTC時間)(三個小時)的事件信息。第1段包含從03:00:00到05:59:59(UTC時間)的事件信息,依此類推。這就意味着,第一個子表包含從“今天”UTC午夜時間算起前4天的信息;
j、last_section_number用來指明子表的結束位置;
k、last_table_id用來指明整個EIT/Schedule結構的結束位置;
l、與過去事件相關的段可以用空段代替,參見g規則;
m、EIT/Schedule包含的事件定義中的running_status應當設爲“爲定義”即0x00;
n、EIT/Schedule表不適用於NVOD涉及的服務,因爲這些服務帶有未定義開始時間的事件;
2)EIT 加密
EIT Schedule表格可以被加密。爲了與條件接入相聯繫,必須分配一個service_id(=MPEG-2 program_number)來描述加密的EIT Schedule Tables,這個service_id在PSI中。EIT在PMT中定義,service_id看成由一個private stream組成的各種電視節目(The EIT is identified in the Program Map Table (PMT) section for this service_id as a programme
consisting of one private stream),PMT包含一個或多個CA_descriptor來驗證相關的CA碼流。爲達到這個目的,在DVB應用程序中service_id的值0xFFFF被保留。

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