一种视窗商店应用程序远端媒体来源的实现装置及方法

文档序号:9249404阅读:231来源:国知局
一种视窗商店应用程序远端媒体来源的实现装置及方法
【技术领域】
[0001]本发明涉及多媒体软件保护技术领域,特别涉及一种视窗商店应用程序远端媒体来源的实现装置及方法。
【背景技术】
[0002]微软从windows vista起推出媒体基础框架,为软件工程师提供了一个在统一视窗系统下的多媒体影音开发平台,具有拓展方便、性能良好,与系统硬件深度集合、易于开发等优点。
[0003]微软在windows 7、windows 8的基础上进一步地优化增强了媒体基础框架,并且针对数字版权保护的需求,提供了一种与系统深度集成的保护模式。在桌面应用程序中,该保护模式提供了一种配置模式,可以让媒体来源在保护环境下运行,这进一步增强了数字内容安全。该配置模式在媒体基础框架中被称为远端媒体来源模式。在非远端媒体来源模式下,媒体来源(Media Source)运行在用户进程中,媒体基础框架为该媒体来源自动添加了一份运行于保护进程中的代理(source proxy);在远端媒体来源模式下,媒体来源(Media Source)运行在保护进程中,媒体基础框架为该媒体来源自动添加了一份运行于用户进程中的代理(source proxy)。
[0004]但在视窗商店应用程序中,微软没有提供远端媒体来源模式,也没有提供远端媒体来源的实现方法。
[0005]因此,多媒体软件保护技术领域急需一种视窗商店应用程序远端媒体来源的实现装置及方法,将暴露在用户进程的解密、解压过程隐藏到系统提供的保护进程中去,减免了用户为保护关键数据而不得不自行提供的保护功能,以及额外的为了验证数据安全而作的攻击测试,从而极大地减少了项目工作量,加速项目进度,以保护解压解密授权内容、私密文件所特需的密码、钥匙或私有证书。

【发明内容】

