CN113891087A - 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 - Google Patents
一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 Download PDFInfo
- Publication number
- CN113891087A CN113891087A CN202111187939.XA CN202111187939A CN113891087A CN 113891087 A CN113891087 A CN 113891087A CN 202111187939 A CN202111187939 A CN 202111187939A CN 113891087 A CN113891087 A CN 113891087A
- Authority
- CN
- China
- Prior art keywords
- virtualized
- linux
- decoding
- layer
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000001133 acceleration Effects 0.000 title claims abstract description 15
- 238000004806 packaging method and process Methods 0.000 claims abstract description 19
- 238000005538 encapsulation Methods 0.000 claims description 11
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统,该方法包括如下步骤:将视频编解码硬件模块、Linux内核、docker、虚拟化Android系统,从底层到上层依次连接;通过Linux内核与docker,导出关联设备节点;虚拟化Android系统,通过OpenMax封装层对视频编解码器的组件进行封装,通过驱动层对驱动访问进行封装;虚拟化Android系统的Framework通过封装的驱动访问,以及Linux内核与docker导出的关联设备节点,直接访问视频编解码硬件模块。本发明是在Linux宿主机中,在docker技术支撑下,虚拟若干个虚拟化的Android子系统,然后在每个虚拟化的Android子系统调用的基于Linux宿主机的处理器内部视频编解码硬件模块,将编解码的服务递交给DSP硬件模块,从而减少在主控CPU进行软编解码服务产生的负载。
Description
技术领域
本发明涉及视频编解码技术领域,具体涉及一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统。
背景技术
越来越多云手机应用已经在5G时代来临,提供一个独立的移动设备安装虚拟手机,业务应用和数据仅在服务端运行和存储,个人终端上仅做加密流媒体呈现和触控,从而有效保障企业数据的安全性。
云手机通过创建虚拟手机为企事业单位提供APP应用平台,用户仅需在手机端安装云手机客户端(Android或IOS版本),并通过该客户端认证鉴权,既可确保员工能够随时随地使用移动设备访问企事业单位的数据和应用程序,同时确保企事业单位数据和应用程序的终端零留存不泄露。
Android云手机是一个典型的应用,其技术核心是对云端的硬件资源虚拟化一个Android系统,然后再对虚拟化系统(在云服务器)进行桌面编码然后传输到云手机终端(在本地手机),这需要虚拟化的系统提供视频编码服务。
同时虚拟化的云手机要支持视频点播类业务的app,需要虚拟化的系统提供视频解码服务。
传统的虚拟化的Android系统无法直接在虚拟化的宿主机(云服务器所在主机)上调用硬件视频编解码服务,采取了基于CPU主控之上提供软件方式的编解码服务,这会大大的影响宿主机的性能,导致功耗增加,其虚拟化子系统的数量受到限制,系统帧率也会大大降低从而影响体验。
因此,现有技术存在不足,需要提供一种新的方案解决上述问题。
发明内容
针对现有技术存在的问题,本发明提供一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统。
为实现上述目的,本发明的具体方案如下:
本发明提供一种基于Linux系统实现虚拟化硬件编解码加速的方法,包括如下步骤:
一种基于Linux系统实现虚拟化硬件编解码加速的方法,其特征在于,包括如下步骤:
S1.将视频编解码硬件模块、Linux内核、docker、虚拟化Android系统,从底层到上层依次连接;
S2.通过Linux内核与docker,导出关联设备节点;
S3.虚拟化Android系统,通过OpenMax封装层对视频编解码器的组件进行封装,通过驱动层对驱动访问进行封装;
S4、虚拟化Android系统的Framework通过封装的驱动访问,以及Linux内核与docker导出的关联设备节点,直接访问视频编解码硬件模块。
本发明还提供一种基于Linux系统实现虚拟化硬件编解码加速的系统,包括:视频编解码硬件模块、Linux内核模块、docker、虚拟化Android系统;
所述视频编解码硬件模块,用于提供硬件的视频编解码功能;
所述Linux内核模块,用于提供系统内核;
所述docker,用于提供虚拟Android系统的容器;
所述虚拟化Android系统包括OpenMax封装层和访问视频视频编解码硬件的驱动层;
所述OpenMax封装层,用于对视频编解码器的组件进行封装;
所述访问视频编解码硬件模块的驱动层,用于对驱动访问进行封装。
优选地,所述Linux内核模块,具体用于对硬件编解码器DSP的支持,支持多进程并发访问,以便支持多个虚拟化的Android系统同时访问。
优选地,所述docker,具体用于提供一种容器虚拟化的技术环境支撑,将Linux相关联的视频硬件编解码驱动的设备节点导出到虚拟化Android系统,以实现虚拟化Android系统对相关设备驱动进行访问。
优选地,所述虚拟化Android系统的OpenMax封装层,具体用于通过OpenMax的封装层对虚拟化Android系统的视频编解码器的组件进行封装;
所述OpenMax是一个多媒体应用程序的框架标准,所述OpenMax自上而下分为三层:应用层、封装层和开发层,具体到所述虚拟化Android系统使用了封装层。
优选地,所述虚拟化Android系统访问视频编解码的驱动层,用于对OpenMax封装层相关的视频编解码器的组件提供具体的实现,用于对驱动访问进行封装。
采用本发明的技术方案,具有以下有益效果:
本发明在Linux宿主机中,在docker技术支撑下,虚拟若干个虚拟化的Android子系统,然后在每个虚拟化的Android子系统调用的基于Linux宿主机的处理器内部视频编解码硬件模块,将编解码的服务递交给DSP硬件模块,从而减少在主控CPU进行软编解码服务产生的负载。
附图说明
图1是本发明具体实施方式的虚拟化Android系统直接调用硬件编解码资源的示意图;
图2是本发明具体实施方式的整体流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在本发明的描述中,除非另有明确的规定和限定,术语“相连”、“连接”、“固定”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本实施例的描述中,术语“上”、“下”、“前”、“后”、“左”、“右”等方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述和简化操作,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅仅用于在描述上加以区分,并没有特殊的含义。
结合图1-图2所示,本发明提供一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统,该方法包括如下步骤:
S1.将视频编解码硬件模块、Linux内核、docker、虚拟化Android系统,从底层到上层依次连接;
S2.通过Linux内核与docker,导出关联设备节点;
S3.虚拟化Android系统,通过OpenMax封装层对视频编解码器的组件进行封装,通过驱动层对驱动访问进行封装;
S4、虚拟化Android系统的Framework通过封装的驱动访问,以及Linux内核与docker导出的关联设备节点,直接访问视频编解码硬件模块。
本发明的原理和具体实施方式如下:
应用场景
此专利应用场景是在Linux宿主机,在docker技术支撑下,虚拟若干个虚拟化的Android子系统,然后在每个虚拟化的Android子系统调用的基于Linux宿主机的处理器内部视频编解码硬件模块,将编解码的服务递交给DSP硬件模块(视频编解码硬件模块),从而减少在主控CPU进行软编解码服务产生的负载。
功能介绍
虚拟化硬件编解码加速包括4个模块:
Linux内核模块,docker,虚拟化Android系统的OpenMax封装层,虚拟化Android系统访问视频编解码的驱动层。
下面分别予以介绍各个模块的功能。
Linux内核模块,支持包括对硬件编解码器DSP(Digital Signal Processing)的支持,并且可以多进程并发访问,这样可以支持多个虚拟化的Android系统同时访问。
docker,提供一种容器虚拟化的技术环境支撑,是一种常见的虚拟化实现方式,但是还需要将Linux相关联视频硬件编解码驱动的设备节点导出到虚拟化Android系统,以实现虚拟化Android系统对相关设备驱动进行访问。
虚拟化Android系统的OpenMax封装层,用于对视频编解码器的组件进行封装,OpenMax是一个多媒体应用程序的框架标准。它自上而下分为三层:应用层、封装层和开发层,具体到虚拟化Android系统使用了封装层。
虚拟化Android系统访问视频编解码的驱动层,是针对OpenMax封装层相关的视频编解码器的组件提供具体的实现,就是对驱动访问的的封装。
流程介绍
下面具体介绍此方法的具体流程,参见附图1
具体应用过程包括:
虚拟化Android系统的Framework多媒体(mediacodec)访问符合OpenMax标准的视频编解码器的组件。
OpenMax封装层对于特定硬件平台进行相关的编解码器的组件封装,这一过程具体的依赖驱动实现,由驱动访问模块进行封装。
要做到可以访问视频相关驱动设备节点,需要通过docker将关联的设备节点对虚拟化Android系统可见,并且有访问权限。
相较于现有技术,采用本发明的技术方案,具有以下有益效果:
在Linux宿主机中,在docker技术支撑下,虚拟若干个虚拟化的Android子系统,然后在每个虚拟化的Android子系统调用的基于Linux宿主机的处理器内部视频编解码硬件模块,将编解码的服务递交给DSP硬件模块,从而减少在主控CPU进行软编解码服务产生的负载。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的保护范围内。
Claims (6)
1.一种基于Linux系统实现虚拟化硬件编解码加速的方法,其特征在于,包括如下步骤:
S1.将视频编解码硬件模块、Linux内核、docker、虚拟化Android系统,从底层到上层依次连接;
S2.通过Linux内核与docker,导出关联设备节点;
S3.虚拟化Android系统,通过OpenMax封装层对视频编解码器的组件进行封装,通过驱动层对驱动访问进行封装;
S4、虚拟化Android系统的Framework通过封装的驱动访问,以及Linux内核与docker导出的关联设备节点,直接访问视频编解码硬件模块。
2.一种基于Linux系统实现虚拟化硬件编解码加速的系统,其特征在于,包括:视频编解码硬件模块、Linux内核模块、docker、虚拟化Android系统;
所述视频编解码硬件模块,用于提供硬件的视频编解码功能;
所述Linux内核模块,用于提供系统内核;
所述docker,用于提供虚拟Android系统的容器;
所述虚拟化Android系统包括OpenMax封装层和访问视频视频编解码硬件的驱动层;
所述OpenMax封装层,用于对视频编解码器的组件进行封装;
所述访问视频编解码硬件模块的驱动层,用于对驱动访问进行封装。
3.根据权利要求2所述的基于Linux系统实现虚拟化硬件编解码加速的系统,其特征在于,所述Linux内核模块,具体用于对硬件编解码器DSP的支持,支持多进程并发访问,以便支持多个虚拟化的Android系统同时访问。
4.根据权利要求2所述的基于Linux系统实现虚拟化硬件编解码加速的系统,其特征在于,所述docker,具体用于提供一种容器虚拟化的技术环境支撑,将Linux相关联的视频硬件编解码驱动的设备节点导出到虚拟化Android系统,以实现虚拟化Android系统对相关设备驱动进行访问。
5.根据权利要求2所述的基于Linux系统实现虚拟化硬件编解码加速的系统,其特征在于,所述虚拟化Android系统的OpenMax封装层,具体用于通过OpenMax的封装层对虚拟化Android系统的视频编解码器的组件进行封装;
所述OpenMax是一个多媒体应用程序的框架标准,所述OpenMax自上而下分为三层:应用层、封装层和开发层,具体到所述虚拟化Android系统使用了封装层。
6.根据权利要求2所述的基于Linux系统实现虚拟化硬件编解码加速的系统,其特征在于,所述虚拟化Android系统访问视频编解码的驱动层,用于对OpenMax封装层相关的视频编解码器的组件提供具体的实现,用于对驱动访问进行封装。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111187939.XA CN113891087A (zh) | 2021-10-12 | 2021-10-12 | 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111187939.XA CN113891087A (zh) | 2021-10-12 | 2021-10-12 | 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113891087A true CN113891087A (zh) | 2022-01-04 |
Family
ID=79006327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111187939.XA Pending CN113891087A (zh) | 2021-10-12 | 2021-10-12 | 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113891087A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114125558A (zh) * | 2022-01-26 | 2022-03-01 | 麒麟软件有限公司 | 基于Linux桌面显卡的安卓视频解码硬件加速方法 |
CN116450149A (zh) * | 2023-06-16 | 2023-07-18 | 成都阿加犀智能科技有限公司 | 一种硬件解码方法、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104023266A (zh) * | 2014-05-27 | 2014-09-03 | 烽火通信科技股份有限公司 | 一种android系统的通信编解码组件的使用方法 |
CN104333808A (zh) * | 2014-11-14 | 2015-02-04 | 复旦大学 | 用于Android及Linux智能电视机上的通用播放器 |
GB2558879A (en) * | 2017-01-04 | 2018-07-25 | Cisco Tech Inc | Method and apparatus for container-based virtualisation |
CN111625293A (zh) * | 2020-05-15 | 2020-09-04 | 武汉蓝星科技股份有限公司 | 一种基于linux内核的终端双系统及其硬件访问管理方法 |
CN112764877A (zh) * | 2021-01-06 | 2021-05-07 | 北京睿芯高通量科技有限公司 | 一种用于硬件加速设备与docker内进程通信的方法与系统 |
CN113448648A (zh) * | 2021-06-29 | 2021-09-28 | 技德技术研究所(武汉)有限公司 | 一种Linux兼容Android的访问摄像头方法及装置 |
-
2021
- 2021-10-12 CN CN202111187939.XA patent/CN113891087A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104023266A (zh) * | 2014-05-27 | 2014-09-03 | 烽火通信科技股份有限公司 | 一种android系统的通信编解码组件的使用方法 |
CN104333808A (zh) * | 2014-11-14 | 2015-02-04 | 复旦大学 | 用于Android及Linux智能电视机上的通用播放器 |
GB2558879A (en) * | 2017-01-04 | 2018-07-25 | Cisco Tech Inc | Method and apparatus for container-based virtualisation |
CN111625293A (zh) * | 2020-05-15 | 2020-09-04 | 武汉蓝星科技股份有限公司 | 一种基于linux内核的终端双系统及其硬件访问管理方法 |
CN112764877A (zh) * | 2021-01-06 | 2021-05-07 | 北京睿芯高通量科技有限公司 | 一种用于硬件加速设备与docker内进程通信的方法与系统 |
CN113448648A (zh) * | 2021-06-29 | 2021-09-28 | 技德技术研究所(武汉)有限公司 | 一种Linux兼容Android的访问摄像头方法及装置 |
Non-Patent Citations (1)
Title |
---|
JULIEN MACHIELS: "Jellyfin Release - v10.5.0", Retrieved from the Internet <URL:https://jellyfin.org/posts/jellyfin-10-5-0/> * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114125558A (zh) * | 2022-01-26 | 2022-03-01 | 麒麟软件有限公司 | 基于Linux桌面显卡的安卓视频解码硬件加速方法 |
CN114125558B (zh) * | 2022-01-26 | 2022-04-22 | 麒麟软件有限公司 | 基于Linux桌面显卡的安卓视频解码硬件加速方法 |
WO2023142720A1 (zh) * | 2022-01-26 | 2023-08-03 | 麒麟软件有限公司 | 基于Linux桌面显卡的安卓视频解码硬件加速方法 |
CN116450149A (zh) * | 2023-06-16 | 2023-07-18 | 成都阿加犀智能科技有限公司 | 一种硬件解码方法、设备及存储介质 |
CN116450149B (zh) * | 2023-06-16 | 2023-08-11 | 成都阿加犀智能科技有限公司 | 一种硬件解码方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103888485B (zh) | 云计算资源的分配方法、装置及系统 | |
US10764375B2 (en) | Method for cloud based mobile application virtualization | |
US20120102455A1 (en) | System and apparatus for hosting applications on a storage array via an application integration framework | |
CN113891087A (zh) | 一种基于Linux系统实现虚拟化硬件编解码加速的方法及系统 | |
EP2622461B1 (en) | Shared memory between child and parent partitions | |
JP6072018B2 (ja) | ウェブ・ブラウザ・ベースのデスクトップおよびアプリケーション・リモート・ソリューション | |
US20190087212A1 (en) | Android simulator and method for implementing android simulator | |
US10303497B2 (en) | Hybrid software and GPU encoding for UI remoting | |
US9128893B2 (en) | Remote direct memory access socket aggregation | |
CN102819449A (zh) | 一种显卡重定向方法及系统 | |
US7840964B2 (en) | Mechanism to transition control between components in a virtual machine environment | |
US9721091B2 (en) | Guest-driven host execution | |
CN104660687A (zh) | 虚拟桌面显示的实现方法和系统 | |
CN113542757A (zh) | 云应用的图像传输方法、装置、服务器及存储介质 | |
CN111782387B (zh) | 融合边缘计算的私有云多终端智能相册管理系统和方法 | |
CN112671760A (zh) | 基于Socket的客户端跨平台网络通信方法及其相关设备 | |
US20190140982A1 (en) | Communication Methods and Systems, Electronic Devices, and Computer Clusters | |
CN112486609A (zh) | 一种基于云桌面的虚拟显卡实现方法和装置 | |
WO2022242358A1 (zh) | 图像处理方法、装置、计算机设备及存储介质 | |
CN115065684B (zh) | 数据处理方法、装置、设备以及介质 | |
CN112559476B (zh) | 一种用于提高目标系统性能的日志存储方法及其相关设备 | |
US20130204924A1 (en) | Methods and apparatuses for providing application level device transparency via device devirtualization | |
US20230205715A1 (en) | Acceleration framework to chain ipu asic blocks | |
US20240296151A1 (en) | Cloud server application management method, apparatus, device, computer-readable storage medium, and computer program product | |
CN103455361B (zh) | 一种在64位操作系统下调用32位解码库的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |