跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品技术领域
本申请涉及虚拟化技术领域,特别涉及跨系统多媒体数据编解码方法、装置、电子
设备和计算机程序产品。
背景技术
移动终端已成为用户日常工作生活的重要工具,在移动终端推动移动互联网快速
发展的同时,由于移动终端包含了丰富多样化的信息(例如:企业数据的访问、商务沟通、社
交网络、财务管理、游戏等等),移动终端成了网络犯罪的新焦点。为了信息安全、保护隐私,
移动虚拟化成为了移动终端未来的发展方向。
图1示出了基于Qemu/KVM(Kernel-based Virtual Machine,基于内核的虚拟机)
技术实现的虚拟化系统架构示意图,处于底层的是系统的硬件层,主要包括处理器、内存和
输入输出设备等。在硬件层之上为虚拟化层,运行的是虚拟机监控器(缩写为VMM或
Hypervisor)。虚拟机监控器的主要职能是:管理真实的物理硬件平台,并为每个客户虚拟
机(即客户机)提供对应的虚拟硬件平台。虚拟化系统架构中可以运行多个操作系统,例如
Linux操作系统或者Android操作系统等,其中通常包括一个主机操作系统(Host OS),以及
一个或者多个客户机操作系统(Guest OS),主机操作系统运行于宿主机(Host),在主机操
作系统上运行一个或者多个客户机,各客户机作为主机操作系统的应用程序运行,其可以
为运行于该客户机上的客户机操作系统模拟硬件设备以供客户机操作系统使用,在各客户
机运行的客户机操作系统中可运行各种应用程序。在虚拟化系统架构中,多个操作系统之
间可共享硬件层提供的CPU,内存和输入输出设备。
通过虚拟化技术带来的隔离性可实现单一终端上多个操作系统的隔离,避免各操
作系统上的进程对其他操作系统产生不利影响,典型的应用场景为通过虚拟化技术在手机
等移动设备上实现企业系统和个人系统的分离,防范个人系统上的进程给企业带来的潜在
危害,满足一些具有安全要求的企业对“自带设备”(BYOD,Bring Your Own Device)的需
求。
随着多媒体应用在生活中运用的深入发展,终端的各个虚拟机都需要有多媒体编
解码器,现有技术中客户机操作系统通常通过CPU来实现软件编解码,此种编解码方式会占
用当前客户机CPU的大量资源,功耗大;并且客户机操作系统只能通过CPU实现软件编解码,
导致很多格式的视频文件无法支持、播放不流畅。当某一客户机操作系统需要其他客户机
操作系统或者主机操作系统协助完成多媒体数据编解码处理时需要分别为各客户机操作
系统或者主机操作系统中的多媒体框架的缓冲区在内存中分配对应的物理存储区,并且在
某一客户机操作系统需要其他系统协助进行跨系统的多媒体数据编解码处理时,需要将该
客户机操作系统多媒体框架的缓冲区对应的物理存储区中的内容拷贝到协助进行编解码
处理的操作系统多媒体框架的缓冲区对应的物理存储区中,编解码处理完成后需要将处理
结果拷贝回发起编解码处理请求的客户机操作系统多媒体框架的缓冲区对应的物理存储
区。
现有技术的不足在于:
跨系统进行多媒体数据的编解码处理时涉及大量数据在不同的物理存储区间的
拷贝,一方面占用大量虚拟化系统架构的计算资源和存储资源,导致虚拟化系统性能降低,
另一方面延长了跨系统多媒体数据编解码处理时间。
发明内容
本申请实施例提出了跨系统多媒体数据编解码方法、装置、电子设备和计算机程
序产品,主要用以提升虚拟化系统性能,缩短多媒体数据编解码处理时间。
在一个方面,本申请实施例提供了一种跨系统多媒体数据编解码方法,其特征在
于,所述方法包括:
在第一操作系统中,获取对多媒体数据编解码处理的编解码请求,所述编解码请
求包括需要进行编解码处理的多媒体数据;将所述多媒体数据发送至共享内存;根据所述
编解码请求生成对所述多媒体数据进行编解码处理的编解码指令,所述编解码指令包括所
述多媒体数据在所述共享内存的偏移地址;将所述编解码指令基于跨系统通信发送至第二
操作系统;
在所述第二操作系统中,根据所述编解码指令中的偏移地址由所述共享内存获得
所述多媒体数据;根据所述编解码指令对所述多媒体数据进行编解码处理,所述共享内存
对所述第一操作系统和所述第二操作系统均处于可读和可写状态。
在另一个方面,本申请实施例提供了一种跨系统多媒体数据编解码装置,其特征
在于,所述装置包括:前端模块,用于在第一操作系统中,获取对多媒体数据编解码处理的
编解码请求,所述编解码请求包括需要进行编解码处理的多媒体数据;将所述多媒体数据
发送至共享内存;根据所述编解码请求生成对所述多媒体数据进行编解码处理的编解码指
令,所述编解码指令包括所述多媒体数据在所述共享内存的偏移地址;将所述编解码指令
基于跨系统通信发送至第二操作系统;
后端模块,用于在所述第二操作系统中,根据所述编解码指令中的偏移地址由所
述共享内存获得所述多媒体数据;根据所述编解码指令对所述多媒体数据进行编解码处
理,所述共享内存对所述第一操作系统和所述第二操作系统均处于可读和可写状态。
在另一个方面,本申请实施例提供了一种电子设备,其特征在于,所述电子设备包
括:存储器,一个或多个处理器;以及一个或多个模块,所述一个或多个模块被存储在所述
存储器中,并被配置成由所述一个或多个处理器执行,所述一个或多个模块包括用于执行
任一上述方法中各个步骤的指令。
在另一个方面,本申请实施例提供了一种与电子设备结合使用的计算机程序产
品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计算机
程序包括用于使所述电子设备执行任一上述方法中的各个步骤的指令。
本申请实施例的有益效果如下:
本申请中,在第一操作系统中,当需要对多媒体数据进行编解码处理时,可将多媒
体数据通过共享内存发送至第二操作系统,以在第二操作系统中完成所述多媒体数据的编
解码处理,本申请中,通过共享内存实现跨系统多媒体数据编解码过程中多媒体数据的传
递,减少了数据拷贝次数,一方面节约了虚拟化系统架构的计算资源和存储资源,提升虚拟
化系统性能,另一方面缩短了跨系统多媒体数据编解码处理时间。
附图说明
下面将参照附图描述本申请的具体实施例,其中:
图1示出了现有技术中虚拟化系统架构示意图;
图2示出了本申请实施例一中跨系统多媒体数据编解码方法的流程示意图;
图3示出了本申请实施例一中跨系统多媒体数据编解码方法应用的一种虚拟化系
统架构示意图;
图4示出了本申请实施例一中跨系统多媒体数据编解码方法应用的另一种虚拟化
系统架构示意图;
图5示出了本申请实施例一中跨系统多媒体数据编解码方法应用的另一种虚拟化
系统架构示意图;
图6示出了本申请实施例二中跨系统多媒体数据编解码装置的结构示意图;
图7示出了本申请实施例三中电子设备的结构示意图。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性
实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是
所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互
相结合。
发明人在发明过程中注意到:跨系统进行多媒体数据的编解码处理时涉及大量数
据在不同的物理存储区间的拷贝,一方面占用大量虚拟化系统架构的计算资源和存储资
源,导致虚拟化系统性能降低,另一方面延长了跨系统多媒体数据编解码处理时间。
针对上述不足,本申请提供了一种跨系统多媒体数据编解码方法,在第一操作系
统中,当需要对多媒体数据进行编解码处理时,可将多媒体数据通过共享内存发送至第二
操作系统,以在第二操作系统中完成所述多媒体数据的编解码处理,本申请中,通过共享内
存实现跨系统多媒体数据编解码过程中多媒体数据的传递,减少了数据拷贝次数,一方面
节约了虚拟化系统架构的计算资源和存储资源,提升虚拟化系统性能,另一方面缩短了跨
系统多媒体数据编解码处理时间。
为了便于本申请的实施,下面以实例进行说明。
实施例一:
在虚拟化系统架构启动时,Qemu可在内存中划分一块特定的地址空间,作为所述
虚拟化架构中各操作系统均可读写的共享内存,例如可通过系统调用的方式创建所述共享
内存。进一步的还可以对所述共享的内存空间进一步划分以支持多个进程或线程的访问。
所述共享内存的大小可以由开发人员设置,并适配于所述虚拟化系统架构中可能涉及的跨
系统传输。
客户机操作系统启动时,其多媒体框架能够从客户机操作系统内核层获取所述相
关配置信息进行初始化,进而获得所述共享内存的映射至客户机操作系统的地址空间,此
外还可与Qemu建立同步控制通道。
在主机操作系统中,Qemu可触发主机操作系统中的多媒体框架进行类似客户机操
作系统的初始化,以获得所述共享内存映射至主机操作系统的地址空间,进而与跨系统共
享内存建立连接。
图2示出了本申请实施例一中跨系统多媒体数据编解码方法流程示意图,如图2所
示,所述跨系统多媒体数据编解码方法包括:
步骤101,在第一操作系统中,获取对多媒体数据编解码处理的编解码请求,所述
编解码请求包括需要进行编解码处理的多媒体数据;将所述多媒体数据发送至共享内存;
根据所述编解码请求生成对所述多媒体数据进行编解码处理的编解码指令,所述编解码指
令包括所述多媒体数据在所述共享内存的偏移地址;将所述编解码指令基于跨系统通信发
送至第二操作系统;
步骤102,在所述第二操作系统中,根据所述编解码指令中的偏移地址由所述共享
内存获得所述多媒体数据;根据所述编解码指令对所述多媒体数据进行编解码处理,所述
共享内存对所述第一操作系统和所述第二操作系统均处于可读和可写状态;
步骤103中,在第二操作系统中,将所述多媒体数据的编解码处理结果反馈至所述
共享内存;在第一操作系统中,由所述共享内存获取所述编解码处理结果。
在步骤101中,第一操作系统中的应用程序发起多媒体数据编解码处理的请求后,
将所述请求中包括的需要进行编解码处理的多媒体数据存入第一操作系统和第二操作系
统均能够读写的共享内存中。所述多媒体数据可以是实际需要进行编解码处理的多媒体数
据,例如视频文件或者音频文件中实际需要进行编解码处理的数据等,也可以是实际需要
进行编解码处理的多媒体数据在内存中的位置以及其它信息,例如数据格式、时间标志、数
据大小等。
在虚拟化系统架构中,为第一操作系统分配了用于多媒体数据编解码处理的缓冲
区(Buffer),当所述缓冲区对应的物理内存为第一操作系统和第二操作系统均能够读写的
共享内存时,可直接基于地址映射将第一操作系统中的多媒体数据写入为其分配的缓冲
区。第一操作系统的kernel层可以把共享内存映射至第一操作系统的用户空间;第一操作
系统可以对其写入数据的共享内存执行偏移记录,即记录当前写入多媒体数据的内存块的
首地址相对于整个共享内存区的首地址的偏移地址。
此外根据所述编解码请求生成对所述多媒体数据进行编解码处理的编解码指令,
所述编解码指令指示了需要第二操作系统对传递的多媒体数据进行怎样的编解码处理,可
以包括编解码命令函数和相关参数等。并且,将所述多媒体数据在所述共享内存的偏移地
址包含在所述编解码指令中一同发送至第二操作系统。所述编解码指令可基于QEMU PIPE、
Socket或者共享内存等跨系统通信方式发送至第二操作系统。
在一些实施方式中,所述编解码指令基于共享内存方式发送至第二操作系统。
因基于共享内存的跨系统通信方式相较QEMU PIPE、Socket等方式更快速,因此基
于共享内存方式在第一操作系统和第二操作系统间传递编解码指令更快,进一步缩短了跨
系统多媒体数据编解码处理的时间。
在一些实施方式中,所述将所述多媒体数据发送至共享内存,包括:将所述多媒体
数据发送至非共享内存;将所述非共享内存中的多媒体数据拷贝至共享内存。
当为第一操作系统分配的所述缓冲区对应的物理内存仅可由第一操作系统直接
读写,而不能被第二操作系统读写时,即所述缓冲区对应的物理内存为非共享内存时,将第
一操作系统需要进行编解码处理的多媒体数据存入所述缓冲区对应的物理内存后,再将所
述多媒体数据拷贝至第一操作系统和第二操作系统均能够读写的共享内存中。
应当理解,在这些情况下,若所述编解码指令也通过共享内存方式进行跨系统传
输,则也需要将所述编解码指令先写入第一操作系统的非共享内存中,再将所述非共享内
存中的编解码指令拷贝至共享内存中,以供第二操作系统获取。
在步骤102中,第二操作系统的kernel层可用把共享内存映射至第二操作系统的
用户空间。当第二操作系统在获取所述编解码指令之后,可根据所述编解码指令中的偏移
地址,到共享内存的相应位置读取多媒体数据,进而根据所述编解码指令对所述多媒体数
据进行编解码处理,得到处理结果。具体的,在第二操作系统中,可以根据所述编解码指令
调用编解码器的驱动程序以驱动相应的编解码器完成编解码处理;可以根据所述编解码指
令加载编解码器组件完成编解码处理;还可以由第二操作系统中的OpenMAX集成层
(OpenMAX IL,OpenMAX Integration Layer)根据所述编解码指令对所述多媒体数据进行
编解码处理。在上述各种不同情况中所述编解码指令的格式和包含的具体内容也可能会相
应不同。
应当理解,当编解码指令是基于共享内存方式由第一操作系统传递至第二操作系
统时,所述第一操作系统还需要向第二操作系统发送所述编解码指令在共享内存中的偏移
地址,以使所述第二操作系统根据所述编解码指令的偏移地址由共享内存中获取编解码指
令,再进一步获取多媒体数据。
在步骤103中,在第二操作系统中,根据所述编解码指令进行多媒体数据的编解码
处理后,得到处理结果,将所述处理结果同样通过共享内存传递至第一操作系统中。例如将
所述编解码处理结果写入共享内存中,并记录所述处理结果在共享内存中的位置(首地址
偏移地址),将所述偏移地址基于QEMU PIPE、Socket或者共享内存等跨系统通信方式发送
至第一操作系统中,使第一操作系统可以通过所述处理结果的偏移地址到共享内存的相应
位置读取数据。所述处理结果可以是经过编解码处理后的多媒体数据,例如解码后的视频
文件或者压缩后的音频文件中的视频或者音频数据等,也可以是经过编解码处理后的多媒
体数据在内存中的位置以及其它信息,例如数据格式、时间标志、数据大小等。
上述第一操作系统为虚拟化系统架构中的客户机操作系统,所述第二操作系统为
虚拟化系统架构中的主机操作系统。
在一些实施方式中,所述步骤101为,在第一操作系统中,获取多媒体框架调用编
解码器进行多媒体数据编解码处理的编解码请求,所述编解码请求包括需要进行编解码处
理的多媒体数据;将所述编解码请求发送至共享内存;根据所述编解码请求生成对所述多
媒体数据进行编解码处理的编解码指令,所述编解码指令包括所述多媒体数据在所述共享
内存的偏移地址;将所述编解码指令基于跨系统通信发送至第二操作系统;所述步骤102
为,在第二操作系统中,根据所述编解码指令中的偏移地址由所述共享内存获得所述多媒
体数据;根据所述编解码指令调用所述编解码器的驱动程序对所述多媒体数据进行编解码
处理,所述共享内存对所述第一操作系统和所述第二操作系统均处于可读和可写状态。
图3示出了本申请实施例一中跨系统多媒体数据编解码方法应用的一种虚拟化系
统架构示意图,其以所述虚拟化系统架构中至少包括一个客户机操作系统,所述第一操作
系统为客户机操作系统,所述第二操作系统为主机操作系统为例。在该客户机操作系统中
运行有多媒体应用程序,例如视频播放器等,当所述多媒体应用程序需要对某些多媒体数
据进行编解码处理时,会向多媒体框架下发多媒体数据编解码请求,例如在视频播放器播
放高清视频时会向多媒体框架下发视频数据解码请求。
在步骤101中,客户机操作系统中运行的多媒体应用程序在需要对某些多媒体数
据进行编解码处理时,会向多媒体框架下发多媒体数据编解码请求,多媒体框架会根据多
媒体数据的类型、格式或者分辨率等为其选择适当的编解码器进行相应处理。当多媒体框
架判断所述多媒体数据需要由硬件编解码器进行相应处理时,调用客户机操作系统中的硬
件编解码器生成对所述多媒体数据进行硬件编解码的指令。本实施例中客户机操作系统中
的多媒体框架可以为OpenMAX或者其他现有的多媒体框架,当所述多媒体框架为OpenMAX
时,其具有一个或者多个硬件编解码器组件Component,多媒体框架通过调用各硬件编解码
器组件生成对多媒体数据进行硬件编解码处理的指令。
在客户机操作系统中不存在真实的硬件编解码器,而是在客户机操作系统内核层
中运行了硬件编解码器驱动程序前端,当硬件编解码器驱动程序前端接收到多媒体框架调
用硬件编解码器组件以进行对所述多媒体数据进行硬件编解码处理的指令后,将需要进行
硬件编解码处理的多媒体数据写入共享内存,并将所述多媒体数据在共享内存中的偏移地
址包含在所述指令中,通过跨系统通信方式将所述指令传递至主机操作系统内核层中运行
的硬件编解码器驱动程序后端。
在步骤102中,主机操作系统内核层中运行的硬件编解码器驱动程序后端,当接收
到客户机操作系统中硬件编解码器驱动程序前端发送的对多媒体数据进行硬件编解码处
理的指令后,根据所述指令中包含的偏移地址,由共享内存中获取多媒体数据,并在主机操
作系统中运行硬件编解码器的驱动程序,以由真正的硬件编解码器完成对所述多媒体数据
的硬件编解码处理。所述硬件编解码器驱动程序可以为V4L2Driver等。
在本实施方式中,在上述步骤102之后,还可以包括步骤103,将处理后的多媒体数
据基于共享内存反馈所述客户机操作系统;在客户机操作系统中,将所述处理后的多媒体
数据反馈所述多媒体框架。
在主机操作系统的硬件编解码器对所述多媒体数据完成编解码处理之后,主机操
作系统中的硬件编解码器驱动程序后端可以将进行编解码处理后的数据通过共享内存传
递至客户机操作系统中的硬件编解码器驱动程序前端。客户机操作系统中的硬件编解码器
驱动程序前端在接收到编解码处理后的数据后可将其反馈至多媒体框架,以便多媒体框架
将编解码处理后的数据反馈发起原编解码请求的多媒体应用程序。
在本实施方式中,以所述编解码为硬件编解码为例,即客户机操作系统中的多媒
体框架确定了所述编解码请求为硬件编解码请求,需要调用主机操作系统中硬件编解码器
的驱动程序以驱动硬件编解码器进行相应硬件编解码处理,应当理解,当客户机操作系统
中的多媒体框架确定了所述编解码请求为软件编解码请求时,同样可以通过共享内存由主
机操作系统进行相应的软件编解码处理。
在一些实施方式中,所述步骤101为,在第一操作系统OpenMAX集成层中,获取适配
层发送的对多媒体数据进行编解码处理的编解码请求,所述编解码请求包括需要进行编解
码处理的多媒体数据;将所述多媒体数据发送至共享内存;根据所述编解码请求生成对所
述多媒体数据进行编解码处理的编解码指令,所述编解码指令包括所述多媒体数据在所述
共享内存的偏移地址;将所述编解码指令基于跨系统通信发送至第二操作系统;所述步骤
102为,在第二操作系统OpenMAX集成层中,根据所述编解码指令中的偏移地址由所述共享
内存获得所述多媒体数据;根据所述编解码指令加载编解码器的组件对所述多媒体数据进
行编解码处理,所述共享内存对所述第一操作系统和所述第二操作系统均处于可读和可写
状态。
图4示出了本申请实施例一中跨系统多媒体数据编解码方法应用的另一种虚拟化
系统架构示意图,本实施方式所提供的技术方案适用于采用OpenMAX多媒体框架的操作系
统。其以所述虚拟化系统架构中至少包括一个客户机操作系统,所述第一操作系统为客户
机操作系统,所述第二操作系统为主机操作系统为例。在该客户机操作系统中运行有多媒
体应用程序,例如视频播放器等,当所述多媒体应用程序需要对某些多媒体数据进行编解
码处理时,会向多媒体框架下发多媒体数据编解码请求,例如在视频播放器播放高清视频
时会向多媒体框架下发视频数据解码请求。
在步骤101中,当客户机操作系统中的多媒体应用程序下发对多媒体数据进行编
解码处理的编解码请求后,在所述客户机操作系统的适配层可以根据多媒体数据的类型、
格式或者分辨率等为其选择适当的软件或者硬件编解码器。支持同一格式的编解码器可以
为多个,其中可以包括硬件编解码器和软件编解码器,在适配编解码器时可以根据预设规
则选择最适合的编解码器,例如:为分辨率要求低的多媒体文件选择软件编解码器、为分辨
率要求高的多媒体文件选择硬件编解码器等。客户机操作系统的OpenMAX集成层中接收适
配层发送的编解码请求后,生成所述编解码请求对应的编解码指令,将多媒体数据写入共
享内存,并将所述多媒体数据在共享内存中的偏移地址包含在所述编解码指令中,通过跨
系统通信方式将所述编解码指令传递至主机操作系统中。在本实施方式中,可以仅将适配
了硬件编解码器器的多媒体数据基于共享内存传递给主机操作系统,对适配了软件编解码
器的多媒体数据仍然使用所述客户机操作系统中的软件编解码器对所述多媒体文件进行
编解码;也可以将所有编解码请求的多媒体数据均基于共享内存传递给主机操作系统。
在步骤102中,主机操作系统获取客户机操作系统发送的编解码指令后,根据所述
编解码指令中包含的偏移地址由共享内存获得所述多媒体数据,在主机操作系统的
OpenMAX集成层中,根据所述编解码指令加载编解码器的组件对所述多媒体数据进行编解
码处理。
在一些实施方式中,在客户机操作系统的OpenMAX集成层与主机操作系统的
OpenMAX集成层中分别运行了OpenMAX前端和OpenMAX后端,在客户机操作系统的适配层为
应用程序的编解码请求匹配了适当的编解码器后,由所述OpenMAX前端根据确定了适当的
编解码器的编解码请求生成编解码指令,将多媒体数据写入共享内存,并将所述多媒体数
据在共享内存中的偏移地址包含在所述编解码指令中,通过跨系统通信方式将所述编解码
指令传递至主机操作系统中的OpenMAX后端。主机操作系统中的OpenMAX后端接收到
OpenMAX前端发送的编解码指令后,根据所述指令中包含的偏移地址,由共享内存中获取多
媒体数据,所述编解码指令,在主机操作系统OpenMAX集成层中加载相应的编解码器对所述
多媒体数据进行编解码处理。
在本实施方式中,在上述步骤102之后,还可以包括步骤103,将处理后的多媒体数
据基于共享内存反馈所述客户机操作系统;在客户机操作系统中,将所述处理后的多媒体
数据反馈所述适配层。
在主机操作系统OpenMAX集成层加载软件或者硬件编解码器对所述多媒体数据完
成编解码处理之后,主机操作系统可以通过OpenMAX后端将进行编解码处理后的数据基于
共享内存传递至客户机操作系统中的OpenMAX前端,客户机操作系统的OpenMAX前端,在接
收到编解码处理后的数据后,可将其反馈至适配层,进而反馈至发起原编解码请求的多媒
体应用程序。此外,在主机操作系统OpenMAX集成层加载软件或者硬件编解码器对所述多媒
体数据完成编解码处理之后,也可以将处理结果直接发送至主机操作系统中的多媒体应用
程序进行后续操作。
在一些实施方式中,所述步骤101为,在第一操作系统中,获取多媒体应用程序进
行多媒体数据编解码处理的编解码请求,所述编解码请求包括需要进行编解码处理的多媒
体数据;将所述多媒体数据发送至共享内存;根据所述编解码请求生成对所述多媒体数据
进行编解码处理的编解码指令,所述编解码指令包括所述多媒体数据在所述共享内存的偏
移地址;将所述编解码指令基于跨系统通信发送至第二操作系统;所述步骤102为,在第二
操作系统中,根据所述编解码指令中的偏移地址由所述共享内存获得所述多媒体数据;将
所述编解码指令和所述多媒体数据发送至第二操作系统中的OpenMAX集成层,以使所述第
二操作系统中的OpenMAX集成层根据所述编解码指令对所述多媒体数据进行编解码处理。
图5示出了本申请实施例一中跨系统多媒体数据编解码方法应用的另一种虚拟化
系统架构示意图,本实施方式所提供的技术方案适用于采用Android多媒体框架标准的,所
述多媒体框架具体可包括Stagefright+OpenMAX或者Opencore+OpenMAX。其以所述虚拟化
系统架构中至少包括一个客户机操作系统,所述第一操作系统为客户机操作系统,所述第
二操作系统为主机操作系统为例。在该客户机操作系统中运行有多媒体应用程序,例如视
频播放器等,当所述多媒体应用程序需要对某些多媒体数据进行编解码处理时,会向多媒
体框架下发多媒体数据编解码请求,例如在视频播放器播放高清视频时会向多媒体框架下
发视频数据解码请求。
在步骤101中,客户机操作系统中运行的多媒体应用程序在需要对某些多媒体数
据进行编解码处理时,会向多媒体框架下发多媒体数据编解码请求,所述编解码请求包括
需要进行编解码处理的多媒体数据。在客户机操作系统中,无需运行完整的多媒体框架根
据所述编解码请求对所述多媒体数据进行处理,仅需要根据所述编解码请求生成编解码指
令,将多媒体数据写入共享内存,并将所述多媒体数据在共享内存中的偏移地址包含在所
述编解码指令中,通过跨系统通信方式将所述编解码指令传递至主机操作系统中。
在步骤102中,主机操作系统中运行了完整的OpenMAX集成层,在接收到客户机操
作系统基于共享内存传递的编解码指令后,根据所述编解码指令中包含的偏移地址由共享
内存获得所述多媒体数据,将所述编解码指令连同待编解码处理的多媒体数据发送至主机
操作系统中的OpenMAX集成层,由OpenMAX集成层根据所述编解码指令对所述多媒体数据进
行编解码处理,可以包括加载各种软件编解码器组件进行软件编解码处理;也可以包括加
载各种硬件编解码器组件,驱动对应的硬件编解码器进行硬件编解码处理。
在一些实施方式中,在所述步骤101中,在客户机操作系统Stagefright框架的OMX
适配层中,获取多媒体应用程序进行多媒体数据编解码处理的编解码请求,所述编解码请
求包括需要进行编解码处理的多媒体数据;根据所述编解码请求生成对所述多媒体数据进
行编解码处理的编解码指令,所述编解码指令包括所述多媒体数据在所述共享内存的偏移
地址;将所述编解码指令基于跨系统通信发送至主机操作系统;在所述步骤102中,在主机
操作系统OMX适配层中,根据所述编解码指令中的偏移地址由共享内存获取所述多媒体数
据;将所述编解码指令和所述多媒体数据发送至主机操作系统中的OpenMAX集成层,以使所
述主机操作系统中的OpenMAX集成层根据所述编解码指令对所述多媒体数据进行编解码处
理。
以虚拟化系统架构采用Android多媒体框架(Stagefright+OpenMAX)为例,主机操
作系统和客户机操作系统中的Stagefright分别运行了OMX适配层,在所述适配层中分别引
用了类OMXClient。其中在主机操作系统的OMX适配层中,AwesomePlayer可调用OMX
Client::connect函数,通过binder机制获得MediaPlayerService,然后通过
MediaPlayerService创建OMX的实例,使主机操作系统中的OMXClient作为OMX的入口,可以
通过binder机制获得OMX提供的服务。
在客户机操作系统中,在客户机操作系统中Stagefright框架的OMX适配层中创建
新的类OMXClient前端,所述OMXClient前端能够向类mediaplayer、类mediacodec,或者其
他android系统多媒体框架中的其他类提供标准的类OMXClient接口,当客户机操作系统中
所述OMXClient前端获取到多媒体应用程序进行多媒体数据编解码处理的编解码请求后,
根据所述编解码请求生成编解码指令,将多媒体数据写入共享内存,并将所述多媒体数据
在共享内存中的偏移地址包含在所述编解码指令中,通过跨系统通信方式将所述编解码指
令传递至主机操作系统OMX适配层中的OMXClient后端,所述OMXClient后端能够根据所述
编解码指令中包含的偏移地址由共享内存获得所述多媒体数据,并将所述编解码指令连同
待编解码处理的多媒体数据通过Binder机制发送给MediaPlayerService、
MediaCodecService或者android系统多媒体框架中的其他Service。本实施方式中,将所述
OMXClient后端作为主机操作系统OMX适配层OMX的入口,使客户机操作系统中的发送至
OMXClient前端的编解码指令和多媒体数据能够经由OMXClient后端发送至主机操作系统
中运行的完整的OpenMAX集成层,进而完成硬件或者软件的编解码处理。
在本实施方式中,还可以根据所述编解码请求确定对所述多媒体数据进行编解码
处理的编解码器的信息进而生成对应所述编解码器的编解码指令,上述步骤102可以为,根
据所述编解码指令中的偏移地址由所述共享内存获得所述多媒体数据;将所述编解码指令
和所述多媒体数据发送至主机操作系统中的OpenMAX集成层,以使所述主机操作系统中的
OpenMAX集成层根据所述编解码指令加载所述编解码器的组件对所述多媒体数据进行编解
码处理。
对于Stagefright框架,在预先设置的配置文件中可以存储客户机操作系统支持
的所有编解码器,包括各种硬件编解码器和软件编解码器。在客户机操作系统的OMX适配层
OMXClient前端获取到多媒体应用程序发送的编解码请求后,Stagefright框架能够根据需
要进行编解码处理的多媒体数据确定所述多媒体数据适用的编解码器,例如根据多媒体数
据的类型、格式或者分辨率等为其选择适当的软件或者硬件编解码器,并生成所述编解码
器对应的编解码指令。
在主机操作系统的Stagefright框架OMX适配层OMXClient后端获取到客户机操作
系统发送的编解码指令后,根据所述编解码指令中的偏移地址由所述共享内存获得所述多
媒体数据,将所述编解码指令和所述多媒体数据发送至主机操作系统中的OpenMAX集成层,
以使所述OpenMAX集成层根据所述编解码请求加载适当的软件或者硬件编解码器组件对所
述多媒体数据进行编解码处理。
在本实施方式中,在上述步骤102之后,还可以包括步骤103,将处理后的多媒体数
据基于共享内存反馈所述客户机操作系统;在客户机操作系统中,将所述处理后的多媒体
数据反馈所述多媒体应用程序。
在主机操作系统的软件或者硬件编解码器对所述多媒体数据完成编解码处理之
后,主机操作系统OMX适配层中的OMXClient后端可以将进行编解码处理后的数据基于共享
内存传递至客户机操作系统多媒体框架OMX适配层中的OMXClient前端,客户机操作系统
OMX适配层中的OMXClient前端,在接收到编解码处理后的数据后可将其反馈至发起原编解
码请求的多媒体应用程序。
在上述实施方式中,Qemu启动时为多媒体创建了主机操作系统、客户机操作系统
均可访问的共享内存,在主机操作系统中创建该块共享内存的文件节点,并将该块共享内
存映射至客户机操作系统,例如映射为客户机操作系统PCI(Peripheral Component
Interconnect,外设部件互连标准)设备的内存空间。客户机操作系统中的多媒体前端(例
如编解码器驱动前端、OpenMAX前端或者OMXClient前端)由内核层获取配置信息进行初始
化后获取Qemu分配的共享内存空间,即得到了所述共享内存在客户机操作系统中的首地
址。主机操作系统中的多媒体后端(例如编解码器驱动后端、OpenMAX后端或者OMXClient后
端)启动后,监听其对应的前端的连接请求,当前端与后端进行连接时,多媒体后端根据前
述Qemu创建的共享内存的文件节点映射得到共享内存空间,即得到了所述共享内存在主机
操作系统中的首地址。之后,建立连接后的前端和后端可以通过上述共享内存在各自操作
系统中的首地址以及相同的偏移地址,通过共享内存中的同一块空间实现多媒体数据或者
编解码指令的跨系统传输。
本实施例中,提供了一种跨系统多媒体数据编解码方法,在第一操作系统中,当需
要对多媒体数据进行编解码处理时,可将多媒体数据通过共享内存发送至第二操作系统,
以在第二操作系统中完成所述多媒体数据的编解码处理,本申请中,通过共享内存实现跨
系统多媒体数据编解码过程中多媒体数据的传递,减少了数据拷贝次数,一方面节约了虚
拟化系统架构的计算资源和存储资源,提升虚拟化系统性能,另一方面缩短了跨系统多媒
体数据编解码处理时间。本申请还可以基于共享内存方式在第一操作系统和第二操作系统
间传递编解码指令,进一步缩短跨系统多媒体数据编解码处理的时间;在第一操作系统原
分配的缓冲区的物理存储区为非共享内存时,可将写入非共享内存的数据拷贝至共享内存
中以便于第二操作系统读取;此外本提案还公开了第一操作系统和第二操作系统的内核
层、OpenMAX集成层或者多媒体框架的适配层均可以基于共享内存实现跨系统传输多媒体
数据编解码请求,可根据用户需求调整,更灵活。
实施例二:
基于同一发明构思,本申请实施例中还提供了一种跨系统多媒体数据编解码装
置,由于这些装置解决问题的原理与跨系统多媒体数据编解码方法相似,因此这些装置的
实施可以参见方法的实施,重复之处不再赘述。如图6所示,所述跨系统多媒体数据编解码
装置200包括:
前端模块201,用于在第一操作系统中,获取对多媒体数据编解码处理的编解码请
求,所述编解码请求包括需要进行编解码处理的多媒体数据;将所述多媒体数据发送至共
享内存;根据所述编解码请求生成对所述多媒体数据进行编解码处理的编解码指令,所述
编解码指令包括所述多媒体数据在所述共享内存的偏移地址;将所述编解码指令基于跨系
统通信发送至第二操作系统;
后端模块202,用于在所述第二操作系统中,根据所述编解码指令中的偏移地址由
所述共享内存获得所述多媒体数据;根据所述编解码指令对所述多媒体数据进行编解码处
理,所述共享内存对所述第一操作系统和所述第二操作系统均处于可读和可写状态。
在一些实施方式中,所述将所述编解码指令基于跨系统通信发送至第二操作系
统,包括:将所述编解码指令基于共享内存方式发送至第二操作系统。
在一些实施方式中,所述将所述多媒体数据发送至共享内存,包括:将所述多媒体
数据发送至非共享内存;将所述非共享内存中的多媒体数据拷贝至共享内存。
在一些实施方式中,所述在第一操作系统中,获取对多媒体数据编解码处理的编
解码请求,所述编解码请求包括需要进行编解码处理的多媒体数据,包括:
在第一操作系统中,获取多媒体框架调用编解码器进行多媒体数据编解码处理的
编解码请求,所述编解码请求包括需要进行编解码处理的多媒体数据;
所述根据所述编解码指令对所述多媒体数据进行编解码处理,包括:
根据所述编解码指令调用所述编解码器的驱动程序对所述多媒体数据进行编解
码处理。
在一些实施方式中,所述前端模块201具体用于,在第一操作系统OpenMAX集成层
中,获取适配层发送的对多媒体数据进行编解码处理的编解码请求,所述编解码请求包括
需要进行编解码处理的多媒体数据;将所述多媒体数据发送至共享内存;根据所述编解码
请求生成对所述多媒体数据进行编解码处理的编解码指令,所述编解码指令包括所述多媒
体数据在所述共享内存的偏移地址;将所述编解码指令基于跨系统通信发送至第二操作系
统;
所述后端模块202具体用于,在所述第二操作系统OpenMAX集成层中,根据所述编
解码指令中的偏移地址由所述共享内存获得所述多媒体数据;根据所述编解码指令加载所
述编解码器的组件对所述多媒体数据进行编解码处理,所述共享内存对所述第一操作系统
和所述第二操作系统均处于可读和可写状态。
在一些实施方式中,所述在第一操作系统中,获取对多媒体数据编解码处理的编
解码请求,所述编解码请求包括需要进行编解码处理的多媒体数据,包括:
在第一操作系统中,获取多媒体应用程序进行多媒体数据编解码处理的编解码请
求,所述编解码请求包括需要进行编解码处理的多媒体数据;
所述根据所述编解码指令对所述多媒体数据进行编解码处理,包括:
将所述编解码指令和所述多媒体数据发送至第二操作系统中的OpenMAX集成层,
以使所述第二操作系统中的OpenMAX集成层根据所述编解码指令对所述多媒体数据进行编
解码处理。
在一些实施方式中,所述后端模块202还用于,在所述根据所述编解码指令对所述
多媒体数据进行编解码处理之后,将所述多媒体数据的编解码处理结果反馈至所述共享内
存;
所述前端模块201还用于,在第一操作系统中,由所述共享内存获取所述编解码处
理结果。
实施例三:
基于同一发明构思,本申请实施例中还提供了一种电子设备,由于其原理与跨系
统多媒体数据编解码方法相似,因此其实施可以参见方法的实施,重复之处不再赘述。如图
7所示,所述电子设备300包括:存储器301,一个或多个处理器302;以及一个或多个模块,所
述一个或多个模块被存储在所述存储器中,并被配置成由所述一个或多个处理器执行,所
述一个或多个模块包括用于执行任一上述方法中各个步骤的指令。
本实施例中,所述电子设备可以为手机、平板电脑、机器人或者其他智能设备。
实施例四:
基于同一发明构思,本申请实施例还提供了一种与电子设备结合使用的计算机程
序产品,所述计算机程序产品包括内嵌于计算机可读的存储介质中的计算机程序,所述计
算机程序包括用于使所述电子设备执行任一上述方法中的各个步骤的指令。
为了描述的方便,以上所述装置的各部分以功能分为各种模块分别描述。当然,在
实施本申请时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序
产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产
品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程
图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特
定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计
算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造
性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优
选实施例以及落入本申请范围的所有变更和修改。