一种音视频多路并发解码加速卡及其解码加速方法

文档序号:8365964阅读:597来源:国知局
一种音视频多路并发解码加速卡及其解码加速方法
【技术领域】
[0001]本发明涉及音视频解码技术领域,具体地说,本发明涉及一种音视频多路并发解码加速卡及其解码加速方法。
【背景技术】
[0002]网络音视频流量巨大,尤其对于优酷等内容提供商,每分钟用户上传音视频量长达数小时,而这些音视频文件必须要在10多分钟内进行盗版检测、不良信息检测、内容分类等基于音视频内容分析的自动处理工作。音视频数据以压缩形式传输,而内容分析必须基于音频原始波形数据和视频原始图像数据,因此数据解码是内容分析必不可少的前置条件。而互联网用户使用的音视频文件格式多种多样,其中常见的有FLV、WMV、ASF、RMVB,AV1、MP4等,这些文件格式通常用于封装多种编码器进行编码的音视频流,常见的编码器有H.264/AVC、H.265/HEVC、VP8、VP9、VC-U MPEG I/2/4, RV8/9/10 等。然而,目前音视频解码多是针对播放器实时播放需求的,其设计能力只需达到单路视频30fps的帧率即可。而面向内容分析的音视频解码器需要与强大的机器处理能力对应,每秒解码处理能力需要达到数千甚至上万帧。并且,内容提供商所面临的数据解码需要单处理节点能够同时处理多路多种格式的音视频流的并发解码请求,上述应用需求传统播放器类解码器均无法满足,因此需要针对音视频多路并发高速解码需求设计出新的解决方案。
[0003]目前,通用服务器适用于进行数据分析等传统业务处理,而对音视频解码不能提供专用加速逻辑,无法发挥其计算性能。因此,设计单独的硬件与通用服务器连接并为其提供解码服务,是一种较佳的方案。针对解码需求接入带宽高的特点和通用服务器高带宽接口的特点,带有PCIe接口的解码硬件是最佳选择,该解码硬件通常被设计为PCIe接口的解码加速卡形式,以便接入服务器。现有技术中,一种典型的PCIe接口解码加速卡是基于DSP处理器的音视频解码加速卡,它的主处理器通常是TI的集成ARM核的Netra处理器,代表性的产品为海康威视等公司的高清视频多路解码显示设备。该类解码加速卡主要用于监控摄像头的多路同时回放,解码设备同时接收多路监控设备的音视频流,进入解码设备后,单片TI处理器最多可进行8路高清解码,解码格式包括H.264、MPEG4、MPEG2、MJPEG等,解码后的数据直接接入显示设备进行显示。然而,该方案仅适合单格式多路并发的音视频处理。因为DSP中专用的解码加速器解码一种格式时,需要切换相应的固件,这种切换效率很低,而多格式并发视频解码的特点决定了需要在多个解码器之间频繁切换,甚至解一帧之后,由于当前视频没有数据,就要切换到另一路另一个格式的视频解码,此时固件切换速度甚至比解一帧的速度还慢,无法发挥其加速性能。
[0004]现有技术中,高性能GPU也可以看作一种PCIe接口解码加速卡。其缺点在于功耗大,且解码应用需要频繁跳转不利于GPU编程模型发挥效率。GPU每一次跳转操作都导致大量的计算单元停止工作等待重新分发数据,而解码算法中存在大量的跳转操作,因此这类高性能GPU在解码方面的效率很低。
[0005]另外,目前市场上还有一种基于众核处理器的PCIe接口解码加速卡,其代表产品是Tilera公司的tilepro64和tilegx系列芯片。众核处理器内集成数十个(例如64个)通用处理器核,各个通用处理器核内集成了部分向量指令,可用于视频解码的部分算法加速。然而,众核处理器处理多路多格式并发音视频解码应用存在以下问题:
[0006]1、单核处理能力有限,处理分辨率大的视频(如FHD视频)时存在延迟大的问题,严重影响分析系统实时性;
[0007]2、多核协同处理一路视频时,存在多核间数据传输和同步效率较低的问题。
[0008]3、众核处理器基于mesh网互联结构实现,而mesh网互联结构对数据局部性处理要求很高,解码器体系结构优化代价很大,而众核处理器的体系结构无法使用已有的优化方法,开发周期长,将造成对新解码器支持严重拖后的问题。

【发明内容】

