歐陽利,林巖,張烽
(北京航空航天大學,北京 100191)
DVB-C標準下傳輸流解復用器的軟件系統設計
歐陽利,林巖,張烽
(北京航空航天大學,北京 100191)
本文介紹了DVB-C標準下傳輸流的復用/解復用原理,提出了利用軟件對傳輸流解復用及服務信息解析的解決方案,并通過STM320DM8168芯片實現了靈活、高效的軟件解復用系統。整個解復用系統主要包括了PID過濾、PSI解析和SI解析三部分。
DVB-C;解復用;嵌入式軟件;STM320DM8168
MPEG-2作為數字音視頻壓縮的國際通用標準,在數字視頻廣播系統中廣泛應用[1]。而隨著全球數字電視的發展,數字電視業務變得復雜多樣,數據傳輸需要更完善的標準。DVB-C標準基于MPEG-2的數據壓縮和復用技術,在MPEG-2已有的4個PSI(Program Specific Information)表的基礎上進行擴充,增加了9個表用來提供電子節目指南服務,發展為SI(Service Information)[2]。SI是對整個網絡所有傳輸流的描述,包括網絡信息、音視頻數據流、條件接收系統、業務信息以及節目信息和節目時間表等。實現對DVB-C傳輸流的高效解復用,提取出音視頻流和相關業務信息對于有線數字電視系統具有重要意義。本文提出了一種利用軟件實現對DVB-C傳輸流的解復用,并通過對SI的解析生成電子節目指南(EPG)的實現方案。
MPEG-2系統層規范[3]描述了多路音視頻的ES流和系統數據的復用機制。根據ISO/TFC 13818-1協議,原始音視頻數據經過音視頻編碼器壓縮編碼,得到基本流ES (Elementary Stream),系統編碼器將ES流進行分組打包,并加入同步時鐘TPS及DTS,得到PES 流(Packed Elementary Stream);同一個節目的多個PES流及節目信息經過節目復用器,得到一路TS流。為了充分利用帶寬,再將多個節目的TS流進行第二層復用。將第一層復用得到的節目TS流以及系統相關信息通過傳輸復用器進行二次復用,同時加入節目參考時鐘PCR(Program Clock Reference),得到最終的DVB-C TS流。雙層復用原理如圖1所示。

圖1 雙層復用原理
最終得到的TS流的包長度是相對固定的,每個包長為188字節或204字節,分為包頭和有效負載兩部分[4]。包頭的PID值為TS包的標識,用來表示TS包的類型,如同一個表的所有TS包具有相同PID。解復用與復用相反,是從TS流中分離出各個節目的音視頻碼流,并解析出相應的節目信息。
整個解復用軟件系統分為三大部分:PID過濾、PSI解析和SI解析。依據DVB標準對各個表PID定義,PID過濾模塊對TS包進行分類處理,為后續TS包拼接及表的解析做準備;PSI解析模塊完成各個節目的音視頻流信息的獲取,實現節目的正常播放;SI解析模塊則主要獲取節目基本信息和電視節目時間表等,為用戶生成電子節目指南。
2.1 PID過濾
對DVB-C標準的TS流的解析,實際是對DVB-C標準中定義的各個表的正確解析,解析的前提是根據包標識符PID將所有的TS包按表類型過濾,進而選用正確合理的解析方式。根據解析流程,首先進行PSI解析,其次在其基礎上進行SI信息的解析,PID過濾流程與之對應。
在PID過濾前,首先應對輸入的TS流進行TS包同步處理。TS包頭部以同步字0x47開始,在取得0x47字節時,以每個包長188字節或204字節計算,如若之后兩個包的包頭也是同步字0x47,則可認為同步成功。
DVB-C標準對表的PID分配如圖2所示。在PID過濾時,首先進行PSI數據流的過濾。根據TS包PID判斷此包是否屬于PSI的4個表,其次判斷是否為PMT表中的基本音視頻流,最后判斷是否為PCR或CA數據,若屬于上述數據流,送入PSI解析模塊。PID過濾過程如圖3所示。

圖2 PID分配表

圖3 PID過濾
如果不滿足PSI過濾條件,則進入SI過濾。SI表之間的聯系相對PSI四個表的聯系要弱很多,根據特定條件解析順序也不同,本文采用較為常見的順序。首先判斷是否為SDT或BAT,其次判斷是否為EIT或RST,最后判斷是否為TDT或TOT,符合條件的都進入EPG信息解析模塊進行相應解析處理。
2.2 PSI解析
實現音視頻的播放是解復用最基本的目標。解復用的目的是從傳輸流中恢復出各個節目的音頻、視頻流和其他系統服務信息,解析出各個節目。要實現節目的解析,主要需要用到PSI的PAT表、PMT表、CAT表和NIT表[5]。圖4描述了PSI四個表的關聯。PAT表是整個PSI信息的根節點,節目的解析從PAT表開始,由PAT表可以獲取到NIT表的PID和傳輸流中所有節目的PMT表的PID。如果希望獲取其中一個節目,則根據其PMT的PID獲得PMT表,從PMT中查詢與該節目相關的所有碼流PID,從而選擇性地接收相應PID的TS包,通過解擾及解碼等處理,再進行顯示。

