在CPM中,按照DRM加密策略的不同,目前支持兩種類型的DRM:封裝式DRM(Wrapped DRM)和嵌入式DRM(Embedded DRM)。 其中封裝式DRM適用于OMA DRM 1.0,嵌入式DRM適用于OMA DRM 2.0。
在封裝式DRM中,媒體對象的所有數(shù)據(jù)被封裝在一個統(tǒng)一的加密層中,這有助于DRM在更高層次(文件解析器)上去處理數(shù)據(jù)。但缺點也很明顯, 封裝式DRM不適用于流媒體對象,對媒體對象的所有數(shù)據(jù)進行加密層封裝是不現(xiàn)實的。
而嵌入式DRM適應(yīng)了流媒體數(shù)據(jù)的特點,能夠支持OMA DRM 2.0規(guī)范。OMA DRM 2.0提供的保護機制包括本地回放、累進下載、流播放等。
OMA DRM 2.0基于ISO BaseMedia文件格式來保護媒體內(nèi)容,該文件格式定義了一個本身為明文的容器來存儲DRM信息和相應(yīng)的加密數(shù)據(jù)。這使上層應(yīng)用可以不依賴DRM代理就能解析該文件的部分內(nèi)容,但如果期望解密數(shù)據(jù)則必須有文件格式解析器的參與。
封裝式DRM和嵌入式DRM在DRM代理和上層應(yīng)用間的交互過程有所不同。在封裝式DRM中,上層應(yīng)用不需要從DRM容器文件中為DRM代理提取DRM信息,封裝式DRM的控制交互過程如下圖所示。

封裝式DRM的控制交互過程
嵌入式DRM需要從DRM容器文件中為DRM代理提取DRM信息,嵌入式DRM的控制交互過程如下圖所示。

嵌入式DRM的控制交互過程
在封裝式DRM中當(dāng)對媒體對象的回放所涉及的內(nèi)容進行讀取或者查找時,媒體內(nèi)容被封裝在一個統(tǒng)一的加密層上,明文數(shù)據(jù)的接入依賴常集成于底層I/O文件接口的DRM代理,但數(shù)據(jù)對上層是透明的。封裝式DRM的數(shù)據(jù)交互過程如下圖所示。

封裝式DRM的數(shù)據(jù)交互過程
對于嵌入式DRM,文件被部分加密,這就要求上層應(yīng)用必須自己了解文件格式,并必須直接和DRM代理通信以獲得明文內(nèi)容。嵌入式DRM的數(shù)據(jù)交互過程如下圖所示。

嵌入式DRM的數(shù)據(jù)交互過程
為了完成媒體內(nèi)容的接入,在CPM中,大致需要經(jīng)過如下過程:請求DRM資源、打開會話、注冊內(nèi)容句柄、獲取內(nèi)容類型、執(zhí)行操作(播放、暫停等)、執(zhí)行內(nèi)容接入、操作結(jié)束、關(guān)閉會話、釋放DRM資源。

封裝式DRM的操作交互過程
對于嵌入式DRM而言,PVMFCPM::ApproveUsage()可能會被反復(fù)調(diào)用,用于DRM授權(quán)。