虚拟化环境下的音频处理方法和设备转让专利

申请号 : CN201180003439.4

文献号 : CN103562869B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈普李小昌

申请人 : 华为技术有限公司

摘要 :

本发明提供一种虚拟化环境下音频处理方法和设备。该方法包括接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、VM和VMM;根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理。本发明实施例可以充分利用系统资源,降低成本。

权利要求 :

1.一种虚拟化环境下音频处理方法,其特征在于,包括:接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、虚拟机VM和虚拟机监控器VMM;

根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理;

所述接收到编解码调用消息后,查询系统资源的使用情况,包括:编解码组件接收音频模块发送的编解码调用消息,并从所述编解码调用消息中获取要处理的音频数据;

编解码组件向硬件驱动模块发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块根据所述请求消息向虚拟硬件模块发送编解码开始请求消息;

虚拟硬件模块根据所述编解码开始请求消息向资源分配器发送物理硬件资源申请消息;

资源分配器根据所述物理硬件资源申请消息查询专用芯片的使用情况;

资源分配器在确定出存在空闲的专用芯片时,向虚拟硬件模块发送申请成功消息;

虚拟硬件模块根据所述申请成功消息向硬件驱动模块发送硬件准备就绪消息;

硬件驱动模块根据所述硬件准备就绪消息向编解码组件发送表明硬件准备就绪的初始化结果消息;

或,

所述接收到编解码调用消息后,查询系统资源的使用情况,包括:编解码组件接收音频模块发送的编解码调用消息,并从所述编解码调用消息中获取要处理的音频数据;

编解码组件向硬件驱动模块发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块根据所述请求消息向虚拟硬件模块发送编解码开始请求消息;

虚拟硬件模块根据所述编解码开始请求消息向资源分配器发送物理硬件资源申请消息;

资源分配器根据所述物理硬件资源申请消息查询专用芯片的使用情况;

资源分配器在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VM自身进行编解码处理时,向虚拟硬件模块发送携带硬件不可得信息的申请失败消息;所述硬件不可得信息用于指示当前不存在空闲的专用芯片;

虚拟硬件模块根据所述申请失败消息,向硬件驱动模块发送携带硬件不可得信息的硬件准备结果;

硬件驱动模块向编解码组件发送携带硬件不可得信息的请求结果;

或,

所述接收到编解码调用消息后,查询系统资源的使用情况,包括:编解码组件接收音频模块发送的编解码调用消息,并从所述编解码调用消息中获取要处理的音频数据;

编解码组件向硬件驱动模块发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块根据所述请求消息向虚拟硬件模块发送编解码开始请求消息;

虚拟硬件模块根据所述编解码开始请求消息向资源分配器发送物理硬件资源申请消息;

资源分配器根据所述物理硬件资源申请消息查询专用芯片的使用情况;

资源分配器在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VMM进行编解码处理时,向虚拟硬件模块发送携带使用硬件模拟方式的信息的申请失败消息;

虚拟硬件模块根据所述申请失败消息,向硬件驱动模块发送携带使用硬件模拟方式的信息的硬件准备结果;

硬件驱动模块向编解码组件发送携带使用硬件模拟方式的信息的请求结果。

2.根据权利要求1所述的方法,其特征在于,所述根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理,包括:如果根据所述系统资源的使用情况确定出存在空闲的专用芯片,则使用所述空闲的专用芯片对所述要处理的音频数据进行处理。

3.根据权利要求1所述的方法,其特征在于,所述根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理,包括:如果根据所述系统资源的使用情况确定出不存在空闲的专用芯片,则根据VM的使用情况和VMM的使用情况,确定由VM或者VMM对所述要处理的音频数据进行处理。

4.根据权利要求3所述的方法,其特征在于,所述根据VM的使用情况和VMM的使用情况,确定由VM或者VMM对所述要处理的音频数据进行处理,包括:在VM的使用率高于第一设定值且VMM的使用率低于第二设定值时,使用VMM对所述要处理的音频数据进行处理,或者,在VM的使用率低于第一设定值且VMM的使用率高于第二设定值时,使用VM对所述要处理的音频数据进行处理。

5.根据权利要求1所述的方法,其特征在于,所述对所述要处理的音频数据进行处理包括:使用所述空闲的专用芯片对所述要处理的音频数据进行处理,所述使用所述空闲的专用芯片对所述要处理的音频数据进行处理,包括:编解码组件接收到所述表明硬件准备就绪的初始化结果消息后,向硬件驱动模块发送编解码开始消息;

硬件驱动模块根据所述编解码开始消息将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块发送DMA指令;

虚拟硬件模块根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并将所述要处理的音频数据传输给专用芯片;

专用芯片对所述要处理的音频数据进行编解码处理;

