您的位置:华清远见教育科技集团 >> 新闻动态 >> Android资料 >> Android CPM插件机制  
 
Android CPM插件机制
分享到:

内容策略管理器的作用就是整合一系列与内容管理相关的服务,并提供统一的接口供上层应用调用,这些服务如DRM内容接入、起始控制(Parental Control)等均是作为CPM插件出现的。根据多媒体的特性,CPM为CPM插件设计了一系列的规则,这些规则主要分为3类:

·用户鉴权。
    ·操作授权(对播放、暂停、快进、快退、复制、保存等进行授权)。
    ·内容接入(提供打开、阅读、查找等媒体对象的操作)。

在实现完CPM插件后,为了使CPM插件能够在OpenCORE框架内可用,必须首先完成CPM插件在OSCL组件工厂(OsclComponentFactory)的注册。

在进行CPM插件注册时,其MIME类型标识符必须以“X-CPM-PLUGIN”作为起始字符,CPM插件的注册过程如下:

代码:RegisterPlugin

OSCL_EXPORT_REF PVMFStatus PVMFCPMPluginFactoryRegistryClient::RegisterPlugin (OSCL_String& aMimeType,
    PVMFCPMPluginFactory& aFactory){
    if (!iClient)
    return PVMFErrInvalidState;
    //确保它是一个有效的CPM-plugin的MIME字符串
    OSCL_HeapString< OsclMemAllocator> cpmregid(PVMF_MIME_CPM_PLUGIN);
    if (aMimeType.get_size()>=cpmregid.get_size()
    && oscl_CIstrncmp(cpmregid.get_cstr(), aMimeType.get_cstr(), cpmregid.get_size())==0
    && (aMimeType.get_cstr()[cpmregid.get_size()] ==’/’
    || aMimeType.get_cstr()[cpmregid.get_size()] ==’\0’)){
    switch (iClient->Register(aMimeType, (OsclComponentFactory)&aFactory)){
    case OsclErrNone:
        return PVMFSuccess;
    case OsclErrAlreadyExists:
        return PVMFErrAlreadyExists;
    case OsclErrNoMemory:
        return PVMFErrNoMemory;
    default:
        return PVMFFailure;
        }
    } else{
        return PVMFErrArgument;
        }
    }

在CPM中,内容是无法直接接入的,必须通过相应的接口来进行,如为了获得数据流的内容接入,必须获得一个相应的PVMIDataStreamSyncInterface接口。为了获得内容的描述符信息,必须获得一个相应的PVMFCPMPluginAccessUnitDecryptionInterface接口等。下图显示了内容的接入过程。

CPM内容的接入过程
CPM内容的接入过程

在OpenCORE中,给出了一个OMA DRM 1.0规格的CPM插件的参考实现。目录为external\opencore\pvmi\content_policy_manager\plugins\oma1。

在目前的实现中,CPM支持的解析器节点包括PVMFAMRFFParserNode、PVMFAACFFParserNode、PVMFMP3FFParserNode、PVMFWAVFFParserNode、PVMFMP4 FFParserNode、PVMFDownloadManagerNode等。下图显示了CPM的主要类图。

CPM主要类图
CPM主要类图

 更多相关文章

·Android 封装式/嵌入式DRM对比
·Android DRM数字版权管理
·Android OpenCORE 概述
·OpenMAX IL 层接口的实现
·Android开发OpenMAX接口规范