圖4 PSI表關聯圖
以圖4為例,DVB-C標準中規定PAT的PID=0x0,通過PID 0x0 找到PAT表,解析得到NIT的PID(0x10)和各個節目號及對應的PMT表的PID,如節目8,其PMT的PID為0x51。獲取PID為0x10的TS包,解析該NIT得到網絡的相關信息(如多個TS流分別對應的頻率)并保存。如果希望收看節目8,則根據0x51找到對應的PMT表,通過PMT表,可以查到該節目的音視頻和PCR及其他私有信息的PID,獲取相應PID的傳輸包進行解碼并顯示,就得到我們平時觀看的電視節目。
對于加擾的節目,在解碼時需要利用CAT表,并在特定的智能卡配合下進行解擾。DVB-C標準規定CAT的PID為0x1,CAT表描述了CA系統與對應的授權管理信息EMM所在TS包的PID,提供了解擾系統的相關參數。條件接收系統采用三重密鑰傳輸機制,解擾時首先從PMT及CAT表獲取包含ECM和EMM信息的TS包的PID,解析獲取相關TS包,將得到的EMM或ECM信息送給智能卡,智能卡解出解擾器需要的CW密鑰,解擾器拿到CW密鑰即可還原音視頻流。
圖5展現了PSI的解析以及后續處理的整體過程。通過以上步驟,基本完成了PSI信息的解析,獲取到最終的節目,實現正常的節目播放。

圖5 PSI解析流程
2.3 SI解析
PSI信息保證了節目的正常播放,而關于節目的其他詳細信息,即電子節目指南(EPG)的獲取,則需要通過DVB擴展的SI表的解析得到。EPG是數字電視的重要組成部分,它提供了節目的名稱、類型、播放列表、時間等。
SI的解析在PSI信息解析的基礎上進行,按照SDT—BAT—EIT—RST—TDT (TOT)進行(雖然在DVB標準中,NIT實際屬于SI信息范疇,但本文在PSI解析模塊對其進行了解析)。本文不考慮僅僅解析單個節目情況,而是對所有信息進行解析,且不考慮當前流和其他流信息解析的先后。圖6描述了SI表解析的整體流程。從整體看,對經過PID過濾后進入SI解析模塊的TS流的處理流程,主要包括table_id分析、基本信息分析、服務信息解析三大部分。

圖6 SI解析流程
一個PID可以對應多個表,而解析以表為單位進行,故首先通過table_id區分每一個表及其作用。在服務信息解析前需要完成每個表的段拼接工作,而后進行表的解析。如圖7所示,對于每一個表,都需要為其在內存開辟一個單獨的緩存區,用來其全部分段的接收,同時通過分段號來判斷一個表的所有分段是否全部接收完成。而版本號是表更新的關鍵,當版本有更新時,需要重新接收此表。最后才能進行表的解析工作,提取服務信息。

圖7 表接收流程
SI表的解析,最終目的是獲取各個表所攜帶的服務信息,服務信息解析的關鍵是descriptor_tag。服務信息一般包括兩層循環,外循環是服務的基本信息,內循環是服務的詳細描述。以EIT為例,在第一層循環可以解析得到事件id、開始及持續時間、運行狀態以及是否加擾,然而這個事件的名稱及描述則需要通過對第二層循環解析得到。對于第二層循環,通過descriptor_tag,可以獲知描述的是什么內容,比如事件名字或語言代碼。descriptor_tag在DVB-C中的定義如圖8所示。

圖8 descriptor分配表(部分)
通過SI的解析,利用TOT和TDT表可以獲取到時間信息;利用SDT表可以獲取服務的詳細描述;利用EIT表可以得到頻道節目播放時間表;RST可以對EIT動態更新,適時對節目進行切換;而BAT則對服務進行了分類,便于進行節目選擇。通過以上信息,已基本可以構造各種各樣的EPG。
整個軟件解復用系統,通過PID過濾、PSI解析和SI解析三大模塊,實現了對TS流的解復用。PSI解析完成了雙層解復用,保證了節目的正常播放,SI解析獲取了節目信息,并根據需要生成了電子節目指南。DVB-C標準中各個表的關系、作用以及最終得到的解析結果簡圖如圖9所示。

圖9 解析結果簡圖

[1] ISO/ IEC International Standard 13818, Information technology-generic coding of moving pictures and associated audio[S].Sweden: ISO/IEC Copyright Office,2004.
[2] ETSI.Digital Video Broadcasting(DVB),Specification for Service Information (SI) in DVB systems,2012.
[3] ISO/IEC 13818-1.Information technology-Generic coding of moving pictures and associated audio information:Systems,2012.
[4] 黃鯤鵬,劉丹,胡蓉.MPEG-2傳輸流解復用的軟件實現[J].軟件導刊,2008(10):150-152.
[5] 高鵬,陳詠恩.MPEG-2傳輸流解復用器的設計與實現[J].計算機工程與應用,2006(9):96-98.
Software Design for De-multiplexer Based on DVB-C
Ouyang Li,Lin Yan,Zhang Feng
(Beihang University,Beijing 100191,China)
In the paper,the theory of transport stream multiplexer/de-multiplexer based on DVB-C system is introduced.A solution that depends on software is proposed to accomplish transport stream demultiplexing and service information analysis,which implements a flexible and efficient demultiplexing system with STM320MD8168.The whole demultiplexing system is divided into three parts:PID filtering,PSI analysis and SI analysis.
DVB-C;demultiplex;embedded software;STM320DM8168
TP302.1
A
?士然
2017-03-23)