DVB-SI理解入門指南(一)(二)(三)
DVB-SI理解入門指南(一) 數(shù)字電視與傳統(tǒng)模擬電視節(jié)目選擇的方式完全不同, 傳統(tǒng)電視的每一個頻道對應一個節(jié)目,只要調(diào)到相應的頻率, 就可以看到節(jié)目。 而在數(shù)字電視信號中,一路碼流對應多路節(jié)目,使用復用技術就可以做到了。一個物理的頻道只能給出包含多路節(jié)目的一路傳輸流。要觀看其中的某一路節(jié)目,還必須從該傳輸流中提取出該路節(jié)目的壓縮包,然后再進行解碼。 所以怎樣從眾多的傳輸流中,選中一路節(jié)目播放,就變得很復雜。在mpeg-2的傳輸流(Transport Stream)中,節(jié)目專用信息PSI(Program Specific Information),就是規(guī)定不同節(jié)目和節(jié)目中的不同成分如何復用成一個統(tǒng)一的碼流。以PSI為基礎可以提供一個碼流的構成,從而幫助用戶對節(jié)目進行選擇。DVB中的服務信息SI(Service Information)則對此進行了進一步的擴展,加入了一些對用戶有用的信息,標示節(jié)目的類型,服務商,節(jié)目的相互關系等。正確的了解mpeg-2的PSI以及DVB的SI的結構,及其在節(jié)目組織,選擇中的應用,可以正確理解service information在DVB解碼中的地位。對于我們做好對數(shù)字節(jié)目的復用,也能起到幫助作用。 1, MPEG-2 TS中的PSI PSI信息主要包括以下的表: PAT(Program Association Table):節(jié)目群叢表,該表的PID是固定的0x0000,它的主要作用是指出該傳輸流ID,以及該路傳輸流中所對應的幾路節(jié)目流的 MAP 表和網(wǎng)絡信息表的PID。 PMT(Program Map Table):節(jié)目映射表,該表的PID是由PAT提供給出的。通過該表可以得到一路節(jié)目中包含的信息,例如,該路節(jié)目由哪些流構成和這些流的類型(視頻,音頻,數(shù)據(jù)),指定節(jié)目中各流對應的PID,以及該節(jié)目的PCR所對應的PID。 NIT(Network Information Table):網(wǎng)絡信息表,該表的PID是由PAT提供給出的。NIT的作用主要是對多路傳輸流的識別,NIT提供多路傳輸流,物理網(wǎng)絡及網(wǎng)絡傳輸?shù)南嚓P的一些信息,如用于調(diào)諧的頻率信息以及編碼方式。調(diào)制方式等參數(shù)方面的信息。 CAT(Conditional Access Table):條件訪問表,PID - 0x0001。 除了上述的幾種表外,mpeg-2還提供了私有字段,用于實現(xiàn)對MPEG-2的擴充。 2, DVB中的SI Mpeg-2的PSI中提供了不少的相關節(jié)目組成和相互關系的信息,從而使得在接收端可以正確的對多路傳輸流進行分解。但是這些信息在實際使用時仍顯得不夠,為此在DVB中采用SI對PSI信息進行了進一步的擴展。 除了在PSI中的信息之外,DVB還定義了一些其他的一些表。 SI的主要用途有: a、根據(jù)NIT,PAT,PMT等信息可以進行自動的頻道調(diào)諧; b、更方便的對節(jié)目進行選擇和定位; c、實現(xiàn)電子節(jié)目指南EPG(Electronic Program Guide),等等。 PSI中的信息基本上都是與當前碼流相關的,即它們所涉及的內(nèi)容都與當前碼流中的部分信息相關。與PSI不同的是,SI的信息可以包括不在當前碼流中的一些服務和事件,允許用戶進行更多的選擇和了解更多的其他服務信息。 DVB規(guī)定攜帶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可以對應不同的表,要把這樣的表區(qū)分開來,需要進一步找到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 提供多路傳輸流,物理網(wǎng)絡及網(wǎng)絡傳輸?shù)南嚓P的一些信息,如用于調(diào)諧的頻率信息以 及編碼方式。調(diào)制方式等參數(shù)方面的信息。根據(jù)此信息設置IRD(Integrated Receiver Decoder)可以進行多路傳輸流之間的切換。 SDT(Service Description Table):用于描述系統(tǒng)中各路節(jié)目的名稱,該節(jié)目的提 供者,是否有相應的時間描述表等方面的信息。該表可以描述當前傳輸流,也可以描 述其他的傳輸流,這由TableID進行區(qū)分。 EIT(Event Information Table):該表示對某一路節(jié)目的更進一步的描述。它提供 事件的的名稱,開始時間,時間長度,運行狀態(tài)等。 TDT(Time and Data Table):該表提供當前的時間信息,該表用來對IRD的解碼 時鐘進行更新 BAT(Bouquet Association Table):該表提供一系列類似節(jié)目的集合。這些節(jié)目 可以不在同一個傳輸流中,利用該表可以很方便的進行相關節(jié)目或某一類節(jié)目的瀏覽 和選擇。 RST(Running Status Table):該表提供某一具體事件的的運行狀態(tài),可用于按時 自動的切換到指定的事件 TOT(Time Offset Table):該表提供當?shù)貢r間與TDT之間的關系,該表與TDT 配合使用。 TSDT(Transport Stream Description Table):由PID0x0002標識,提供傳輸流的一 些參數(shù). ST(Stuffing Table):該表表明其內(nèi)容是無效的,只是作為填充字節(jié)。 那么,我們?nèi)绾芜\用DVB中的SI 信息表呢? DVB SI 入門(二)——DVB SI 的使用 Ben 1、網(wǎng)絡信息表(NIT) 網(wǎng)絡信息表提供一組傳輸流以及相應的調(diào)諧信息。NIT在IRD(整合接收解碼器)啟動程序中用到,并且調(diào)諧信息可以存儲到不變的存儲器中。NIT還可以用來標志調(diào)諧信息的變化。NIT遵從如下規(guī)定: a、當前的傳輸系統(tǒng)必須包含NIT。 b、當且僅當NIT包含可用的傳輸系統(tǒng)描述符,當前傳輸系統(tǒng)才是有效的。這就指定了NIT包含有效信息的條件。在一些廣播傳輸系統(tǒng)邊界,TS中的NIT也被允許用來描述廣播頻道中的早期的網(wǎng)絡。IRD不得不選擇一個不同的機制來獲得當前傳輸系統(tǒng)的相應的調(diào)諧信息。例如,一個衛(wèi)星IRD接受到當前傳輸系統(tǒng)的一個衛(wèi)星傳輸系統(tǒng)描述符,那么這個描述符被視為有效,如果一個電纜IRD接收到當前傳輸系統(tǒng)的一個電纜傳輸系統(tǒng)描述符也是有效的,但是,如果電纜IRD接收到當前傳輸系統(tǒng)的一個衛(wèi)星傳輸系統(tǒng)描述符,那么這個描述符對于這個IRD就是無效的。 c、如果當前傳輸系統(tǒng)一個有效的NIT在SI比特流中出現(xiàn),那么這個NIT應當列出當前傳輸系統(tǒng)中所有的TS。 d、SI流每10秒鐘應當至少包含8個TS包來傳輸NIT或者空包。這個規(guī)定簡化了廣播傳輸邊界中NIT的復位(replacement)。使用這樣的復位機制,使得本地頻率控制使用低廉設備成為可能。 SI使用兩個標志來描述傳輸系統(tǒng)。它們分別是network_id和original_network_id。后者用來作為一個TS中的一個服務的唯一標志符,即使這個TS被傳送到了其他的傳輸系統(tǒng)之中。一個TS可以被path:original_network_id/transport_stream_id唯一標識。一個服務可以被path:original_network_id/transport_stream_id/service_id唯一標識。顯然,network_id不在這個path之內(nèi)。另外,每個original_network_id中都有不同的service_id。當一個服務(同一個TS內(nèi))被傳送到另一個傳輸系統(tǒng)后,只有network_id改變了,original_network_id不受影響。 下面舉個例子,考慮如下情況:有兩個服務(A和B),它們源于兩個不同的傳輸系統(tǒng)并且碰巧有相同的service_id和transport_stream_id,它們被傳輸?shù)揭粋€新的傳輸系統(tǒng)。 在這個例子中,這兩個服務被安排在新network中的不同的TS中。如果這兩個服務被放在同一個TS中,那么必須修改服務的ID號,因為在同一個TS中一個service_id不能夠分配給多個服務,并且一個TS僅僅可以對應一個original_network_id。 2、BAT信息 BAT提供一組服務,這些服務提供了一個基礎,IRD在這些基礎之上向用戶展示有效的服務。BAT的傳輸是可選的。下面的規(guī)則提高了SI比特流的連貫性并且簡化了IRD的工作。 SI比特流應當在每個BAT子表中列出集錦的所有服務。 注意:一個服務可以屬于多個bouquet。這一規(guī)定使得IRD可以通過不同的TS得到一個服務。 如果IRD將bouquet中服務信息提供給用戶,那么列在bouquet中的服務就得到保證,否則一些服務將會丟失。一個bouquet可以把不同網(wǎng)絡傳輸?shù)亩鄠€TS中的服務集中起來。如果BAT中所有服務都被列在SDT中,IRD對bouquet中所有服務信息的訪問將會變得容易。同樣的,如果NIT信息給出所有TS中service的容量,IRD對service的訪問將會變得容易。 3、SDT信息 SDT用來羅列TS中service的名稱以及其他參數(shù)。每一個TS中都有一個獨立的SDT子表。為了提高對service的采集,定義了下列規(guī)則: 強制傳輸當前TS的SDT。 SDT列出的SI比特流至少包括TS中所有服務。 另外: 當前TS(例如table_id=0x46)中SDT描述其他TS時,應當列出這個TS的所有service。 強烈推薦service_id,在一個network中一旦把一個service_id分配給了一個特定的服務,那么這個service_id將不再變化,以便于IRD實現(xiàn)收藏頻道列表之類的功能。 DVB SI 入門(三) 4. EIT 信息 事件信息表用來傳遞當前的,將來的甚至更遠的未來的事件的信息。每個Service都有自己獨立的EIT子表。 4.1 EIT Present/Following 信息(一下簡稱EIT P/F) 下列規(guī)則簡化了EIT P/F信息的獲得。SI規(guī)范規(guī)定EIT段最大部超過4096字節(jié)。 SI流中的每個Service都有兩段來描述EIT Present/Following,section_number 0x00用來描述當前事件,section_number 0x01描述下一個事件。這些約束不適用于NVOD引用的Service,這些Service在每段中可能有多個事件描述,并且在EIT Present/Following中可能有更多的段。推薦提供事件描述event_id的升序排列。 在一個section中,SI可以用最多4096個字節(jié)來描述一個單獨的事件。 對于當前事件有如下規(guī)定: 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應當給出,如下表: 事件的持續(xù)時間和EIT持續(xù)時間一樣,必須包含事件被置為“not running”或者“pausing”。事件的開始時間和EIT start_time一樣,應當是整個事件的開始時間,而不是從pause恢復后的時間。 注意:一個事件的開始時間加上它的持續(xù)時間可能比following event的開始時間要小。換句話說,允許事件之間有間隔。在這種情況下,following event被看作是間隔后的事件。這個事件應當編在EIT Present/Following的section1中。 注意:開始時間和持續(xù)時間都是預定的。一些廣播服務提供商可能會更新這些信息。而另一些則更愿意保持開始時間不變。例如為了避免名為“8點新聞”的事件被誤解,把信息中的開始時間從8:01:23改為8:00:00。 4.2 EIT Schedule信息 1)EIT Schedule結構 遵從如下規(guī)則: 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、每段包含三個小時內(nèi)開始的事件信息; d、段內(nèi)事件信息按照時間排列; e、如果一個段(segment)有n節(jié)(section),而n<8,這個信息必須放在段中前n個節(jié)中,還要顯式指明最后一節(jié)的位置:S0+n-1(S0是段中第一節(jié)),這個值在EIT的segment_last_section_number中。例如,第二段只有兩節(jié),那么segment_last_section_number包含值8+2-1=9; f、如果段中有節(jié)的話,段的segment_last_section_number應當有值s0+7; g、完全空的段通過空節(jié)(不含任何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規(guī)則; m、EIT/Schedule包含的事件定義中的running_status應當設為“為定義”即0x00; n、EIT/Schedule表不適用于NVOD涉及的服務,因為這些服務帶有未定義開始時間的事件; 2)EIT 加密 EIT Schedule表格可以被加密。為了與條件接入相聯(lián)系,必須分配一個service_id(=MPEG-2 program_number)來描述加密的EIT Schedule Tables,這個service_id在PSI中。EIT在PMT中定義,service_id看成由一個private stream組成的各種電視節(jié)目(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被保留。 本文章是作者:ben |
|
來自: 昵稱8442 > 《TV-technology》