基于CMMB數據廣播平臺的數據接收程序設計
XPE包頭有7個(gè)比特是保留的,在這里可以將它進(jìn)行自定義以便傳送不同服務(wù)類(lèi)型的數據,其中2個(gè)比特用來(lái)標識數據的格式,如文本、圖片、網(wǎng)頁(yè)等,另外的5個(gè)比特則用來(lái)定義服務(wù)類(lèi)型,具體定義方式如表1和表2所示。本文引用地址:http://dyxdggzs.com/article/156480.htm
2 解析數據廣播業(yè)務(wù)數據的軟件實(shí)現
解析數據廣播業(yè)務(wù)數據主要就是解析復用幀碼流。它的解析過(guò)程可分為以下幾個(gè)模塊:復用幀流提取、CRC檢測、控制信息解復用、業(yè)務(wù)信息解復用。首先要對控制信息進(jìn)行解復用,然后再根據控制信息中的關(guān)鍵信息來(lái)解析業(yè)務(wù)信息。
2.1 控制信息的解復用
解復用控制信息時(shí)首先要解析的是復用幀頭,在這里可以定義一個(gè)結構體來(lái)保存相關(guān)的信息,同樣的為了保存各個(gè)表的參數信息以便解復用業(yè)務(wù)信息時(shí)使用,將控制信息中的每個(gè)表和緊急廣播也都對應地定義一個(gè)結構體,其中CMCT和SMCT的構造相同可共用一個(gè)結構體,CSCT和SSCT也可共用一個(gè)結構體。在結構體中定義好各個(gè)表對應的參數,在讀取碼流時(shí),先保存復用幀頭的相關(guān)參數信息,然后再保存控制信息表的信息,具體做法是根據表標識號來(lái)判斷表的類(lèi)型,確定類(lèi)型后將碼流里對應的參數存入到定義好的結構體參數中。然后對各表進(jìn)行分析,最終獲得頻點(diǎn)編號、中心頻率、復用幀所占用的時(shí)隙號以及子幀與業(yè)務(wù)ID之間的對應關(guān)系等信息,以方便用戶(hù)接收所選的業(yè)務(wù)數據。
2.2 業(yè)務(wù)信息的解復用
業(yè)務(wù)信息處理模塊如圖4所示。首先是模塊的初始化,這時(shí)讀線(xiàn)程函數也被開(kāi)啟了,接著(zhù)就進(jìn)入了處理數據的循環(huán),先判斷業(yè)務(wù)數據是否處理完畢(這里定義了一個(gè)布爾變量來(lái)標記),如果處理完則將分類(lèi)好的音視頻數據和其他數據做相應的處理。如果未處理完畢,則讀取下一個(gè)幀的數據,倘若此時(shí)沒(méi)有數據則阻塞等待,直到有數據到來(lái),接著(zhù)對這一幀數據進(jìn)行解復用,得到業(yè)務(wù)數據流,將數據歸類(lèi),放在不同的緩沖區。
解析一個(gè)幀的數據步驟如下:
第一步:解析復用幀頭。首先讀取碼流中的復用幀幀頭,并將相關(guān)參數保存到已定義好的結構體中。
第二步:解析復用子幀。由于復用子幀的個(gè)數不止一個(gè),所以可以用一個(gè)循環(huán)來(lái)處理,同業(yè)務(wù)數據處理的總框圖類(lèi)似,設置一個(gè)布爾變量來(lái)標識復用子幀是否處理完畢,先解析子幀的幀頭,提取視頻段、音頻段和數據段數據,然后判斷復用子幀是否處理完畢,如果處理完則跳出循環(huán)往下執行,如果沒(méi)處理完則繼續處理,處理完畢后提取出視頻段、音頻段和數據段數據。
第三步:解析視頻段、音頻段和數據段。由于采用的是數據廣播來(lái)傳送,因此這里只對數據段進(jìn)行解析,先根據子幀頭中的信息將數據段提取出來(lái),這里數據單元的內容即為XPE包。
第四步:解析XPE包。仍然需要先解讀包頭信息,另外要注意的是首包包頭還額外攜帶了數據包總長(cháng)度,業(yè)務(wù)模式指示等信息,接到首包時(shí)要記錄下來(lái),然后根據包頭信息對業(yè)務(wù)數據進(jìn)行組裝。
3 結論
經(jīng)過(guò)以上對CMMB復用幀和XPE包結構的剖析,用VC++編寫(xiě)了解析數據廣播業(yè)務(wù)數據的程序。實(shí)驗輸入測試用的是離線(xiàn)MFS流,接收顯示了一些測試數據,該軟件可以植入應用系統中來(lái)接收所需要的數據和圖片,靈活方便,另外采用軟件編寫(xiě)降低了硬件的成本,而且可擴展性強。
評論