標準DSMCC_OC下載---Section解析篇

               今天就主要詳解OC下載的流程,從前端如何拿到咱們想要的數據。 前端

DSMCC_Section語法結構: 服務器

在開始下載以前,咱們必須知道在DSMCC標準中,設置Demux過濾Section時Filter的條件,其中有兩個值須要咱們注意,一個是pid,一個是table_id: session

pid:過濾DSI,DII,Module的pid,同一個值,該值從Pmt表中stream_type爲0x0b的descriptor中得到。 spa

Table_id:DSMCC標準規定,DSI,DII的table_id爲0x3B,Module的table_id爲0x3C。 rest

filter從前端每次過濾一個Section數據過來,當咱們拿到section後,咱們須要對前八個字節進行判斷,table_id爲Filter設置下去的table_id.根據Table_id的不一樣,該section後面dsmcc_section_lenght-8長度個字符所表明的含義也不一樣。 ip

dsmccMeassageHeader: it

每個Section都有一個共同的dsmccMeassageHeader,該表以下: io

主要關注字段messageId,transactionId; table

messageId只要攜帶Message的類型: stream

0x1001  downloadInfoRequrest

0x1002  downloadinfoResponse/downloadInfoIndication[DII]

0x1003  downloadDataBlock【DDB】

0x1004  downloadDataResuqest

0x1005  downloadCancel    

0x1006  downloadServerInitiate[DSI]

transactionId:這個字段用於保持服務器端和客戶端session是完整性以及錯誤的處理,是個標識。便是標識又是控制信息的版本信息,在DSI和 DII中是標識。Transaction在Data carousel中惟一肯定一個下載的控制信息。當消息發生改變時,transactionId應該不斷的增長。

transactionId由transactionId originator【30-31】和transaction number[0-29]組成,共32位。

•含義豐富的transactionId字段

      –用於識別DSI,DII

      –用於快速判斷是否版本變化

      –用於描述版本信息

      –用於描述ID信息


transactionId在OC下載中,它主要指明整個OC數據的根目錄在哪一個DII裏面。

經過messageId咱們就能夠知道目前從filter接收到的section是哪一種消息類型,根據MessageLength就能夠開始去解析 DSI, DII,Module信息。

相關文章
相關標籤/搜索