一种针对多路h.264视频会议的GPU解码方法与流程

文档序号:11216294阅读:1463来源:国知局
一种针对多路h.264视频会议的GPU解码方法与流程

本发明涉及视频会议技术领域,特别涉及一种针对多路h.264视频会议的gpu解码方法。



背景技术:

由itu-t与ios/iec两大国际标准化组织于2003年共同提出的h.264视频编解码标准是当今视频压缩领域中压缩性能最优的实用视频编解码标准。与以前的国际标准如h.263和mpeg-4相比,最大的优势体现在以下四个方面:1.将每个视频帧分离成由像素组成的块,因此视频帧的编码处理的过程可以达到块的级别;2.采用空间冗余的方法,对视频帧的一些原始块进行空间预测、转换、优化和熵编码(可变长编码);3.对连续帧的不同块采用临时存放的方法,这样,只需对连续帧中有改变的部分进行编码。该算法采用运动预测和运动补偿来完成。对某些特定的块,在一个或多个已经进行了编码的帧执行搜索来决定块的运动向量,并由此在后面的编码和解码中预测主块;4.采用剩余空间冗余技术,对视频帧里的残留块进行编码。例如:对于源块和相应预测块的不同,再次采用转换、优化和熵编码。

h.264编解码算法性能的改善是以算法复杂度的提高为代价的,如何在不影响解码图像质量的前提下提高解码效率,是众多学者共同的研究方向。

近年来,图形处理器(graphicprocessunit,gpu)的快速发展使得其逐步用于通用计算。nvidia于2007年推出的统一计算设备架构(computedunifieddevicearchitecture,cuda)为通用计算提供了良好的软硬件开发环境。

对高清视频进行编解码过程中运算量庞大,不符合众多实时编解码应用的需要。国内外学者们尝试在不同的处理器上使用相应的多媒体扩展指令集来提高编解码速度。如英特尔针对奔腾系列处理器提供的mmx/sse指令集,将具备simd处理机制的cpu用于视频编解码,取得了一定的加速效果,但是由于cpu超高负荷运转的问题没有解决,所以系统整理的利用率仍然不高。另有一些研宄人员使用dsp芯片、以及等硬件电路来实现视频编解码的加速,部分实验取得了不错的效果,但是由于硬件设备价格昂贵等原因,不能推广使用。

有鉴于此,有必要提出一种新的方法来解决多路实时视频流解码速度提升的问题。



技术实现要素:

有鉴于此,本发明的目的是提供一种针对多路h.264视频会议的gpu解码方法。可有效地提高多路视频流的解码速度,达到实时的效果。

为实现上述发明目的,本发明提供了一种基于gpu的多路h.264视频实时解码方法,所述方法包括以下步骤:

s1:通过各分会场mcu输入多路视频会议流;

s2:依据视频流中的ip信息区分每个会场;

s3:采用cpu和gpu主从线程的协作方式对每个会场分别进行解码,并行的多路对视频流进行解封包、解码。

s4:将解码之后的数据储存在服务器上便于以后查看。

s5:针对客户端的请求对解码的数据重编码,并通过网络传输到客户端。

s6:客户端显示服务器发送的统计信息以及视频流。

进一步,所述步骤s3中,将cpu和gpu设计成主从线程的协作方式,取缔cpu和gpu互相等待的状态,实现cpu和gpu的同时并行工作。

进一步,所述步骤s3中,在传统解码器的基础上采用主机端和设备端协同工作的并行解码器架构,对h.264串行解码器各模块进行任务划分,其中将解析出的供后续模块使用的参数以及残差数据经过pci-e总线传输给设备端,cpu负责从网络提取层中获取经压缩的码流,并对其进行码流分析、熵解码、重排序工作;gpu负责反变换、反量化、帧内预测、帧间预测以及环路滤波模块的并行实现。

进一步,所述步骤s3中,采用整帧图像并行的方法实现帧内编码过程,将模式选择过程与帧内预测编码过程中计算过程分开。

进一步,所述步骤s3中,在h.264视频编码的预测编码过程中,预测编码是以宏块为单位进行的,而宏块之间预测过程中利用相邻宏块的信息,帧内预测过程中利用相邻块的重建图像来预测当前块。

进一步,所述步骤s3中,整帧图像并行的帧内预测过程实现的步骤如下:(1)根据原始帧数据来计算预测帧的最佳4x4帧内预测模式,记录每个子宏块的最佳预测模式和代价cost_sub_4;(2)将每个宏块的16个cost__sub_4求和得到cost_4;(3)计算所有宏块的16x16宏内预测模式,并保存最佳预测模式及代价cost_16;(4)比较cost_4和cost_16的大小,保存宏块的最佳预测模式,并在共享内存中读取最佳的宏块预测编码值;(5)根据得到的最佳预测模式进行帧内预测编码。

