日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数字电视业务PSI/SI学习

發(fā)布時(shí)間:2024/1/8 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字电视业务PSI/SI学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)字電視業(yè)務(wù)PSI/SI學(xué)習(xí)系列??

一、MPEG-2系統(tǒng)原理

?????????????????????????????第一章?MPEG-2簡介

什么是MPEG和MPEG-2?

??????MPEG是Moving?Picture?Experts?Group?的簡稱,MPEG-2是MPEG和ISO組織設(shè)計(jì)的一個(gè)數(shù)字視頻壓縮規(guī)范,主要用于DVD和DVB上,當(dāng)前的標(biāo)準(zhǔn)文檔是ISO13818.

什么是DVB?

DVB是Digtal?Video?Broadcast的簡稱,是歐洲所有國家和其他部分國家和地區(qū)使用的數(shù)字電視標(biāo)準(zhǔn).其中美國的ATSC標(biāo)準(zhǔn)也是在DVB標(biāo)準(zhǔn)的基礎(chǔ)上實(shí)現(xiàn)的.

什么是TS碼流和PS流?

??????TS是transport?stream的簡稱,就是”傳輸流”.DVB數(shù)據(jù)廣播采用的數(shù)據(jù)格式就是TS碼流.

??????PS是program?stream的簡稱,就是”節(jié)目流”.DVD中采用的數(shù)據(jù)格式就是PS流.

??????這兩種流的格式是不同的,TS格式具有很強(qiáng)的錯(cuò)誤校正功能,適合傳輸,而PS格式適合存儲(chǔ)在媒體中.??在這里,著重描述的是TS碼流格式.

什么是PID?

??????PID是Packet?identification的簡稱,就是”包標(biāo)志符”.DVB系統(tǒng)把不同的數(shù)據(jù)打包成不同的數(shù)據(jù)包,用系統(tǒng)唯一的一個(gè)13?bits數(shù)字標(biāo)志該數(shù)據(jù)的類型.例?如,PID=0x00表示是DVB系統(tǒng)中的PAT包,而PID=0x10表示是DVB系統(tǒng)的NIT包.不同的節(jié)目(包括Video和Audio)分別采用?不同的PID,例如,我們?cè)赑MT表中如果檢測(cè)到PID=0x0120的PID是VIDEO數(shù)據(jù),那么表示包號(hào)碼是0x0120的所有包都是Video數(shù)?據(jù),其他依此類推.

什么是PAT?

??????PAT是Program?Association?Table的簡稱,即”節(jié)目關(guān)聯(lián)表”.PAT屬于DVB系統(tǒng)流中的一個(gè)包,包號(hào)碼(PID)是0x00.PAT表描述了DVB系統(tǒng)流中包含什么樣的PID,主要是描述當(dāng)前流的NIT表格的PID號(hào)碼是多少,當(dāng)前流中有多少個(gè)不同類型PMT表,每個(gè)PMT表對(duì)應(yīng)的頻道號(hào)等信息.

什么是PMT?

??????PMT是Program?Map?Table的簡稱,即”節(jié)目影射表”.PMT的PID?是服務(wù)器自由定義的(但不會(huì)和系統(tǒng)保留的PID沖突).這個(gè)PID是在PAT表中描述的,比如,如果在PAT表中有0x100項(xiàng)的內(nèi)容,那么說明所有?PID是0x100的包都是PMT表.不同的頻道有不同的PMT,也就是說,一個(gè)不同的PMT代表的是一個(gè)不同頻道.PMT表格和PAT表格配合在一起,?就可以檢測(cè)出DVB流中所有存在節(jié)目的所有PID,因此,數(shù)字電視搜臺(tái)就是依靠這兩個(gè)表格數(shù)據(jù)完成的.

什么是CAT?

??????CAT是Conditional?Access?Table的簡稱,即”條件訪問表”,PID是0x01.CAT攜帶的是服務(wù)器的私有信息(CA系統(tǒng)就需要使用該表格實(shí)現(xiàn)節(jié)目的解密).

什么是SDT?

??????SDT是Service?Description?Table的簡稱,即”服務(wù)器描述表”,PID是0x11.SDT攜帶的是電視臺(tái)名稱和電視節(jié)目名稱.DVB接收系統(tǒng)接收SDT表中的節(jié)目信息,實(shí)現(xiàn)比較友好的界面顯示和操作.

什么是NIT和EIT?

??????NIT是Network?Information?Table的簡稱,即”網(wǎng)絡(luò)信息表”.

????????EIT是Event?Information?Table的簡稱,即”環(huán)境信息表”.

????????NIT可以提供當(dāng)前流的節(jié)目信息,也可以提供和當(dāng)前流有關(guān)聯(lián)的流的節(jié)目信息.

????????EIT提供的是流節(jié)目信息的改變,比如一個(gè)節(jié)目已經(jīng)開始,或者已經(jīng)結(jié)束的信息等.

什么是EPG?

??????EPG是Electronic?Programme?Guides的簡稱,即”電子節(jié)目指南”.該功能可實(shí)現(xiàn)預(yù)告近段時(shí)間即將播放的節(jié)目內(nèi)容,同時(shí)支持基于內(nèi)容的檢索.

什么是teletext?

??????Teletext就?是我們常說的”圖文電視”,當(dāng)然在MPEG-2中,圖文電視已經(jīng)數(shù)字化,也就是說,圖文信息已經(jīng)做為數(shù)字化信息在TS流中傳播.但最終,數(shù)字化的圖文信息?都將轉(zhuǎn)化為模擬的VBI信息插入到正常的電視信號(hào)中實(shí)現(xiàn)圖文電視的顯示.圖文電視有很多標(biāo)準(zhǔn),比如close?caption,WSS等,歐洲的DVB使?用的teletext標(biāo)準(zhǔn)是ITU-R?System?B?Teletext規(guī)格.該規(guī)格支持歐洲多種語言,支持簡單圖象和文本的混合顯示.

?????????????????????????????第二章?DVB系統(tǒng)的構(gòu)成?

[本文不詳細(xì)描述DVB系統(tǒng)的硬件構(gòu)成,只是根據(jù)ISO13818中的描述,詳細(xì)解釋TS碼流的格式和解復(fù)用原理.(夠了,夠了?呵呵)]

DVB的分類

DVB根據(jù)應(yīng)用的不同,主要分為DVB-S,DVB-C,DVB-T,DVB-H等多種規(guī)格.不同的規(guī)格基本原理都是相同的,不同的主要是調(diào)制方式不同:

?DVB-S,S是Satelite的首字母,應(yīng)用于數(shù)字電視衛(wèi)星廣播,調(diào)制方式是QPSK.

?DVB-C,C是Cable的首字母,應(yīng)用于城市有線廣播.調(diào)制方式是QAM所有格式:?16QAM,32QAM,64QAM,128QAM,256QAM.

?DVB-T,T是Terrestrial的首字母,應(yīng)用于陸地?zé)o線廣播,調(diào)制方式是QPSK或者16QAM和64QAM.

?DVB-H,H是Handheld的首字母,應(yīng)用于手持無線廣播,調(diào)制方式和DVB-T相同.

?總?的來說,不同的DVB系統(tǒng)只有前端系統(tǒng)是不同的,最終的數(shù)字信息都是相同的,也就是都是采用ISO13818描述的規(guī)格.前端系統(tǒng)主要是指調(diào)制方法和發(fā)射?方法等.因此,這里所敘述的內(nèi)容,全部適用于所有的DVB系統(tǒng),同時(shí)因?yàn)槊绹腁TSC系統(tǒng)也是在DVB系統(tǒng)上的小量更改和小部分功能增加,因此也適用于?ATSC標(biāo)準(zhǔn).

?基本系統(tǒng)描述如下:

?(1)編碼系統(tǒng):

??假?設(shè)信號(hào)源有6個(gè)節(jié)目,則DVB系統(tǒng)先對(duì)這6個(gè)節(jié)目的所有數(shù)據(jù)(Video,Audio)進(jìn)行壓縮處理,然后經(jīng)過一個(gè)叫做"復(fù)用"的程序進(jìn)行節(jié)目的復(fù)用?(PID分配,即對(duì)6個(gè)節(jié)目分別分配不同的PID號(hào)碼)形成叫做"PES"的包,然后再經(jīng)過TS流處理程序,把這些PES包全部封裝成TS碼流格式,最后?把獲得的TS格式的數(shù)字信號(hào)經(jīng)過調(diào)制(實(shí)現(xiàn)的是頻率的復(fù)用),然后經(jīng)過D/A轉(zhuǎn)換成模擬信號(hào),再次調(diào)制成高頻信號(hào),經(jīng)傳輸系統(tǒng)發(fā)送出去.

?(2)解碼系統(tǒng)

??接?收系統(tǒng)接收到高頻信號(hào),先轉(zhuǎn)化為中頻信號(hào),然后再經(jīng)過一個(gè)高速的A/D轉(zhuǎn)換成數(shù)字信號(hào),接著經(jīng)過一個(gè)反調(diào)制程序,這樣就得到了TS碼流.?TS碼流進(jìn)入一?個(gè)稱為"解復(fù)用"的程序,該程序?qū)崿F(xiàn)自動(dòng)分析TS流中的表格信息,讀取所有可用的PID信息等,然后提取一個(gè)用戶指定的PID(用戶選擇的節(jié)目),把該節(jié)?目的數(shù)字信號(hào)全部接收而忽略其他不需要的信號(hào),然后Video,Audio信號(hào)分別進(jìn)入不同的解壓縮程序,分別對(duì)Video,Audio信號(hào)進(jìn)行解壓縮和?顯示,如果該節(jié)目包含了Teletext和EPG,也有可能同時(shí)處理Teletext和EPG,并且把處理的結(jié)果和Video信號(hào)一起疊加到屏幕上.

Packet的概念

?(1)TS流是基于Packet的位流格式,每個(gè)包是188字節(jié)或者204字節(jié)(一般是188字節(jié),204字節(jié)的格式僅僅是在188字節(jié)的Packet后部加上16字節(jié)的CRC數(shù)據(jù),其他格式是一樣的),整個(gè)TS流組成如下所示:

???

?

??Packet?1?????Packet?2????......????Packet?n

在實(shí)際使用中,因?yàn)門S流已經(jīng)內(nèi)部具有很強(qiáng)的錯(cuò)誤處理能力,所以一般使用較多的是188字節(jié)一個(gè)包的格式,204字節(jié)一個(gè)包的格式據(jù)說一般在高清節(jié)目中使用較多.

?所有的Packet格式都是統(tǒng)一的,包括一個(gè)Packet?header和Packet?datas.其中Packet?header包含了同步字節(jié)(該字節(jié)固定是0x47,表示這個(gè)包的數(shù)據(jù)開始是正確的),該P(yáng)acket的唯一號(hào)碼(即PID)和其他一些信息.格式如下(用C格式表示)

typedef?struct

{

?unsigned?sync_byte:8;/*8?bits的同步字節(jié)*/

?unsigned?transport_error_indicator:1;/*1?bit的錯(cuò)誤指示信息,1表示當(dāng)前Packet至少有1bit的傳輸錯(cuò)誤,0表示所有數(shù)據(jù)都正確*/

?unsigned?payload_unit_start_indicator:1;/*負(fù)載單元開始標(biāo)志,請(qǐng)參考ISO13818-1了解該標(biāo)志作用*/

?unsigned?transport_priority:1;/*1?bit的傳輸優(yōu)先級(jí)標(biāo)志,1表示高優(yōu)先級(jí),0表示低優(yōu)先級(jí)*/

?unsigned?PID:13;/*13?bits的Packet?ID號(hào)碼,唯一的號(hào)碼對(duì)應(yīng)不同的包*/

?unsigned?transport_scrambling_control:2;/*2?bits的加密標(biāo)志,00表示沒有加密,其他表示已被加密*/

?unsigned?adaptation_field_control:2;/*?2?bits的附加區(qū)域控制,請(qǐng)參考ISO13818-1了解該標(biāo)志作用*/

?unsigned?continuity_counter:4;/*4?bits的包遞增計(jì)數(shù)器*/

}PACKET_HEADER;

以上結(jié)構(gòu)剛好占用32?bits,即4個(gè)字節(jié),因此一個(gè)TS流的Packet頭部的4字節(jié)是header信息,分析該header信息就可以知道當(dāng)前Packet的屬性.剩下的184字節(jié)有可能是Video數(shù)據(jù),也有可能是Audio數(shù)據(jù),也有可能是DVB?SI信息,怎?么區(qū)分呢?其實(shí)很簡單,就是利用header中的PID信息.上一章說了PAT是節(jié)目關(guān)聯(lián)表,它的PID是0x0000.這個(gè)PID就是對(duì)應(yīng)這里?header的PID.換句話就是說,如果我們發(fā)現(xiàn)一個(gè)Packet的PID等于0x0000,那么說明這個(gè)Packet是DVB的PAT表格而不是?Video數(shù)據(jù)或者Audio數(shù)據(jù).

實(shí)?際上,在信號(hào)編碼成TS碼流的時(shí)候,不同節(jié)目的Video,Audio等數(shù)據(jù)都分配了不同的PID.例如,一個(gè)節(jié)目有兩路Video,三路Audio,那?么分配PID的時(shí)候可能是Video?1==0x100,Video?2==0x101,Audio?1==0x102,Audio?2==0x103,?Audio?3==0x104,這樣傳輸?shù)腡S碼流中的PID就可能有以上的PID.因此,如果我們需要在程序中過濾出第一路Video和第二路?Audio就可以這樣處理了(偽代碼描述):

?void?Process_Packet(unsigned?char*buff)

?{

??int?PID=GETPID(buff);/*從當(dāng)前的188字節(jié)緩沖區(qū)中獲取PID信息*/

??if(PID==0x100)?/*PID等于第一路Video的PID,說明當(dāng)前數(shù)據(jù)是Video數(shù)據(jù)*/

??{

???SaveToVideoBuffer(buff+4);/*把header后部的數(shù)據(jù)存到Video緩沖區(qū),待后部處理*/

??}

??else?if(PID==0x103)/*PID等于第二路Audio的PID,說明當(dāng)前數(shù)據(jù)是Audio數(shù)據(jù)*/

??{

???SaveToAudioBuffer(buff+4);/*把header后部的數(shù)據(jù)存到Audio緩沖區(qū)*/

??}

??else/*其他PID則丟棄,當(dāng)然如果PID是DVB系統(tǒng)保留的PID如PAT,PMT則必須處理*/

??{

???printf("unknown?PID!\n");

??}???

?}

現(xiàn)?在的問題是,編碼的時(shí)候分配好的PID,在解碼的時(shí)候是怎么知道什么PID對(duì)應(yīng)什么數(shù)據(jù)呢?這就是DVB?SI表格的分析與處理了,請(qǐng)參考第三章.這里先?看一個(gè)實(shí)際的TS碼流的例子.這里的數(shù)據(jù)是用UltraEdit用16進(jìn)制格式打開TS碼流文件得到的.文件是Taiwan-551.ts.

這?里僅僅截取了3個(gè)Packet的信息,請(qǐng)注意圖中用紅色標(biāo)注的部分,這就是TS流Packet的4個(gè)字節(jié)的頭信息.這個(gè)TS流是采用每個(gè)包共188字節(jié)的?格式,因?yàn)閮蓚€(gè)頭信息的間隔是188個(gè)字節(jié)(第一個(gè)0x47到第二個(gè)0x47的間隔).以后的所有的Packet都將是188字節(jié)的格式,這是?DVB?TS標(biāo)準(zhǔn)規(guī)定的固定大小.那么這三個(gè)包分別包含的是什么數(shù)據(jù),下面我們可以自己分析一下.

?先?看第一個(gè)包,頭信息數(shù)據(jù)是"0x47?0x07?0xe5?0x12",剛才已經(jīng)知道了,header信息都是按位操作的(這就是為什么TS碼流也可以叫?做位流的原因),特別要注意的是定義和傳輸?shù)臅r(shí)候都是MSB?first,也就是說,先出現(xiàn)的位是數(shù)據(jù)的最高位.先轉(zhuǎn)化成2進(jìn)制格式:

?01000111?00000111?11100101?00010010

請(qǐng)對(duì)照上面的PACKET_HEADER結(jié)構(gòu):

typedef?struct

{

?unsigned?sync_byte:8;

?unsigned?transport_error_indicator:1;

?unsigned?payload_unit_start_indicator:1;

?unsigned?transport_priority:1;

?unsigned?PID:13;

?unsigned?transport_scrambling_control:2;

?unsigned?adaptation_field_control:2;

?unsigned?continuity_counter:4;

}PACKET_HEADER;

那么對(duì)照一下,我們可以發(fā)現(xiàn):

?sync_byte=01000111,就是0x47,這是DVB?TS規(guī)定的同步字節(jié),固定是0x47.

?transport_error_indicator=0,表示當(dāng)前包沒有發(fā)生傳輸錯(cuò)誤.

?payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

?transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

?PID=00111?11100101即0x07e5,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Video?PID,參考下圖)

?transport_scrambling_control=00,表示節(jié)目沒有加密

?adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

?continuity_counte=0010即0x02,表示當(dāng)前傳送的相同類型的包是第3個(gè)

依此類推,再看一下第二個(gè)包"0x47?0x07?0xe5?0x13",2進(jìn)制是01000111?00000111?11100101?00010011

?sync_byte=01000111,就是0x47,這是DVB?TS規(guī)定的同步字節(jié),固定是0x47.

?transport_error_indicator=0,表示當(dāng)前包沒有發(fā)生傳輸錯(cuò)誤.

?payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

?transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

?PID=00111?11100101即0x07e5,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Video?PID,參考下圖)

?transport_scrambling_control=00,表示節(jié)目沒有加密

?adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

?continuity_counte=0011即0x03,表示當(dāng)前傳送的相同類型的包是第4個(gè)(注意到了吧,以上兩個(gè)包的PID都是0x07e5,所以這里的continuity_counte就遞增一次)

第三個(gè)包是"0x47?0x07?0xf1?0x18",2進(jìn)制是01000111?00000111?11110001?00011000.

?sync_byte=01000111,就是0x47,這是DVB?TS規(guī)定的同步字節(jié),固定是0x47.

?transport_error_indicator=0,表示當(dāng)前包沒有發(fā)生傳輸錯(cuò)誤.

?payload_unit_start_indicator=0,含義請(qǐng)參考ISO13818-1標(biāo)準(zhǔn)文檔

?transport_priority=0,表示當(dāng)前包是低優(yōu)先級(jí).

?PID=00111?11100101即0x07f1,這代表是什么呢,暫時(shí)還不知道(實(shí)際上是Audio?PID,參考下圖)

?transport_scrambling_control=00,表示節(jié)目沒有加密

?adaptation_field_control=01即0x01,具體含義請(qǐng)參考ISO13818-1

?continuity_counte=1000即0x08,表示當(dāng)前傳送的相同類型的包是第9個(gè)

請(qǐng)看解碼程序<<Seekfor?MPEG-2?decoder>>讀取該文件的結(jié)果:

?

上圖我們可以發(fā)現(xiàn),Taiwan-551.ts有一個(gè)節(jié)目叫"DIMO",它的Video?PID是0x07e5,Audio?PID是0x07e6

還有一個(gè)節(jié)目叫"Service?1",沒有Video?PID,它的Audio?PID是0x07f1(說明是一個(gè)廣播節(jié)目而非電視節(jié)目)

這個(gè)數(shù)據(jù)剛好和我們剛才的分析是吻合的.

但?是我想大家還有疑問,為什么0x07e5代表Video?PID,0x07e6代表其中一個(gè)Audio?PID呢?這就是剛才提到的,這是TS流在編碼的?時(shí)候就分配好了的.但是,在解碼的時(shí)候是怎么知道0x07e5就代表的是Video而不是Audio呢?這就是第三章的內(nèi)容:DVB?SI/PSI分析和?處理.

?????????????????????????第三章?DVB?SI/PSI分析和處理

SI是Specific?Information的簡稱,PSI是program?Specific?Information.該機(jī)制允許DVB傳送各種各樣的訊息,比如節(jié)目名稱,電視臺(tái)名稱,各種PID,私有信息,甚至單獨(dú)傳送數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)通信等.這些功能的實(shí)現(xiàn)都?xì)w功于SI/PSI.

?在DVB?標(biāo)準(zhǔn)中,定義了一個(gè)標(biāo)準(zhǔn)的PID用來實(shí)現(xiàn)SI/PSI.這些PID是系統(tǒng)保留的,因此DVB編碼的時(shí)候并不會(huì)用這些PID做為Video?PID或者?Audio?PID或者其他PID.在一個(gè)簡單的解復(fù)用程序中,只需要提供處理PAT,PMT表格的程序即可實(shí)現(xiàn)解復(fù)用,當(dāng)然如果需要更友好的界面和實(shí)現(xiàn)?更復(fù)雜的功能(如CA)則必須處理其他的SI表.在這里僅僅分析PAT,PMT,SDT表格,其他SI表格的分析,請(qǐng)參考ISO13818-1(MPEG-2系統(tǒng)層標(biāo)準(zhǔn))和EN300468(DVB?SI標(biāo)準(zhǔn))文檔.

?DVB定義的SI保留的PID分別是:

??

上表格的PID就是DVB保留的PID,分配的其他PID一定不會(huì)占用這些PID.解復(fù)用程序需要使用到的表格只有PAT,PMT,SDT,而CA應(yīng)用還需要使用CAT,EPG應(yīng)用還需要使用NIT,EIT,TDT,TOT等表格.所以在需要解復(fù)用的時(shí)候,偽代碼需要這樣寫:

??void?Process_Packet(unsigned?char*buff)

??{

???int?PID=GETPID(buff);

???if(PID==0x0000)?/*這是PAT表*/

???{

????Process_PAT(buff+4);/*處理PAT表*/

???}

???else?if(PID==......)/*Video?或者Audio*/

???{

???}

???else/*其他不支持的PID*/

???{

????printf("Unknown?PID!");

???}

??}

?所?有的表格都開始于Packet中的184字節(jié)的數(shù)據(jù)部分,但有的時(shí)候一個(gè)表格沒有184字節(jié),這時(shí)在Packet中就可能插入一些無效信息用來填充使整個(gè)?Packet依然保持是188字節(jié).也可能用頭信息中的payload_unit_start_indicator標(biāo)志表格有個(gè)偏移位置(當(dāng)?payload_unit_start_indicator=0表示表格數(shù)據(jù)直接從Packet區(qū)的第四個(gè)字節(jié)開始,否則表示有一個(gè)偏移量位置開始,具體?請(qǐng)參考ISO13818-1,第4字節(jié)到偏移量間的數(shù)據(jù)是系統(tǒng)填充的無效數(shù)據(jù)).

?下面針對(duì)解復(fù)用程序詳細(xì)分析一下PAT,PMT和SDT三類表格的格式.

PAT,?Program?Association?Table,節(jié)目關(guān)聯(lián)表

?PAT表攜帶以下信息:

(1)?TS流ID---?transport_stream_id,該ID標(biāo)志唯一的流ID

(2)?節(jié)目頻道號(hào)--?program_number,該號(hào)碼標(biāo)志TS流中的一個(gè)頻道,該頻道可以包含很多的節(jié)目(即可以包含多個(gè)Video?PID和Audio?PID)

(3)?PMT的PID---?program_map_PID,表示本頻道使用的哪個(gè)PID做為PMT的PID,因?yàn)榭梢杂泻芏嗟念l道,因此DVB規(guī)定PMT的PID可以由用戶自己定義.

PAT表定義如下:

?

各字段含義如下:

?table_id:8?bits,標(biāo)志本表格的類型,應(yīng)該是0x00

?section_syntax_indicator:1?bit,段語法標(biāo)志,應(yīng)該是'1'

?'0':固定的'0',這是為了防止和ISO13818Video流格式中的控制字沖突而設(shè)置的.

?Reserved:保留的2bits,保留位一般都是'0'

?section_length:12bits的段大小,單位是Bytes.

?transport_stream_id:16bits的當(dāng)前流ID,DVB內(nèi)唯一.(事實(shí)上很多都是自定義的TS?ID)

?version_number:5bits版本號(hào)碼,標(biāo)注當(dāng)前節(jié)目的版本.這是個(gè)非常有用的參數(shù),當(dāng)檢測(cè)到這個(gè)字段改變時(shí),說明TS流中的節(jié)目已經(jīng)變化了,程序必須重新搜索節(jié)目.

?current_next_indicator:1bit:當(dāng)前還是未來使用標(biāo)志符,一般情況下為'0'

?section_number:8bits當(dāng)前段號(hào)碼

?last_section_number:8bits最后段號(hào)碼(section_number和last_section_number的功能是當(dāng)PAT內(nèi)容>184字節(jié)時(shí),PAT表會(huì)分成多個(gè)段(sections),解復(fù)用程序必須在全部接收完成后再進(jìn)行PAT的分析)

?從for()開始,就是描述了當(dāng)前流中的頻道數(shù)目(N),每一個(gè)頻道對(duì)應(yīng)的PMT?PID是什么.解復(fù)用程序需要和上圖類似的循環(huán)來接收所有的頻道號(hào)碼和對(duì)應(yīng)的PMT?PID,并把這些信息在緩沖區(qū)中保存起來.在后部的處理中需要使用到PMT?PID.

?CRC_32:本段的CRC校驗(yàn)值,一般是會(huì)忽略的.N是一個(gè)變量,計(jì)算方法是N=(section_length-9)/4.

?從以上分析我們可以發(fā)現(xiàn),PAT表主要包含頻道號(hào)碼和每一個(gè)頻道對(duì)應(yīng)的PMT的PID號(hào)碼,這些信息我們?cè)谔幚鞵AT表格的時(shí)候會(huì)保存起來,以后會(huì)使用到這些數(shù)據(jù).例如我們可以定義這樣的數(shù)據(jù)結(jié)構(gòu)保存這些信息:

?typedef?struct

?{

??int?channel_number;/*頻道號(hào)*/

??int?pmt_pid;/*對(duì)應(yīng)channel_number頻道號(hào)的PMT的PID*/

?}PMT_ITEM;

?PMT_ITEM?pmt[64];/*定義最多64個(gè)頻道,這個(gè)結(jié)構(gòu)在分析PAT表格的時(shí)候會(huì)更新*/

PMT,?Program?Map?Table,節(jié)目影射表

?如果一個(gè)TS流中含有多個(gè)頻道,那么就會(huì)包含多個(gè)PID不同的PMT表.檢測(cè)是否PMT的偽代碼如下:

?void?Process_Packet(unsigned?char*buff)

?{

??int?I;

??int?PID=GETPID(buff);

??if(PID==0x0000)/*PAT表格*/

??{

???Process_PAT(buff+4);

??}

??else?if(PID==.....)/*Video?PID或者Audio?PID*/

??{

??}

??else

??{

???/*在這里檢測(cè)PID是否是PMT的PID*/

???for(i=0;i<64;i++)

???{

????if(PID==pmt[i].pmt_pid)/*PID等于在PAT檢測(cè)到的PMT?PID相同*/

????{

?????Process_PMT(buff+4);/*說明當(dāng)前Packet是PMT,進(jìn)入處理*/

?????break;

????}?

???}

??}

?}

PMT表中包含的數(shù)據(jù)如下:

(1)?當(dāng)前頻道中包含的所有Video數(shù)據(jù)的PID

(2)?當(dāng)前頻道中包含的所有Audio數(shù)據(jù)的PID

(3)?和當(dāng)前頻道關(guān)聯(lián)在一起的其他數(shù)據(jù)的PID(如數(shù)字廣播,數(shù)據(jù)通訊等使用的PID)

PMT定義如下:

?

各字段含義如下:

?table_id:8bits的ID,應(yīng)該是0x02

?section_syntax_indicator:1bit的段語法標(biāo)志,應(yīng)該是'1'

?'0':固定是'0',如果不是說明數(shù)據(jù)有錯(cuò).

?reserved:2bits保留位,應(yīng)該是'00'

?section_length:16bits段長度,從program_number開始,到CRC_32(包含)的字節(jié)總數(shù).

?program_number:16bits的頻道號(hào)碼,表示當(dāng)前的PMT關(guān)聯(lián)到的頻道.換句話就是說,當(dāng)前描述的是program_number頻道的信息.

?reserved:2bits保留位,應(yīng)該是'00'

?version_number:版本號(hào)碼,如果PMT內(nèi)容有更新,則version_number會(huì)遞增1通知解復(fù)用程序需要重新接收節(jié)目信息,否則version_number是固定不變的.