[0009]因此,本发明的任务是提供一种能够克服上述现有技术缺陷的音视频多路并发解码加速解决方案。
[0010]本发明提供了一种音视频多路并发解码加速卡,包括解码处理器和内存,所述解码处理器包括通用处理器,系统代理模块,末级高速缓存模块,以及多种硬件解码加速模块;所述通用处理器和所述硬件解码加速模块均与末级高速缓存模块连接并共享末级高速缓存,所述末级高速缓存模块还与系统代理模块连接,并通过所述系统代理模块连接所述内存;
[0011]所述内存中设置硬件待解码数据缓冲区和软件待解码数据缓冲区;
[0012]所述通用处理器用于从主机端接收待解码数据,根据是否可以进行硬件加速解码将帧数据送入硬件待解码数据缓冲区或是软件待解码数据缓冲区;还用于运行软件解码线程和硬件解码线程,所述软件解码线程和硬件解码线程分别将各自相应的缓冲区数据取出解码,并将解码结果和解码状态放入回传数据缓冲区;其中,所述硬件解码线程调用所述硬件解码加速模块,所述硬件解码加速模块通过所述末级高速缓存模块读取解码上下文并进行解码,向所述硬件解码线程返回解码结果。
[0013]其中,所述音视频多路并发解码加速卡还包括与所述末级高速缓存模块连接的图形处理器,所述图形处理器中集成了所述多种硬件解码加速模块,并且所述图形处理器与所述通用处理器共享末级高速缓存。
[0014]其中,所述的音视频多路并发解码加速卡还包括与系统代理模块连接的I/O桥片和与I/O桥片连接的外部设备。
[0015]其中,所述的音视频多路并发解码加速卡还包括PCIe接口以及实现PCIe接口双向传输的PCIe Switch芯片,所述PCIe Switch芯片连接在所述PCIe接口和PCIe控制器之间,所述PCIe控制器集成在所述解码处理器或者I/O桥片中。
[0016]其中,所述通用处理器是SANDYBRIDGE,IVBBRIDGE,HASffELL, CRYSTALWELL 或者BROADffELL构架的多核通用处理器,或者AMD多核通用处理器。
[0017]本发明还提供了一种基于上述音视频多路并发解码加速卡的解码加速方法,所述内存中设置硬件待解码数据缓冲区和软件待解码数据缓冲区;
[0018]所述通用处理器运行软件解码线程和硬件解码线程并执行下列步骤:
[0019]I)对于从主机端接收待解码数据,根据是否可以进行硬件加速解码将帧数据送入硬件待解码数据缓冲区或是软件待解码数据缓冲区;
[0020]2)软件解码线程和硬件解码线程分别将各自相应的缓冲区数据取出解码,并将解码结果和解码状态放入回传数据缓冲区;其中,所述硬件解码线程调用所述硬件解码加速模块,所述硬件解码加速模块通过所述末级高速缓存模块读取解码上下文并进行解码,向所述硬件解码线程返回解码结果。
[0021]其中,所述内存中还设置接收数据缓冲区,所述步骤I)包括下列子步骤:
[0022]11)从主机端接收待解码数据,放入接收数据缓冲区;
[0023]12)从接收数据缓冲区取出数据片段,根据节目ID从解码上下文表中取出属性信息;
[0024]13)从数据片段中逐一取出帧数据,根据是否可以进行硬件加速解码将帧数据送入硬件待解码数据缓冲区或是软件待解码数据缓冲区。
[0025]其中,所述内存中还设置解码上下文数据表存储区,所述步骤12)中,所述解码上下文表从所述解码上下文数据表存储区中读出。
[0026]其中,所述解码上下文表包括节目信息、解复用器上下文和解码器上下文;
[0027]所述步骤12)中,所述通用处理器运行的音视频上下文管理线程检索节目信息中的节目ID,以确定该ID的音视频节目是否已在上下文信息表中存在属性信息,若判断为否,则认为当前节目为新节目,在解码上下文表中添加新的节目ID,若判断为是,则直接根据节目ID提取解复用器上下文和解码器上下文,准备解码;所述解码器上下文中存储了参考帧、对应节目的解码器配置参数;
[0028]所述步骤2)中,当解码出数据后,对解码上下文数据表中对应节目ID的参考帧信息进行更新。
[0029]其中,所述内存中还设置回传数据缓冲区,所述步骤2)还包括:软件
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1