专用芯片将处理后的音频数据传输给虚拟硬件模块;

虚拟硬件模块获取处理后的音频数据后,向硬件驱动模块发送DMA中断指令;

硬件驱动模块根据所述DMA中断指令,从虚拟硬件模块获取所述处理后的音频数据,并发送给编解码组件;

编解码组件将所述处理后的音频数据发送给音频模块。

6.根据权利要求1所述的方法,其特征在于,所述对所述要处理的音频数据进行处理包括:使用VM对所述要处理的音频数据进行处理,所述使用VM对所述要处理的音频数据进行处理,包括:编解码组件接收到所述携带硬件不可得信息的请求结果后,使用自身的编解码算法对所述要处理的音频数据进行编解码处理;

编解码组件将处理后的音频数据发送给音频模块。

7.根据权利要求1所述的方法,其特征在于,所述对所述要处理的音频数据进行处理包括:使用VMM对所述要处理的音频数据进行处理,所述使用VMM对所述要处理的音频数据进行处理,包括:编解码组件接收到所述携带使用硬件模拟方式的信息的请求结果后,向硬件驱动模块发送编解码开始消息;

硬件驱动模块根据所述编解码开始消息,将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块发送直接内存存取DMA指令;

虚拟硬件模块根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并采用虚拟硬件模块自身的编解码算法对所述要处理的音频数据进行处理;

虚拟硬件模块在对音频数据进行处理后,向硬件驱动模块发送DMA中断指令;

硬件驱动模块根据所述DMA中断指令,从虚拟硬件模块获取所述处理后的音频数据,并发送给编解码组件;

编解码组件将所述处理后的音频数据发送给音频模块。

8.一种虚拟机环境下音频处理设备,其特征在于,包括:查询模块,用于接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、虚拟机VM和虚拟机监控器VMM;

处理模块,用于根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理;

所述查询模块包括:

编解码组件,用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块,用于根据所述编解码组件发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;

虚拟硬件模块,用于根据所述硬件驱动模块发送的编解码开始请求消息,发送物理硬件资源申请消息;

资源分配器,用于根据所述虚拟硬件模块发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出存在空闲的专用芯片时,向虚拟硬件模块发送申请成功消息;

所述虚拟硬件模块还用于根据所述申请成功消息向硬件驱动模块发送硬件准备就绪消息;

所述硬件驱动模块还用于根据所述硬件准备就绪消息向编解码组件发送表明硬件准备就绪的初始化结果消息;

或,

所述查询模块包括:

编解码组件,用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块,用于根据所述编解码组件发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;

虚拟硬件模块,用于根据所述硬件驱动模块发送的编解码开始请求消息,发送物理硬件资源申请消息;

资源分配器,用于根据所述虚拟硬件模块发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VM自身进行编解码处理时,向虚拟硬件模块发送携带硬件不可得信息的申请失败消息;所述硬件不可得信息用于指示当前不存在空闲的专用芯片;

所述虚拟硬件模块还用于根据所述申请失败消息,向硬件驱动模块发送携带硬件不可得信息的硬件准备结果;

所述硬件驱动模块还用于向编解码组件发送携带硬件不可得信息的请求结果;

或,

所述查询模块包括:

编解码组件,用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;

硬件驱动模块,用于根据所述编解码组件发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;

虚拟硬件模块,用于根据所述硬件驱动模块发送的编解码开始请求消息,发送物理硬件资源申请消息;

资源分配器,用于根据所述虚拟硬件模块发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VMM进行编解码处理时,向虚拟硬件模块发送携带使用硬件模拟方式的信息的申请失败消息;

所述虚拟硬件模块还用于根据所述申请失败消息,向硬件驱动模块发送携带使用硬件模拟方式的信息的硬件准备结果;

所述硬件驱动模块还用于向编解码组件发送携带使用硬件模拟方式的信息的请求结果。

9.根据权利要求8所述的设备,其特征在于,所述处理模块具体用于:如果根据所述系统资源的使用情况确定出存在空闲的专用芯片,则使用所述空闲的专用芯片对所述要处理的音频数据进行处理;或者,如果根据所述系统资源的使用情况确定出不存在空闲的专用芯片,则根据VM的使用情况和VMM的使用情况,确定由VM或者VMM对所述要处理的音频数据进行处理。

10.根据权利要求8所述的设备,其特征在于,所述处理模块包括:编解码组件,用于接收到所述表明硬件准备就绪的初始化结果消息后,向硬件驱动模块发送编解码开始消息;

硬件驱动模块,用于根据所述编解码开始消息将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块发送直接内存存取DMA指令;

虚拟硬件模块,用于根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并将所述要处理的音频数据传输给专用芯片;

