一种虚拟化视频编解码系统及方法、电子设备和存储介质转让专利

申请号 : CN202311447507.7

文献号 : CN117176963B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名请求不公布姓名请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

本公开涉及计算机技术领域,尤其涉及一种虚拟化视频编解码系统及方法、电子设备和存储介质,包括:虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组;每个视频编解码内核执行P个虚拟机对应的视频编解码任务,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同;一个视频编解码内核包括P个交互接口,该视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务;一个视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的虚拟机的视频编解码总计算量。本公开实施例有效提高虚拟化视频编解码效率。

权利要求 :

1.一种虚拟化视频编解码系统,其特征在于,包括:虚拟机管理器、N个虚拟机、与所述N个虚拟机一一对应的N个配置寄存器组、M个视频编解码内核,M和N是大于等于2的正整数;

所述虚拟机管理器,用于将所述N个虚拟机对应的视频编解码任务配置到对应的所述N个配置寄存器组;

所述M个视频编解码内核,用于并行执行所述N个虚拟机对应的视频编解码任务;

每个视频编解码内核,用于并行执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同;

针对任意一个视频编解码内核,所述视频编解码内核包括P个交互接口,所述视频编解码内核基于P个交互接口支持并行接收对应的P个虚拟机的视频编解码任务;

针对任意一个视频编解码内核,所述视频编解码内核能够支持的视频编解码总计算量,大于等于所述视频编解码内核对应的虚拟机的视频编解码总计算量。

2.根据权利要求1所述的系统,其特征在于,每个视频编解码内核对应的P的取值为N/M向上取整得到的正整数。

3.根据权利要求1或2所述的系统,其特征在于,针对任意一个虚拟机,所述虚拟机对应多个视频编解码任务,不同视频编解码任务具有不同的任务编号;

所述虚拟机的视频编解码计算量,等于所述多个视频编解码任务的视频编解码计算量之和。

4.根据权利要求3所述的系统,其特征在于,所述系统还包括:与所述N个虚拟机一一对应的N个虚拟机接口;

所述虚拟机管理器,用于基于第i个虚拟机对应的虚拟机接口,将所述第i个虚拟机对应的第j个视频编解码任务的配置信息,配置到所述第i个虚拟机对应的配置寄存器组,其中,i是大于等于1且小于等于N的正整数,j是大于等于1的正整数。

5.根据权利要求4所述的系统,其特征在于,所述第j个视频编解码任务对应第x种视频标准,x是大于等于1的正整数,所述第j个视频编解码任务的配置信息包括:所述第j个视频编解码任务对应的编解码参数,以及执行所述第j个视频编解码任务所需的存储空间大小;

所述第i个虚拟机对应的配置寄存器组包括:H种视频标准的参数配置及内存管理模块,其中,H是大于等于2的正整数,所述H种视频标准包括所述第x种视频标准;

第x种视频标准的参数配置及内存管理模块,用于确定所述第j个视频编解码任务对应的编解码参数,以及执行所述第j个视频编解码任务所需的存储空间大小。

6.根据权利要求5所述的系统,其特征在于,所述系统还包括:存储管理模块、存储单元;

所述存储管理模块,用于基于执行所述第j个视频编解码任务所需的存储空间大小,在所述存储单元中为所述第j个视频编解码任务分配对应的目标存储空间,其中,所述视频编解码内核在执行所述第j个视频编解码任务的过程中,基于所述第j个视频编解码任务对应的目标存储空间进行数据访存。

7.根据权利要求4所述的系统,其特征在于,所述第i个虚拟机对应的配置寄存器组还包括:中断模块;

所述中断模块,用于在执行完所述第j个视频编解码任务后,基于所述第i个虚拟机对应的虚拟机接口,向所述虚拟机管理器发送中断信号,其中,所述中断信号用于指示所述第j个视频编解码任务执行完成。

8.一种虚拟化视频编解码方法,其特征在于,包括:

虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组,其中,N是大于等于2的正整数;

M个视频编解码内核并行执行所述N个虚拟机对应的视频编解码任务,其中,每个视频编解码内核并行执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同,M是大于等于2的正整数;

针对任意一个视频编解码内核,所述视频编解码内核包括P个交互接口,所述视频编解码内核基于P个交互接口支持并行接收对应的P个虚拟机的视频编解码任务;

针对任意一个视频编解码内核,所述视频编解码内核能够支持的视频编解码总计算量,大于等于所述视频编解码内核对应的虚拟机的视频编解码总计算量。

9.一种电子设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求8所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求8所述的方法。

说明书 :

一种虚拟化视频编解码系统及方法、电子设备和存储介质

技术领域

[0001] 本公开涉及计算机技术领域,尤其涉及一种虚拟化视频编解码系统及方法、电子设备和存储介质。

背景技术

[0002] 虚拟化(Virtualization)是一种资源管理技术,是对计算机软硬件系统资源的抽象和划分,让多个虚拟机共同复用一套但不限于一套有限的系统资源。随着近年来网络服务器对视频编解码需求的爆发式增长,图形处理器(Graphics Processing Unit,GPU)芯片中的视频编解码计算能力越来越重要。为了增强系统编解码任务的安全性、可靠性和扩展性,虚拟化视频技术应运而生。虚拟化视频技术体现为在同一套物理资源上同时处理多个互不影响的视频编解码任务。因此,亟需一种具备高效的视频编解码处理能力的虚拟化视频编解码系统。

发明内容

[0003] 本公开提出了一种虚拟化视频编解码系统及方法、电子设备和存储介质的技术方案。
[0004] 根据本公开的一方面,提供了一种虚拟化视频编解码系统,包括:虚拟机管理器、N个虚拟机、与所述N个虚拟机一一对应的N个配置寄存器组、M个视频编解码内核,M和N是大于等于2的正整数;所述虚拟机管理器,用于将所述N个虚拟机对应的视频编解码任务配置到对应的所述N个配置寄存器组;每个视频编解码内核,用于执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同;针对任意一个视频编解码内核,所述视频编解码内核包括P个交互接口,所述视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务;针对任意一个视频编解码内核,所述视频编解码内核能够支持的视频编解码总计算量,大于等于所述视频编解码内核对应的虚拟机的视频编解码总计算量。
[0005] 在一种可能的实现方式中,每个视频编解码内核对应的P的取值为N/M向上取整得到的正整数。
[0006] 在一种可能的实现方式中,针对任意一个虚拟机,所述虚拟机对应多个视频编解码任务,不同视频编解码任务具有不同的任务编号;所述虚拟机的视频编解码计算量,等于所述多个视频编解码任务的视频编解码计算量之和。
[0007] 在一种可能的实现方式中,所述系统还包括:与所述N个虚拟机一一对应的N个虚拟机接口;所述虚拟机管理器,用于基于第i个虚拟机对应的虚拟机接口,将所述第i个虚拟机对应的第j个视频编解码任务的配置信息,配置到所述第i个虚拟机对应的配置寄存器组,其中,i是大于等于1且小于等于N的正整数,j是大于等于1的正整数。
[0008] 在一种可能的实现方式中,所述第j个视频编解码任务对应第x种视频标准,x是大于等于1的正整数,所述第j个视频编解码任务的配置信息包括:所述第j个视频编解码任务对应的编解码参数,以及执行所述第j个视频编解码任务所需的存储空间大小;所述第i个虚拟机对应的配置寄存器组包括:H种视频标准的参数配置及内存管理模块,其中,H是大于等于2的正整数,所述H种视频标准包括所述第x种视频标准;第x种视频标准的参数配置及内存管理模块,用于确定所述第j个视频编解码任务对应的编解码参数,以及执行所述第j个视频编解码任务所需的存储空间大小。
[0009] 在一种可能的实现方式中,所述系统还包括:存储管理模块、存储单元;所述存储管理模块,用于基于执行所述第j个视频编解码任务所需的存储空间大小,在所述存储单元中为所述第j个视频编解码任务分配对应的目标存储空间,其中,所述视频编解码内核在执行所述第j个视频编解码任务的过程中,基于所述第j个视频编解码任务对应的目标存储空间进行数据访存。
[0010] 在一种可能的实现方式中,所述第i个虚拟机对应的配置寄存器组还包括:中断模块;所述中断模块,用于在执行完所述第j个视频编解码任务后,基于所述第i个虚拟机对应的虚拟机接口,向所述虚拟机管理器发送中断信号,其中,所述中断信号用于指示所述第j个视频编解码任务执行完成。
[0011] 根据本公开的一方面,提供了一种虚拟化视频编解码方法,包括:虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组,其中,N是大于等于2的正整数;每个视频编解码内核执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同;针对任意一个视频编解码内核,所述视频编解码内核包括P个交互接口,所述视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务;针对任意一个视频编解码内核,所述视频编解码内核能够支持的视频编解码总计算量,大于等于所述视频编解码内核对应的虚拟机的视频编解码总计算量。
[0012] 根据本公开的一方面,提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
[0013] 根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
[0014] 在本公开实施例中,虚拟化视频编解码系统包括:虚拟机管理器、N个虚拟机、与所述N个虚拟机一一对应的N个配置寄存器组、M个视频编解码内核;虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的所述N个配置寄存器组,基于硬件的配置寄存器组有效实现多个虚拟机的配置隔离;针对任意一个视频编解码内核,该视频编解码内核包括P个交互接口,交互接口的数量与该视频编解码内核对应的虚拟机的数量相同,以使得该视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同,此时,每个视频编解码内核能够执行固定数量虚拟机对应的视频编解码任务,只要该视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的虚拟机的视频编解码总计算量,从而实现多个虚拟机与多个视频编解码内核之间通过固定配置方式并行执行视频编解码计算过程,有效提高虚拟化视频编解码效率。
[0015] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

