網路上不容易找到把 DSM-CC 講清楚的網站, 雖然官網或許講得很詳細, 但是如果有人想在 3 分鐘內知道這個名詞的屬性, 應該不能靠官網.
DSM-CC 全名是 Digital Storage of Media Command and Control Protocol , 功用在於提供互動電視的下載機制.
如果要和 MPEG TS (transport stream) 一起傳輸, 就必須將 DSM-CC 的 message 包裝成 private section. 這種 DSM-CC section 和 TS 的 private section 相容, 因此可以在廣播碼流中夾帶 DSM-CC 的訊息. MPEG2 TS 夾帶 DSM-CC 訊息的格式請參考 [1].
DSM-CC 必須將一個可執行的程式, 切割成小段 (data pipe), 加入同步訊息 (data stream), 打包進 bit stream (multi-protocol encapsulation). 由於廣播的特性在於不知道使用者何時開機, 換台,…等等, 所以這些 DSM-CC 的服務 (service domain) 都必須週期性地出現在 TS 碼流當中. 這種特性稱為 Carousel (旋轉木馬), 亦即每隔一段時間就會再出現.
像是 MPEG video 都有 GOP (group of picture), DSM-CC 的內容也分成 group. 於是有 group 外的 DSI (download server Initiate) 存放參考資訊, 以 group 形式出現的 DII (download info indication) 和 DDB (download data block).
如果是 object carousel, DSM-CC 的 service domain 分為三種 object: service gateway, directory, file. 看起來很複雜, 其實就是 service 的根目錄 (root), 文件夾 (folder), 和檔案 (file). 也就是傳過來的應用程式要放在哪裡的意思. 此時 DSI 負責存 service gateway info.
當收完 object carousel 之後, service 存放位置應該都已經確定了. 此時 data carousel 會將真正的 data (如應用程式) 放在 DDB 中傳輸 (以 group 出現).
對一個 STB 軟體來說, TS demuxer 解析了 PAT, PMT, 自然可以找到 data stream. DSM-CC 再負責從中間組合出應用程式. 這裡有個 trade-off 就是一次要組合幾個 module (object 或是 data) 才好? 如果看到一個 module 就收一個, 可能同時要收一大堆 module, 結果把記憶體弄爆! 一次如果只處理一個 module, 可想而知那個旋轉木馬不知道要繞幾圈才能把所需要的 module 都收齊, 速度一定其慢無比了.
[Note]
1. http://www.360doc.com/content/10/0224/11/59579_16643719.shtml
2. 中文論文: 數位視訊廣播多媒體家用平台之DSM-CC軟體設計與實現