CN117412067A - 一种共享硬件编解码能力的设备、组网系统和方法 - Google Patents

一种共享硬件编解码能力的设备、组网系统和方法 Download PDF

Info

Publication number
CN117412067A
CN117412067A CN202311341728.6A CN202311341728A CN117412067A CN 117412067 A CN117412067 A CN 117412067A CN 202311341728 A CN202311341728 A CN 202311341728A CN 117412067 A CN117412067 A CN 117412067A
Authority
CN
China
Prior art keywords
rpc
decoding
coding
information
virtualized
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
Application number
CN202311341728.6A
Other languages
English (en)
Inventor
张汉孟
关堃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Hoperun Software Co ltd
Original Assignee
Jiangsu Hoperun Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jiangsu Hoperun Software Co ltd filed Critical Jiangsu Hoperun Software Co ltd
Priority to CN202311341728.6A priority Critical patent/CN117412067A/zh
Publication of CN117412067A publication Critical patent/CN117412067A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2181Source of audio or video content, e.g. local disk arrays comprising remotely distributed storage units, e.g. when movies are replicated over a plurality of video servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/226Characteristics of the server or Internal components of the server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/426Internal components of the client ; Characteristics thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
    • H04N21/440218Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种共享硬件编解码能力的设备、组网系统和方法,设备中包括媒体框架、虚拟编解码系统、芯片硬件编解码器,虚拟编解码系统用于与媒体框架对接,提供组网内所有虚拟化编解码器能力匹配,与芯片硬件编解码器对接,虚拟化芯片硬件编解码器;虚拟编解码系统包括虚拟化编解码客户端和虚拟化编解码服务端,虚拟化编解码客户端用于接收组网内其他设备编解码能力信息;对组网内其他设备发起认证、鉴权操作,对接媒体框架;虚拟化编解码服务端用于屏蔽芯片厂商硬件编解码器差异和提供服务端接口,与芯片硬件编解码器交互,管理多编解码通道,与组网内其他设备虚拟化编解码客户端交互。基于虚拟编解码系统在组网内共享,提高编解码能力。

Description

一种共享硬件编解码能力的设备、组网系统和方法
技术领域
本发明涉及设备虚拟化技术领域,尤其是涉及一种共享硬件编解码能力的设备、组网系统和方法。
背景技术
目前,嵌入式设备所承载的业务和功能变得越来越复杂,与此同时,嵌入式设备的资源也变得越来越丰富,对芯片进行虚拟化能够提高资源利用率、降低成本并满足业务的灵活性,特别是在嵌入式设备领域,对虚拟化的需求越来越多。基于虚拟化技术,能够满足主机系统和应用的需求,同时也能满足本设备的客户机系统和应用的需求,甚至能满足同一网络环境下其他设备作为客户机的系统和应用需求。在这其中,编解码器作为多媒体子系统中的重要模块,实现编解码器虚拟化具有重要意义,特别是芯片硬件编解码器,有着功耗低、性能好、不占CPU的优点,对于商用设备,对芯片硬件编解码器的虚拟化更是非常重要。
本机硬件编解码器能力不足时,业界通用做法会切换到软件编解码,而软件编解码存在CPU占用率高、功耗高、性能差卡顿、用户体验差等问题。
现有的编解码模块虚拟化采用virtio技术。基于这种技术方案,客户机系统需要使用专用的驱动程序,而主机系统的驱动程序层或中间件也需要使用专用的程序。尽管这种方案在具有较好的通用性和性能,但需要在多个系统、多层次上进行修改和适配,并且此方案只能在本设备内实现主机和客户机的共享芯片资源,无法实现同一网络下的跨设备的设备虚拟化。
现有典型的harmonyOS的分布式视频播放方案,要求组网内设备是同样的harmonyOS操作系统才能够实现编解码虚拟化,无法兼容其他操作系统设备同时进行编解码虚拟化。
因此,在同一组网内不同设备不同操作系统上进行编解码的虚拟化,是目前亟待解决的问题。
发明内容
本发明的目的是提供一种共享硬件编解码能力的设备、组网系统和方法,在设备内设置虚拟编解码系统,用于与媒体框架和芯片硬件编解码器对接,不涉及操作系统,实现组网内不同操作系统的各设备的编解码能力共享。
第一方面,本发明的上述发明目的通过以下技术方案得以实现:
一种共享硬件编解码能力的设备,包括媒体框架、虚拟编解码系统、芯片硬件编解码器,虚拟编解码系统用于与媒体框架对接,提供组网内所有虚拟化编解码器能力匹配,与芯片硬件编解码器对接,屏蔽芯片硬件编解码器差异,虚拟化芯片硬件编解码器;虚拟编解码系统,包括虚拟化编解码客户端和虚拟化编解码服务端,虚拟化编解码客户端用于接收组网内其他设备编解码能力信息;对组网内其他设备发起认证、鉴权操作,发送RPC消息和接收组网内其他设备虚拟化编解码服务端返回的RPC消息,对接媒体框架;虚拟化编解码服务端用于屏蔽芯片厂商硬件编解码器差异和提供服务端接口,获取业务信息,与芯片硬件编解码器交互,对多个编解码通道进行管理,与组网内其他设备虚拟化编解码客户端交互。
本发明进一步设置为:虚拟化编解码客户端包括:OpenMAX接口模块、能力管理模块和RPC客户端模块,OpenMAX接口模块用于提供OpenMAX标准接口,直接对接媒体框架;能力管理模块用于接收组网内其他设备编解码能力信息,对组网内其他设备发起认证、鉴权操作;RPC客户端模块用于与组网内其他设备虚拟化编解码服务端交互,发送RPC消息给组网内其他设备虚拟化编解码服务端,接收组网内其他设备虚拟化编解码服务端返回的RPC消息。
本发明进一步设置为:虚拟化编解码服务端包括:能力上报模块、RPC服务端、通道管理模块、心跳模块和OpenMAX对接模块;能力上报模块用于获取本机的真实编解码能力值,并在组网内进行广播;RPC服务端用于接收业务发起设备的虚拟化编解码客户端的同步RPC消息并解析,获取业务信息发送给芯片硬件编解码器,接收芯片硬件编解码器返回的信息再发送回业务发起设备的虚拟化编解码客户端,响应回调消息并构造异步RPC消息发送给业务发起设备的虚拟化编解客户端;通道管理模块用于管理编解码通道,对管理编解码通道编号,使一个设备的虚拟化编解码器,能够同时被至少一个设备的至少一个虚拟化编解码客户端发现并使用;心跳模块,每个编解码通道对应设置有独立的心跳模块,用于实时监控业务发起设备的虚拟化编解码客户端与组网内其他设备的虚拟化编解码服务端的RPC连接,在通信异常时主动释放资源;OpenMAX对接模块,用于调用芯片硬件编解码器的OpenMAX接口,对接芯片硬件编解码器。
第二方面,本发明的上述发明目的通过以下技术方案得以实现:
一种组网内各设备共享硬件编解码能力的方法,组网内至少二个设备,各设备内设置虚拟编解码系统,基于虚拟编解码系统,各设备获取自身的虚拟化编解码能力信息,业务发起设备与组网内其他设备进行虚拟化编解码能力匹配,在匹配到合适的编解码设备后,进行编解码业务,在虚拟化编解码能力匹配过程中,业务发起设备的工作,包括以下步骤:
B1、业务发起设备在组网内注册自己的编解码能力,获取组网内的其他设备的硬件编解码能力和本机的硬件编解码能力,保存组网内所有设备的虚拟化硬件编解码能力列表;
B2、业务发起设备的虚拟化编解码客户端,确认当前业务需要的编解码能力;
B3、业务发起设备根据当前需要的编解码能力,在虚拟化硬件编解码能力列表中进行匹配,优先选择本机,若匹配到组网中的其他设备,则发起认证鉴权操作,进行匹配;
在鉴权操作中,业务发起设备的工作,包括以下步骤:
B31-1、业务发起设备的第一媒体框架确认当前业务所需编解码能力值;
B31-2、第一媒体框架发送查找编解码器信息给业务发起设备的第一能力管理模块;
B31-3、第一能力管理模块,根据当前业务所需编解码能力,从列表中查找合适的编解码能力值,匹配到组网内其他设备的虚拟化编解码能力值;
B31-4、第一能力管理模块触发鉴权,向业务发起设备的第一RPC客户端发送进行鉴权消息;
B31-5、第一RPC客户端接收到进行鉴权消息后,构造同步RPC鉴权消息,在消息中携带设备2虚拟化编解码能力值,并发送给设备2;
B31-6、RPC客户端1接收匹配到组网内其他设备发送的能力比对成功的鉴权结果消息,并转发给第一能力管理模块;
B31-7、第一能力管理模块接收到鉴权结果消息后转发给第一媒体框架。
本发明进一步设置为:业务发起设备匹配到合适的编解码设备后,创建虚拟化编解码器,包括以下步骤:
C11-1、业务发起设备中的第一媒体框架,构造OMX标准回调函数,并保存;
C11-2、发送调用OMX创建编解码器接口信息给第一RPC客户端,在调用信息中包括OMX标准回调函数;
C11-3、第一RPC客户端接收到调用信息后,保存OMX标准回调函数,构造同步RPC消息,并发送给匹配到的设备的第二RPC服务端,在同步RPC消息中包括创建虚拟化编解码器信息;
C11-4、第一RPC客户端接收第二RPC服务端返回的创建完成信息,在创建完成信息中包括虚拟化编解码通道号,保存虚拟化编解码通道号;
C11-5、第一RPC客户端发送创建完成信息给第一媒体框架;
创建完成后,进行配置,包括以下步骤:
C21-1、业务发起设备中的第一媒体框架向第一RPC客户端发送调用指令,用于调用OMX标准申请编解码输入、输出内存接口;
C21-2、第一RPC客户端申请客户端输入输出内存,并将内存地址放入输入输出内存队列中;
C21-3、第一RPC客户端构造同步RPC消息,并发送给匹配到的设备,同步RPC消息中包括申请编解码内存信息和通道号及队列编号;
C21-4、第一RPC客户端接收匹配到的设备发送的申请虚拟化编解码内存完成信息;
C21-5、第一RPC客户端构造返回数据,在返回数据中包括第一RPC客户端内存队列中的输入输出内存地址;
C21-6、第一RPC客户端发送申请编解码内存指令完成信息给媒体框架1;
C21-7、第一媒体框架从指令完成信息中获取到内存地址,并保存。
本发明进一步设置为:在创建并配置完成虚拟化编解码器后,进行数据流输入输出,业务发起设备在输入数据处理过程中的工作,包括以下步骤:
K11-1、业务发起设备的第一媒体框架通过OMX标准接口,发送输入码流请求给第一RPC客户端;
K11-2、第一RPC客户端接收到输入码流请求后,匹配到虚拟化编解码通道号、输入内存队列编号,构造同步RPC消息并发送给匹配到设备的第二RPC服务端,在同步RPC消息中,包括通道号和内存队列编号;
K11-3、第一RPC客户端构造输入码流并保存;
K11-4、第一RPC客户端构造码流传输RPC消息并发送给匹配到设备的第二RPC服务端,码流传输RPC消息中包括输入码流;
K11-5、第一RPC客户端接收匹配到设备发送的异步RPC消息,异步RPC消息包括内存队列编号、输入码流已读取完成信息;
K11-6、第一RPC客户端匹配输入内存地址并保存;
K11-7、第一RPC客户端发送输入码流已读取完成信息给第一媒体框架;
业务发起设备在输出数据处理过程中的工作,包括以下步骤:
G11-1、业务发起设备中的第一媒体框架,通过OMX标准接口,发送请求输出内存地址信息给第一RPC客户端;
G11-2、第一RPC客户端接收到请求地址信息,匹配到虚拟化编解码通道号和输出内存队列编号;
G11-3、构造同步RPC消息并发送给匹配到设备,在同步RPC消息中包括通道号、输出内存队列编号;
G11-4、接收匹配到设备发送的异常RPC消息,异常RPC消息包括输出内存队列编号;
G11-5、第一RPC客户端根据通道号查找到对应的虚拟化编解码通道;
G11-6、根据输出内存队列编号,匹配输出内存地址;
G11-7、等待输出码流传输完毕;
G11-8、接收匹配到设备发送的构造码流传输RPC消息,在码流传输RPC消息中包括输出码流;
G11-9、确认输出码流传输完毕;
G11-10、发送输出码流对应的内存地址给第一媒体框架;
G11-1、发送调用OMX回调函数接口信息给第一媒体框架,在调用信息中包括输出码流地址。
第三方面,本发明的上述发明目的通过以下技术方案得以实现:
一种组网内各设备共享硬件编解码能力的方法,组网内至少二个设备,各设备内设置虚拟编解码系统,基于虚拟编解码系统,各设备获取自身的虚拟化编解码能力信息,业务发起设备与组网内其他设备进行虚拟化编解码能力匹配,组网内其他设备在被匹配到后,与业务发起设备交互,创建并配置虚拟化编解码器,传输输入输出数据,管理多编解码通道和心跳机制。
本发明进一步设置为:组网内其余设备,接收到业务发起设备的广播信息,获取自身虚拟化编解码化能力,建立硬件编解码器能力列表,在被匹配中后,接收业务发起设备的鉴权消息,进行鉴权,包括以下步骤:
B32-1、匹配到设备中的第二能力上报模块,接收到业务发起设备的同步RPC鉴权消息,进行解析,得到所需的虚拟化编解码能力值;
B32-2、确认自身的虚拟编解码能力值,与所需的虚拟化编解码能力值一致;
B32-3、发送能力比对成功的鉴权结果消息给业务发起设备;
在鉴权完成后,匹配到设备与业务发起设备交互,创建虚拟化编解码器,包括以下步骤:
C12-1、匹配到设备的第二RPC服务端,在接收到业务发起设备设备的同步RPC消息,构建基于RPC的异步回调函数,并保存;
C12-2、第二RPC服务端发送创建虚拟化编解码器信息给第二OMX对接模块,在创建信息中包括基于RPC的异步回调函数;
C12-3、第二OMX对接模块接收到创建信息后,构造OMX标准回调函数并保存;
C12-4、调用OMX,发送创建编解码器接口信息给第二OMX编解码器,接口信息中包括OMX标准回调函数;
C12-5、第二OMX编解码器进行OMX硬件编解码器的创建,并将创建完成信息发送给第二OMX对接模块;
C12-6、第二OMX对接模块将创建完成信息转发给第二RPC服务端;
C12-7、第二RPC服务端接收到创建完成信息后,进行解析,发送获取虚拟化编解码通道号信息给第二通道管理模块;
C12-8、第二通道管理模块接收到信息后,生成唯一虚拟化编解码通道号,保存并发送给第二RPC服务端;
C12-9、第二RPC服务端将创建完成信息发送给业务发起设备的第一RPC客户端,在该创建完成信息中,包括虚拟化编解码通道号;
在创建完成后,进行配置,配置过程中匹配到设备的工作,包括以下步骤:
C22-1、匹配到设备中的第二RPC服务端接收到业务发起设备的第一RPC客户端发送的同步RPC消息,解析后获取到虚拟编解码通道号并保存;
C22-2、第二RPC服务端发送申请虚拟化编解码内存指令给匹配到设备中的第二OMX对接模块;
C22-3、第二OMX对接模块接收到申请指令后,调用OMX标准接口,并发送申请编解码输入输出内存信息给匹配到设备中的第二OMX编解码器;
C22-4、第二OMX编解码器接收到申请内存信息后,进行申请编解码输入输出内存操作,完成后保存编解码输入输出内存信息,发送内存地址信息给第二OMX对接模块;
C22-5、第二OMX对接模块接收到内存信息后,发送给第二RPC服务端;
C22-6、第二RPC服务端将内存地址保存在输入输出内存队列中,并发送申请虚拟化编解码内存完成信息给业务发起设备的第一RPC客户端。
本发明进一步设置为:在创建并配置完成虚拟化编解码器后,进行数据的传输,匹配到设备在输入数据处理过程中的工作,包括以下步骤:
K12-1、匹配到设备中的第二RPC服务端接收到业务发起设备的同步RPC消息并解析,获取同步RPC消息中的通道号、内存队列编号;
K12-2、第二RPC服务端根据通道号查找到对应的虚拟化编解码通道,并保存;
K12-3、根据内存队列编号,匹配输入内存地址,等待输入码流传输完毕;
K12-4、在输入码流传输完毕后,接收到业务发起设备的第一RPC客户端发送的码流传输RPC消息;
K12-5、确认输入码流传输完毕;
K12-6、第二RPC服务端发送输入码流对应的内存地址给第二OMX对接模块;
K12-7、第二OMX对接模块,通过OMX标准接口,发送输入码流给第二OMX编解码器;
K12-8、第二OMX编解码器获取输入码流,并开始编解码;
K12-9、第二OMX编解码器调用OMX回调函数,发送输入码流已读取完成信息给第二OMX对接模块;
K12-10、第二OMX对接模块接收到信息号,调用异步RPC回调函数,发送输入码流已读取完成信息给第二RPC服务端;
K12-11、第二RPC服务端将完成消息匹配到输入内存队列编号,并保存;
K12-12、第二RPC服务端发送异步RPC消息给业务发起设备的第一RPC客户端,异步RPC消息包括输入码流已读取完成信息和内存队列编号信息;
在输出数据处理过程中的工作,包括以下步骤:
G12-1、匹配到设备中的第二RPC服务端接收到业务发起设备的同步RPC消息,解析后得到通道号、输出内存队列编号;
G12-2、根据通道号查找到对应虚拟化编解码通道;
G12-3、根据输出内存队列编号匹配输出内存地址;
G12-4、发送输出内存地址信息给第二OMX对接模块;
G12-5、第二OMX对接模块接收到输出内存地址信息后,通过OMX标准接口,发送输出内存地址信息给第二OMX编解码器;
G12-6、第二OMX编解码器接收到信息后,配置输出内存地址给硬件编解码器,硬件解码完成后,将输出数据放入输出内存;
G12-7、第二OMX编解码器发送调用OMX回调函数信息给第二OMX对接模块,调用信息中包括输出内存地址;
G12-8、第二OMX对接模块发送调用异步RPC回调函数信息给第二RPC服务端,在调用信息中包括输出内存地址;
G12-9、第二RPC服务端根据输出内存地址及异步RPC回调函数,匹配到输出内存队列编号;
G12-10、发送异步RPC消息给业务发起设备中的第一RPC客户端,异步RPC消息中包括输出内存队列编号;
G12-11、构造输出码流;
G12-12、发送构造码流RPC消息给第一RPC客户端,在构造码流RPC消息中包括输出码流。
第四方面,本发明的上述发明目的通过以下技术方案得以实现:
一种共享硬件编解码能力的设备终端,包括存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请所述方法。
与现有技术相比,本申请的有益技术效果为:
1.本申请通过在设备中设置虚拟编解码系统,解决了在本机硬件能力不足时,能够共享同一组网内的其他设备的硬件编解码能力,同时基于虚拟编解码系统,实现了跨设备、跨编程语言、跨不同OS时编解码能力共享;
2.进一步地,本申请通过虚拟化编解码客户端,与设备媒体框架对接,实现组网内所有虚拟化编解码器能力匹配;
3.进一步地,本申请通过虚拟化编解码服务端,屏蔽掉芯片厂商硬件编解码器差异并提供服务端接口,实现不同厂商硬件编解码器的虚拟化。
附图说明
图1是本申请一个具体实施例的设备结构示意图;
图2是本申请一个具体实施例的能力上报流程示意图;
图3是本申请一个具体实施例的鉴权流程示意图;
图4是本申请一个具体实施例的创建虚拟化编解码器时客户端流程示意图;
图5是本申请一个具体实施例的创建虚拟化编解码器时服务端流程示意图;
图6是本申请一个具体实施例的配置虚拟化编解码器时客户端流程示意图;
图7是本申请一个具体实施例的配置虚拟化编解码器时服务端流程示意图;
图8是本申请一个具体实施例的输入数据客户端处理流程示意图;
图9是本申请一个具体实施例的输入数据服务端处理流程示意图;
图10是本申请一个具体实施例的输出数据客户端处理流程示意图;
图11是本申请一个具体实施例的输出数据服务端处理流程示意图。
具体实施方式
以下结合附图,对本发明作进一步详细说明。
本申请的一种共享硬件编解码能力的设备,包括媒体框架、虚拟编解码系统、芯片硬件编解码器,虚拟编解码系统用于向上与媒体框架对接,提供组网内所有虚拟化编解码器能力匹配,向下与芯片硬件编解码器对接,屏蔽芯片硬件编解码器差异。
虚拟编解码系统,包括虚拟化编解码客户端和虚拟化编解码服务端,虚拟化编解码客户端部署于媒体框架侧,虚拟化编解码服务端部署于芯片硬件编解码器侧。
虚拟化编解码客户端用于提供组网内所有虚拟化编解码器能力匹配和客户端接口,客户端接口用于对接媒体框架;虚拟化编解码服务端用于屏蔽芯片厂商硬件编解码器差异和提供服务端接口,服务端接口用于与芯片硬件编解码器对接。
虚拟化编解码客户端的功能包括:接收组网内其他设备编解码能力信息;对组网内其他设备发起认证、鉴权操作;发送RPC消息给匹配到的设备,接收匹配到的设备虚拟化编解码服务端返回的RPC消息;对接媒体框架。
虚拟化编解码服务端的功能包括:获取本设备的编解码能力;接收组网内其余设备虚拟化编解码客户端的同步RPC消息并解析,获取业务信息发送给芯片硬件编解码器,接收芯片硬件编解码器返回的信息再发送回业务发起设备虚拟化编解码客户端;响应回调消息并构造异步RPC消息发送给业务发起设备虚拟化编解客户端;引入通道编号来标识编解码通道,对多编解码通道进行管理。
虚拟化编解码客户端包括:OpenMAX接口模块、能力管理模块和RPC客户端模块,OpenMAX接口模块用于向上提供OpenMAX标准接口,直接对接媒体框架;能力管理模块用于接收组网内其他设备编解码能力信息,对组网内其他设备发起认证、鉴权操作;RPC客户端模块用于与组网内其他设备虚拟化编解码服务端交互,发送RPC消息给组网内其他设备虚拟化编解码服务端,接收组网内其他设备虚拟化编解码服务端返回的RPC消息。
虚拟化编解码服务端包括:能力上报模块、RPC服务端、通道管理模块、心跳模块和OpenMAX对接模块。
能力上报模块用于获取本机的真实编解码能力值,并在组网内进行广播;
RPC服务端用于接收业务发起设备虚拟化编解码客户端的同步RPC消息并解析,获取业务信息发送给芯片硬件编解码器,接收芯片硬件编解码器返回的信息再发送回业务发起设备虚拟化编解码客户端,响应回调消息并构造异步RPC消息发送给业务发起设备虚拟化编解客户端;
通道管理模块用于管理编解码通道,对管理编解码通道编号,用于一个设备的虚拟化编解码器,能够同时被至少一个设备的至少一个虚拟化编解码客户端发现并使用;
心跳模块,每个编解码通道对应设置有独立的心跳模块,用于实时监控业务发起设备虚拟化编解码客户端与匹配设备虚拟化编解码服务端的RPC连接,在通信异常时主动释放资源;
OpenMAX对接模块,虚拟化编解码服务端作为芯片硬件编解码器的客户端,调用芯片硬件编解码器的OpenMAX接口,对接芯片硬件编解码器。
虚拟编解码系统的工作过程,包括:
A1、虚拟化编解码能力匹配过程;
A2、匹配到合适的编解码设备后,进行编解码业务;
A3、管理多编解码通道;
A4、管理心跳机制。
本申请的一种各设备共享硬件编解码能力的组网系统,包括至少二个设备,各设备内设置虚拟编解码系统,组网内任何一个支持OpenMAX编解码框架的设备都能够作为服务端设备,一个虚拟化编解码服务端能够同时对接组网内至少一个设备中的至少一个虚拟化编解码客户端。
在本申请一个具体实施例中,组网内包括设备1和设备2,以设备1作为业务发起设备,设备2作为匹配到的虚拟编解码端,在某一时刻,有多个设备发起业务,所有业务的处理流程相同,本申请实施例以设备1作为业务发起设备,进行说明,多个业务发起设备的业务流程以此类推,对于组网内包括多个设备的情况,组网内其余设备的工作过程,以设备2工作过程类推,不再赘述。
本申请的一种组网内各设备共享硬件编解码能力的方法,包括基于虚拟编解码系统,进行虚拟化编解码能力匹配,在匹配到合适的编解码设备后,进行编解码业务,管理多编解码通道和心跳机制。
虚拟化编解码能力匹配过程,用于业务发起设备1与组网内的其他设备进行虚拟化编解码能力匹配,包括以下步骤:
B1、业务发起设备1在组网内注册自己的编解码能力,获取组网内的设备2的硬件编解码能力和本机的硬件编解码能力,保存组网内所有设备的虚拟化硬件编解码能力列表;
B2、业务发起设备1的虚拟化编解码客户端,确认当前业务需要的编解码能力;
B3、业务发起设备1根据当前需要的编解码能力,在虚拟化硬件编解码能力列表中进行匹配,优先选择本机,若匹配到组网中的其他设备,则发起认证鉴权操作,完成匹配。
步骤B1中,业务发起设备1的虚拟化编解码服务端,在开机接入组网后,主动广播一条信息,信息中包括业务发起设备IP、通信端口、业务发起设备硬件编解码能力,其中,硬件编解码能力包括视频压缩格式、分辨率、帧率、码率等。
组网内其他设备2接收到广播信息后,将信息中包含的内容注册到自己的虚拟化编解码客户端,各设备保存组网内其他设备的硬件编解码能力,同时也获取自己的硬件编解码器能力,将自己的硬件编解码器能力标记为本机能力,将组网内所有设备的硬件编解码器能力列表。
设备1给自己的虚拟化编解码服务端,发送一条RPC消息,获取自己的硬件编解码器能力。
能力上报流程,具体地,如图2所示,包括以下步骤:
B1-1、设备1的虚拟化编解码服务端1的能力上报模块1,在开机后联网,触发能力上报流程;
B1-2、发送获取请求自身的虚拟化编解码能力信息,给虚拟化编解码服务端1的OMX对接模块1;
B1-3、OMX对接模块1在接收到获取请求信息后,向虚拟化编解码服务端1的OMX编解码器1发出请求;
B1-4、OMX编解码器1将自身的硬件编解码能力信息发送给OMX对接模块1;
B1-5、OMX对接模块1接收到自身的硬件编解码能力信息后,进行解析,构造设备1的虚拟化编解码能力,并保存;
B1-6、OMX对接模块1将自身的虚拟化编解码能力信息发送给能力上报模块1;
B1-7、能力上报模块1保存自身的虚拟化编解码能力信息;
B1-8、向组网内其余设备广播自身的虚拟化编解码能力信息;
B1-9、组网内其余设备2接收到设备1的虚拟化编解码能力信息,保存到虚拟化编解码能力列表中。
其中,设备2中的虚拟化编解码客户端2中的能力管理模块2进行列表保存。
步骤B3中,业务发起设备构造RPC认证消息,再次请求组网内其他设备的虚拟化硬件编解码能力;接收组网内其他设备发送的自身虚拟化硬件编解码能力信息,并与能力列表中的信息进行匹配,成功后完成鉴权、能力匹配流程。
如图3所示,鉴权过程中设备1的工作,包括以下步骤:
B31-1、设备1的媒体框架1确认当前业务所需编解码能力值;
B31-2、媒体框架1发送查找编解码器信息给能力管理模块1;
B31-3、能力管理模块1,根据当前业务所需编解码能力,从列表中查找合适的编解码能力值,匹配到组网内设备2的虚拟化编解码能力值;
B31-4、能力管理模块1触发鉴权,向RPC客户端1发送进行鉴权消息;
B31-5、RPC客户端1接收到进行鉴权消息后,构造同步RPC鉴权消息,在消息中携带设备2虚拟化编解码能力值,并发送给设备2;
B31-6、RPC客户端1接收到设备2发送的能力比对成功的鉴权结果消息,并转发给能力管理模块1;
B31-7、能力管理模块1接收到鉴权结果消息后转发给媒体框架1。
鉴权过程中设备2的工作,包括以下步骤:
B32-1、设备2中的能力上报模块2,接收到设备1的同步RPC鉴权消息,进行解析,得到所需的虚拟化编解码能力值;
B32-2、确认自身的虚拟编解码能力值,与所需的虚拟化编解码能力值一致;
B32-3、发送能力比对成功的鉴权结果消息给设备1。
业务发起设备1匹配到合适的编解码设备2后,创建虚拟化编解码器,并进行配置。在业务发起设备1内部进行编解码业务,包括业务发起设备1的虚拟化编解码客户端,构造RPC消息并发送,等待组网内其他设备的响应;接收组网内其他设备返回的RPC消息。
其中,RPC消息分为两类,分别为同步类消息和回调类消息,按照各自的模式进行通讯。
同步类消息采用一元RPC模式,业务发起设备的虚拟化编解码客户端,发送消息并等待组网内其他设备的虚拟化编解码服务端响应,包括OMX_GetHandle消息,需要携带ComponentName字符串。
组网内其他设备的虚拟化编解码服务端,接收到RPC消息后进行解析,获取消息内容,并重新组装成OpenMAX标准接口消息发送给自身的硬件编解码器,接收自身硬件编解码器返回的数据,并封装成RPC数据结构,返回给业务发起设备的虚拟化编解码客户端。
回调类消息采用双向流式RPC模式异步通讯机制,组网内其他设备的虚拟化编解码服务端,构造OpenMAX标准OMX_CALLBACKTYPE回调数据结构,并通过OpenMAX标准接口OMX_GetHandle下发给自身的硬件编解码器,触发回调函数,再将回调上来的信息封装成异步RPC消息,发送回业务发起设备的虚拟化编解码客户端。
创建虚拟化编解码器过程中,如图4所示,设备1的工作,包括以下步骤:
C11-1、设备1中的媒体框架1,构造OMX标准回调函数,并保存;
C11-2、发送调用OMX创建编解码器接口信息给RPC客户端1,在调用信息中包括OMX标准回调函数;
C11-3、RPC客户端1接收到调用信息后,保存OMX标准回调函数,构造同步RPC消息,并发送给设备2的RPC服务端2,在同步RPC消息中包括创建虚拟化编解码器信息;
C11-4、RPC客户端1接收RPC服务端2返回的创建完成信息,在创建完成信息中包括虚拟化编解码通道号,保存虚拟化编解码通道号;
C11-5、RPC客户端1发送创建完成信息给媒体框架1。
设备2服务端的工作,包括:设备2的RPC服务端2,在接收到设备1的同步RPC消息后,进行虚拟化编解码器的创建,创建完成后,对虚拟化编解码通道编号,并发送包括通道号的创建完成消息给设备1。
具体地,如图5所示,设备2的工作,包括以下步骤:
C12-1、设备2的RPC服务端2,在接收到设备1的同步RPC消息,构建基于RPC的异步回调函数,并保存;
C12-2、发送创建虚拟化编解码器信息给OMX对接模块2,在创建信息中包括基于RPC的异步回调函数;
C12-3、OMX对接模块2接收到创建信息后,构造OMX标准回调函数并保存;
C12-4、调用OMX,发送创建编解码器接口信息给OMX编解码器2,接口信息中包括OMX标准回调函数;
C12-5、OMX编解码器2进行OMX硬件编解码器的创建,并将创建完成信息发送给OMX对接模块2;
C12-6、OMX对接模块2将创建完成信息转发给RPC服务端2;
C12-7、RPC服务端2接收到创建完成信息后,进行解析,发送获取虚拟化编解码通道号信息给通道管理模块2;
C12-8、通道管理模块2接收到信息后,生成唯一虚拟化编解码通道号,保存并发送给RPC服务端2;
C12-9、RPC服务端2将创建完成信息发送给设备1的RPC客户端1,在该创建完成信息中,包括虚拟化编解码通道号。
在创建虚拟化编解码器后,对虚拟化编解码器进行配置,如图6所示,配置过程中,设备1的工作,包括以下步骤:
C21-1、设备1中的媒体框架1向RPC客户端1发送调用指令,用于调用OMX标准申请编解码输入、输出内存接口;
C21-2、RPC客户端1申请客户端输入输出内存,并将内存地址放入输入输出内存队列中;
C21-3、RPC客户端1构造同步RPC消息,并发送给设备2,同步RPC消息中包括申请编解码内存信息和通道号及队列编号;
C21-4、RPC客户端1接收到设备2发送的申请虚拟化编解码内存完成信息;
C21-5、RPC客户端1构造返回数据,在返回数据中包括RPC客户端1内存队列中的输入输出内存地址;
C21-6、RPC客户端1发送申请编解码内存指令完成信息给媒体框架1;
C21-7、媒体框架1从指令完成信息中获取到内存地址,并保存。
在创建虚拟化编解码器后,对虚拟化编解码器进行配置,如图7所示,配置过程中,设备2的工作,包括以下步骤:
C22-1、设备2中的RPC服务端2接收到设备1的RPC客户端1发送的同步RPC消息,解析后获取到虚拟编解码通道号并保存;
C22-2、RPC服务端2发送申请虚拟化编解码内存指令给设备2中的OMX对接模块2;
C22-3、OMX对接模块2接收到申请指令后,调用OMX标准接口,并发送申请编解码输入输出内存信息给设备2中的OMX编解码器2;
C22-4、OMX编解码器2接收到申请内存信息后,进行申请编解码输入输出内存操作,完成后保存编解码输入输出内存信息,发送内存地址信息给OMX对接模块2;
C22-5、OMX对接模块2接收到内存信息后,发送给RPC服务端2;
C22-6、RPC服务端2将内存地址保存在输入输出内存队列中,并发送申请虚拟化编解码内存完成信息给设备1的RPC客户端1。
若业务发起设备匹配的编解码设备是本机设备,虚拟化编解码器数据流流程如下所述:
使用linux标准ion硬件buffer作为数据载体,避免数据拷贝提升性能以及降低功耗。
业务发起设备的虚拟化编解码客户端,使用ion申请数据输入、输出buffer,形成两个buffer队列,再通过socket将buffer对应fd传输到业务发起设备的虚拟化编解码服务端,业务发起设备的虚拟化编解码服务端同样形成两个buffer队列,并且buffer id与业务发起设备的虚拟化编解码客户端一一对应,业务发起设备的硬件编解码器使用外部buffer模式,业务发起设备的虚拟化编解码服务端将输入、输出buffer对应fd传给业务发起设备的硬件编解码器。
输入码流数据流向为:业务发起设备的虚拟化编解码客户端,把输入码流数据放入输入缓冲(buffer)队列,然后将对应buffer id通过RPC传给业务发起设备的虚拟化编解码服务端,业务发起设备的虚拟化编解码服务端,通过buffer id找到对应buffer fd,再通知业务发起设备的编解码器从此fd取输入数据。
设备1在输入数据处理过程中的工作,如图8所示,包括以下步骤:
K11-1、媒体框架1通过OMX标准接口,发送输入码流请求给RPC客户端1;
K11-2、RPC客户端1接收到输入码流请求后,匹配到虚拟化编解码通道号、输入内存队列编号,构造同步RPC消息并发送给设备2的RPC服务端2,在同步RPC消息中,包括通道号和内存队列编号;
K11-3、RPC客户端1构造输入码流并保存;
K11-4、RPC客户端1构造码流传输RPC消息并发送给设备2的RPC服务端2,码流传输RPC消息中包括输入码流;
K11-5、RPC客户端1接收设备2发送的异步RPC消息,异步RPC消息包括内存队列编号、输入码流已读取完成信息;
K11-6、RPC客户端1匹配输入内存地址并保存;
K11-7、RPC客户端1发送输入码流已读取完成信息给媒体框架1。
设备2在输入数据处理过程中的工作,如图9所示,包括以下步骤:
K12-1、设备2中的RPC服务端2接收到设备1的同步RPC消息并解析,获取同步RPC消息中的通道号、内存队列编号;
K12-2、RPC服务端2根据通道号查找到对应的虚拟化编解码通道,并保存;
K12-3、根据内存队列编号,匹配输入内存地址,等待输入码流传输完毕;
K12-4、在输入码流传输完毕后,接收到设备1的RPC客户端1发送的码流传输RPC消息;
K12-5、确认输入码流传输完毕;
K12-6、RPC服务端2发送输入码流对应的内存地址给OMX对接模块2;
K12-7、OMX对接模块2,通过OMX标准接口,发送输入码流给OMX编解码器2;
K12-8、OMX编解码器2获取输入码流,并开始编解码;
K12-9、OMX编解码器2调用OMX回调函数,发送输入码流已读取完成信息给OMX对接模块2;
K12-10、OMX对接模块2接收到信息号,调用异步RPC回调函数,发送输入码流已读取完成信息给RPC服务端2;
K12-11、RPC服务端2将完成消息匹配到输入内存队列编号,并保存;
K12-12、RPC服务端2发送异步RPC消息给设备1的RPC客户端1,异步RPC消息包括输入码流已读取完成信息和内存队列编号信息。
输出码流数据流向为:业务发起设备的编解码器输出码流,并放入之前申请好的输出buffer队列,然后将对应buffer id,通过RPC回调方式通知给业务发起设备的虚拟化编解码客户端,业务发起设备的虚拟化编解码客户端,通过buffer id找到对应buffer fd,然后取数据交给媒体框架进行下一步处理。
设备1在输出数据处理过程中的工作,如图10所示,包括以下步骤:
G11-1、设备1中的媒体框架1,通过OMX标准接口,发送请求输出内存地址信息给RPC客户端1;
G11-2、RPC客户端1接收到请求地址信息,匹配到虚拟化编解码通道号和输出内存队列编号;
G11-3、构造同步RPC消息并发送给设备2,在同步RPC消息中包括通道号、输出内存队列编号;
G11-4、接收设备2发送的异常RPC消息,异常RPC消息包括输出内存队列编号;
G11-5、RPC客户端1根据通道号查找到对应的虚拟化编解码通道;
G11-6、根据输出内存队列编号,匹配输出内存地址;
G11-7、等待输出码流传输完毕;
G11-8、接收设备2发送的构造码流传输RPC消息,在码流传输RPC消息中包括输出码流;
G11-9、确认输出码流传输完毕;
G11-10、发送输出码流对应的内存地址给媒体框架1;
G11-1、发送调用OMX回调函数接口信息给媒体框架1,在调用信息中包括输出码流地址。
设备2在输出数据处理过程中的工作,如图11所示,包括以下步骤:
G12-1、设备2中的RPC服务端2接收到设备1的同步RPC消息,解析后得到通道号、输出内存队列编号;
G12-2、根据通道号查找到对应虚拟化编解码通道;
G12-3、根据输出内存队列编号匹配输出内存地址;
G12-4、发送输出内存地址信息给OMX对接模块2;
G12-5、OMX对接模块2接收到输出内存地址信息后,通过OMX标准接口,发送输出内存地址信息给OMX编解码器2;
G12-6、OMX编解码器2接收到信息后,配置输出内存地址给硬件编解码器,硬件解码完成后,将输出数据放入输出内存;
G12-7、OMX编解码器2发送调用OMX回调函数信息给OMX对接模块2,调用信息中包括输出内存地址;
G12-8、OMX对接模块2发送调用异步RPC回调函数信息给RPC服务端2,在调用信息中包括输出内存地址;
G12-9、RPC服务端2根据输出内存地址及异步RPC回调函数,匹配到输出内存队列编号;
G12-10、发送异步RPC消息给设备1中的RPC客户端1,异步RPC消息中包括输出内存队列编号;
G12-11、构造输出码流;
G12-12、发送构造码流RPC消息给RPC客户端1,在构造码流RPC消息中包括输出码流。
若业务发起设备匹配的编解码设备是组网内其他设备,虚拟化编解码器需要使用RPC的大码流传输特性,厂商硬件编解码器需要支持内部buffer模式,数据流流程如下所述:
业务发起设备的虚拟化编解码客户端,下发码流数据经过RPC消息封装,传输到业务发起设备的虚拟化编解码服务端,业务发起设备的虚拟化编解码服务端,再将码流数据拷贝到编解码器内部输入buffer;编解码器输出数据也需要经过RPC封装后返回给客户端,客户端再将数据交给媒体框架进行下一步处理。
A3、管理多编解码通道的流程,包括以下步骤:
D1、在业务发起设备的虚拟化编解码客户端,匹配组网内其他设备的虚拟化编解码服务端的鉴权阶段,业务发起设备的虚拟化编解码客户端会发送RPC消息,除了完成能力鉴权外,还有一个功能,从匹配到设备的虚拟化编解码服务端带回通道编号;
D2、匹配到设备的虚拟化编解码服务端收到RPC鉴权消息后,通过通道管理模块生成一个唯一的编号作为通道号,返回给业务发起设备的虚拟化编解码客户端,同时为该通道创建对应的编解码资源;
D3、业务发起设备的虚拟化编解码客户端保存通道号,后续发送RPC消息时,会附上该通道号;
D4、匹配到设备的虚拟化编解码服务端处理RPC业务消息时,根据其携带的通道号,使用对应的资源进行编解码。
A4、管理心跳机制,包括以下步骤:
E1、业务发起设备的虚拟化编解码客户端成功与匹配到设备的虚拟化编解码服务端建立连接,开始编解码业务之后,每间隔1秒向匹配到设备的虚拟化编解码服务端发送一条同步RPC心跳消息,并等待服务端响应,如果消息发送失败,或者超过一秒没有服务端响应,则认为匹配到设备的虚拟化编解码服务端出现异常,触发释放流程,释放所有资源;
E2、匹配到设备的虚拟化编解码服务端收到心跳消息后,立即响应,返回心跳成功消息,并且启动一秒定时器等待下一个心跳消息,如果定时器结束,没有等到心跳消息,则认为对应业务发起设备的虚拟化编解码客户端出现异常,触发异常释放流程。
本申请一实施例提供的一种共享硬件编解码能力的设备终端设备,该实施例的终端设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如创建虚拟编解码器程序,所述处理器执行所述计算机程序时实现本申请所述方法。
或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如:计算特征模块、判别模块。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述共享硬件编解码能力的设备终端设备中的执行过程。
所述共享硬件编解码能力的设备终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述共享硬件编解码能力的设备终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述上述示例仅仅是所述共享硬件编解码能力的设备终端设备的示例,并不构成对所述共享硬件编解码能力的设备终端设备的限定,可以包括比图示更多或更少的部件,或组合某些部件,或不同的部件,例如所述共享硬件编解码能力的设备终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数据信号处理器(Digital Signal Processor,DSP) 、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种共享硬件编解码能力的设备终端设备的控制中心,利用各种接口和线路连接整个所述一种共享硬件编解码能力的设备终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种共享硬件编解码能力的设备终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card ,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述一种共享硬件编解码能力的设备终端设备集成的模块/单元,如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
以上均为本发明的较佳实施例,并非依此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。