?current_next_indicator:當(dāng)前未來標(biāo)志符,一般是0

?section_number:當(dāng)前段號(hào)碼

?last_section_number:最后段號(hào)碼,含義和PAT中的對(duì)應(yīng)字段相同,請(qǐng)參考PAT部分.

?reserved:3bits保留位,一般是'000'.

?PCR_PID:13bits的PCR?PID,具體請(qǐng)參考ISO13818-1,解復(fù)用程序不使用該參數(shù).

reserved:4bits保留位,一般是'0000'

program_info_length:節(jié)目信息長度(之后的是N個(gè)描述符結(jié)構(gòu),一般可以忽略掉,這個(gè)字段就代表描述符總的長度,單位是Bytes)

緊接著就是頻道內(nèi)部包含的節(jié)目類型和對(duì)應(yīng)的PID號(hào)碼了.

stream_type:8bits流類型,標(biāo)志是Video還是Audio還是其他數(shù)據(jù).

reserved:3?bits保留位.

elementary_PID:13bits對(duì)應(yīng)的數(shù)據(jù)PID號(hào)碼(如果stream_type是Video,那么這個(gè)PID就是Video?PID,如果stream_type標(biāo)志是Audio,那么這個(gè)PID就是Audio?PID)

reserved:4?bits保留位.

ES_info_length:和program_info_length類似的信息長度(其后是N2個(gè)描述符號(hào))

CRC_32:32bits段末尾是本段的CRC校驗(yàn)值,一般忽略.

從以上的分析可以看出,只要我們處理了PMT,那么我們就可以獲取頻道中所有的PID信息,例如當(dāng)前頻道包含多少個(gè)Video,共多少個(gè)Audio,和其他數(shù)據(jù),還能知道每種數(shù)據(jù)對(duì)應(yīng)的PID分別是什么.

這樣如果我們要選擇其中一個(gè)Video和Audio收看,那么只需要把要收看的節(jié)目的Video?PID和Audio?PID保存起來,在處理Packet的時(shí)候進(jìn)行過濾即可實(shí)現(xiàn).

比較全面實(shí)現(xiàn)解復(fù)用的偽代碼如下:

int?Video_PID=0x07e5,Audio_PID=0x07e6;/*一般是在PMT檢索后由用戶自己設(shè)置這兩個(gè)全局值*/

void?Process_Packet(unsigned?char*buff)

{

?int?I;

?int?PID=GETPID(buff);/*獲取當(dāng)前Packet的PID*/

?if(PID==0x0000)/*0x0000表示是PAT*/

?{

??Process_PAT(buff+4);

?}

?else?if(PID==Video_PID)/*和Video_PID相等,說明當(dāng)前Packet是一個(gè)Video?Packet*/

?{

??SaveToVideoBuffer(buff+4);/*保存到Video緩沖區(qū)*/

?}

?else?if(PID==Audio_PID)/*和Audio_PID相等,說明當(dāng)前Packet是一個(gè)Audio?Packet*/

?{

??SaveToAudioBuffer(buff+4);/*保存到Audio緩沖區(qū)*/

?}

?else

{

?for(?i=0;i<64;i++)

?{

??if(PID==pmt[i].pmt_pid)

??{

???Process_PMT(buff+4);

???Break;

??}

?}

}?

?

}

以上偽代碼可以實(shí)現(xiàn)基本的解復(fù)用:檢測(cè)所有的頻道,檢測(cè)所有stream的PID,選擇特定的節(jié)目進(jìn)行播放.只要讀取每個(gè)Packet的188字節(jié)的內(nèi)容,然后每次都調(diào)用Process_Packet()即可實(shí)現(xiàn)簡單的解復(fù)用.

介紹到這里,我們就可以總結(jié)一下DVB搜臺(tái)的原理了.(好!洗耳恭聽!)

??機(jī)?頂盒先調(diào)整高頻頭到一個(gè)固定的頻率(如498MHZ),如果此頻率有數(shù)字信號(hào),則COFDM芯片(如MT352)會(huì)自動(dòng)把TS流數(shù)據(jù)傳送給MPEG-?2?decoder.?MPEG-2?decoder先進(jìn)行數(shù)據(jù)的同步,也就是等待完整的Packet的到來.然后循環(huán)查找是否出現(xiàn)PID==?0x0000的Packet,如果出現(xiàn)了,則馬上進(jìn)入分析PAT的處理,獲取了所有的PMT的PID.接著循環(huán)查找是否出現(xiàn)PMT,如果發(fā)現(xiàn)了,則自動(dòng)進(jìn)?入PMT分析,獲取該頻段所有的頻道數(shù)據(jù)并保存.如果沒有發(fā)現(xiàn)PAT或者沒有發(fā)現(xiàn)PMT,說明該頻段沒有信號(hào),進(jìn)入下一個(gè)頻率掃描.

??從以上描述可以看出,機(jī)頂盒搜索頻率是隨機(jī)發(fā)生的,要使每次機(jī)頂盒都能搜索到信號(hào),則要求TS流每隔一段時(shí)間就發(fā)送一次PAT和PMT.事實(shí)上DVB傳輸系統(tǒng)就是這么做的.因此無論何時(shí)接入終端系統(tǒng),系統(tǒng)都能馬上搜索到節(jié)目并正確解復(fù)用實(shí)現(xiàn)播放.不僅僅如此,其他數(shù)據(jù)也都是交替?zhèn)魉偷?比如第一個(gè)Packet可能是PAT,第二個(gè)Packet可能是PMT,而第三個(gè)Packet可能是Video?1,第四個(gè)Packet可能是Video?2,

只要系統(tǒng)傳輸速度足夠快(就是稱之為"碼率"的東東),實(shí)現(xiàn)實(shí)時(shí)播放是沒有任何問題的.

?到這里雖然實(shí)現(xiàn)了解復(fù)用,但可以看出,使用的PID都是枯燥的數(shù)字,如果調(diào)臺(tái)要用戶自己輸入數(shù)字那可是太麻煩了,而且還容易輸入錯(cuò)誤,操作非常不直觀,即使做成一個(gè)菜單讓用戶選擇也是非常的呆板.針對(duì)這個(gè)問題,DVB系統(tǒng)提出了一個(gè)SDT表格,該表格標(biāo)志一個(gè)節(jié)目的名稱,并且能和PMT中的PID聯(lián)系起來,這樣用戶就可以通過直接選擇節(jié)目名稱來選擇節(jié)目了.

SDT,?Service?description?section,服務(wù)描述段

?SDT可以提供的信息包括:

(1)?該節(jié)目是否在播放中

(2)?該節(jié)目是否被加密

(3)?該節(jié)目的名稱

SDT定義如下:

?

各字段定義如下:

?table_id:8bits的ID,可以是0x42,表示描述的是當(dāng)前流的信息,也可以是0x46,表示是其他流的信息(EPG使用此參數(shù))

?section_syntax_indicator:段語法標(biāo)志,一般是'1'

?reserved_future_used:2bits保留未來使用

?reserved:1bit保留位,防止控制字沖突,一般是'0',也有可能是'1'

?section_length:12bits的段長度,單位是Bytes,從transport_stream_id開始,到CRC_32結(jié)束(包含)

?transport_stream_id:16bits當(dāng)前描述的流ID

?reserved:2bits保留位

?version_number:5bits的版本號(hào)碼,如果數(shù)據(jù)更新則此字段遞增1

?current_next_indicator:當(dāng)前未來標(biāo)志,一般是'0',表示當(dāng)前馬上使用.

?original_netword_id:16bits的原始網(wǎng)絡(luò)ID號(hào)

?reserved_future_use:8bits保留未來使用位

?接下來是N個(gè)節(jié)目信息的循環(huán):

??service_id:16?bits的服務(wù)器ID,實(shí)際上就是PMT段中的program_number.

??reserved_future_used:6bits保留未來使用位

??EIT_schedule_flag:1bit的EIT信息,1表示當(dāng)前流實(shí)現(xiàn)了該節(jié)目的EIT傳送

??EIT_present_following_flag:1bits的EIT信息,1表示當(dāng)前流實(shí)現(xiàn)了該節(jié)目的EIT傳送

??running_status:3bits的運(yùn)行狀態(tài)信息:1-還未播放?2-幾分鐘后馬上開始,3-被暫停播出,4-正在播放,其他---保留

??free_CA_mode:1bits的加密信息,'1'表示該節(jié)目被加密.

??緊?接著的是描述符,一般是Service?descriptor,分析此描述符可以獲取servive_id指定的節(jié)目的節(jié)目名稱.具體格式請(qǐng)參考?EN300468中的Service?descriptor部分.分析完畢,則節(jié)目名稱和節(jié)目號(hào)碼已經(jīng)聯(lián)系起來了.機(jī)頂盒程序就可以用這些節(jié)目名稱代替?PID讓用戶選擇,從而實(shí)現(xiàn)比較友好的用戶界面!

?下面參考一下<<Seekfor?MPEG2?decoder>>中的界面和顯示信息.

?

上?圖是<<Seekfor?MPEG2?decoder>>打開三個(gè)不同的碼流文件(*.ts)形成的PID信息和節(jié)目名稱.用戶?可以通過切換節(jié)目名稱的下拉列表框切換節(jié)目,也可以通過"視頻流"和"音頻流"下拉列表框切換Video和Audio!這些數(shù)據(jù)都是通過分析PAT,?PMT和SDT得到的.

?????????????????????????第四章?Teletext原理

歐洲采用的Teletext?標(biāo)準(zhǔn)叫做"ITU-R?System?B?Teletext",標(biāo)準(zhǔn)文檔是EN300472和EN300706.該標(biāo)準(zhǔn)支持以下特性:

(1)?24X40的文本字符顯示,也支持簡單的圖象信息的顯示.

(2)?支持多頁碼,應(yīng)用程序可以自由切換到任意選定的頁.

(3)?支持多語言,可以在teletext中指定所使用的語言.

(4)?文本支持自定義背景色,自定義前景色.支持長度,寬度加倍(double?width,double?height)

(5)?所有數(shù)據(jù)采用了奇偶校驗(yàn)和漢明碼編碼,具有比較強(qiáng)的錯(cuò)誤處理功能.

(6)?格式基本兼容模擬TTX,支持VBI插入teletext數(shù)據(jù).

Teletext數(shù)?據(jù)是在TS流中和Video,Audio數(shù)據(jù)一起傳送的.EN300472規(guī)定采用以下方法識(shí)別teletext數(shù)據(jù)的PID:如果PMT段中的?stream_type==0xbd(private_stream_1),那么這個(gè)數(shù)據(jù)流就是teletext或者subtitle數(shù)據(jù)(統(tǒng)稱為VBI?數(shù)據(jù),具體區(qū)分還需要在teletext分析中處理),VBI數(shù)據(jù)開始于PES包的數(shù)據(jù)部分.

?Teletext在PES包中的格式如下:

??各字段含義:

??data_identifier:數(shù)據(jù)標(biāo)志符,如果是teletext必須等于0x10~0x1f.

??data_unit_id:用來標(biāo)志是teletext數(shù)據(jù)還是subtitle數(shù)據(jù).0x02表示是teletext,0x03表示是subtitle.

??data_field()是標(biāo)準(zhǔn)的teletext格式的數(shù)據(jù)包,參考下圖.實(shí)際上,一個(gè)data_field就是teletext的一行數(shù)據(jù).

?data_field()的格式如下:

??各字段含義如下:

??reserved_future_use:2bits保留未來使用

??field_parity:1bit的奇偶標(biāo)志,'1'表示是偶數(shù)場(chǎng)(下半場(chǎng)),'0'表示奇數(shù)場(chǎng)(上半場(chǎng))

??line_offset:5bits,在VBI插入時(shí)指定的場(chǎng)線數(shù)據(jù).(以上兩個(gè)參數(shù)在使用VBI硬件插入才需要使用)

??framing_code:8bits的幀同步代碼,必須是0xe4.

??magazine_and_packet_address:16bits,指定當(dāng)前傳送的雜志號(hào)碼和包號(hào)碼,采用的是漢明8/4編碼.

其中的包號(hào)碼(Packet?address)實(shí)際上代表的是TTX頁面的行號(hào)碼(0-24).

??data_block:320bits,40Bytes的數(shù)據(jù)塊,全部采用奇偶校驗(yàn),對(duì)應(yīng)TTX頁面的40列,范圍是0x00-0x7f(最高位是奇偶校驗(yàn)位).把這部分的數(shù)據(jù)全部提取出來,就可以獲得一個(gè)行的全部數(shù)據(jù)(TTX是24行X40列).

?因此,解teletext的軟件一般采用這樣的流程:

(1)?分析PMT表,獲取代表teletext的PID,標(biāo)注為TTX_pid;

(2)?在解復(fù)用程序中過濾PID==TTX_pid的數(shù)據(jù),解出PES的數(shù)據(jù)部分.

(3)?把第二步得到的數(shù)據(jù)部分全部保存到一個(gè)緩沖區(qū),直到所有的數(shù)據(jù)全部緩沖完畢.

(4)?解出packet?address,該數(shù)據(jù)代表當(dāng)前的行號(hào)(0-24).如果是0,則本個(gè)data?block包含的是主頁面代碼和

子頁面代碼.如果不是0(1-24),則說明data?block是對(duì)應(yīng)頁的列數(shù)據(jù)(40個(gè)字節(jié)的ASCII),把這些數(shù)據(jù)解出保存到緩沖區(qū).(這里必須和PID過濾一樣,過濾主頁面號(hào)碼和子頁面號(hào)碼,即沒有選擇的頁面忽略掉)

(5)?循環(huán)第(4)步直到所有的列數(shù)據(jù)全部解出.

(6)?把緩沖區(qū)中的24X40的數(shù)據(jù)顯示出來.一般是在RAM中定義一個(gè)unsigned?char?TTX_DATA[24][40]數(shù)組保存.

Teletext是如何支持自定義前景色和背景色等特性的呢?實(shí)際上非常簡單,就包含在每一行數(shù)據(jù)的40個(gè)字節(jié)中.我們知道可顯示ASCII的范圍是0x20~0x7f,小于0x20的代碼在teletext中做為控制字符(需要在顯示程序中處理),具體規(guī)定如下:

