摘要:為了實時接收應用系統(tǒng)所需要的數據和圖片,采用了以CMMB數據廣播為平臺的接收方法,該方法用軟件實現解析CMMB數據廣播業(yè)務數據。做了測試數據的接收實驗,驗證了數據接收的正確性,該程序方便各種應用系統(tǒng)使用,用軟件編程代替硬件解碼不僅減少了硬件的成本,而且降低了系統(tǒng)實現的復雜度。
關鍵詞:CMMB;MFS;數據廣播;解復用;XPE包
0 引言
2006年10月24日,國家廣電總局正式頒布了中國移動多媒體廣播行業(yè)標準,確定采用我國自主研發(fā)的移動多媒體廣播行業(yè)標準。CMMB技術的核心是STIMI技術,它是利用大功率S波段信號實現信號的全國覆蓋,利用地面上的增補轉發(fā)器來彌補衛(wèi)星信號的盲區(qū),再加上無線移動通信網絡構建的回傳通道,這樣就組成了一個完美的體系——單向廣播和雙向交互相結合的移動多媒體網絡。
CMMB標準的第五部分是數據廣播,它是CMMB的一項增值業(yè)務。本文簡單介紹了CMMB的相關知識,詳細研究了復用幀結構和數據廣播的XPE包結構,結合廣播信道的特點,重點講述了如何解析數據廣播業(yè)務數據。
1 CMMB相關技術簡介
1.1 復用結構介紹
復用的功能是完成音頻、視頻、數據、電子業(yè)務指南等信息的封裝和排列,把多路節(jié)目及每一路節(jié)目中多路視頻、音頻數據有效地復合在一起,使其更好地共享信道資源,適應信道傳輸。復用子幀是復用幀的基本組成單元,承載一個業(yè)務的業(yè)務數據(音頻流、視頻流和數據流)或者控制信息表的數據。電子業(yè)務指南、用戶管理等輔助信息分別封裝在不同的復用子幀中,控制信息封裝在復用幀0中,CMMB復用協議可以承載多種音視頻碼流,支持靈活的數據業(yè)務。
圖1為復用幀的結構,每個廣播信道幀由多個復用幀構成,每個復用幀又由多個復用子幀或者控制信息表組成。其中復用子幀包括子幀頭、視頻段、音頻段和數據段,而控制信息表則包括網絡信息表(NIT)、持續(xù)業(yè)務復用配置表(CMCT)、持續(xù)業(yè)務配置表(CSCT)、短時間業(yè)務復用配置表(SMCT)、短時間業(yè)務配置表(SSCT)、ESG基本描述表、緊急廣播等。
1.2 CMMB數據廣播
數據廣播,顧名思義就是要把多樣的內容按照一定的格式、一定的策略發(fā)送到移動多媒體的前端系統(tǒng)中,是一項利用廣播信道傳輸數據流或數據文件的增值業(yè)務,CMMB數據推送業(yè)務就是CMMB數據廣播業(yè)務,它是指以點對面的廣播方式推送傳輸文本、圖像、音頻、視頻等多媒體信息數據到用戶終端的一種技術方式,基于CMMB數據廣播平臺的應用非常廣泛,如股票咨詢、交通導航、氣象服務、網站廣播等,如圖2所示。數據廣播XPE包的結構圖如圖3所示。這里要注意的是,當開始標志為1時有擴展字段,當開始標志為1并且結束標志為0時有數據包總長度字段,當CRC指示為1時有CRC_32字段。
XPE包頭有7個比特是保留的,在這里可以將它進行自定義以便傳送不同服務類型的數據,其中2個比特用來標識數據的格式,如文本、圖片、網頁等,另外的5個比特則用來定義服務類型,具體定義方式如表1和表2所示。
2 解析數據廣播業(yè)務數據的軟件實現
解析數據廣播業(yè)務數據主要就是解析復用幀碼流。它的解析過程可分為以下幾個模塊:復用幀流提取、CRC檢測、控制信息解復用、業(yè)務信息解復用。首先要對控制信息進行解復用,然后再根據控制信息中的關鍵信息來解析業(yè)務信息。
2.1 控制信息的解復用
解復用控制信息時首先要解析的是復用幀頭,在這里可以定義一個結構體來保存相關的信息,同樣的為了保存各個表的參數信息以便解復用業(yè)務信息時使用,將控制信息中的每個表和緊急廣播也都對應地定義一個結構體,其中CMCT和SMCT的構造相同可共用一個結構體,CSCT和SSCT也可共用一個結構體。在結構體中定義好各個表對應的參數,在讀取碼流時,先保存復用幀頭的相關參數信息,然后再保存控制信息表的信息,具體做法是根據表標識號來判斷表的類型,確定類型后將碼流里對應的參數存入到定義好的結構體參數中。然后對各表進行分析,最終獲得頻點編號、中心頻率、復用幀所占用的時隙號以及子幀與業(yè)務ID之間的對應關系等信息,以方便用戶接收所選的業(yè)務數據。
2.2 業(yè)務信息的解復用
業(yè)務信息處理模塊如圖4所示。首先是模塊的初始化,這時讀線程函數也被開啟了,接著就進入了處理數據的循環(huán),先判斷業(yè)務數據是否處理完畢(這里定義了一個布爾變量來標記),如果處理完則將分類好的音視頻數據和其他數據做相應的處理。如果未處理完畢,則讀取下一個幀的數據,倘若此時沒有數據則阻塞等待,直到有數據到來,接著對這一幀數據進行解復用,得到業(yè)務數據流,將數據歸類,放在不同的緩沖區(qū)。
解析一個幀的數據步驟如下:
第一步:解析復用幀頭。首先讀取碼流中的復用幀幀頭,并將相關參數保存到已定義好的結構體中。
第二步:解析復用子幀。由于復用子幀的個數不止一個,所以可以用一個循環(huán)來處理,同業(yè)務數據處理的總框圖類似,設置一個布爾變量來標識復用子幀是否處理完畢,先解析子幀的幀頭,提取視頻段、音頻段和數據段數據,然后判斷復用子幀是否處理完畢,如果處理完則跳出循環(huán)往下執(zhí)行,如果沒處理完則繼續(xù)處理,處理完畢后提取出視頻段、音頻段和數據段數據。
第三步:解析視頻段、音頻段和數據段。由于采用的是數據廣播來傳送,因此這里只對數據段進行解析,先根據子幀頭中的信息將數據段提取出來,這里數據單元的內容即為XPE包。
第四步:解析XPE包。仍然需要先解讀包頭信息,另外要注意的是首包包頭還額外攜帶了數據包總長度,業(yè)務模式指示等信息,接到首包時要記錄下來,然后根據包頭信息對業(yè)務數據進行組裝。
3 結論
經過以上對CMMB復用幀和XPE包結構的剖析,用VC++編寫了解析數據廣播業(yè)務數據的程序。實驗輸入測試用的是離線MFS流,接收顯示了一些測試數據,該軟件可以植入應用系統(tǒng)中來接收所需要的數據和圖片,靈活方便,另外采用軟件編寫降低了硬件的成本,而且可擴展性強。