Claims (10)

1.一种共享硬件编解码能力的设备,其特征在于:包括媒体框架、虚拟编解码系统、芯片硬件编解码器,虚拟编解码系统用于与媒体框架对接,提供组网内所有虚拟化编解码器能力匹配,与芯片硬件编解码器对接,屏蔽芯片硬件编解码器差异,虚拟化芯片硬件编解码器;虚拟编解码系统,包括虚拟化编解码客户端和虚拟化编解码服务端,虚拟化编解码客户端用于接收组网内其他设备编解码能力信息;对组网内其他设备发起认证、鉴权操作,发送RPC消息和接收组网内其他设备虚拟化编解码服务端返回的RPC消息,对接媒体框架;虚拟化编解码服务端用于屏蔽芯片厂商硬件编解码器差异和提供服务端接口,获取业务信息,与芯片硬件编解码器交互,对多个编解码通道进行管理,与组网内其他设备虚拟化编解码客户端交互。
2.根据权利要求1所述的一种共享硬件编解码能力的设备,其特征在于:虚拟化编解码客户端包括:OpenMAX接口模块、能力管理模块和RPC客户端模块,OpenMAX接口模块用于提供OpenMAX标准接口,直接对接媒体框架;能力管理模块用于接收组网内其他设备编解码能力信息,对组网内其他设备发起认证、鉴权操作;RPC客户端模块用于与组网内其他设备虚拟化编解码服务端交互,发送RPC消息给组网内其他设备虚拟化编解码服务端,接收组网内其他设备虚拟化编解码服务端返回的RPC消息。
3.根据权利要求1所述的一种共享硬件编解码能力的设备,其特征在于:虚拟化编解码服务端包括:能力上报模块、RPC服务端、通道管理模块、心跳模块和OpenMAX对接模块;能力上报模块用于获取本机的真实编解码能力值,并在组网内进行广播;RPC服务端用于接收业务发起设备的虚拟化编解码客户端的同步RPC消息并解析,获取业务信息发送给芯片硬件编解码器,接收芯片硬件编解码器返回的信息再发送回业务发起设备的虚拟化编解码客户端,响应回调消息并构造异步RPC消息发送给业务发起设备的虚拟化编解客户端;通道管理模块用于管理编解码通道,对管理编解码通道编号,使一个设备的虚拟化编解码器,能够同时被至少一个设备的至少一个虚拟化编解码客户端发现并使用;心跳模块,每个编解码通道对应设置有独立的心跳模块,用于实时监控业务发起设备的虚拟化编解码客户端与组网内其他设备的虚拟化编解码服务端的RPC连接,在通信异常时主动释放资源;OpenMAX对接模块,用于调用芯片硬件编解码器的OpenMAX接口,对接芯片硬件编解码器。
4.一种组网内各设备共享硬件编解码能力的方法,其特征在于:组网内至少二个设备,各设备内设置虚拟编解码系统,基于虚拟编解码系统,各设备获取自身的虚拟化编解码能力信息,业务发起设备与组网内其他设备进行虚拟化编解码能力匹配,在匹配到合适的编解码设备后,进行编解码业务,在虚拟化编解码能力匹配过程中,业务发起设备的工作,包括以下步骤:
B1、业务发起设备在组网内注册自己的编解码能力,获取组网内的其他设备的硬件编解码能力和本机的硬件编解码能力,保存组网内所有设备的虚拟化硬件编解码能力列表;
B2、业务发起设备的虚拟化编解码客户端,确认当前业务需要的编解码能力;
B3、业务发起设备根据当前需要的编解码能力,在虚拟化硬件编解码能力列表中进行匹配,优先选择本机,若匹配到组网中的其他设备,则发起认证鉴权操作,进行匹配;
在鉴权操作中,业务发起设备的工作,包括以下步骤:
B31-1、业务发起设备的第一媒体框架确认当前业务所需编解码能力值;
B31-2、第一媒体框架发送查找编解码器信息给业务发起设备的第一能力管理模块;
B31-3、第一能力管理模块,根据当前业务所需编解码能力,从列表中查找合适的编解码能力值,匹配到组网内其他设备的虚拟化编解码能力值;
B31-4、第一能力管理模块触发鉴权,向业务发起设备的第一RPC客户端发送进行鉴权消息;
B31-5、第一RPC客户端接收到进行鉴权消息后,构造同步RPC鉴权消息,在消息中携带设备2虚拟化编解码能力值,并发送给设备2;
B31-6、RPC客户端1接收匹配到组网内其他设备发送的能力比对成功的鉴权结果消息,并转发给第一能力管理模块;
B31-7、第一能力管理模块接收到鉴权结果消息后转发给第一媒体框架。
5.根据权利要求4所述的一种组网内各设备共享硬件编解码能力的方法,其特征在于:业务发起设备匹配到合适的编解码设备后,创建虚拟化编解码器,包括以下步骤:
C11-1、业务发起设备中的第一媒体框架,构造OMX标准回调函数,并保存;
C11-2、发送调用OMX创建编解码器接口信息给第一RPC客户端,在调用信息中包括OMX标准回调函数;
C11-3、第一RPC客户端接收到调用信息后,保存OMX标准回调函数,构造同步RPC消息,并发送给匹配到的设备的第二RPC服务端,在同步RPC消息中包括创建虚拟化编解码器信息;
C11-4、第一RPC客户端接收第二RPC服务端返回的创建完成信息,在创建完成信息中包括虚拟化编解码通道号,保存虚拟化编解码通道号;
C11-5、第一RPC客户端发送创建完成信息给第一媒体框架;
创建完成后,进行配置,包括以下步骤:
C21-1、业务发起设备中的第一媒体框架向第一RPC客户端发送调用指令,用于调用OMX标准申请编解码输入、输出内存接口;
C21-2、第一RPC客户端申请客户端输入输出内存,并将内存地址放入输入输出内存队列中;
C21-3、第一RPC客户端构造同步RPC消息,并发送给匹配到的设备,同步RPC消息中包括申请编解码内存信息和通道号及队列编号;
C21-4、第一RPC客户端接收匹配到的设备发送的申请虚拟化编解码内存完成信息;
C21-5、第一RPC客户端构造返回数据,在返回数据中包括第一RPC客户端内存队列中的输入输出内存地址;
C21-6、第一RPC客户端发送申请编解码内存指令完成信息给媒体框架1;
C21-7、第一媒体框架从指令完成信息中获取到内存地址,并保存。
6.根据权利要求4所述的一种组网内各设备共享硬件编解码能力的方法,其特征在于:在创建并配置完成虚拟化编解码器后,进行数据流输入输出,业务发起设备在输入数据处理过程中的工作,包括以下步骤:
K11-1、业务发起设备的第一媒体框架通过OMX标准接口,发送输入码流请求给第一RPC客户端;
K11-2、第一RPC客户端接收到输入码流请求后,匹配到虚拟化编解码通道号、输入内存队列编号,构造同步RPC消息并发送给匹配到设备的第二RPC服务端,在同步RPC消息中,包括通道号和内存队列编号;
K11-3、第一RPC客户端构造输入码流并保存;
K11-4、第一RPC客户端构造码流传输RPC消息并发送给匹配到设备的第二RPC服务端,码流传输RPC消息中包括输入码流;
K11-5、第一RPC客户端接收匹配到设备发送的异步RPC消息,异步RPC消息包括内存队列编号、输入码流已读取完成信息;
K11-6、第一RPC客户端匹配输入内存地址并保存;
K11-7、第一RPC客户端发送输入码流已读取完成信息给第一媒体框架;
业务发起设备在输出数据处理过程中的工作,包括以下步骤:
G11-1、业务发起设备中的第一媒体框架,通过OMX标准接口,发送请求输出内存地址信息给第一RPC客户端;
G11-2、第一RPC客户端接收到请求地址信息,匹配到虚拟化编解码通道号和输出内存队列编号;
G11-3、构造同步RPC消息并发送给匹配到设备,在同步RPC消息中包括通道号、输出内存队列编号;
G11-4、接收匹配到设备发送的异常RPC消息,异常RPC消息包括输出内存队列编号;
G11-5、第一RPC客户端根据通道号查找到对应的虚拟化编解码通道;
G11-6、根据输出内存队列编号,匹配输出内存地址;
G11-7、等待输出码流传输完毕;
G11-8、接收匹配到设备发送的构造码流传输RPC消息,在码流传输RPC消息中包括输出码流;
G11-9、确认输出码流传输完毕;
G11-10、发送输出码流对应的内存地址给第一媒体框架;
G11-1、发送调用OMX回调函数接口信息给第一媒体框架,在调用信息中包括输出码流地址。
7.一种组网内各设备共享硬件编解码能力的方法,其特征在于:组网内至少二个设备,各设备内设置虚拟编解码系统,基于虚拟编解码系统,各设备获取自身的虚拟化编解码能力信息,业务发起设备与组网内其他设备进行虚拟化编解码能力匹配,组网内其他设备在被匹配到后,与业务发起设备交互,创建并配置虚拟化编解码器,传输输入输出数据,管理多编解码通道和心跳机制。
8.根据权利要求7所述的一种组网内各设备共享硬件编解码能力的方法,其特征在于:组网内其余设备,接收到业务发起设备的广播信息,获取自身虚拟化编解码化能力,建立硬件编解码器能力列表,在被匹配中后,接收业务发起设备的鉴权消息,进行鉴权,包括以下步骤:
B32-1、匹配到设备中的第二能力上报模块,接收到业务发起设备的同步RPC鉴权消息,进行解析,得到所需的虚拟化编解码能力值;
B32-2、确认自身的虚拟编解码能力值,与所需的虚拟化编解码能力值一致;
B32-3、发送能力比对成功的鉴权结果消息给业务发起设备;
在鉴权完成后,匹配到设备与业务发起设备交互,创建虚拟化编解码器,包括以下步骤:
C12-1、匹配到设备的第二RPC服务端,在接收到业务发起设备设备的同步RPC消息,构建基于RPC的异步回调函数,并保存;
C12-2、第二RPC服务端发送创建虚拟化编解码器信息给第二OMX对接模块,在创建信息中包括基于RPC的异步回调函数;
C12-3、第二OMX对接模块接收到创建信息后,构造OMX标准回调函数并保存;
C12-4、调用OMX,发送创建编解码器接口信息给第二OMX编解码器,接口信息中包括OMX标准回调函数;
C12-5、第二OMX编解码器进行OMX硬件编解码器的创建,并将创建完成信息发送给第二OMX对接模块;
C12-6、第二OMX对接模块将创建完成信息转发给第二RPC服务端;
C12-7、第二RPC服务端接收到创建完成信息后,进行解析,发送获取虚拟化编解码通道号信息给第二通道管理模块;
C12-8、第二通道管理模块接收到信息后,生成唯一虚拟化编解码通道号,保存并发送给第二RPC服务端;
C12-9、第二RPC服务端将创建完成信息发送给业务发起设备的第一RPC客户端,在该创建完成信息中,包括虚拟化编解码通道号;
在创建完成后,进行配置,配置过程中匹配到设备的工作,包括以下步骤:
C22-1、匹配到设备中的第二RPC服务端接收到业务发起设备的第一RPC客户端发送的同步RPC消息,解析后获取到虚拟编解码通道号并保存;
C22-2、第二RPC服务端发送申请虚拟化编解码内存指令给匹配到设备中的第二OMX对接模块;
C22-3、第二OMX对接模块接收到申请指令后,调用OMX标准接口,并发送申请编解码输入输出内存信息给匹配到设备中的第二OMX编解码器;
C22-4、第二OMX编解码器接收到申请内存信息后,进行申请编解码输入输出内存操作,完成后保存编解码输入输出内存信息,发送内存地址信息给第二OMX对接模块;
C22-5、第二OMX对接模块接收到内存信息后,发送给第二RPC服务端;
C22-6、第二RPC服务端将内存地址保存在输入输出内存队列中,并发送申请虚拟化编解码内存完成信息给业务发起设备的第一RPC客户端。
9.根据权利要求7所述的一种组网内各设备共享硬件编解码能力的方法,其特征在于:在创建并配置完成虚拟化编解码器后,进行数据的传输,匹配到设备在输入数据处理过程中的工作,包括以下步骤:
K12-1、匹配到设备中的第二RPC服务端接收到业务发起设备的同步RPC消息并解析,获取同步RPC消息中的通道号、内存队列编号;
K12-2、第二RPC服务端根据通道号查找到对应的虚拟化编解码通道,并保存;
K12-3、根据内存队列编号,匹配输入内存地址,等待输入码流传输完毕;
K12-4、在输入码流传输完毕后,接收到业务发起设备的第一RPC客户端发送的码流传输RPC消息;
K12-5、确认输入码流传输完毕;
K12-6、第二RPC服务端发送输入码流对应的内存地址给第二OMX对接模块;
K12-7、第二OMX对接模块,通过OMX标准接口,发送输入码流给第二OMX编解码器;
K12-8、第二OMX编解码器获取输入码流,并开始编解码;
K12-9、第二OMX编解码器调用OMX回调函数,发送输入码流已读取完成信息给第二OMX对接模块;
K12-10、第二OMX对接模块接收到信息号,调用异步RPC回调函数,发送输入码流已读取完成信息给第二RPC服务端;
K12-11、第二RPC服务端将完成消息匹配到输入内存队列编号,并保存;
K12-12、第二RPC服务端发送异步RPC消息给业务发起设备的第一RPC客户端,异步RPC消息包括输入码流已读取完成信息和内存队列编号信息;
在输出数据处理过程中的工作,包括以下步骤:
G12-1、匹配到设备中的第二RPC服务端接收到业务发起设备的同步RPC消息,解析后得到通道号、输出内存队列编号;
G12-2、根据通道号查找到对应虚拟化编解码通道;
G12-3、根据输出内存队列编号匹配输出内存地址;
G12-4、发送输出内存地址信息给第二OMX对接模块;
G12-5、第二OMX对接模块接收到输出内存地址信息后,通过OMX标准接口,发送输出内存地址信息给第二OMX编解码器;
G12-6、第二OMX编解码器接收到信息后,配置输出内存地址给硬件编解码器,硬件解码完成后,将输出数据放入输出内存;
G12-7、第二OMX编解码器发送调用OMX回调函数信息给第二OMX对接模块,调用信息中包括输出内存地址;
G12-8、第二OMX对接模块发送调用异步RPC回调函数信息给第二RPC服务端,在调用信息中包括输出内存地址;
G12-9、第二RPC服务端根据输出内存地址及异步RPC回调函数,匹配到输出内存队列编号;
G12-10、发送异步RPC消息给业务发起设备中的第一RPC客户端,异步RPC消息中包括输出内存队列编号;
G12-11、构造输出码流;
G12-12、发送构造码流RPC消息给第一RPC客户端,在构造码流RPC消息中包括输出码流。
10.一种共享硬件编解码能力的设备终端,包括存储器、处理器、以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求4-9任一所述方法。
CN202311341728.6A 2023-10-17 2023-10-17 一种共享硬件编解码能力的设备、组网系统和方法 Pending CN117412067A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311341728.6A CN117412067A (zh) 2023-10-17 2023-10-17 一种共享硬件编解码能力的设备、组网系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311341728.6A CN117412067A (zh) 2023-10-17 2023-10-17 一种共享硬件编解码能力的设备、组网系统和方法