?0x00-0x07:設(shè)置前景色,顏色分別是黑,紅,綠,黃,藍(lán),洋青,洋藍(lán),白(設(shè)置后生效,也就是說,顯示程序遇到這些代碼,在隨后的顯示中必須改變前景色到對(duì)應(yīng)的顏色)

?0x08:開始閃爍功能,設(shè)置后生效.

?0x09:結(jié)束閃爍功能,設(shè)置后生效

?0x0a:BOX結(jié)束,設(shè)置后生效.

?0x0b:BOX開始,設(shè)置后生效.

?0x0c:正常象素大小,設(shè)置后生效.

?0x0d:寬度加倍,設(shè)置后生效.

?0x0e:長度加倍,設(shè)置后生效.

?0x0f:寬度和長度都加倍,設(shè)置后生效.

?0x10-0x17:設(shè)置馬塞克顏色,顏色代碼同0x00-0x07,設(shè)置后生效.

?0x18:以后固定是顯示空,直到遇到其他顏色屬性.設(shè)置后生效.

?0x19-0x1b:請(qǐng)參考EN300706標(biāo)準(zhǔn).

?0x1c:設(shè)置黑背景色.設(shè)置后馬上生效.

?0x1d:設(shè)置新的背景色,下一個(gè)字符指定背景顏色,代碼同0x0-0x07.

?0x1e:保持馬塞克功能,設(shè)置后生效.

?0x1f:取消馬塞克功能,設(shè)置后生效.

以?上所描述的控制字符作用范圍僅僅是一行.也就是說如果遇到新行,則設(shè)置全部恢復(fù)默認(rèn)設(shè)置,EBU?teletext的默認(rèn)設(shè)置是:黑背景色,白前景色,無?閃爍,無BOX,正常的象素大小,無任何馬塞克功能.因此,teletext的顯示程序必須一個(gè)字符一個(gè)字符的分析數(shù)據(jù),直到所有的數(shù)據(jù)全部顯示完畢.

?實(shí)際上,EBU?teletext使用了4個(gè)規(guī)格,包括V1.0,V1.5,V2.5,V3.5.V1.0只支持ASCII文本和基本屬性,其他規(guī)格還支持簡單圖象和Objects,請(qǐng)參考EN300706獲取更多的信息.

?EBU?teletext格式使用了漢明編碼方法,具體編碼格式請(qǐng)參考EN300706.

?下面可以參考一下<<Seekfor?MPEG-2?decoder>>中處理teletext的效果:

(1)?菜單上的數(shù)字是主頁面,下一級(jí)菜單是子頁面:

(2)teletext文字疊加在Video上的透明顯示效果:

(3)teletext文字疊加在Video上不透明的顯示效果:

?(4)切換到其他頁面的顯示效果:

????????????????????????????第五章??EPG原理

EPG就?是"電子節(jié)目指南",相當(dāng)于一個(gè)節(jié)目菜單的功能.在一個(gè)TS流中,可以提供當(dāng)前流的所有信息,如頻率,調(diào)制方式,頻道號(hào),所有節(jié)目的PID,名稱等信息,?也可以根據(jù)需要提供其他相關(guān)聯(lián)的TS流(例如同一電視臺(tái)同步播放的其他頻率的節(jié)目信息)的信息.解碼器接收這些信息,形成一個(gè)固定格式的菜單讓用戶選擇需?要收看的頻道或節(jié)目,這就是"EPG".不僅如此,EPG還可以對(duì)節(jié)目進(jìn)行分類,比如節(jié)目可以是電影,也可以是新聞,這樣,把屬于電影的節(jié)目歸在一起,把?屬于新聞的節(jié)目歸在一起,這樣對(duì)用戶來說檢索節(jié)目就變得非常的方便.

?EPG的實(shí)現(xiàn)也歸功于DVB的SI信息.和EPG功能相關(guān)的SI有NIT(網(wǎng)絡(luò)信息表),EIT(環(huán)境信息表),SDT(服務(wù)描述表),BAT(群組關(guān)聯(lián)表),TDT(日期時(shí)間表)和TOT(時(shí)間偏移表).下面簡單分析這些表所攜帶的信息.

NIT,Network?Information?Table,網(wǎng)絡(luò)信息表

?NIT提供如網(wǎng)絡(luò)名稱(相當(dāng)于電視臺(tái)名稱),傳輸參數(shù)(如頻率,調(diào)制方式等).這個(gè)表格一般是解碼器內(nèi)部使用的數(shù)據(jù),當(dāng)然也可以做為EPG的一個(gè)顯示數(shù)據(jù)提供給用戶做為參考.

?NIT格式如下:

?

?各字段含義如下:

??table_id:8?bits標(biāo)志,應(yīng)該是0x40或0x41.當(dāng)table_id==0x40時(shí)候,這個(gè)NIT描述的是當(dāng)前流的網(wǎng)絡(luò)信息,否則描述的是其他流的網(wǎng)絡(luò)信息(一般是電視臺(tái)同步播放的其他TS流信息).

??section_syntax_incicator:1bit的段語法標(biāo)志,應(yīng)該是'1'

??reserved_future_use:1bit保留未來使用位,一般是'0'

??reserved:2bits保留位,一般是'00',這是防止控制字沖突而設(shè)置的.

??section_length:12bits段長度,從network_id開始,到CRC_32(包含)結(jié)束的字節(jié)總數(shù).

??network_id:16bits的網(wǎng)絡(luò)ID號(hào)碼,DVB內(nèi)唯一的一個(gè)號(hào)碼,標(biāo)志不同的電視臺(tái).

??Reserved:2bits保留意見位.

??version_number:5bits的版本號(hào)碼,當(dāng)NIT內(nèi)容有任何改變時(shí),該字段會(huì)遞增1(提醒解碼器更新NIT信息).

??current_next_indicator:1bit的當(dāng)前下次使用標(biāo)志,一般是'0'

??section_number:8bits的當(dāng)前段號(hào)碼.

??last_section_number:8bits的當(dāng)前段號(hào)碼.

??reserved_future_use:4bits保留未來使用,現(xiàn)在應(yīng)該是'0000'.

??network_descriptors_length:12bits網(wǎng)絡(luò)描述符長度,單位是字節(jié).

??descriptor():N個(gè)不同的描述符結(jié)構(gòu),一般是網(wǎng)絡(luò)名稱描述符,解碼器在此獲取當(dāng)前的網(wǎng)絡(luò)名稱(即電視臺(tái)名稱)

??reserved_future_use:4bits未來保留位,當(dāng)前應(yīng)是'0000'.

??transport_stream_loop_length:12bits的字節(jié)總數(shù),就是隨后的循環(huán)的字節(jié)總數(shù).

??transport_stream_id:16bits的網(wǎng)絡(luò)ID

??original_network_id:16bits原始網(wǎng)絡(luò)ID.如果original_network_id==?transport_stream_id說明該TS流是直播節(jié)目,否則說明該TS流是轉(zhuǎn)播節(jié)目.

??transport_descriptors_length:12bits的描述符長度,隨后的N個(gè)描述符占用的字節(jié)總數(shù).

??descriptor(),N個(gè)描述符,可以有多個(gè)連續(xù)但不相同的描述符號(hào),如網(wǎng)絡(luò)名稱描述符,傳輸系統(tǒng)參數(shù)描述符,解碼器分析這些描述符獲取網(wǎng)絡(luò)的不同信息.

??CRC_32:整個(gè)段的CRC校驗(yàn)值,一般可以忽略.

EIT,?Event?Information?Table,環(huán)境信息表

?環(huán)?境信息表提供如下信息:節(jié)目段的標(biāo)識(shí)號(hào)、起始時(shí)間、節(jié)目長度、播放狀態(tài)、是否加密;指向特定信息的鏈接信息;節(jié)目段多語種的簡短介紹;節(jié)目段的詳細(xì)介紹;?兩段同樣節(jié)目段的時(shí)間偏移;基本碼流類型,如視頻的幅型比、伴音的類型、字幕的類型等;使用的加密系統(tǒng);節(jié)目類型,如電影/戲劇、新聞、綜藝、體育、少?兒、音樂、藝術(shù)、社會(huì)政治、文教等;節(jié)目限定年齡的級(jí)別;給出實(shí)現(xiàn)交互式回傳信道的電話號(hào)碼;為滿足各節(jié)目段的碼率而提供的緩存大小信息及私有數(shù)據(jù)等.

?環(huán)境信息表中提供了類似于廣播電視報(bào)所提供的節(jié)目表的內(nèi)容,在SI中,只有EIT才有可能被加密。根據(jù)EIT及其它表所提供的信息,可以出五花八門的電子節(jié)目指南。-如:按節(jié)目類型檢索、按時(shí)間檢索及對(duì)某類節(jié)目的鎖定等.

?EIT表格定義如下:

??

?各字段定義如下:

??table_id:8bits的表ID,如果當(dāng)前表是重現(xiàn)/跟隨信息,則table_id是0x4e(當(dāng)前流)或0x4f(其他流),否則如果是時(shí)間段信息,則table_id是0x50~0x5f(當(dāng)前流)或者0x60~0x6f(其他流).

??section_syntax_indicator:1bit的段語發(fā)標(biāo)志符,應(yīng)該是'1'

??reserved_future_use:1bit未來保留位,應(yīng)該是'0'

??reserved:2bits的保留位,應(yīng)該是'00'

??section_length:12bits的段長度,單位是bytes,從service_id開始到CRC_32(含)結(jié)束.

??service_id:16bits的頻道號(hào),同PMT中的program_number;

??reserved:同上.

??version_number:5bitsEIT版本號(hào)碼.內(nèi)容有更新則此字段遞增1,表示需要更新EIT信息.

??current_next_indicator:1bit的當(dāng)前下次應(yīng)用標(biāo)志,一般是'0'

??section_number:8bits當(dāng)前段號(hào)碼.

??last_section_number:8bits最后段號(hào)碼.

??transport_stream_id:16bits的TS流ID.

??original_network_id:16bits的原始網(wǎng)絡(luò)ID.

??segment_last_section_number:未知功能.

??last_table_id:未知功能.

?隨后是N個(gè)Event的信息:

??event_id:16bits環(huán)境ID,流唯一數(shù)字.

??start_time:40bits的開始時(shí)間.UTC格式.

??duration:24bits的持續(xù)時(shí)間(節(jié)目長度),BCD格式.

??running_status:2bits運(yùn)行狀態(tài),定義和PMT中的running_status相同.

??free_CA_mode:1bit的是否加密標(biāo)志,'0'表示沒有加密.

?descriptors_loop_length:12bits描述符總長度,單位Bytes.

??descriptors():N個(gè)描述符列表.

TDT和TOT提供的是系統(tǒng)時(shí)間信息,結(jié)構(gòu)較簡單,請(qǐng)參考EN300468文檔!

RST,Running?Status?Table,播放狀態(tài)表

?RST提供的是TS流中的節(jié)目播放狀態(tài)(是否正在播放等)的信息.

?RST格式定義如下:

?

?各字段含義如下:

??table_id:8bits表ID標(biāo)志,應(yīng)該是0x71.

??section_syntax_indicator:1bit的段語法標(biāo)志,應(yīng)該是'1'.

??reserved_future_user:1bit未來保留位

??reserve:2bits保留位.

??section_length:12bits段長度,單位Bytes.實(shí)際就是隨后的for()循環(huán)中所有的字節(jié)數(shù)目.

??transport_stream_id:16bits的TS?ID,DVB內(nèi)唯一.

??original_network_id:16bits原始網(wǎng)絡(luò)ID.

??serviced_id:16bits節(jié)目號(hào),和PMT內(nèi)的program_number相同含義.

??event_id:16bits環(huán)境ID,同EIT定義.

??reserved_future_use:5bits未來保留位.

??running_status:3bits運(yùn)行狀態(tài).0x01表示不在播放中,0x02表示即將播放,0x03表示播放被暫停,0x04表示正在正常播放,其他屬于未定義狀態(tài).

?實(shí)?際上,以上標(biāo)準(zhǔn)SI表提供出的EPG信息是比較少的,實(shí)際上有用的EPG信息都是包含在描述符中,就是Table結(jié)構(gòu)內(nèi)部的descriptor()字段?中.DVB系統(tǒng)提供了很多標(biāo)準(zhǔn)的descriptor(),不同的描述符展示不同的信息.具體的描述符結(jié)構(gòu)請(qǐng)參考EN300468.

?標(biāo)準(zhǔn)描述符簡單介紹如下:

(1)?Bouquet?name?descriptor:組名稱描述符,提供一個(gè)組的名稱符號(hào).

(2)?CA?identifier?descriptor:CA系統(tǒng)控制字描述符,提供CA的加密字.

(3)?Component?descriptor:組件描述符號(hào),提供系統(tǒng)內(nèi)所有組件的名稱等信息.

(4)?Content?descriptor:內(nèi)容描述符號(hào),提供系統(tǒng)節(jié)目的內(nèi)容信息(實(shí)現(xiàn)按內(nèi)容檢索功能)

(5)?Country?availability?descriptor:有效國家列表描述符號(hào),提供該服務(wù)允許使用的國家名稱列表.

(6)?Data?broadcast?descriptor:數(shù)據(jù)廣播描述符,提供數(shù)據(jù)廣播信息.

(7)?Data?broadcast?id?descriptor:數(shù)據(jù)廣播標(biāo)志描述符號(hào).

(8)?Cable?delivery?system?descriptor:DVB-C傳輸系統(tǒng)參數(shù)描述符,提供DVB-C參數(shù)信息.

(9)?Satellite?delivery?system?descriptor:DVB-S傳輸系統(tǒng)參數(shù)描述符,提供DVB-S參數(shù)信息.

(10)?Terrestrial?delivery?system?descriptor:DVB-T傳輸系統(tǒng)參數(shù)描述符,提供DVB-T參數(shù)信息.

(11)?Extended?event?descriptor:擴(kuò)展環(huán)境描述符號(hào).

(12)?Frequency?list?descriptor:頻率列表描述符,提供所有的頻率信息.

(13)?Linkage?descriptor:可連接描述符.

(14)?Local?time?offset?descriptor:當(dāng)前時(shí)間信息.

(15)?Mosaic?descriptor:馬塞克描述符.

(16)?Multilingual?bouquet?name?descriptor:多語言代碼組名稱描述符.

(17)?Multilingual?component?descriptor:多語言組件描述符號(hào).

(18)?Multilingual?network?name?descriptor:多語言網(wǎng)絡(luò)名稱描述符.

(19)?Multilingual?service?name?descriptor:多語言服務(wù)名稱描述符.

(20)?NVOD?reference?descriptor:VOD點(diǎn)播參考描述符.

(21)?Network?name?descriptor:網(wǎng)絡(luò)名稱描述符.

(22)?Private?data?specifier?descriptor:私有數(shù)據(jù)描述符.

(23)?Short?smoothing?buffer?descriptor:傳輸速率描述符.

(24)?Service?descriptor:服務(wù)器描述符,提供電視臺(tái)名稱和電視節(jié)目名稱等信息.

(25)?Service?list?descriptor:節(jié)目列表描述符,提供所有的節(jié)目頻道號(hào)和節(jié)目類型.

(26)?Service?move?descriptor:節(jié)目刪除描述符.

(27)?Short?event?descriptor:短消息描述符.

(28)?Stream?identifier?descriptor:流標(biāo)志描述符.

(29)?Stuffing?descriptor:填充數(shù)據(jù)描述符.

(30)?Subtitling?descriptor:子字幕描述符.

(31)?Telephone?descriptor:電話號(hào)碼描述符.

(32)?Teletext?descriptor:圖文信息描述符.

(33)?Time?shifted?event?descriptor:時(shí)間消逝環(huán)境描述符.

以?上描述符結(jié)構(gòu)定義在EN300468,所有的描述符都插入到不同的SI表中,因此描述符的分析應(yīng)該結(jié)合不同的SI表來進(jìn)行.但是這種插入又是有規(guī)律的,如?NIT表只可能插入Terrestrial?delivery?system?descriptor之類或者?Network?name?descriptor,絕對(duì)不可能插入Service?descriptor!具體插入的什么描述符,只能通過描述符的第一個(gè)?字節(jié)descriptor_tag來判斷.

?因?為EPG的實(shí)現(xiàn)是非常靈活的,不同的應(yīng)用需要不同的EPG功能,因此在<<Seekfor?MPEG-2?decoder>>中?沒有加入EPG功能.然而實(shí)際上,EPG功能比較容易實(shí)現(xiàn),但因?yàn)镋PG錯(cuò)綜復(fù)雜的SI,寫EPG功能之前還是需要仔細(xì)理清思路才能實(shí)現(xiàn)的.?

二?DVB碼流中業(yè)務(wù)信息與電子節(jié)目指南

怎樣在眾多的數(shù)字電視節(jié)目中快速地找到用戶所需要的節(jié)目,是數(shù)字電視應(yīng)用所要解決的問題。在DVB接收機(jī)中通常都使用電子節(jié)目指南(EPG)這一工具來達(dá)到快速查找節(jié)目的目的,生成EPG的數(shù)據(jù)來源于DVB碼流中的有業(yè)務(wù)信息SI信息。

在數(shù)字電視中,所有視頻、音頻、文字、圖片等經(jīng)數(shù)字化處理后都變成了數(shù)據(jù),并按照MPEG-2的標(biāo)準(zhǔn)打包,形成固定長度(188個(gè)字節(jié))的傳送包,然后將這些數(shù)據(jù)包進(jìn)行復(fù)用,形成傳送碼流(TS),通常一個(gè)頻道對(duì)應(yīng)一個(gè)TS流,一個(gè)頻道的TS流由多個(gè)節(jié)目及業(yè)務(wù)組成。在TS流中如果沒有引導(dǎo)信息,數(shù)字電視的終端設(shè)備將無法找到需要的碼流,所以在MPEG-2中,專門定義了PSI信息,其作用是自動(dòng)設(shè)置和引導(dǎo)接收機(jī)進(jìn)行解碼。PSI信息在復(fù)用時(shí)通過復(fù)用器插入到TS流中,并用特定的PID(包標(biāo)識(shí)符)進(jìn)行標(biāo)識(shí)。

在MPEG-2標(biāo)準(zhǔn)中定義的節(jié)目信息PSI,是對(duì)單一碼流的描述,由于系統(tǒng)通常存在多個(gè)碼流,為了使使用者能在多碼流中快速地找出自己需要的業(yè)務(wù),在DVB對(duì)MPEG-2的PSI進(jìn)行了擴(kuò)充,在PSI四個(gè)表的基礎(chǔ)上再增加了九個(gè)表,形成SI。SI是對(duì)整個(gè)系統(tǒng)所有碼流的描述,描述系統(tǒng)傳輸內(nèi)容、廣播數(shù)據(jù)流的編排和時(shí)間表等的數(shù)據(jù),它包括PSI信息。

一、節(jié)目信息(PSI)

PSI由節(jié)目關(guān)聯(lián)表(PAT)、條件接收表(CAT)、節(jié)目映射表(PMT)和網(wǎng)絡(luò)信息表(NIT)組成,這些表插入到TS中傳輸。PSI指定了如何從一個(gè)攜帶多個(gè)節(jié)目的傳送流中正確找到特定的節(jié)目,當(dāng)接收機(jī)要接收某一個(gè)指定節(jié)目時(shí),它首先從節(jié)目關(guān)聯(lián)表中取得這個(gè)節(jié)目的節(jié)目映射表的PID值,然后從TS中找出與此PID值相對(duì)應(yīng)的節(jié)目映射表,從這個(gè)節(jié)目映射表中獲得構(gòu)成這個(gè)節(jié)目的基本碼流的PID值,根據(jù)這個(gè)PID值濾出相應(yīng)的視頻、音頻和數(shù)據(jù)等基本碼流,解碼后復(fù)原為原始信號(hào),刪除含有其余PID的傳送包。MPEG-2傳送流的結(jié)構(gòu)如圖1所示。

圖2是PAT與PMT的關(guān)系及結(jié)構(gòu)圖。

圖3是CAT與NIT的結(jié)構(gòu)圖。

從上面的幾幅圖中可知,要保證傳送流能正常接收,在該流中至少有一個(gè)完整有效的PAT。CAT描述了節(jié)目的加密方式,它包含了節(jié)目的EMM識(shí)別PID,只有授權(quán)的解碼器才能由CAT收到密鑰,解碼出相應(yīng)的數(shù)據(jù)流。NIT包含節(jié)目的頻道調(diào)諧參數(shù)、頻率、符號(hào)率等物理傳輸網(wǎng)信息,這些信息使得接收機(jī)可以按照用戶的選擇以很少的延時(shí)或無延時(shí)地改變頻道、調(diào)諧參數(shù),正確地解碼出TS。由于PSI數(shù)據(jù)的完整性十分重要,因此在每個(gè)PSI段中均需要加校驗(yàn)碼。

二、業(yè)務(wù)信息(SI)

PSI數(shù)據(jù)只提供了單個(gè)TS的信息,使接收機(jī)能對(duì)單個(gè)TS中的不同節(jié)目流進(jìn)行解碼,但它不能提供多個(gè)TS的有關(guān)業(yè)務(wù)和節(jié)目的類型、什么節(jié)目、什么時(shí)間開始等信息,因此DVB系統(tǒng)對(duì)PSI進(jìn)行了擴(kuò)展,提供了其它不同信息種類的多種表格,形成SI。在實(shí)用中,我們將SI所提供的數(shù)據(jù)通過有序地組織起來,生成類似節(jié)目報(bào)的形式,它能在電視機(jī)上即時(shí)瀏覽,這樣將大大方便用戶的使用,這就是電子節(jié)目指南EPG。

SI定義了不9個(gè)表

1、業(yè)務(wù)群關(guān)聯(lián)表(BAT):它提供了業(yè)務(wù)群相關(guān)的信息,給出了業(yè)務(wù)群的名稱以及每個(gè)業(yè)務(wù)群中的業(yè)務(wù)列表。

2、業(yè)務(wù)描述表(SDT):它包含了描述系統(tǒng)中業(yè)務(wù)的數(shù)據(jù),例如業(yè)務(wù)名稱,起始時(shí)間、持續(xù)時(shí)間等。

3、事件信息表(EIT):它包含了與事件或節(jié)目相關(guān)的數(shù)據(jù),EIT是生成EPG的主要表。

4、運(yùn)行狀態(tài)表(RST):它給出了事件的狀態(tài)(運(yùn)行/非運(yùn)行),運(yùn)行狀態(tài)表更新這些信息,允許自動(dòng)適應(yīng)切換事件。

5、時(shí)間和日期表(TDT):它給出了與當(dāng)前的時(shí)間和日期相關(guān)的信息,由于這些信息更新頻繁,所以需要單獨(dú)使用一個(gè)表。

6、時(shí)間偏移表(TOT):它給出了與當(dāng)前時(shí)間、日期和本地時(shí)間偏移相關(guān)的信息,由于這些信息更新頻繁,所以需要單獨(dú)使用一個(gè)表。

7、填充表(ST):它用于使現(xiàn)有的段無效,例如在一個(gè)傳輸系統(tǒng)的邊界。

8、選擇信息表(SIT):它僅用于碼流片段中,如記錄一段碼流,它包含了描述該碼流片段業(yè)務(wù)信息間段的地方。

9、間斷信息表(DIT):它僅用于碼流片段,如記錄的一段碼流中,它將插入到碼流片段業(yè)務(wù)信息間斷的地方。

這里值得一提的是,NIT在MPEG-2標(biāo)準(zhǔn)中未予以規(guī)定,而是由SI規(guī)定。

以上這些表在傳送流中以數(shù)據(jù)段的形式傳送,不同的信息表在傳送流中通過賦予不同的特定的PID來進(jìn)行區(qū)分(如表1所示)。而具有相同PID的不同信息表則進(jìn)行由表標(biāo)識(shí)符TABLE?ID來區(qū)分,在接收端通過查這些特定的PID來找到它們。這里說明一下,TS中有兩種標(biāo)識(shí)符,一種是包標(biāo)識(shí)符,一種是表標(biāo)識(shí)符。例如SI中的SDT的每一個(gè)表都對(duì)一個(gè)特定TS中的業(yè)務(wù)進(jìn)行描述,這些業(yè)務(wù)可能是這個(gè)表所存在的TS的一部分,也可能是其它TS的一部分,這些SDT的PID都是相同的,這時(shí)候我們就可以通過不同的表標(biāo)識(shí)符來區(qū)分它們,從而識(shí)別出那一個(gè)表所描述的業(yè)務(wù)是那一個(gè)TS的。

表1

PID值

PAT

0X0000

CAT

0X0001

PMT

0X0002

NIT

0X0010

SDT、BAT

0X0011

EIT

0X0012

TDT、TOT

0X0014

?

SI中的各表在實(shí)際使用中并不都需要傳送,其中NIT、SDT、EIT、TDT是必需傳送的,其它表則按照需要進(jìn)行選擇傳送。

三、電子節(jié)目指南(EPG)

在DVB系統(tǒng)中,EPG可使用戶方便、快捷、直觀地找到需要的節(jié)目,根據(jù)《數(shù)字電視廣播業(yè)務(wù)規(guī)范》對(duì)EPG的要求,EPG應(yīng)提供節(jié)目單和當(dāng)前節(jié)目播放等基本功能,還提供節(jié)目附加信息、節(jié)目分類、節(jié)目預(yù)訂和家長分級(jí)控制等功能。EPG的這些功能均可通過SI來實(shí)現(xiàn),也就是說SI是實(shí)現(xiàn)EPG功能的前提。在SI中,最重要的是NIT、EIT和SDT,利用這3個(gè)表中的數(shù)據(jù)就可以構(gòu)成功能不同的EPG。

NIT的作用在上面已經(jīng)說過,SDT的作用是提供對(duì)每個(gè)業(yè)務(wù)的描述,使用戶能方便地了解每個(gè)業(yè)務(wù)的內(nèi)容。對(duì)于每一個(gè)TS都有一個(gè)SDT與之對(duì)應(yīng)。EIT實(shí)際上是一個(gè)節(jié)目表,對(duì)于每一個(gè)節(jié)目都存在一個(gè)獨(dú)立的EIT。

EPG包含兩個(gè)部分:一是播出前端的EPG編輯器;二是用戶端接收機(jī)相應(yīng)的控制軟件,兩部分一一對(duì)應(yīng),每個(gè)接收機(jī)的相關(guān)部分必須要按照前端定義的數(shù)據(jù)結(jié)構(gòu)來定制,從而接收顯示前端送出的業(yè)務(wù)信息。

SI一般在復(fù)用器合成TS時(shí)插入,有3種插入方式。

1、??將各表數(shù)據(jù)通過復(fù)用器廠家提供的應(yīng)用軟件接口由復(fù)用器插入到節(jié)目碼流中。

2、??將各表數(shù)據(jù)按MPEG-2標(biāo)準(zhǔn)打包,通過碼流播出卡輸出,再將之送入復(fù)用器的異步串行口與節(jié)目碼流復(fù)用。

3、??通過條件接收加擾器提供的接口插入,因此可通過局域網(wǎng)將數(shù)據(jù)表送入加擾器,由加擾器向碼流中插入SI。

四、接收機(jī)與EPG

DVB接收機(jī)又稱機(jī)頂盒,它是接收DVB節(jié)?目的用戶端設(shè)備。打開接收機(jī),通常都有一個(gè)開機(jī)畫面,這個(gè)畫面實(shí)際上是一個(gè)存儲(chǔ)于機(jī)頂盒內(nèi)的一個(gè)菜單選擇頁面,它是由稱為裝載器的控制軟件生成的用戶操作?界面,用戶可通過遙控器進(jìn)行選擇操作。每個(gè)有線電視營運(yùn)商所開發(fā)的這個(gè)界面都有所不同,但功能是一樣的,其主要內(nèi)容是營運(yùn)商提供業(yè)務(wù)(節(jié)目)的分類和系統(tǒng)?設(shè)置及一些輔助功能。這些內(nèi)容構(gòu)成了頁面的最上層主菜單,其下一層菜單則通常由SI生成的EPG所構(gòu)成。

主菜單中的系統(tǒng)設(shè)置是為引導(dǎo)接收機(jī)快速準(zhǔn)確地接收到DVB節(jié)目而設(shè)的,其有最基本的有三個(gè)操作:信息檢測(cè)、節(jié)目搜索、軟件下載。

1、信息檢測(cè):它主要顯示目前DVB系統(tǒng)的主頻及相關(guān)參數(shù),如主頻頻率、碼率、調(diào)制方式、誤碼率、信號(hào)電平等,供維護(hù)人員檢測(cè)參考。