[0016] 此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
[0017] 图1示出相关技术中的一种虚拟化视频编解码系统的示意图。
[0018] 图2示出相关技术中的虚拟化视频编解码的示意图。
[0019] 图3示出根据本公开实施例的一种虚拟化视频编解码系统的示意图。
[0020] 图4示出根据本公开实施例的一种虚拟化视频编解码方法的流程图。
[0021] 图5示出根据本公开实施例的一种电子设备的框图。

具体实施方式

[0022] 以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
[0023] 在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
[0024] 本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
[0025] 另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
[0026] 相关技术中,虚拟化视频编解码系统通过运行在主机(HOST)中的软件:虚拟机管理器,作为管理硬件设备和虚拟机之间的中间层。它提供了硬件和虚拟机之间的接口,负责虚拟化视频编解码过程的安全性,并管理虚拟机之间的隔离,使得虚拟机之间互相不可见。虚拟机管理器为每个虚拟机提供一个虚拟的编解码控制器设备,并且根据系统需求支持多个虚拟机的访问。
[0027] 在虚拟化视频编解码系统中包括多个虚拟机和多个硬件的视频编解码内核时,虚拟机管理器对多个虚拟机与多个视频编解码内核之间控制信号以及编解码数据的交互进行管理。相关技术中,每个硬件的视频编解码内核只有一个交互接口,多个虚拟机通过虚拟机管理器与每个硬件的视频编解码内核的唯一交互接口进行交互通信。由于一个视频编解码内核只有一个交互接口,因此,一个视频编解码内核只能通过一个中断信号、一组控制信号与多个虚拟机交互,导致控制过程多个虚拟机需要相互等待,因此,视频编解码内核的交互接口往往成为其计算性能的瓶颈。
[0028] 不同虚拟机间使用不同标识信息进行区分,虚拟机管理器可以通过修改标识信息来切换不通虚拟机进程,但是,这种方式在原理上无法做到多个虚拟机之间的地址隔离、控制隔离、中断隔离,安全性没有保证。
[0029] 相关技术中,由于视频编解码内核只有一个交互接口,因此,视频编解码内核无法并行接收多个虚拟机的多个视频编解码任务,多个视频编解码任务的配置过程与编解码计算过程需要相互等待,导致视频编解码并行性差。
[0030] 相关技术中,主要通过软件配置的方式来实现虚拟化视频编解码系统中虚拟机和视频编解码内核之间的交互。图1示出相关技术中的一种虚拟化视频编解码系统的示意图。如图1所示,软件层包括虚拟机1、虚拟机2、虚拟机3、直至虚拟机N、虚拟机管理器,硬件层包括视频编解码内核1、视频编解码内核2、视频编解码内核3、直至视频编解码内核M。在软件层中,虚拟机管理器基于软件方式实现虚拟化视频编解码系统中的N个虚拟机和M个视频编解码内核的交互。图2示出相关技术中的虚拟化视频编解码的示意图。如图2所示,在软件层中对虚拟机1对应的视频编解码任务1进行配置(如图2中所示,配置/虚拟机1/视频编解码任务1),进而向硬件层的视频编解码内核1发送控制信号,以控制视频编解码内核1执行虚拟机1对应的视频编解码任务1(如图2中所示,视频编解码内核1/虚拟机1/视频编解码任务
1/编解码计算),视频编解码内核1执行完编解码计算后向软件层返回中断信号;软件层接收到中断信号后,对虚拟机2对应的视频编解码任务1进行配置(如图2中所示,配置/虚拟机
2/视频编解码任务1),进而向硬件层的视频编解码内核2发送控制信号,以控制视频编解码内核2执行虚拟机2对应的视频编解码任务1(如图2中所示,视频编解码内核2/虚拟机2/视频编解码任务1/编解码计算),视频编解码内核2执行完编解码计算后向软件层返回中断信号;软件层接收到中断信号后,对虚拟机2对应的视频编解码任务2进行配置(如图2中所示,配置/虚拟机2/视频编解码任务2),进而向硬件层的视频编解码内核2发送控制信号,以控制视频编解码内核2执行虚拟机2对应的视频编解码任务2(如图2中所示,视频编解码内核
2/虚拟机2/视频编解码任务2/编解码计算),视频编解码内核2执行完编解码计算后向软件层返回中断信号;直至软件层对虚拟机N对应的视频编解码任务S进行配置(如图2中所示,配置/虚拟机N/视频编解码任务S),进而向硬件层的视频编解码内核M发送控制信号,以控制视频编解码内核M执行虚拟机N对应的视频编解码任务S(如图2中所示,视频编解码内核M/虚拟机N/视频编解码任务S/编解码计算),视频编解码内核M执行完编解码计算后向软件层返回中断信号。
[0031] 基于虚拟机管理器进行软件模拟的,虚拟机和视频编解码内核之间的控制信号和中断信号,本质上是由一套控制通路实现。也就是说,多个虚拟机要执行视频编解码任务时,视频编解码资源分配、参数配置以及内存管理均需要由软件通过一套控制实现,导致调度过程复杂,硬件的视频编解码资源无法发挥其最大性能,中央处理器(Central Processing Unit,CPU)资源的占用也较多。此外,为了简化控制,多个虚拟机与多个视频编解码内核之间使用固定的绑定方式,一个虚拟机只能访问唯一的视频编解码内核。在虚拟机对应多个视频编解码任务时,虚拟机基于绑定的视频编解码内核执行多个视频编解码任务。此时,当需要执行新的视频编解码任务时,如果当前绑定的视频编解码内核的计算负载能力已经达到上限,不能再继续执行新的视频编解码任务,则需要等待当前绑定的视频编解码内核执行完之前的视频编解码任务,释放出视频编解码计算能力后,才能继续执行新的视频编解码任务。
[0032] 为了解决虚拟化视频编解码系统中仅基于软件配置的方式实现多个虚拟机和多个视频编解码内核之间的交互所存在的上述问题,本公开实施例提供了一种具备高效的视频编解码效率的虚拟化视频编解码系统。下面对本公开提供的虚拟化视频编解码系统进行详细描述。
[0033] 图3示出根据本公开实施例的一种虚拟化视频编解码系统的示意图。该虚拟化视频编解码系统搭载在终端设备或服务器等电子设备中,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
[0034] 如图3所示,虚拟化视频编解码系统,其特征在于,包括:虚拟机管理器、N个虚拟机(虚拟机1、虚拟机2、虚拟机3、直至虚拟机N)、与N个虚拟机一一对应的N个配置寄存器组(配置寄存器组1、配置寄存器组2、配置寄存器组3)、M个视频编解码内核(视频编解码内核1、视频编解码内核2、视频编解码内核3、直至视频编解码内核M),M和N是大于等于2的正整数;虚拟机管理器,用于将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组;每个视频编解码内核,用于执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同;针对任意一个视频编解码内核,该视频编解码内核包括P个交互接口,该视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务;针对任意一个视频编解码内核,该视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的虚拟机的视频编解码总计算量。
[0035] 每个视频编解码内核对应的虚拟机的数量,即每个视频编解码内核对应的P的取值,可以根据虚拟化视频编解码系统的实际使用情况灵活设置,本公开对此不作具体限定。
[0036] 利用本公开实施例的虚拟化视频编解码系统,基于硬件的配置寄存器组有效实现多个虚拟机的配置隔离,每个视频编解码内核能够执行固定数量的虚拟机对应的视频编解码任务,只要该视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的虚拟机的视频编解码总计算量,从而实现多个虚拟机与多个视频编解码内核之间通过固定配置方式并行执行视频编解码计算过程,有效提高虚拟化视频编解码效率。
[0037] 在一种可能的实现方式中,每个视频编解码内核对应的P的取值为N/M向上取整得到的正整数。
[0038] 为了均衡利用每个视频编解码内核,可以将N个虚拟机平均分配给M个视频编解码内核。
[0039] 在一示例中,虚拟化视频编解码系统中包括:4个虚拟机、2个视频编解码内核,每个虚拟机的视频编解码计算量为4,每个视频编解码内核能够支持的最大视频编解码计算量为8,则每个视频编解码内核可以设计2个交互接口,以使得每个视频编解器内核可以与2个虚拟机交互,接收2个虚拟机对应的视频编解码任务,例如,视频编解码内核1设计2个交互接口与虚拟机1、虚拟机2进行交互,视频编解码内核2设计2个交互接口与虚拟机3、虚拟机4进行交互。由于每个视频编解码内核能够支持的最大视频编解码计算量,大于等于对应的2个虚拟机的视频编解码总计算量,此时,就可以保证2个视频编解码内核可以并行实现4个虚拟机对应的多个视频编解码任务的并行实时编解码计算。
[0040] 单个视频编解码内核的编解码计算负载能力,即能够支持的视频编解码计算量,是多个视频编解码任务的分辨率与帧率的乘积之和。在一示例中,可以通过下述公式(1)确定单个视频编解码内核能够支持的视频编解码计算量
[0041]
[0042] n是该视频编解码内核执行的视频编解码任务的个数,视频帧宽度k、widthk表示视频编解码任务k中的视频帧宽度,视频帧高度k、heightk表示视频编解码任务k中的视频帧高度,帧率k、frame_ratenk表示视频编解码任务k的帧率,k是大于等于1且小于等于n的正整数。
[0043] 例如,针对一个视频编解码内核,其能够支持的最大视频编解码计算量为8K@60fps,则该视频编解码内核可以执行一个8K@60fps的视频编解码任务,或者等效执行4个
4K@60fps的视频编解码任务,或者等效执行16个FHD@60fps的视频编解码任务,或者等效执行32个FHD@30fps的视频编解码任务,以此类推。其中,8K、4K、FHD用于指示视频帧的分辨率,60fps、30fps用于指示视频帧率。
[0044] 在一种可能的实现方式中,针对任意一个虚拟机,虚拟机对应多个视频编解码任务,不同视频编解码任务具有不同的任务编号;虚拟机的视频编解码计算量,等于多个视频编解码任务的视频编解码计算量之和。
[0045] 以图3为例,虚拟化视频编解码系统中包括N个虚拟机,每个虚拟机对应P个视频编解码任务,每个视频编解码任务的视频编解码计算量为QP,则一个虚拟机的视频编解码计算量为 。假设每个虚拟机的最大视频编解码计算量为QPmax,则 。
[0046] 每个视频编解码内核能够支持的视频编解码计算量为Q,此时,每个视频编解码内核可以与不同的N/M个虚拟机进行交互。为了实现N个虚拟机使用M个视频编解码内核并行执行视频编解码计算,保证视频编解码的实时性,需要确保每个视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的N/M个虚拟机的视频编解码总计算量QPmax,即 。只要能够保证 ,虚拟机对应的视频编解码任务的配置方式可以根据实际情况灵活组合,本公开对此不作具体限定。
[0047] 在一示例中,虚拟化视频编解码系统中包括4个虚拟机:虚拟机1至虚拟机4、2个视频编解码内核:内核1、内核2,每个视频编解码内核能够支持的视频编解码计算量为8192×4320×30,其中,8192×4320为视频帧分辨率,30为视频帧率。此时,每个视频编解码内核与
2个虚拟机交互:视频编解码内核1对应虚拟机1、虚拟机2,视频编解码内核2对应虚拟机3、虚拟机4。4个虚拟机对应的视频编解码任务与2个视频编解码内核之间的配置可以如下表1所示。
[0048]
[0049] Ru le_rateni如表1所示,同一虚拟机内不同视频编解码任务的视频帧分辨率、帧率可以相同,也可以不同,本公开对此不作具体限定。
[0050] 在图3所示的虚拟化视频编解码系统中还包括多路选通器,每个视频编解码内核可以设置N/M个交互接口,以支持能够基于多路选通器以及该N/M个交互接口,并行接收N/M个虚拟机对应的视频编解码任务。其中,每个视频编解码内核与每N/M个虚拟机的对应关系是固定设置好,因此,将每个虚拟机对应的视频编解码任务分配至对应的视频编解码内核即可。
[0051] 在一种可能的实现方式中,虚拟化视频编解码系统还包括:与N个虚拟机一一对应的N个虚拟机接口;虚拟机管理器,用于基于第i个虚拟机对应的虚拟机接口,将第i个虚拟机对应的第j个视频编解码任务的配置信息,配置到第i个虚拟机对应的配置寄存器组,其中,i是大于等于1且小于等于N的正整数,j是大于等于1的正整数。
[0052] 如图3所示,虚拟机管理器基于虚拟机接口1,将虚拟机1对应的视频编解码任务的配置信息,配置到与虚拟机1对应的配置寄存器组1;虚拟机管理器基于虚拟机接口2,将虚拟机2对应的视频编解码任务的配置信息,配置到与虚拟机2对应的配置寄存器组2;直至虚拟机管理器基于虚拟机接口N,将虚拟机N对应的视频编解码任务的配置信息,配置到与虚拟机N对应的配置寄存器组N。基于硬件的虚拟机接口、配置寄存器组,实现了不同虚拟机之间视频编解码任务的配置隔离,从而可以实现多个虚拟机对应的视频编解码任务的并行配置,提高视频编解码效率。
[0053] 在一种可能的实现方式中,第j个视频编解码任务对应第x种视频标准,x是大于等于1的正整数,第j个视频编解码任务的配置信息包括:第j个视频编解码任务对应的编解码参数,以及执行第j个视频编解码任务所需的存储空间大小;第i个虚拟机对应的配置寄存器组包括:H种视频标准的参数配置及内存管理模块,其中,H是大于等于2的正整数,H种视频标准包括第x种视频标准;第x种视频标准的参数配置及内存管理模块,用于确定第j个视频编解码任务对应的编解码参数,以及执行第j个视频编解码任务所需的存储空间大小。
[0054] 针对虚拟化视频编解码系统中的一个虚拟机对应的配置寄存器组中,可以包括H种视频标准的参数配置及内存管理模块,以使得该虚拟机能够基于硬件的配置寄存器组,执行H种视频标准中的任意一种视频标准的视频编解码任务,提高了视频虚拟化的扩展性,以使得能够在更多场景中发挥视频虚拟化的能力。其中,H种视频标准可以是视频编解码领域的通用视频标准,本公开对H的具体取值,以及H种视频标准的具体形式不作限定。
[0055] 在启动第i个虚拟机对应的第j个视频编解码任务的配置过程后,如果第j个视频编解码任务对应第x种视频标准,此时,基于第i个虚拟机对应的第i个虚拟机接口,调用第i个虚拟机对应的配置寄存器组中的第x种视频标准的参数配置及管理模块,确定第j个视频编解码任务对应的配置信息:第j个视频编解码任务对应的编解码参数、以及执行第j个视频编解码任务所需的存储空间大小。
[0056] 进而,将第j个视频编解码任务对应的配置信息存储在第i个虚拟机对应的配置寄存器组中,以使得在启动第j个视频编解码任务的编解码计算过程后,第i个虚拟机对应的视频编解码内核,从第i个虚拟机对应的配置寄存器组中读取该第j个视频编解码任务对应的配置信息,以及基于该配置信息,按照第x种视频标准,执行第j个视频编解码任务的编解码计算。
[0057] 在一种可能的实现方式中,虚拟化视频编解码系统还包括:存储管理模块、存储单元;存储管理模块,用于基于执行第j个视频编解码任务所需的存储空间大小,在存储单元中为第j个视频编解码任务分配对应的目标存储空间,其中,视频编解码内核在执行第j个视频编解码任务的过程中,基于第j个视频编解码任务对应的目标存储空间进行数据访存。
[0058] 在启动第i个虚拟机对应的第j个视频编解码任务的编解码计算过程后,第i个虚拟机对应的视频编解码内核,从第i个虚拟机对应的配置寄存器组中读取第j个视频编解码任务的配置信息:第j个视频编解码任务对应的编解码参数,以及执行第j个视频编解码任务所需的存储空间大小,该视频编解码内核将第j个视频编解码任务所需的存储空间大小发送至存储管理模块,以使得存储管理模块在存储单元中为第j个视频编解码任务分配对应的目标存储空间。
[0059] 在一种可能的实现方式中,不同虚拟机对应的视频编解码任务的目标存储空间不同。
[0060] 基于存储管理模块,使用硬件逻辑对一个虚拟机下不同视频编解码任务的专属存储空间进行分配,有效实现了不同虚拟机对应的视频编解码任务之间的存储空间隔离。在执行第j个视频编解码任务的编解码计算的过程中,仅基于存储单元中第j个视频编解码任务对应的目标存储空间进行数据访存,有效保证了数据访存的安全性。
[0061] 在一种可能的实现方式中,第i个虚拟机对应的配置寄存器组还包括:中断模块;中断模块,用于在执行完第j个视频编解码任务后,基于第i个虚拟机对应的虚拟机接口,向虚拟机管理器发送中断信号,其中,中断信号用于指示第j个视频编解码任务执行完成。
[0062] 第i个虚拟机对应的视频编解码内核在执行完第j个视频编解码任务后,向第i个虚拟机对应的配置寄存器组中的中断模块发送中断请求,以使得中断模块基于中断请求,生成中断信号,进而基于第i个虚拟机对应的虚拟机接口,向虚拟机管理器发送中断信号,以通知虚拟机管理器第i个虚拟机对应的第j个视频编解码任务执行完成。
[0063] 基于硬件的配置寄存器组中的中断模块,实现了不同虚拟机之间的中断隔离,此外,一个虚拟机对应的不同视频编解码任务复用对应的配置寄存器组中相同的中断模块,从而有效减少了系统中断过程的等待时间。
[0064] 在本公开实施例中,虚拟化视频编解码系统包括:虚拟机管理器、N个虚拟机、与N个虚拟机一一对应的N个配置寄存器组、M个视频编解码内核;虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组,基于硬件的配置寄存器组有效实现多个虚拟机的配置隔离;针对任意一个视频编解码内核,该视频编解码内核包括N/M个交互接口,以使得该视频编解码内核基于N/M个交互接口支持接收N/M个虚拟机对应的视频编解码任务,此时,每个视频编解码内核能够执行不同的N/M个虚拟机对应的视频编解码任务,只要该视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的N/M个虚拟机的视频编解码总计算量,从而实现多个虚拟机与多个视频编解码内核之间通过固定配置方式并行执行视频编解码计算过程,有效提高虚拟化视频编解码效率。
[0065] 图4示出根据本公开实施例的一种虚拟化视频编解码方法的流程图。该方法可以应用于上述虚拟化视频编解码系统,如图4所示,该方法包括:
[0066] 在步骤S41中,虚拟机管理器将N个虚拟机对应的视频编解码任务配置到对应的N个配置寄存器组,其中,N是大于等于2的正整数;
[0067] 在步骤S42中,每个视频编解码内核执行P个虚拟机对应的视频编解码任务,其中,P是大于等于1且小于等于N的正整数,不同视频编解码内核对应的虚拟机不同,不同视频编解码内核对应的P的取值相同或不同,针对任意一个视频编解码内核,该视频编解码内核包括P个交互接口,该视频编解码内核基于P个交互接口支持接收对应的P个虚拟机的视频编解码任务,该视频编解码内核能够支持的视频编解码总计算量,大于等于该视频编解码内核对应的虚拟机的视频编解码总计算量。
[0068] 可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0069] 此外,本公开还提供了电子设备、计算机可读存储介质、程序,上述均可用来实现本公开提供的任一种虚拟化视频编解码方法,相应技术方案和描述和参见方法部分的相应记载,不再赘述。
[0070] 该方法与计算机系统的内部结构存在特定技术关联,且能够解决如何提升硬件运算效率或执行效果的技术问题(包括减少数据存储量、减少数据传输量、提高硬件处理速度等),从而获得符合自然规律的计算机系统内部性能改进的技术效果。
[0071] 在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
[0072] 本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
[0073] 本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述方法。
[0074] 本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述方法。
[0075] 电子设备可以被提供为终端、服务器或其它形态的设备。
[0076] 图5示出根据本公开实施例的一种电子设备的框图。参照图5,电子设备1900可以被提供为一服务器或终端设备。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
[0077] 电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器TM TM操作系统(Windows Server ),苹果公司推出的基于图形用户界面操作系统(Mac OS X ),TM
多用户多进程的计算机操作系统(Unix ),自由和开放原代码的类Unix操作系统TM TM
(Linux),开放原代码的类Unix操作系统(FreeBSD)或类似。
[0078] 在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
[0079] 本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
[0080] 计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD‑ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
[0081] 这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
[0082] 用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
[0083] 这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0084] 这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
[0085] 也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0086] 附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0087] 该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
[0088] 上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
[0089] 本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
[0090] 若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
[0091] 以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。