Publications (1)

Publication Number Publication Date
CN117412067A true CN117412067A (zh) 2024-01-16

Family

ID=89495593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311341728.6A Pending CN117412067A (zh) 2023-10-17 2023-10-17 一种共享硬件编解码能力的设备、组网系统和方法

Country Status (1)

Country Link
CN (1) CN117412067A (zh)

Similar Documents

Publication Publication Date Title
US11477255B2 (en) Hybrid network system, communication method and network node
US10698717B2 (en) Accelerator virtualization method and apparatus, and centralized resource manager
US10924783B2 (en) Video coding method, system and server
WO2022206229A1 (zh) 数据处理方法、装置、设备和存储介质
WO2018223786A1 (zh) 云桌面系统、及其图像序列压缩编码方法和介质
US9251040B2 (en) Remote debugging in a cloud computing environment
CN101969391B (zh) 一种支持融合网络业务的云平台及其工作方法
CN112511840B (zh) 一种基于ffmpeg与硬件加速设备的解码系统及方法
EP3913859A1 (en) Vnf life cycle management method and apparatus
CN110413418B (zh) 缓存同步装置及方法,缓存同步系统、电子设备
CN111142910B (zh) 一种面向多界面的资源调配处理方法及系统
CN109194589B (zh) 一种mdc实现方法及装置
CN108076007A (zh) 一种接口的实现方法、装置和设备
CN105491021A (zh) 一种Android云应用服务器及Android云应用服务器系统
CN110995746A (zh) 异构网络的微服务调用方法及api网关
CN115022408A (zh) 基于服务网格的数据传输方法及装置、电子设备
CN111381868B (zh) 一种嵌入式系统驱动层的实现方法和装置
CN110869919B (zh) 用于远程节点发现、通信信道确认和连接的方法
CN116820527B (zh) 程序升级方法、装置、计算机设备和存储介质
CN117412067A (zh) 一种共享硬件编解码能力的设备、组网系统和方法
CN112202605A (zh) 服务配置方法、装置、设备及存储介质
CN116719771A (zh) 一种核间通信调度方法、系统及装置
CN112367362B (zh) 一种数据处理方法、装置、设备及计算机存储介质
CN113703676B (zh) 一种双活卷的调用方法、装置、设备和介质
CN117041147B (zh) 智能网卡设备、主机设备和方法及系统

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