這里說明一下,所謂主頻是指SI所在碼流的調(diào)制頻率。

2、節(jié)目搜索:接收機(jī)在節(jié)目搜索時(shí)首先搜索主頻頻率,找出SI信息,然后生成EPG,又由EPG生成一個(gè)節(jié)目列表,這個(gè)節(jié)目列表包括節(jié)目名稱、節(jié)目說明、節(jié)目播出時(shí)間等,并將這個(gè)節(jié)目列表作為下一層菜單,每個(gè)下層菜單項(xiàng)都指向相應(yīng)節(jié)目所在的TS流,達(dá)到用戶能方便快捷地收看到所需節(jié)目的目的。

節(jié)目搜索分兩種方式:一種是手動(dòng)搜索,一種是自動(dòng)搜索。手動(dòng)搜索方式是通過人工輸入主頻頻率或DVB系統(tǒng)內(nèi)所有TS流的調(diào)制頻率來引導(dǎo)接收機(jī)接收;自動(dòng)方式是由軟件設(shè)置好相關(guān)的接收參數(shù),由軟件來引導(dǎo)接收機(jī)接收。

3、?軟件下載:在前面說過,接收機(jī)的裝載器必須要按照前端定義的數(shù)據(jù)結(jié)構(gòu)來定制,當(dāng)前端需要變更播出節(jié)目時(shí)(如增加或減少節(jié)目的播出,調(diào)整播出節(jié)目的類別等)?或更改主頻頻率時(shí),接收機(jī)的裝載器也應(yīng)作相應(yīng)的變更。所以,當(dāng)前端要作節(jié)目變更時(shí),營運(yùn)商必須要同時(shí)變更接收機(jī)的裝載器,并向所有接收機(jī)發(fā)出軟件更新信?息,用戶收到信息后,就可用軟件下載功能來更新接收機(jī)的裝載器了。

????綜上所述,構(gòu)成一個(gè)DVB系統(tǒng)最基本的業(yè)務(wù)信息應(yīng)該包括PSI和SI業(yè)務(wù)信息。EPG由SI生成,DVB接收機(jī)靠EPG來引導(dǎo)接收和選擇收看DVB節(jié)目。

三?兩篇很好的EPG相關(guān)文章

???1?基于DVB-SI的數(shù)字有線電視機(jī)頂盒節(jié)目指南的設(shè)計(jì)實(shí)現(xiàn)

?????????????????????????????????????????????????????????王景存 王瑞胡

?????????????????????????????????????????????????????????北京科技大學(xué)信息工程學(xué)院

????????????????????????????????????????????????????????武漢科技大學(xué)信息科學(xué)與工程學(xué)院??

摘要?本文介紹了電子節(jié)目指南信息的構(gòu)成以及MPEG-2?PSI和DVB-SI信息規(guī)范,提出了一種EPG信息的存儲(chǔ)結(jié)構(gòu)和節(jié)目數(shù)據(jù)庫的生成方案,并據(jù)此講述了如何在數(shù)字有線電視機(jī)頂盒中生成電子節(jié)目指南EPG。

  關(guān)鍵詞?機(jī)頂盒?MPEG-2?PSI節(jié)目專用信息?DVB-SI業(yè)務(wù)信息?電子節(jié)目指南?

1?引言?

  目前數(shù)字電視已經(jīng)進(jìn)入快速發(fā)展階段,與數(shù)字電視相關(guān)的業(yè)務(wù)也將大幅度增長。當(dāng)節(jié)目運(yùn)營商將大量的節(jié)目信息通過有線網(wǎng)絡(luò)提供給用戶,用?戶在欣賞高質(zhì)量節(jié)目源的同時(shí)如何才能方便快捷地找到這些業(yè)務(wù)或信息就成了開發(fā)者們需要解決的一個(gè)關(guān)鍵問題。電子節(jié)目指南(EPG,Electronic?Program?Guide)正是為了方便用戶對(duì)信息的獲取而制作的運(yùn)行于用戶端綜合接收解碼器(IRD,Integrated?Receiver?Decoder)的應(yīng)用程序,它通過電視屏幕向用戶提供由文字、圖形、圖像組成的人機(jī)交互界面,負(fù)責(zé)電視節(jié)目和各種業(yè)務(wù)的導(dǎo)航[1]。用戶通過電子節(jié)目指?南,能夠了解到節(jié)目的相關(guān)信息(包括節(jié)目時(shí)間、播放時(shí)間、內(nèi)容梗概等),并且實(shí)現(xiàn)對(duì)節(jié)目的快速檢索和訪問。?

  EPG的形成依賴于節(jié)目播出前端將符合DVB(Digital?Video?Broadcasting)標(biāo)準(zhǔn)的業(yè)務(wù)信息(SI,Service?Information)插入到承載節(jié)目信息的傳送流(TS,Transport?Stream)中,這些SI信息攜帶了EPG所需的全部數(shù)據(jù)。

2?電子節(jié)目指南信息的組成和傳輸?

  電子節(jié)目指南信息(以下簡稱EPG信息)由兩部分組成:基本EPG信息和擴(kuò)展EPG信息。?

  基本EPG信息是指完全可以用《數(shù)字廣播業(yè)務(wù)信息規(guī)范(GY/Z174-2001)》中的網(wǎng)絡(luò)信息表NIT、業(yè)務(wù)群關(guān)聯(lián)表BAT、業(yè)務(wù)描述表SDT、事件信息表EIT等進(jìn)行描述的EPG信息。?

  擴(kuò)展EPG信息是指在基本EPG信息之外,通過數(shù)據(jù)輪播傳遞的EPG信息,這些信息的入口采用EPG映射表EMT進(jìn)行描述,信息的內(nèi)容被封裝成具有多級(jí)目錄結(jié)構(gòu)的文件系統(tǒng),稱為擴(kuò)展EPG內(nèi)容信息(XECI)。?

 一個(gè)EPG系統(tǒng)至少應(yīng)該包括基本EPG信息[?2?]。?

  本文也僅就基本EPG信息進(jìn)行論述。?

  “數(shù)據(jù)廣播業(yè)務(wù)信息規(guī)范”中NIT、BAT、SDT、EIT和EMT表都被分成一個(gè)或若干個(gè)段(section)來表示,然后插入到?TS包中。段是一種用來把SI信息表和EPG信息表映射為TS包的語法結(jié)構(gòu),這些信息符合GB/T?17975.1定義的專用段語法結(jié)構(gòu)。段可直接映射到TS包中。段可能起始于TS包有效負(fù)載的起始處,但這并不是必須的,因?yàn)門S包有效負(fù)載的第一個(gè)段的?起始位置是由pointer_field字段指定的[?3?]。

3?MPEG-2?PSI節(jié)目專用信息與DVB-SI信息簡介?

  在數(shù)字電視中,所有的音、視頻信號(hào)和數(shù)據(jù)信息經(jīng)過編碼后,在進(jìn)入傳輸系統(tǒng)前,必須按照MPEG-2標(biāo)準(zhǔn)打包,形成固定長度的TS包,?包長為188字節(jié)或204字節(jié)。對(duì)于這些長度相同的包,如果沒有引導(dǎo)信息,IRD是無法找到所需要的碼流的。為此在MPEG-2標(biāo)準(zhǔn)中專門定義了節(jié)目專用?信息(PSI,Program?Specification?Information),其作用在于自動(dòng)設(shè)置和引導(dǎo)IRD進(jìn)行解碼[?4?]。?

  PSI信息由以下四種表組成:?(1)節(jié)目關(guān)聯(lián)表PAT;?(2)節(jié)目映射表PMT;?(3)網(wǎng)絡(luò)信息表NIT;?(4)條件訪問表CAT。?

  在實(shí)際應(yīng)用中,解碼器IRD要對(duì)某一路特定碼流進(jìn)行解碼時(shí),首先要找到PAT表,根據(jù)PAT表找到所需的節(jié)目及該節(jié)目對(duì)應(yīng)的PMT表?的PID。PMT表中可能包含多個(gè)數(shù)字碼流,每個(gè)碼流都有一個(gè)唯一的PID與之對(duì)應(yīng)。如果要解碼的是視頻碼流,則在PMT表中找到video?PID值,再從TS流中過濾出PID值與之匹配的TP包并送到視頻解碼器。?

  MEPG-2的PSI信息提供了相關(guān)節(jié)目組成和相互關(guān)系的信息,從而使得接收端IRD可以對(duì)多路傳輸流進(jìn)行解析,但是這些信息在實(shí)?際應(yīng)用中仍顯得不夠,它不能提供節(jié)目的名稱、節(jié)目的開始時(shí)間、持續(xù)時(shí)間及節(jié)目的附加信息等。為此在DVB中擴(kuò)展定義了SI業(yè)務(wù)信息。PSI信息基本上都是?與現(xiàn)行流(AS,Actual?Stream)相關(guān)的,而SI信息則可以包括不在現(xiàn)行流中的一些業(yè)務(wù)和事件信息,從而允許用戶進(jìn)行更多的選擇和了解更多的其它業(yè)務(wù)信息。?

與PSI定義的四種表不同,SI中定義了9種表,其中構(gòu)成基本EPG信息的最重要的表是網(wǎng)絡(luò)信息表NIT、業(yè)務(wù)描述表SDT和事件信息表EIT。?SI?表傳送的信息都是通過描述符(descriptor)的形式給出的。?

  每個(gè)描述符都以descriptor_tag(用于唯一標(biāo)識(shí)descriptor的類型)和descriptor_length開始。不同的描述符用于描述不同SI表中承載的信息[?6?]。

4?系統(tǒng)介紹?

  本EPG系統(tǒng)是在STMicroelectronic公司所提供的機(jī)頂盒開發(fā)方案上實(shí)施的,其主控制芯片采用STi5518,內(nèi)部集?成有32位主CPU、專用DVB傳輸流解復(fù)用和解擾模塊、MEPG-2音、視頻解碼單元、數(shù)字視頻編碼器及各種接口等。與之配套的軟件開發(fā)平臺(tái)選用的也是?該公司開發(fā)的STLite/OS20嵌入式操作系統(tǒng),支持多任務(wù)、存儲(chǔ)器管理、進(jìn)程調(diào)度、定時(shí)器管理等實(shí)時(shí)特性。該系統(tǒng)能實(shí)時(shí)接收用戶通過遙控按鍵或前面?板觸發(fā)的交互信號(hào),實(shí)現(xiàn)節(jié)目基本信息的瀏覽、節(jié)目列表的生成、節(jié)目之間的跳轉(zhuǎn)以及節(jié)目預(yù)告信息的查詢等。

5?系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)

5.1?EPG信息的存儲(chǔ)結(jié)構(gòu)?

  TS流里攜帶的EPG數(shù)據(jù)信息通過IRD接收以后都以樹狀鏈表的結(jié)構(gòu)存儲(chǔ)在PROG_INFO_STRUCT和TRANSPONDER_INFO_STRUCT這樣兩個(gè)結(jié)構(gòu)中。?

  在本機(jī)頂盒有關(guān)節(jié)目操作的各項(xiàng)功能中,絕大部分都與節(jié)目數(shù)據(jù)庫有關(guān),比如自動(dòng)節(jié)目搜索時(shí),需要建立節(jié)目數(shù)據(jù)庫,并為搜索到的節(jié)目在數(shù)?據(jù)庫中建立相應(yīng)的數(shù)據(jù)單元,用于存儲(chǔ)該節(jié)目的各種信息;在切換節(jié)目時(shí),需要根據(jù)不同節(jié)目中音、視頻數(shù)據(jù)的PID值從而選擇不同的碼流進(jìn)行音、視頻解碼等。?

  節(jié)目數(shù)據(jù)庫主要來自PSI表的內(nèi)容。?

  在具體的軟件實(shí)現(xiàn)過程中,節(jié)目數(shù)據(jù)庫的建立主要通過ParsePAT()、ParsePMT()兩個(gè)函數(shù)來實(shí)現(xiàn)。ParsePAT()函數(shù)調(diào)用的結(jié)果是得到有線傳輸系統(tǒng)中不同的節(jié)目PID,而ParsePMT則獲取各個(gè)節(jié)目中音、視頻碼流的PID值?

5.2?節(jié)目跳轉(zhuǎn)的實(shí)現(xiàn)?

  系統(tǒng)響應(yīng)用戶在不同節(jié)目之間的切換時(shí),需要將用戶選定節(jié)目的音、視頻碼流從復(fù)用的多路節(jié)目碼流中提取出來并分別送到音、視頻解碼器進(jìn)?行解碼。它依賴于硬件可編程傳輸接口(PTI,Programmable?Transport?Interface)來實(shí)現(xiàn)。在系統(tǒng)生成的節(jié)目數(shù)據(jù)庫結(jié)構(gòu)中的stProgNo變量存儲(chǔ)有轉(zhuǎn)發(fā)器號(hào)TransponderId及節(jié)目的音、視頻PID值。

5.3?事件信息的獲取?

  事件信息表EIT按時(shí)間順序提供每個(gè)業(yè)務(wù)中包含的事件的信息。(這里的事件相當(dāng)于傳統(tǒng)意義上的節(jié)目,而業(yè)務(wù)則指的是提供節(jié)目源的某個(gè)?電視臺(tái),如業(yè)務(wù)“中央電視臺(tái)-1”的事件“新聞聯(lián)播”。)EIT包含兩種不同類型的表,分別為EIT?present/following(簡稱EIT?p/f)和EIT?Schedule(EIT-S)。EIT?p/f給出了指定業(yè)務(wù)中當(dāng)前和后一個(gè)事件的信息,而EIT-S則包含一周內(nèi)或更長時(shí)間的節(jié)目預(yù)告信息。任何構(gòu)成EIT的event?information?section均在PID為0x0012的TS包中傳輸,它給出了業(yè)務(wù)中事件的名稱、事件開始時(shí)間、持續(xù)時(shí)間及其他一些信息。?

  ?以下以EIT?p/f為例來講述事件信息的獲取方式:?

在EIT?p/f中,每個(gè)業(yè)務(wù)service都用兩個(gè)section分別來描述當(dāng)前(present)和后續(xù)(following)信息,其中的section?number為0?的用來描述當(dāng)前事件,而section?number為1的section則用來描述后續(xù)事件。?

  在節(jié)目信息結(jié)構(gòu)PROG_INFO_STRUCT中,定義了EVENT_INFO_BASIC類型的二維數(shù)組?event_info_database[2]用來存放一個(gè)業(yè)務(wù)中的present和following事件的信息。這些信息包括事件的名稱、事件的開始?時(shí)間、事件的持續(xù)時(shí)間。?

  事件的日期和時(shí)間在TS流里是按照MJD(Modified?Julian?Date,修正的儒略日期)+?UTC(Universal?Time?Co-ordinate,通用時(shí)間坐標(biāo))的格式并以16進(jìn)制的形式給出的。在MJD+UTC和local?MJD+local?time之間的轉(zhuǎn)換可參照GY/Z174-2001來進(jìn)行。如TS流里的數(shù)據(jù)為0xCE1F?0056?0001?0600,則轉(zhuǎn)換以后得到的信息為:該事件的播出時(shí)間為2003年5月8日,星期四,開始時(shí)間為00:56:00,持續(xù)時(shí)間為01:06:00。?

而事件的名稱則通過解析描述符short_event_descriptor來實(shí)現(xiàn)。并將得到的信息存儲(chǔ)在event_info_database結(jié)構(gòu)中。?

  所有解析得到的信息最終都將存儲(chǔ)在節(jié)目數(shù)據(jù)庫中,提供給顯示模塊直接調(diào)用。

6?結(jié)束語?

  真正完整意義上的EPG的功能是十分強(qiáng)大的,它不僅能提供節(jié)目表單和當(dāng)前節(jié)目播放等基本功能,還可提供節(jié)目預(yù)定和家長分級(jí)控制等高級(jí)?功能。本文從實(shí)用的角度給出了一個(gè)基本EPG系統(tǒng)的實(shí)現(xiàn)方案。另外我們也實(shí)現(xiàn)了EPG交互式應(yīng)用中的SI增值業(yè)務(wù)如天氣預(yù)報(bào)、新聞、股票數(shù)據(jù)等的接收,以?菜單觸發(fā)的形式提供給用戶一個(gè)由文本和圖形組成的反饋信息。?

  王景存,北京科技大學(xué)信息工程學(xué)院,副教授,博士;?

  王瑞胡,武漢科技大學(xué)信息科學(xué)與工程學(xué)院,碩士研究生,研究方向:數(shù)字信號(hào)處理。?

?????????

???????????????????

????????????2?數(shù)字電視的電子節(jié)目指南(EPG)及其系統(tǒng)

數(shù)字電視由于傳輸數(shù)字化,多種業(yè)務(wù)可以混合在一起通過一個(gè)信道傳輸。因此,數(shù)字電視已經(jīng)不是單一的電視業(yè)務(wù),而是指通過電視傳輸通道傳輸?shù)臄?shù)字業(yè)務(wù),包括?視頻、音頻、圖像、數(shù)據(jù)等。全球數(shù)字電視已經(jīng)進(jìn)入快速發(fā)展階段。可以預(yù)見,在今后幾年,與數(shù)字電視相關(guān)的業(yè)務(wù)將大幅度增長。隨之而來的問題是,當(dāng)數(shù)字電視?能為用戶提供數(shù)倍于目前節(jié)目量的節(jié)目及多種業(yè)務(wù)時(shí),用戶怎樣才能便捷地找到所要的節(jié)目和信息呢?電子節(jié)目指南(EPG)顯然是必不可少的工具。

 ?  ?電子節(jié)目指南給用戶提供一個(gè)容易使用的、界面友好的、可以快速訪問節(jié)目的一種方式,用戶還可以通過該功能收看一個(gè)或多個(gè)頻道,甚至所有頻道近期將播放的節(jié)?目。同時(shí),EPG可提供分類功能,可以幫助用戶瀏覽和選擇各種類型的節(jié)目。當(dāng)然電子節(jié)目指南對(duì)業(yè)務(wù)提供商也有很重要的意義。?

數(shù)字電視的信息

1、節(jié)目說明信息

 ?  ?在數(shù)字電視中,所有的信息和信號(hào),包括視頻、音頻、文字、圖片等經(jīng)數(shù)字化后都變成了數(shù)據(jù)。數(shù)據(jù)在傳輸前要按照有關(guān)標(biāo)準(zhǔn)(一般是MPEG-2)打包,形成固?定長度的傳送(TS)包,MPEG-2的TS包長為188字節(jié),然后再通過網(wǎng)絡(luò)快速傳輸?shù)侥康牡亍?duì)于這些長度相同的TS包,如果沒有引導(dǎo)信息,接收端解?碼器是無法找到需要的碼流的。因此,在MPEG-2中專門定義了PSI。PSI的作用是自動(dòng)設(shè)置和引導(dǎo)解碼器進(jìn)行解碼。?PSI由節(jié)目關(guān)聯(lián)表(PAT)、條件接收表(CAT)、節(jié)目映射表(PMT)和網(wǎng)絡(luò)信息表(NIT)組成,每個(gè)表分成若干段映射(變換)到TS中傳輸。

 ?  ?PSI的幾個(gè)表包含了解碼和重現(xiàn)節(jié)目所需信息,其主要作用是找到節(jié)目和要解壓縮的碼流。其中PAT是所有表的根,它的PID值為0。實(shí)際應(yīng)用中,解碼器要?對(duì)一特定碼流解碼時(shí),首先要找到PAT。然后在PAT中找到所需節(jié)目(比如節(jié)目1),根據(jù)節(jié)目1相應(yīng)的PMT的PID(如22),找到節(jié)目1的PMT。?PMT中可能包括多個(gè)數(shù)字碼流(包括視頻碼流、音頻碼流和數(shù)據(jù)碼流),每個(gè)碼流也有一個(gè)PID。如果要解碼的是視頻碼流,則在PMT中找到視頻碼流的?PID是54,再到TS中去找PID是54的包,并把所有PID是54的包送到視頻解碼器。在PAT中,節(jié)目0總是為NIT預(yù)留的。

   ?這里PID值是十進(jìn)制的,在有關(guān)標(biāo)準(zhǔn)中分配的PID值是十六進(jìn)制的,即用0×開頭的值表示。如十進(jìn)制的22、54,在十六進(jìn)制中分別是0×16、0×36。

2、業(yè)務(wù)信息

 ?  ?PSI數(shù)據(jù)提供接收機(jī)能自動(dòng)設(shè)置的信息,使之能對(duì)復(fù)用流中的不同節(jié)目流進(jìn)行解碼。但是PSI表不能提供有關(guān)業(yè)務(wù)和節(jié)目的識(shí)別信息。因此,DVB組織對(duì)?MPEG-2的PSI進(jìn)行了擴(kuò)展,提供了不同信息種類的多種表格,稱之為SI。SI是用來描述傳送系統(tǒng)、傳送內(nèi)容和廣播數(shù)據(jù)流時(shí)間表等數(shù)據(jù),它幫助綜合接?收解碼器(IRD)自動(dòng)調(diào)諧,給用戶提供附加信息,使IRD能自動(dòng)設(shè)置可供選擇的業(yè)務(wù)。?

   ?SI由業(yè)務(wù)群關(guān)聯(lián)表(BAT)、業(yè)務(wù)描述表(SDT)、事件信息表(EIT)等9個(gè)表提供,它們分成若干段映射到TS包中傳輸。

   ?在PSI中,網(wǎng)絡(luò)信息表(NIT)的內(nèi)容是專用的且未作規(guī)定,但在SI表中專門定義了NIT的語法和語義,擴(kuò)展了NIT的數(shù)據(jù)格式,旨在提供更多有關(guān)物理網(wǎng)絡(luò)的信息。

 ?  ?與PSI中PAT、PMT、CAT不同的是,SI的9個(gè)表在實(shí)際使用中并不都是強(qiáng)制性傳送的。在實(shí)際(現(xiàn)行)傳送系統(tǒng)中,NIT、SDT、EIT及TDT?的傳送是強(qiáng)制性的。在其它傳送系統(tǒng)中,NIT、SDT、EIT是可選傳送的。BAT、RST、TOT在任何情況下都是可選傳送的。ST、SIT和DIT則?是需要時(shí)才存在。

?

   ?除攜帶時(shí)間表信息的EIT外,所有的PSI和SI表都不能加擾,以免影響解碼器正常工作。

   ?在實(shí)際應(yīng)用中,節(jié)目播出前端將符合標(biāo)準(zhǔn)定義的PSI和SI表插入TS包,構(gòu)成數(shù)字電視廣播碼流,傳輸給用戶。接收端解碼器根據(jù)PSI解復(fù)用和解碼所需的碼流,利用SI提供的數(shù)據(jù)構(gòu)成各種功能的EPG。解碼器根據(jù)包標(biāo)識(shí)符(PID)和表標(biāo)識(shí)符找到所需的碼流和數(shù)據(jù)。

   ?在插入TS之前,PSI和SI表被分成一段或若干段。段是用來把PSI和SI變換為TS包的語法結(jié)構(gòu),其長度是可變的。EIT的段限長4096字節(jié),其余PSI和SI表的段限長1024字節(jié)。每段包含以下元素:表標(biāo)識(shí)符、表標(biāo)識(shí)符擴(kuò)展、版本號(hào)和當(dāng)前/后續(xù)指示符。

   ?PSI和SI表分段映射到TS包后,帶有相應(yīng)的包標(biāo)識(shí)符,用以指示TS包的性質(zhì)。表標(biāo)識(shí)符是為了標(biāo)識(shí)段是屬于什么表的。

 ?  ?PSI表只能在確切知道節(jié)目是什么、在什么時(shí)間播出時(shí)才能找到要解碼的碼流,并不提供有關(guān)節(jié)目是什么、在什么時(shí)間開始等信息,也沒有多種碼流的選擇信息。?在數(shù)字電視業(yè)務(wù)不斷增加的情況下,用戶在選擇業(yè)務(wù)時(shí)會(huì)感到很不方便。如果能將用戶所需信息有序組織起來,提供類似節(jié)目報(bào)、又能在電視機(jī)上即時(shí)瀏覽的功能,?將大大方便用戶使用。EPG正好能起到這種作用。

   ?根據(jù)《數(shù)字電視廣播業(yè)務(wù)信息規(guī)范》對(duì)EPG的要求,EPG應(yīng)提供節(jié)目單和當(dāng)前節(jié)目播放等基本功能,還可提供節(jié)目附加信息、節(jié)目分類、節(jié)目預(yù)訂和家長分級(jí)控制等高級(jí)功能。

   ?在交互電視中,EPG更復(fù)雜,應(yīng)能提供諸如節(jié)目內(nèi)容背景資料、視角切換、天氣預(yù)報(bào)、游戲等功能。

   ?EPG的這些功能均可通過SI提供的數(shù)據(jù)來實(shí)現(xiàn)。也就是說SI是實(shí)現(xiàn)EPG功能的前提。在SI表中,最重要的是NIT、EIT和SDT,利用這3個(gè)表中的數(shù)據(jù)就可以構(gòu)造出功能不同的EPG。

3、網(wǎng)絡(luò)信息表

   ?在PSI中定義的NIT的傳送是可選的。在SI中,要求在實(shí)際(現(xiàn)行)傳送流中,NIT的傳送是強(qiáng)制性的。?

   ?NIT指出了傳送當(dāng)前業(yè)務(wù)的物理網(wǎng)絡(luò)信息及該網(wǎng)絡(luò)的特性,例如業(yè)務(wù)是通過何種傳送系統(tǒng)(衛(wèi)星或地面或有線)傳送的、傳送系統(tǒng)的有關(guān)參數(shù)等。任一網(wǎng)絡(luò)由獨(dú)立分配的網(wǎng)絡(luò)標(biāo)識(shí)符值唯一標(biāo)識(shí)。?

   ?NIT主要攜帶網(wǎng)絡(luò)標(biāo)識(shí)符、網(wǎng)絡(luò)名稱和傳送系統(tǒng)參數(shù)等信息。

   ?傳送系統(tǒng)有兩個(gè)標(biāo)識(shí),即網(wǎng)絡(luò)標(biāo)識(shí)符和原始網(wǎng)絡(luò)標(biāo)識(shí)符。當(dāng)NIT在產(chǎn)生TS的網(wǎng)絡(luò)上傳送時(shí),網(wǎng)絡(luò)標(biāo)識(shí)符和原始網(wǎng)絡(luò)標(biāo)識(shí)符取同一值。在原始網(wǎng)絡(luò)標(biāo)識(shí)符中的每個(gè)業(yè)務(wù)標(biāo)識(shí)符都是唯一的。含于TS中的某個(gè)業(yè)務(wù)轉(zhuǎn)移到另一傳送系統(tǒng)時(shí),網(wǎng)絡(luò)標(biāo)識(shí)符改變,原始網(wǎng)絡(luò)標(biāo)識(shí)符保持不變。

   ?衛(wèi)星傳送系統(tǒng)的參數(shù)有:軌道位置、軌道的東西標(biāo)志、頻率、調(diào)制方式、極化方式、符號(hào)率及前向糾錯(cuò)(FEC)內(nèi)碼。

   ?有線傳送系統(tǒng)參數(shù)包括:頻率、調(diào)制方式、FEC外碼、符號(hào)率、FEC內(nèi)碼。 

   ?地面?zhèn)魉拖到y(tǒng)參數(shù)我國還未定義。

   ?NIT中提供的上述數(shù)據(jù)是供解碼器自動(dòng)搜索頻道用的,也可以顯示出來為用戶提供參考數(shù)據(jù)。另外,還可以傳輸一些可選信息,如多語種提供網(wǎng)絡(luò)名稱、業(yè)務(wù)列表等。

?

4、業(yè)務(wù)描述表?

   ?SDT的每一個(gè)子表都對(duì)一個(gè)特定TS流中的業(yè)務(wù)進(jìn)行描述。這些業(yè)務(wù)可能是實(shí)際TS流的一部分,也可能是其它TS流的一部分,可以通過不同的表標(biāo)識(shí)符來區(qū)分。(業(yè)務(wù)如CCTV1等)

   ?SDT可分成若干業(yè)務(wù)描述段,任何構(gòu)成SDT的段都要由PID為0×0011的TS包傳送。

   ?SDT提供業(yè)務(wù)所屬的業(yè)務(wù)群、業(yè)務(wù)使用的加密系統(tǒng)、與其它業(yè)務(wù)的鏈接信息、該業(yè)務(wù)的準(zhǔn)用國家、業(yè)務(wù)名稱和業(yè)務(wù)提供者、業(yè)務(wù)是否允許NVOD,以及多畫面的控制、實(shí)現(xiàn)交互式回傳信道的電話號(hào)碼和多語種業(yè)務(wù)名稱等信息。

   ?為了更容易獲得有關(guān)業(yè)務(wù),一般遵循這樣一些規(guī)則:對(duì)于實(shí)際TS,SDT的傳送是強(qiáng)制性的,而且在一特定TS的SDT中,SI碼流至少應(yīng)列出該TS中的所有業(yè)務(wù)信息;其它TS的SDT應(yīng)當(dāng)列出該TS的所有業(yè)務(wù)。