进一步,所述步骤s3中,因为同一时刻会有多路码流同时到达解码端,通过下述方法协调多路码流的进入顺序,以使解码系统能够正常工作,具体是通过gpu轮询系统发出第i路码流的请求,视频网核心交换机进行应答,并发送相应的码流数据,再由轮询系统输出码流数据,并对码流数据进行检测。

进一步,所述步骤s5中,采用服务器与客户端交互的方式来完成视频的传输,根据客户端请求的不同采用多路解码之后对其中某一路单独编码的方式。

进一步,所述步骤s1中,通过摄像机获取各个分会场的视频会议的视频流,摄像机所处位置位于会场斜上方。

进一步,所述步骤s3中,gpu视频解码利用direct3d、opengl和/或cuda实现解码器中的运动补偿和可视化显示。

本发明的有益效果是:

本发明的多路h.264视频会议的gpu解码方法,能够对同时开会的多个会场的多路视频进行解码,实现了视频会议自动化,主要解决多个会场同时开会时,多路视频码流实时传输、解码、播放的问题,本发明针对每一路的h.264视频码流将cpu和gpu设计成主从线程的协作方式,取缔cpu和gpu互相等待的状态,实现cpu和gpu的同时并行工作,并对解码之后的图像重新编码,并且存储,使之能够在客户端进行播放,从而拓展了易用性和功能性,本发明可节省人力资源成本,提升了效率,具有较高的推广应用价值。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和权利要求书来实现和获得。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:

图1为本发明一种针对多路h.264视频会议的gpu解码方法;

图2为gpu轮询工作系统运作流程示意图;

图3为本发明中cpu和gpu主从线程的协作方式示意图;

图4为gpu解码流程示意图;

图5为整帧图像并行的帧内预测编码流程。

具体实施方式

以下将参照附图,对本发明的优选实施例进行详细的描述。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。

下面结合附图所示的各实施方式对本发明进行详细说明。

请参图1所示,图1为本发明一种针对多路h.264视频会议的gpu解码方法的具体实施方式中的流程示意图。该方法包括如下步骤:

步骤s1:通过各分会场mcu输入多路视频会议流;

具体采用对应的视频会议的摄像机(一般位于视频会议会场正前方偏上方45度),将采集到的视频流通过h.264编码通过ip镜像的形式发送到服务器端。

步骤s2:依据视频流中的ip信息区分每个会场;

对接受到的ip报文进行解包后,根据ip地址的不同确定具体正在开会的会场。考虑到实时轮询系统的需求,同一时刻会有多路码流同时到达解码端,因此必须协调多路码流的进入顺序,以使解码系统能够正常工作。为此设计了如图2所示的gpu实时轮询系统。首先需要在gpu实时轮询系统与视频网核心交换机之间建立握手协议。完成三次握手,客户端与服务器便建立了握手协议。之后gpu轮询系统发出第i路码流的请求,视频网核心交换机进行应答,并发送相应的码流数据。再由轮询系统输出码流数据,并对码流数据进行检测。在实际的h264数据帧中,往往帧前面带有00000001或000001分隔符,因此只需检测startcode就能得到每一帧的网络提取层(nal)单元。

步骤s3:采用cpu和gpu主从线程的协作方式对每个会场分别进行解码,并行的多路对视频流进行解封包、解码;

gpu的优势是利用最短的时间完成大量的并行运算,但是数据在主设端之间进行传输时,会花费许多额外的开销。如果进行过多的数据交换,将会大大降低解码所用的时间。另外,在原有的h.264的解码标准中,许多过程都是针对串行cpu设计的。本发明考虑将cpu和gpu设计成主从线程的协作方式,取缔cpu和gpu互相等待的状态,实现cpu和gpu的同时并行工作。如图3所示,gpu在处理第n帧的模块时,cpu同时解析第n+1帧的数据,充分利用碎片时间,达到更高的处理效率。

作为进一步的改进,该解码过程中,在传统解码器的基础上采用主机端和设备端协同工作的并行解码器架构,对h.264串行解码器各模块进行任务划分。其中,将解析出的供后续模块使用的参数以及残差数据经过pci-e总线传输给设备端cpu主要负责从网络提取层中获取经压缩的码流,并对其进行码流分析、熵解码、重排序工作;gpu主要负责反变换、反量化、帧内预测、帧间预测以及环路滤波模块的并行实现。在整个解码过程中,cpu和gpu形成主从线程的并行执行,避免了主设端的任务等待,时间和空间资源得到了充分利用。cpu主要负贵逻辑控制复杂的部分,包括码流读取、码流分析、熵解码及重排序模块;gpu主要负责数据密集度高且独立性强的模块,包括帧内预测、帧间预测、变换解码和环路滤波,本发明采用模块内并行执行、模块间串行执行的设计,尽量减少主机端与设备端的数据传输,降低解码总耗。解码框架及主设端任务分配如图4所示。