[0006]本发明为了解决上述问题,提供了一种视窗商店应用程序远端媒体来源的实现装置及方法,技术方案如下:
一种视窗商店应用程序远端媒体来源的实现装置,包括:主体组件、代理组件和至少3个接口 ;
主体组件,为远端媒体来源,用于运行在保护进程中;
代理组件,为代理媒体来源,分别通过第一接口、第二接口与主体组件相连接,与系统内置媒体引擎相连接,用于运行在用户进程中;
第一接口,用于媒体事件处理,在远端媒体来源工作过程中产生的任何媒体事件都被放到事件序列中,等待运行在用户进程中的媒体来源来获取并处理;
第二接口,用于接受来自运行在代理媒体来源的控制指令;
第三接口,与主体组件相连接,用于提供媒体样本。
[0007]优选的,在上述一种视窗商店应用程序远端媒体来源的实现装置中,还包括:解密器、解码器和渲染器;渲染器为系统内置的渲染器,渲染器与系统内置媒体引擎相连接,用于产生向解码器索取数据的媒体事件;解码器为系统内置的解码器或者软件制造商提供的解码器,解码器与渲染器、系统内置媒体引擎相连接,用于接收渲染器发送的需求媒体样本的媒体事件,进而从解密器中获取媒体样本,并反馈回渲染器中;解密器与第三接口、解码器、系统内置媒体引擎相连接,用于接收解码器发送的需求媒体样本的媒体事件,进而从主体组件获取媒体样本,并反馈回解码器中。
[0008]优选的,在上述一种视窗商店应用程序远端媒体来源的实现装置中,第一接口为IMFMediaEventGenerator私有接口,第二接口为MFMediaSource私有接口或自定义接口 ;第三接口为MFMediaStream私有接口或自定义接口 ImData0
[0009]一种视窗商店应用程序远端媒体来源的实现方法,包括如下步骤:
步骤一,媒体引擎创建代理组件,即代理媒体来源,并接受传入的字节流通过第二接口供远端媒体来源使用,运行在用户进程中;
步骤二,代理媒体来源要求保护进程创建主体组件,即远端媒体来源,并传入字节流供远端媒体来源使用,该远端媒体来源运行在保护进程中,该主体组件用于接受解码器提供的媒体样本以及和代理组件联合处理媒体事件;若字节流未经过加密/压缩处理,则执行步骤四,否则执行步骤三;
步骤三,远端媒体来源解密/解压字节流以产生非压缩的文件头;
步骤四,远端媒体来源解析出正确的媒体格式;
步骤五,代理媒体来源通过第一接口从远端媒体来源获得正确的媒体格式,填写媒体描述;
步骤六,媒体引擎获取代理媒体来源的媒体描述,根据媒体描述获知媒体流的数目和媒体格式;
步骤七,媒体引擎要求代理媒体来源根据媒体流序号创建对应的解密器;
步骤八,代理媒体来源要求保护进程创建指定的解密器,同时传入媒体流序号和远端媒体来源引用供解密器使用;
步骤九,媒体引擎根据媒体描述为每个媒体流创建解码器和渲染器;
步骤十,媒体引擎为每个媒体流链接媒体管道;
步骤十一,媒体引擎向应用程序发送媒体打开事件;
步骤十二,等待用户点击播放按钮或者根据用户设置自动播放。
[0010]优选的,在上述一种视窗商店应用程序远端媒体来源的实现方法中,步骤七和步骤八中解密器的创建、实现方法为:
首先,解密器在构造时必须接受传入参数;
进一步地,代理媒体来源在创建解密器的时候,把远端媒体来源的一份引用或者IMFMediaStream接口的一份引用作为初始化参数传入解密器;
进一步地,解密器在构造时检查传入参数,如果能查询到IMFMediaStream接口,则使用该接口获取数据;如果不能查询到IMFMediaStream接口,则查询IMFMediaSource接口,如果仍然没有该接口,则说明该解密器没有与远端媒体来源配合工作,该解密器需要自行决定是否转入错误处理程序或者转入非远端媒体来源模式;如果能够查询到IMFMediaSource接口,则使用该接口查询ImData私有接口,并使用ImData接口获取数据。
[0011]优选的,在上述一种视窗商店应用程序远端媒体来源的实现方法中,步骤十二中远端媒体来源自动播放的具体步骤为:
首先,当播放开始的时候,媒体引擎向所有的媒体管道发送“开始”命令;
进一步地,渲染器接到“开始”命令后,向媒体引擎发送媒体事件索取数据;
进一步地,媒体引擎接到媒体事件后查找渲染器的前置管道,获得MFTransform接口,调用ProcessOutput方法以获取数据;
进一步地,若前置管道不能提供足够的数据,则向解码器索取数据,如果仍不能提供数据,则向解密器索取数据;
进一步地,解密器通过第三接口向远端媒体来源索取数据;
进一步地,远端媒体来源从字节流中读取数据,进行解密/解压处理,并分离出指定媒体流需要的数据后,以媒体样本的方式供给解密器;
进一步地,当字节流报告文件结束的时候,远端媒体来源发送“演示结束”事件,该媒体事件被代理媒体来源转发到媒体引擎;
进一步地,媒体引擎接到“演示结束”后,停止播放,数据流动结束。
[0012]优选的,在上述一种视窗商店应用程序远端媒体来源的实现方法中,所述步骤十二中第一接口处理媒体事件的具体操作步骤为:
首先,远端媒体来源构建一个媒体事件队列;
进一步地,远端媒体来源公开继承IMFMediaEventGenerator私有接口,并实现IMFMediaEventGenerator 的 4 个函数计算;
进一步地,代理媒体来源获取IMFMediaEventGenerator私有接口 ;
进一步地,代理媒体来源调用BeginGetEvent方法,并传入一个回调函数;
进一步
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1