5、事件信息表?(事件如新聞聯(lián)播等)

   ?EIT按時(shí)間順序提供每個(gè)業(yè)務(wù)中包含的事件的信息,其類型通過表識(shí)別符進(jìn)行區(qū)別,見《數(shù)字電視廣播業(yè)務(wù)信息規(guī)范》中的表2。任何構(gòu)成EIT段均在PID為0×0012的傳送包中進(jìn)行傳送

   ?當(dāng)前/后續(xù)事件信息表(EIT?present/following)只包含給定業(yè)務(wù)中的當(dāng)前和后續(xù)一個(gè)事件的信息,但在NVOD情況下可以有多于兩個(gè)事件描述信息。而EIT?Schedule(EIT-S)則包含一周內(nèi)或更長時(shí)間的節(jié)目預(yù)告信息.

   ?EIT提供的信息包括:事件的標(biāo)識(shí)號(hào)、起始時(shí)間、節(jié)目長度;播放狀態(tài)、是否加密;事件的詳細(xì)介紹;兩段同樣事件的時(shí)間偏移;事件多語種的簡短介紹;節(jié)目限定的級(jí)別等。

   ?在所有PSI和SI表中,只有EIT的時(shí)間表可以被加擾。

電子節(jié)目指南的構(gòu)成

   ?根據(jù)NIT、SDT和EIT等SI表提供的信息,可以構(gòu)成各種各樣的EPG,使用戶能通過多種方式找到所要的信息。

   ?在數(shù)字電視系統(tǒng)中,對(duì)于電視臺(tái)和用戶來說,增加EPG功能是非常必要的,而EPG所需的信息正是由SI提供的。

 ?  ?實(shí)際上SI表提供的各種信息是通過描述符來實(shí)現(xiàn)的?!稊?shù)字電視廣播業(yè)務(wù)信息規(guī)范》中的表12列出了描述符在SI表中最可能出現(xiàn)的位置,從中可以看到,同一?類信息允許出現(xiàn)在多個(gè)SI表中,而且表示的是標(biāo)識(shí)符最可能出現(xiàn)的位置,并沒有限制在其它表中使用該標(biāo)識(shí)符;此外,SI表提供的各種信息并不都是強(qiáng)制性的。?這樣就為EPG前端系統(tǒng)和SI編輯器的開發(fā)提供了較大的空間和靈活性,同時(shí)也表明EPG是一種定制系統(tǒng),它的功能與節(jié)目業(yè)務(wù)提供商打算向用戶提供什么樣的?服務(wù)有關(guān)。?

   ?EPG包含兩個(gè)部分:一是播出前端的EPG編輯器;二是用戶端數(shù)字電視接收機(jī)中相應(yīng)的接收/顯示/控制軟件。兩部分一一對(duì)應(yīng),如果一個(gè)廠家的接收機(jī)產(chǎn)品要?進(jìn)入一個(gè)業(yè)已采用某種EPG前端產(chǎn)品(數(shù)據(jù)結(jié)構(gòu)封裝)的傳輸網(wǎng)絡(luò)(用戶群體),則必須按照前端定義的數(shù)據(jù)結(jié)構(gòu)來改造其接收機(jī)的相關(guān)部分,從而接收顯示前端?送出的業(yè)務(wù)信息。而在EPG前端編輯器中,根據(jù)所需的功能,將采用適當(dāng)?shù)拿枋龇麃硖峁┯嘘P(guān)的信息。?

EPG系統(tǒng)的組成

   ?EPG系統(tǒng)分為前端子系統(tǒng)和接收端子系統(tǒng),前端子系統(tǒng)主要負(fù)責(zé)SI數(shù)據(jù)的組織和生成,一般來說,由一個(gè)專門的SI復(fù)用器(SI?Server?)來完成這部分工作,并把生成的SI數(shù)據(jù)與節(jié)目等的其它數(shù)據(jù)流進(jìn)行系統(tǒng)層復(fù)用,在TS流中傳輸。

   ?接收端子系統(tǒng)主要負(fù)責(zé)SI數(shù)據(jù)的接收、解析等。

?

綜合接收解碼器(Integrated?Receive?Decoder,IRD)從接收的TS流中解析出SI數(shù)據(jù),并在本地建立SI數(shù)據(jù)庫,用戶通過EPG界面與SI數(shù)據(jù)庫進(jìn)行交互。為了方便用戶的隨機(jī)接入,?SI數(shù)據(jù)是重復(fù)發(fā)送的,有關(guān)它的重傳速率在EN?300?468[1]中有詳細(xì)的規(guī)定。接收端不停地接收、解析來自發(fā)端的SI數(shù)據(jù),當(dāng)發(fā)端的SI數(shù)據(jù)改變時(shí),SI數(shù)據(jù)庫更新,否則接收的SI數(shù)據(jù)被丟棄。?

?

 ?  ?EPG的應(yīng)用程序運(yùn)行于數(shù)字電視的機(jī)頂盒中,應(yīng)用程序管理器負(fù)責(zé)EPG應(yīng)用的管理,上層的EPG?API屏蔽了下層的軟硬件實(shí)體,使編寫EPG應(yīng)用程序時(shí)可以不考慮底層的具體實(shí)現(xiàn),只需要調(diào)用相應(yīng)的API函數(shù),下層的DVB-SI?API也是起同樣的作用。下層的解復(fù)用模塊接收TS流,解出DVB?SI數(shù)據(jù)流,再經(jīng)SI數(shù)據(jù)解析模塊,生在SI信息表,存于本地?cái)?shù)據(jù)庫中,由DVB-SI?API提供的接口向上層提供服務(wù)。

   ?國內(nèi)外的EPG系統(tǒng)的實(shí)現(xiàn)方案,概括起來主要有以下兩種:

 ?  ?(1)本地應(yīng)用方案:這種實(shí)現(xiàn)方案要求節(jié)目列表及詳細(xì)信息作為業(yè)務(wù)信息的形式復(fù)用于MPEG-2傳輸層中,數(shù)據(jù)經(jīng)信道傳輸后,在接收端的解碼器對(duì)這些數(shù)據(jù)?進(jìn)行解碼,并在接收機(jī)RAM中形成專用的EPG數(shù)據(jù)庫,EPG應(yīng)用將檢索數(shù)據(jù)庫并根據(jù)用戶輸入的指令顯示用戶關(guān)心的節(jié)目信息。目前大多數(shù)廠商提供的EPG?采用該種實(shí)現(xiàn)方案。

   ?(2)交互式實(shí)現(xiàn)方案:這種實(shí)現(xiàn)方案首先要求數(shù)字電視機(jī)頂盒的軟件系統(tǒng)中有中間件(以HTML引擎為例),在發(fā)送端的EPG服務(wù)器將把HTML頁面的形式?組織,通過數(shù)據(jù)廣播信道傳輸?shù)綑C(jī)頂盒,機(jī)頂盒通過HTML引擎顯示這些頁面,如同在PC世界中的瀏覽網(wǎng)頁。用戶與EPG的交互分成兩種形式,對(duì)于沒有回傳?信道的情況下,HTML頁面通過Data?Carousel發(fā)送,實(shí)現(xiàn)本地交互;而對(duì)于有回傳信道的情況下,機(jī)頂盒將根據(jù)用戶的輸入從網(wǎng)絡(luò)中獲取新的所需頁面。該方案以O(shè)penTV為代表。

   ?上述兩種實(shí)現(xiàn)方案都要求業(yè)務(wù)信息或HTML頁面隨著時(shí)間遷移或節(jié)目修改而做相應(yīng)變更,對(duì)于本地應(yīng)用和本地交互方案還要求數(shù)據(jù)有一定的重傳率,以保證EPG的隨機(jī)接入。

   ?比較上述兩種實(shí)現(xiàn)方案,前者的EPG顯示形式是由接收機(jī)中的EPG應(yīng)用完全決定的,發(fā)送端只提供必須的信息條目,比較容易實(shí)現(xiàn);后者的EPG顯示形式完全由EPG服務(wù)器提供的頁面決定,即由發(fā)送端決定。?

EPG系統(tǒng)的關(guān)鍵技術(shù)?

 ?  ?實(shí)現(xiàn)EPG系統(tǒng)主要有以下幾個(gè)關(guān)鍵技術(shù):發(fā)端的SI數(shù)據(jù)的組織和生成,接收端SI數(shù)據(jù)的接收和解析,接收端SI數(shù)據(jù)庫的建立,EPG界面的顯示等。其中有?些是用硬件實(shí)現(xiàn),如SI數(shù)據(jù)的接收和解析;有些則用軟件實(shí)現(xiàn),如SI數(shù)據(jù)庫的建立和EPG界面的顯示。具體如下:

1、SI數(shù)據(jù)的組織和生成

 ?  ?發(fā)端的SI數(shù)據(jù)的組織和生成,由發(fā)端的SI服務(wù)器(SI?Server)完成這部分功能,接收端的SI解析與此功能相反,主要負(fù)責(zé)SI數(shù)據(jù)表的重建。SI數(shù)據(jù)的組織要符合DVB-SI中的語法定義和MPEG-2?的語法定義,同時(shí)要縱觀傳輸網(wǎng)絡(luò)中的所有業(yè)務(wù)信息。信息內(nèi)容應(yīng)與PSI和SI表中的信息相對(duì)應(yīng),它可按照Network-Transport?Stream-Service-Event的分層順序描述,同時(shí)內(nèi)嵌Transport?Stream-Program(Service)-Element?Stream的分層順序。?

?

2、SI數(shù)據(jù)庫的建立?

 ?  ?SI數(shù)據(jù)必須按照一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ),這樣才能方便、快捷地對(duì)其進(jìn)行檢索和數(shù)據(jù)的提取。特別是對(duì)EPG系統(tǒng),運(yùn)行于機(jī)頂盒的實(shí)時(shí)操作系統(tǒng)中,需要對(duì)用?戶的交互進(jìn)行實(shí)時(shí)的動(dòng)作。SI數(shù)據(jù)庫建立的好壞對(duì)其性能有重要的影響。SI數(shù)據(jù)主要有:網(wǎng)絡(luò)信息、傳輸流信息、業(yè)務(wù)(節(jié)目)信息,業(yè)務(wù)的事件信息等,并且?大量的信息都是通過描述子來傳輸?shù)?#xff0c;所以可用樹狀鏈表來存儲(chǔ)數(shù)據(jù),構(gòu)成從網(wǎng)絡(luò)、傳輸流、業(yè)務(wù)、事件的樹狀結(jié)構(gòu),傳送不同信息的描述子用繼承于同一基類的描?述子類來表示。?

3、EPG系統(tǒng)的顯示技術(shù)?

   ?當(dāng)電視節(jié)目和EPG應(yīng)用同時(shí)啟動(dòng)時(shí),用戶看到的可能是節(jié)目畫面和EPG界面的疊加,用戶所看到的電視畫面從前到后可以分為三層,依次為圖形層、視頻層和背景層。

 ?  ?這里的圖形層也就是下面所說的OSD(On?Screen?Display)層,OSD界面顯示技術(shù)指在圖像畫面上疊加文字顯示,使屏幕為用戶提供更多的附加信息。視頻層為當(dāng)前正在收看的節(jié)目(解碼出來的活動(dòng)圖?像);背景層為沒有播放電視節(jié)目和啟動(dòng)EPG菜單時(shí)的屏幕圖像。EPG畫面在圖形層上構(gòu)建,EPG畫面是由許多EPG圖形元素(如按鈕、文本框、選擇按?鈕、組件容器等)疊加而成。界面的狀態(tài)轉(zhuǎn)移是通過消息驅(qū)動(dòng)的機(jī)制來實(shí)現(xiàn)的,在消息響應(yīng)函數(shù)中進(jìn)行消息處理。見到的屏幕圖像是這三層的疊加(blend)后?的圖像。

   ?EPG界面顯示的總體思想是:SI數(shù)據(jù)與圖形元素分離。包括以下幾部分:SI數(shù)據(jù)的檢索與提取,EPG界面所需的圖形元素庫,狀態(tài)轉(zhuǎn)移控制器,OSD層繪?制引擎,OSD層圖、視頻層、背景層及這三層的Blend操作。SI數(shù)據(jù)檢索模塊快速的檢索本地SI數(shù)據(jù)庫,提供EPG界面當(dāng)前輸入焦點(diǎn)所需的數(shù)據(jù)信息;?OSD層圖形元素庫提供界面所需的圖形元素,該庫存于本地機(jī)頂盒的ROM中;狀態(tài)轉(zhuǎn)移控制器接收用戶遙控器的輸入,提供當(dāng)前顯示所需的活動(dòng)焦點(diǎn),控制狀態(tài)?轉(zhuǎn)移地流向;OSD層圖像是指EPG界面圖形元素合成后的圖像;OSD繪制引擎決定顯示的相應(yīng)算法,接收各模塊提供的數(shù)據(jù),完成OSD層圖形的繪制,最后?是OSD層、視頻層和背景層的blend操作。

   ?數(shù)字電視的優(yōu)勢(shì)不僅僅是提供高質(zhì)量的視頻、音頻節(jié)目,更重要的是采用數(shù)字化處理后,提供了業(yè)務(wù)的靈活性和多樣性。其中電子節(jié)目指南,它描述節(jié)目的播出時(shí)間?和簡要內(nèi)容,可幫助觀眾方便快速地尋找自己感興趣的節(jié)目。將為觀眾收看電視帶來極大的幫助,因此。必須重視數(shù)字電視的電子節(jié)目指南系統(tǒng)的研究和內(nèi)容的制作。

???

?????轉(zhuǎn):http://blog.163.com/hweizhou@126/blog/static/347885762007112911523013/

總結(jié)

以上是生活随笔為你收集整理的数字电视业务PSI/SI学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。