其中步骤s3采用整帧图像并行的方法实现帧内编码过程,将模式选择过程与帧内预测编码过程中计算过程分开。模式选择过程根据原始帧的数据进行选择,这样可以所有宏块同时并行执行,提高并行粒度,而后面的过程仍然是按照之前h.264视频编码标准中的过程进行。而大量的实验表明,在量化参数qp不大的情况下,使用原始帧数据代替重构帧来进行模式选择,计算过程中的并行粒度会大幅度提升,由于帧内预测模式的选择使用的是原始数据,这种预测编码方式可能会造成图像质量的下降,这种图像质量的损失在普通人可以接受的范围之内,并不影响肉眼的感官。

步骤s3中,在h.264视频编码的预测编码过程中,预测编码是以宏块为单位进行的,而宏块之间预测过程中需要利用相邻宏块的信息,帧内预测过程中需要利用相邻块的重建图像来预测当前块。如果不釆取这种方式,会导致最后编解码不一致的情形,从而产生编码错误的问题,而gpu的优势是高并发性,不相关数据之间的多线程并发,很显然如果无法解决这些问题,就无法利用gpu的计算优势,很难有加速的效果。

步骤s3中,整帧图像并行的帧内预测过程实现的步骤如下:(1)根据原始帧数据来计算预测帧的最佳4x4帧内预测模式,记录每个子宏块的最佳预测模式和代价cost_sub_4,此过程中可以做到所有的子宏块同时并行执行,并行粒度可以达到(width/4)*(height/4;);1080p高清视频的并行粒度为30560;(2)将每个宏块的16个cost__sub_4求和得到cost_4;(3)计算所有宏块的16x16宏内预测模式,并保存最佳预测模式及代价cost_16,此过程是可以达到所有宏块并行,并行粒度为(width/16)*(height/16),1080p高清视频的并行粒度为8160;(4)比较cost_4和cost_16的大小,保存宏块的最佳预测模式,并在共享内存中读取最佳的宏块预测编码值;(5)根据得到的最佳预测模式进行帧内预测编码,此编码过程采用行波流水法进行帧内预测,之后是dct变换、量化与反量化、反dct变换过程,在此过中,1080p高清视频最多可以设置68个block并行,通过120层循环完成对整帧数据的帧内预测编码过程。具体的流程图如图5所示。

步骤s4:解码之后的数据储存在服务器上便于以后查看,本实施例中,会议视频按照日期存储于服务器上,数据的存储采用h.264裸流文件进行存储,这样的存储方式有两个优点,一方面有效地节省了存储空间,相对于解码完成的yuv原始视频数据而言,同一场会议的h.264裸流文件能够节约大约70%的空间,另一方面,h.264裸流文件能够在客户端请求观看的时候快速的通过网络从服务器传输到客户端,而不需要重新编码,降低了服务器整体的消耗。

步骤s5:针对客户端的请求对解码的数据重编码,由于实时的需求,h.264编码的过程中不能出现b帧,防止由于b帧对后续视频帧引用而造成的视频解码延迟,整个视频流主要由i帧和p帧组成,通过编码器按照固定的分辨率传输到客户端。

步骤s6:客户端对服务器发送的视频流进行解码并且实时显示在桌面上。

本发明的方法主要包括:对多路来自下方地区局会场的mcu的视频流数据经过滤筛选之后,通过gpu多线程对每一路视频流进行解封包、解码,将解码之后数据按照日期储存在视频服务器上,并与客户端发出的请求互动,在客户端请求某一路的视频数据之后,对该路视频流重新编码,以使视频流数据能够在客户端进行播放。该方法主要解决多个会场同时开会时,多路视频码流实时传输、解码、播放的问题,针对每一路的h.264视频码流将cpu和gpu设计成主从线程的协作方式,取缔cpu和gpu互相等待的状态,实现cpu和gpu的同时并行工作,并对解码之后的图像重新编码,并且存储,使之能够在客户端进行播放。本方法解决了多个会场同时开会时,多路视频码流实时传输、解码、播放的问题,取缔cpu和gpu互相等待的状态,实现cpu和gpu的同时并行工作,提升了效率,具有较高的推广应用价值。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1