专用芯片,用于对所述要处理的音频数据进行编解码处理,并将处理后的音频数据传输给虚拟硬件模块;

虚拟硬件模块还用于获取处理后的音频数据后,向硬件驱动模块发送DMA中断指令;

硬件驱动模块还用于根据所述DMA中断指令,从虚拟硬件模块获取所述处理后的音频数据,并发送给编解码组件;

编解码组件还用于将所述处理后的音频数据发送给音频模块。

11.根据权利要求8所述的设备,其特征在于,所述处理模块包括:编解码组件,用于接收到所述携带硬件不可得信息的请求结果后,使用自身的编解码算法对所述要处理的音频数据进行编解码处理,并将处理后的音频数据发送给音频模块。

12.根据权利要求8所述的设备,其特征在于,所述处理模块包括:编解码组件,用于接收到所述携带使用硬件模拟方式的信息的请求结果后,向硬件驱动模块发送编解码开始消息;

硬件驱动模块,用于根据所述编解码开始消息,将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块发送DMA指令;

虚拟硬件模块,用于根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并采用虚拟硬件模块自身的编解码算法对所述要处理的音频数据进行处理,以及在对音频数据进行处理后,向硬件驱动模块发送DMA中断指令;

硬件驱动模块还用于根据所述DMA中断指令,从虚拟硬件模块获取所述处理后的音频数据,并发送给编解码组件;

编解码组件还用于将所述处理后的音频数据发送给音频模块。

说明书 :

虚拟化环境下的音频处理方法和设备

技术领域

[0001] 本发明涉及云计算技术领域,尤其涉及一种虚拟化环境下的音频处理方法和设备。

背景技术

[0002] 虚拟桌面是目前云计算技术引发的使用计算机方式的一种变迁,云计算将计算资源集中于云端的数据中心,以虚拟机(Virtual Machine,VM)的方式提供给用户使用。用户在需要使用这些虚拟机时,就需要使用虚拟桌面技术将各种计算机输入传输至运行于远端数据中心中的虚拟机计算资源中作为计算输入,同时将输出,例如显示、音频、视频等,传输至用户本地并呈现给用户,实现人机交互。音频重定向技术是虚拟桌面技术中的重要组成之一。由于现有的广域网环境下用户和数据中心间的网络带宽是有限的,所以在进行音频重定向时需要对音频数据进行编解码处理以减少传输的数据量。
[0003] 现有技术中,虚拟机自身可以处理音频数据,或者,也可以在服务器内配置专用芯片,由专用芯片对音频数据进行处理。对于确定的场景,服务器上的所有虚拟机采用相同的处理方式进行音频数据处理。例如,服务器上没有配置专用芯片,该服务器上的所有虚拟机将自己处理音频数据,或者,如果服务器上配置有专用芯片,该服务器上的所有虚拟机将音频数据发送给专用芯片,由专用芯片进行处理。
[0004] 但是,这种单一处理方式会造成系统资源浪费和成本增加。例如,对于配置了专用芯片的场景,由于所有虚拟机的音频数据都需要专用芯片进行处理,为了保证所有虚拟机在同时运行时也可以被处理,则需要配置数量与虚拟机的最大数量相对应的专用芯片。但是,通常虚拟机不会同时运行,即使同时运行也不会同时进行音频处理,因此,按照虚拟机的最大数据配置对应数量的专用芯片是不合理的,浪费了资源,造成了成本增加。

发明内容

[0005] 本发明提供一种虚拟化环境下的音频处理方法和设备,可以充分利用系统资源,降低成本。
[0006] 本发明提供了一种虚拟机环境下的音频处理方法,包括:
[0007] 接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、VM和VMM;
[0008] 根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理。
[0009] 本发明提供了一种虚拟化环境下的音频处理设备,包括:
[0010] 查询模块,用于接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、VM和VMM;
[0011] 处理模块,用于根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理。
[0012] 由上述技术方案可知,本发明实施例通过查询系统资源的使用情况,选择空闲的系统资源处理音频数据,可以在配置较少的专用芯片时选择由其他系统资源对音频数据进行处理,也就是说,可以根据实际情况选择系统资源,而并不限定由单一的系统资源对音频数据进行处理,因此可以充分利用系统中的所有资源,降低配置较多专用芯片所需的成本。

附图说明

[0013] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0014] 图1为本发明虚拟化环境下音频处理方法一实施例的流程示意图;
[0015] 图2为本发明实施例基于的逻辑结构示意图;
[0016] 图3为本发明虚拟化环境下音频处理方法另一实施例的流程示意图;
[0017] 图4为本发明虚拟化环境下音频处理方法另一实施例的流程示意图;
[0018] 图5为本发明虚拟化环境下音频处理方法另一实施例的流程示意图;
[0019] 图6为本发明虚拟机环境下音频处理设备一实施例的结构示意图;
[0020] 图7为本发明虚拟机环境下音频处理设备另一实施例的结构示意图。

具体实施方式

[0021] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022] 图1为本发明虚拟化环境下音频处理方法一实施例的流程示意图,包括:
[0023] 步骤11:接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、VM和虚拟机监控器(Virtual Machine Monitor,VMM);
[0024] 步骤12:根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理。
[0025] 其中,由于专用芯片可以提供更好的编解码性能,因此,如果存在空闲的专用芯片则优先使用专用芯片进行音频数据处理。当不存在空闲的专用芯片时,可以根据VM和VMM的使用情况,采用VM的CPU或者VMM的CPU进行音频数据处理。
[0026] 由于在专用芯片不足时,还可以采用VM或VMM对音频数据进行处理,因此,本发明实施例中并不需要按照虚拟机的最大数量配置专用芯片的个数。例如,假设每个专用芯片可以为N个虚拟机服务,虚拟机的最大个数为k×N,则如果按照现有技术,那需要配置k个专用芯片。但是,由于通常k×N个虚拟机不会同时运行,或者不会同时使用音频处理,配置的k个专用芯片会在大部分时间存在空闲的专用芯片。但是,本发明实施例中,可以配置数量小于k的专用芯片,假设通常同时使用音频的虚拟机的个数为(k-m)×N个,则本实施例中可以只配置k-m个专用芯片。这样就可以避免专用芯片的空闲,使得专用芯片被充分使用,能够满足通常的场景所需。另外,即使对于偶然场景,即除(k-m)×N个虚拟机之外,还另有虚拟机需要使用音频数据,那么也可以采用VM自身或者VMM对新启动的虚拟机的音频数据进行处理。上述的专用芯片的个数可以根据同时需要音频处理的虚拟机的个数的最大值进行设定。由于通常同时需要音频处理的虚拟机的个数较少,因此,本发明实施例中的专用芯片的个数通常是远小于现有技术中按照虚拟机的最大个数选择的专用芯片的个数。
[0027] 本实施例通过对系统资源的使用情况的查询,可以充分利用各种系统资源,可以配置较少的专用芯片,降低成本。
[0028] 图2为本发明实施例基于的逻辑结构示意图,下述各实施例的场景可以结合该逻辑结构执行。该逻辑结构可以是云数据中心的服务器20的结构示意图,其中底层为主机硬件,主机硬件包括专用芯片和CPU。服务器上可以虚拟出多个虚拟机,用以分配给不同的用户使用,参见图2,多个虚拟机分别为VM1...VMn;每个虚拟机内可以设置音频模块、编解码组件和硬件驱动模块,图2中只以VM1为例,只在VM1中示出了上述模块,可以理解的是,其余虚拟机中也包含上述模块,另外,虚拟机中还可以包含其余模块。虚拟机监控器(VMM)可以监控虚拟机以及专用芯片的占用情况,并可以在虚拟机和主机硬件间传递数据;VMM中可以设置虚拟硬件模块,与现有技术不同的是,本发明实施例中还包含资源分配器。具体地:
[0029] 音频模块:虚拟桌面中负责音频数据发送和接收的模块。音频模块在接收到需要传输到客户端的音频数据后,会根据情况决定是否使用压缩以及使用哪种压缩格式,然后调用编解码组件进行音频格式的转换和压缩;在接收到客户端发送过来的音频数据后,也需要转换为特定的音频格式。
[0030] 编解码组件:被音频模块调用的组件,在系统中注册自己,将专用芯片的功能以库的形式提供给软件开发者使用。对于芯片特殊计算能力的使用,编解码组件中存在决策判断逻辑,在被调用来进行编解码处理时,会向硬件驱动模块发送消息获取硬件资源,如果获取成功,编解码组件将使用专用芯片自己的开发库来进行编解码处理;如果获取失败,将调用现有普通的软件编解码库通过VM自己的CPU来实现编解码处理。
[0031] 硬件驱动模块:专用芯片在VM中的驱动程序,可以是全功能的芯片驱动,与非虚拟化情况下操作系统中安装的专用芯片驱动没有差别。
[0032] 虚拟硬件模块:截获VM中硬件驱动模块的命令并作出应答,用于为VM提供虚拟的硬件。虚拟硬件模块在接收到硬件驱动模块的I/O请求后会首先向资源分配器发送物理硬件资源请求命令。如果请求到芯片资源,虚拟硬件模块会根据I/O请求将此芯片资源与特定的用户绑定一段时间。如果请求不到芯片资源,从资源分配器得到的返回值可能存在两种,一种会指示虚拟硬件模块使用VMM的CPU计算能力模拟芯片的行为;另一种会指示虚拟硬件模块向VM中的驱动程序返回硬件不可得的返回值。
[0033] 资源分配器:监视系统运行负载状况并记录专用芯片的使用情况以及CPU状况,在接收到特定VM的虚拟硬件模块发出的资源请求时,作出调度判断,确定是否允许当前VM的虚拟硬件模块映射到物理资源上,这种映射关系维持的时间可以根据相应的策略动态更改,以高效地被多个VM重用。如果当前没有足够的专用芯片资源,则根据CPU的负载情况进行进一步的判断。如果当前VM的CPU负载高于警戒值,则决定使用VMM的CPU进行硬件行为模拟;否则返回硬件不可得,让VM使用自己的CPU进行压缩解压处理。
[0034] 专用芯片:使用硬件实现编解码处理逻辑的特殊芯片,可以高效处理指定的格式的音频编解码,节省CPU资源。
[0035] 上述模块中,与现有技术不同的是,本发明实施例中新增资源分配器,以便动态地监视专用芯片、VM、VMM的使用情况,确定由哪种资源对音频数据进行处理。另外,与之对应的,现有技术中的编解码组件、硬件驱动模块、虚拟硬件模块也要进行功能增强,例如,需要首先查询系统资源的使用情况,在获取使用情况结果后将音频数据交由相应的模块进行处理。
[0036] 结合上述模块,本发明可以给出如下实施例。
[0037] 图3为本发明虚拟化环境下音频处理方法另一实施例的流程示意图,本实施例以使用专业芯片处理音频数据为例。参见图3,本实施例包括:
[0038] 步骤301:音频模块向编解码组件发送编解码调用消息,该编解码调用消息中携带要处理的音频数据。
[0039] 可以理解的是,如果是要向外界发送音频数据,音频模块是要进行编码操作,如果是接收到外界发送的音频数据,音频模块是要进行解码操作,因此,上述的编解码调度消息具体为编码调度消息或者解码调度消息,与此对应的是,后续的编解码相关消息应该具体是编码相关消息或者解码消息。由于本发明实施例可以应用于编码过程也可以应用于解码过程,因此统称为编解码消息。
[0040] 步骤302:编解码组件向硬件驱动模块发送请求消息,该请求消息用于查询专用芯片的使用情况;
[0041] 其中,音频模块调用编解码组件后,编解码组件可以首先调用专用芯片开发库接口进行初始化操作,即发送上述的请求消息,查询专用芯片当前是否可用,以便在可用时调用专用芯片进行真正的编解码处理。
[0042] 步骤303:硬件驱动模块向虚拟硬件模块发送编解码开始请求消息,以便查询专用芯片的使用情况。
[0043] 其中,该编解码开始请求消息可以是I/O控制码。
[0044] 步骤304:虚拟硬件模块向资源分配器发送物理硬件资源申请消息;
[0045] 其中,虚拟硬件模块在接收到编解码开始请求消息后,可以首先查询自己是否拥有硬件访问权限,在具有硬件访问权限后发送物理硬件资源申请消息。
[0046] 步骤305:资源分配器查询专用芯片的使用情况。
[0047] 由于资源分配器可以监视系统内各模块的负载情况,因此资源分配器可以确定专用芯片的使用情况,以确定是否存在空闲的专用芯片。例如,系统中预先配置了M个专用芯片,当前已经被虚拟机使用的专用芯片的个数小于M个,则可以确定出存在空闲的专用芯片;如果当前已经被虚拟机使用的专用芯片的个数达到M个,则确定不存在空闲的专用芯片。
[0048] 步骤306:资源分配器在确定出存在空闲的专用芯片时,向虚拟硬件模块发送申请成功消息;
[0049] 在返回申请成功消息后,可以将专用芯片分配给音频模块所在的虚拟机使用一定时间,该时间段内该虚拟机的音频数据可以由专用芯片进行处理。该时间段的具体数值可以根据实际情况设定。
[0050] 步骤307:虚拟硬件模块根据所述申请成功消息向硬件驱动模块发送硬件准备就绪消息;
[0051] 其中,该硬件准备就绪消息可以是I/O控制结果。
[0052] 步骤308:硬件驱动模块根据所述硬件准备就绪消息向编解码组件发送表明硬件准备就绪的初始化结果消息。
[0053] 步骤309:编解码组件向硬件驱动模块发送编解码开始消息;
[0054] 步骤310:硬件驱动模块接收到编解码开始消息后,将要处理的音频数据从VM的用户态拷贝到VM的内核态,并向虚拟硬件模块发送直接内存存取(Direct Memory Access,DMA)指令;
[0055] 其中,编解码组件位于VM的用户态内,硬件驱动模块位于VM的内核态内。
[0056] 音频模块发送编解码调用消息后可以将要处理的数据发送给编解码组件,使得要处理的音频数据位于用户态内。为了后续数据传输,硬件驱动模块需要从用户态获取要处理的音频数据并保存在自身所在的内核态。
[0057] 步骤311:虚拟硬件模块根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并将所述要处理的音频数据传输给专用芯片;
[0058] 步骤312:专用芯片对所述要处理的音频数据进行编解码处理;
[0059] 其中,专用芯片可以采用现有技术中的专用芯片,专用芯片可以提供比VM自身的CPU编解码更高的性能。
[0060] 步骤313:专用芯片将处理后的音频数据传输给虚拟硬件模块;
[0061] 步骤314:虚拟硬件模块获取处理后的音频数据后,向硬件驱动模块发送DMA中断指令;
[0062] 步骤315:硬件驱动模块根据所述DMA中断指令,从虚拟硬件模块获取处理后的音频数据,并将处理后的音频数据发送给编解码组件。
[0063] 其中,硬件驱动模块虚拟硬件模块获取处理后的音频数据后,可以通知编解码组件,编解码组件接收到通知后,可以将处理后的音频数据从内核态拷贝至用户态。
[0064] 步骤316:编解码组件将处理后的音频数据发送给音频模块。
[0065] 图4为本发明虚拟化环境下音频处理方法另一实施例的流程示意图,本实施例以使用VM自身的CPU对音频数据进行处理为例,参见图4,本实施例包括:
[0066] 步骤401:音频模块向编解码组件发送编解码调用消息,该编解码调用消息中携带要处理的音频数据。
[0067] 步骤402:编解码组件向硬件驱动模块发送请求消息,该请求消息用于查询专用芯片的使用情况;
[0068] 步骤403:硬件驱动模块向虚拟硬件模块发送编解码开始请求消息,以便查询专用芯片的使用情况。
[0069] 步骤404:虚拟硬件模块向资源分配器发送物理硬件资源申请消息。
[0070] 上述的步骤401~404的具体内容可以分别参见步骤301~304。
[0071] 步骤405:资源分配器查询专用芯片的使用情况,并在不存在空闲的专用芯片时,进一步查询VM和VMM的使用情况。
[0072] 其中,在上一实施例的基础上,如果查询后不存在空闲的专用芯片,则还需要进一步查询VM和VMM的使用情况,如果VM的当前使用率低于第一设定值而VMM的当前使用率高于第二设定值,则确定由VM自己的CPU对音频数据进行处理。具体的,第一设定值用于表征VM的负载能力,当VM的使用率高于第一设定值时,表明VM不能再处理音频数据,而如果VM的使用率低于第一设定值,表明VM还具有继续处理音频数据的能力;第二设定值用于表征VMM的负载能力,当VMM的使用率高于第二设定值时,VMM不能再处理音频数据,而如果VMM的使用率低于第二设定值,表明VMM还具有继续处理音频数据的能力。上述的第一设定值和第二设定值可以根据实际情况进行设置。
[0073] 步骤406:资源分配器在确定出不存在空闲的专用芯片且确定出使用VM自身进行编解码处理时,向虚拟硬件模块发送申请失败消息,并且该申请失败消息中携带硬件不可得信息;
[0074] 步骤407:虚拟硬件模块向硬件驱动模块发送硬件准备结果,该硬件准备结果中携带硬件不可得信息;
[0075] 步骤408:硬件驱动模块向编解码组件发送请求结果,该请求结果中携带硬件不可得信息。
[0076] 步骤409:编解码组件接收到该请求结果后,使用VM自身的CPU对要处理的音频数据进行编解码处理。
[0077] 其中,VM自身的CPU内会保存编解码算法,可以完成对音频数据的编解码处理,此时,相当于现有技术中没有配备专用芯片时的编解码处理。
[0078] 步骤410:编解码组件将处理后的音频数据发送给音频模块。
[0079] 图5为本发明虚拟化环境下音频处理方法另一实施例的流程示意图,本实施例以使用VMM进行音频数据处理为例,参见图5,本实施例包括:
[0080] 步骤501:音频模块向编解码组件发送编解码调用消息,该编解码调用消息中携带要处理的音频数据。
[0081] 步骤502:编解码组件向硬件驱动模块发送请求消息,该请求消息用于查询专用芯片的使用情况;
[0082] 步骤503:硬件驱动模块向虚拟硬件模块发送编解码开始请求消息,以便查询专用芯片的使用情况。
[0083] 步骤504:虚拟硬件模块向资源分配器发送物理硬件资源申请消息。
[0084] 上述的步骤501~504的具体内容可以分别参见步骤301~304。
[0085] 步骤505:资源分配器查询专用芯片的使用情况,并在不存在空闲的专用芯片时,进一步查询VM和VMM的使用情况。
[0086] 其中,在图3所示的实施例的基础上,如果查询后不存在空闲的专用芯片,则还需要进一步查询VM和VMM的使用情况,如果VM的当前使用率高于第一设定值而VMM的当前使用率低于第二设定值,则确定由虚拟硬件的CPU对音频数据进行处理。
[0087] 关于第一设定值和第二设定值的具体说明可以参见上一实施例。
[0088] 另外,当VM的当前使用率低于第一设定值且VMM的当前使用率低于第二设定值时,也就是VM和VMM都具有继续处理音频数据的能力时,可以随机选择VM或VMM进行后续音频数据,或者,预先设定此种情况由VM或VMM进行处理,或者,比较VM的使用率与第一设定值之间的比值,以及VMM的使用率与第二设定值之间的比值,选择比值较小,也就是负载较轻的设备进行处理。另外,当VM和VMM都不具有继续处理音频数据的能力时,可以结束音频数据处理。
[0089] 步骤506:资源分配器在确定出不存在空闲的专用芯片且确定出使用VMM进行编解码处理时,向虚拟硬件模块发送申请失败消息,该申请失败消息中携带使用硬件模拟方式的信息;
[0090] 步骤507:虚拟硬件模块向硬件驱动模块发送硬件准备结果,该硬件准备结果携带使用硬件模拟方式的信息;
[0091] 步骤508:硬件驱动模块向编解码组件发送请求结果,该请求结果中携带使用硬件模拟方式的信息。
[0092] 步骤509:编解码组件接收到携带使用硬件模拟方式的信息的请求结果后,向硬件驱动模块发送编解码开始消息;
[0093] 步骤510:硬件驱动模块根据所述编解码开始消息,将要处理的音频数据从VM的用户态拷贝到VM的内核态,并向虚拟硬件模块发送DMA指令;
[0094] 步骤511:虚拟硬件模块从VM的内核态获取要处理的音频数据,并使用VMM的CPU虚拟的硬件对要处理的音频数据进行处理;
[0095] 步骤512:虚拟硬件模块在对音频数据进行处理后,向硬件驱动模块发送DMA中断指令;
[0096] 步骤513:硬件驱动模块根据所述DMA中断指令,从虚拟硬件模块获取处理后的音频数据,并将处理后的音频数据发送给编解码组件。
[0097] 其中,硬件驱动模块虚拟硬件模块获取处理后的音频数据后,可以通知编解码组件,编解码组件接收到通知后,可以将处理后的音频数据从内核态拷贝至用户态将处理后的音频数据发送给编解码组件。
[0098] 步骤514:编解码组件将处理后的音频数据发送给音频模块。
[0099] 本发明实施例通过查询系统资源的使用情况,采用上述三种之一的空闲的系统资源处理音频数据,可以配置较少的专用芯片,实现系统资源的充分利用并降低成本。
[0100] 图6为本发明虚拟机环境下音频处理设备一实施例的结构示意图,该设备可以是执行上述方法的设备,该设备可以是提供云服务的服务器,该设备包括查询模块61和处理模块62;查询模块61用于接收到编解码调用消息后,查询系统资源的使用情况,所述编解码调用消息中携带要处理的音频数据,所述系统资源包括:专用芯片、VM和VMM;处理模块62用于根据所述系统资源的使用情况,采用空闲的系统资源对所述要处理的音频数据进行处理。
[0101] 可选的,所述处理模块具体用于:如果根据所述系统资源的使用情况确定出存在空闲的专用芯片,则使用所述空闲的专用芯片对所述要处理的音频数据进行处理;或者,如果根据所述系统资源的使用情况确定出不存在空闲的专用芯片,则根据VM的使用情况和VMM的使用情况,确定由VM或者VMM对所述要处理的音频数据进行处理。
[0102] 可选的,处理模块进一步用于在VM的使用率高于第一设定值且VMM的使用率低于第二设定值时,使用VMM对所述要处理的音频数据进行处理,或者,在VM的使用率低于第一设定值且VMM的使用率高于第二设定值时,使用VM对所述要处理的音频数据进行处理。
[0103] 本实施例通过查询系统资源的使用情况,选择空闲的系统资源处理音频数据,可以在配置较少的专用芯片时选择由其他系统资源对音频数据进行处理,也就是说,可以根据实际情况选择系统资源,而并不限定由单一的系统资源对音频数据进行处理,因此可以充分利用系统中的所有资源,降低配置较多专用芯片所需的成本。
[0104] 图7为本发明虚拟机环境下音频处理设备另一实施例的结构示意图,该设备包括编解码组件71、硬件驱动模块72、虚拟硬件模块73、资源分配器74和专用芯片75;这些部件的组合可以完成上一实施例查询模块和处理模块的功能。
[0105] 可选的,针对查询:编解码组件71用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;硬件驱动模块72用于根据所述编解码组件71发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;虚拟硬件模块73用于根据所述硬件驱动模块72发送的编解码开始请求消息,发送物理硬件资源申请消息;资源分配器74用于根据所述虚拟硬件模块73发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出存在空闲的专用芯片时,向虚拟硬件模块73发送申请成功消息;所述虚拟硬件模块73还用于根据所述申请成功消息向硬件驱动模块72发送硬件准备就绪消息;所述硬件驱动模块72还用于根据所述硬件准备就绪消息向编解码组件71发送表明硬件准备就绪的初始化结果消息.[0106] 此时,针对处理:编解码组件71用于接收到所述表明硬件准备就绪的初始化结果消息后,向硬件驱动模块72发送编解码开始消息;硬件驱动模块72用于根据所述编解码开始消息将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块73发送DMA指令;虚拟硬件模块73用于根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并将所述要处理的音频数据传输给专用芯片75;专用芯片75用于对所述要处理的音频数据进行编解码处理,并将处理后的音频数据传输给虚拟硬件模块73;虚拟硬件模块73还用于获取处理后的音频数据后,向硬件驱动模块72发送DMA中断指令;硬件驱动模块72还用于根据所述DMA中断指令,从虚拟硬件模块73获取所述处理后的音频数据,并发送给编解码组件71;编解码组件71还用于将所述处理后的音频数据发送给音频模块。
[0107] 可选的,针对查询:编解码组件71用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;硬件驱动模块72用于根据所述编解码组件71发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;虚拟硬件模块73用于根据所述硬件驱动模块72发送的编解码开始请求消息,发送物理硬件资源申请消息;资源分配器74用于根据所述虚拟硬件模块73发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VM自身进行编解码处理时,向虚拟硬件模块73发送携带硬件不可得信息的申请失败消息;所述虚拟硬件模块73还用于根据所述申请失败消息,向硬件驱动模块72发送携带硬件不可得信息的硬件准备结果;所述硬件驱动模块72还用于向编解码组件71发送携带硬件不可得信息的请求结果。
[0108] 此时,针对处理:编解码组件71用于接收到所述携带硬件不可得信息的请求结果后,使用自身的编解码算法对所述要处理的音频数据进行编解码处理,并将处理后的音频数据发送给音频模块。
[0109] 可选的,针对查询:编解码组件71用于接收音频模块发送的编解码调用消息,从所述编解码调用消息中获取要处理的音频数据,并发送用于查询专用芯片的使用情况的请求消息;硬件驱动模块72用于根据所述编解码组件71发送的用于查询专用芯片的使用情况的请求消息,发送编解码开始请求消息;虚拟硬件模块73用于根据所述硬件驱动模块72发送的编解码开始请求消息,发送物理硬件资源申请消息;资源分配器74用于根据所述虚拟硬件模块73发送的物理硬件资源申请消息,查询专用芯片的使用情况,并在确定出不存在空闲的专用芯片后,进一步查询VM和VMM的使用情况,并根据VM和VMM的使用情况确定出使用VMM进行编解码处理时,向虚拟硬件模块73发送携带使用硬件模拟方式的信息的申请失败消息;所述虚拟硬件模块73还用于根据所述申请失败消息,向硬件驱动模块72发送携带使用硬件模拟方式的信息的硬件准备结果;所述硬件驱动模块72还用于向编解码组件71发送携带使用硬件模拟方式的信息的请求结果。
[0110] 此时,针对处理:编解码组件71用于接收到所述携带使用硬件模拟方式的信息的请求结果后,向硬件驱动模块72发送编解码开始消息;硬件驱动模块72用于根据所述编解码开始消息,将所述要处理的音频数据拷贝到VM的内核态,并向虚拟硬件模块73发送DMA指令;虚拟硬件模块73用于根据所述DMA指令从VM的内核态获取所述要处理的音频数据,并采用虚拟硬件模块自身的编解码算法对所述要处理的音频数据进行处理,以及在对音频数据进行处理后,向硬件驱动模块72发送DMA中断指令;硬件驱动模块72还用于根据所述DMA中断指令,从虚拟硬件模块73获取所述处理后的音频数据,并发送给编解码组件71;编解码组件71还用于将所述处理后的音频数据发送给音频模块。
[0111] 本发明实施例通过查询系统资源的使用情况,可以采用专用芯片、VM或者VMM处理音频数据,可以配置较少的专用芯片,实现系统资源的充分利用并降低成本。
[0112] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0113] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。