本模擬重點為IPMPX[9][10],相關的參考軟體不多,一為 Craig A. Schultz 所作,另 一個為MOSES。兩者皆利用 IM1 為 MPEG-4 player。IM1[8],或是稱做 AHG (Ad-hoc group) on Systems Reference Software Implementation,是 MPEG 委員會中負責從事開發 以及整合MPEG-4 System 軟體的團體。IM1 軟體包括了所有 MPEG-4 System 中標準化 的部分。MOSES 至今未有正式公開版本,但根據架構圖(圖 6)顯示,設計上像是 IM1
IM 1
M essage Router Tool M anager
IM 1 Term inal
Received IPMP Tool Descriptor from bitstream
Parse IPMP Tool Descriptor, possibly request IO stream s from
term inal, ask TM to instantiate tool at the given control point
Possible
Setup Input, Output, IPMP Stream s
and/or IPMP stream s
Receive IPMP Tool List from IOD
Parse IPMP Tool List, resolve Alt list, Param Desc, retrieve tools
Retrieve Tool from Tool ES
Creat an IPMP Tool ES decoder to handle Tool ES
ProcessIPMPTool
圖7 IM1 IPMPX (Craig’s version) [10]
在之前的研究中,我們分析了IM1 Core 中有關 IPMPX 的部分,了解 IPMPX 系統
的操作模式,並據此以循序漸進的方式,展示 IPMPX 的運作。IM1 IPMPX 的實作方 式,是將 IPMPX 散佈於 IM1 各功能模組中。儘管這種架構可以達到前述 Virtual Ter-minal 概念,卻使得 IPMPX 缺乏模組化,不利後續研究。且分析程式碼後發現,IM1 IPMPX 無法獨立於 IM1 core 之外,這對未來與 MPEG-21 架構結合產生不少困擾。因 此,我們根據IPMPX 架構,重新設計軟體模組並實作,以達到下列目標:
• IPMPX 模組化,以程式庫型態與主系統連結。
• 不引用現有reference software 的核心函式,盡量降低與特定系統的相依性。
• 預留與 terminal 銜接的機制,減少 porting 的困難。
軟 體 模 組 的 設 計 上 , 我 們 盡 可 能 保 留 文 件 上 所 描 述 的 概 念 性 物 件 , 例 如 MessageRouter 與 ToolManager 等等(圖 8)。而在 API 的設計上,我們則參考 IM1 IPMPX 的設計,並稍加延伸,例如加上 timestamp 參數以利 terminal 傳遞系統時間給 tool。在 實作上,為求與標準格式相容,我們採用PSL MPEG-2 IPMPX[11]中的 MessageInterface 函式庫產生與解析 ToolMessage。較為特別的是 context 的設計,ToolMessage 利用 context ID 決定 routing 方式,但 IPMPX 標準中並未定義 context 的實際結構,因此我們 根據可能的使用情況,將 context 設計成樹狀結構,依照 top、object、elementary stream、IPMPTool 四個階層加以關聯,並自動給予各 context 識別編號。另一個標準中 沒有定義的物件為 IPMPFilter,根據相關描述,我們歸納出 IPMPFilter 應該是一個 container,允許至多 256 個 IPMPTool 串接,而資料串流則依序通過各 Tool。
圖 8 重新設計的 IPMPX 模組關係圖
圖 9 所示為 IPMPX 模組與 MPEG-21 Testbed 各模組間的關係。為了整合 IPMPX,
MPEG-21 Testbed 作了如下修改:
z ServerController 必須能送出 initial object descriptor (IOD)。
z ClientController 必須能接收 IOD。
z Server/Client Controller 必須能收發 IPMP Device Message。
z Streamer 取得資料後,必須先經 PostDIAFilter 處理才送出。
z Decoder 取得資料後,必須先經 PreDecoderFilter 處理才能 decode。
z Decode 完成後,必須經 PostDecoderFilter 處理才能送至 output buffer。
z Server/Client 必須在開始傳送 media 前 initialize IPMP 子系統。
圖 9 IPMPX 模組與 MPEG-21 Testbed 其他模組的關係
最後,我們用一個加密傳送影像的系統展示我們的研究與實作成果。圖 10 所示 client 端程式啟動 IPMPX 子系統,並週期性換 key 進行 DES 解密的過程,就使用者而 言,這些動作都是隱藏在virtual terminal 完成,只會看到播放程式播放短片。接著我們 刻意在某個時間區間給定錯誤的 key,對 decoder 而言,因為無法經由解密過程取得正 確的影片資料,所以解碼過程發生錯誤,如圖 11 左側照片所示。當恢復取得正確的 key 之後,decoder 根據正確的資料逐漸修復播放的畫面(圖 11 右側照片)。
圖 10 程式啟動 IPMPX 與正常解密
圖 11 解密用的 key 錯誤造成解碼錯誤