专利名称:H.264编码中运动补偿插值的并行加速方法及装置的制作方法
技术领域:
本发明属于视频编码技术领域,更具体地,在一些异构多核系统中实现对视频编码过程中的运动补偿插值并行加速的方法及装置。
背景技术:
H. 264视频编码为了消除视频数据的冗余,采用了帧内预测、帧间预测运动估计、 运动补偿、熵编码等方法。其中,H. 264中使用了 1/4像素精度的运动补偿,这是相对于之前的编码器能够提高编解码性能的原因之一。1/4像素精度的运动补偿相对于在H. 263/ MPEG2中仅适用1/2像素精度来说可以使编码想能提高2dB,而1/8像素精度对后被H. 264 舍去了的原因是它只能在性能上提升IdB而需要以更加高昂的计算复杂度来换取。由于在H. 264中采用了树状结构的运动补偿,即将一个16X16的宏块分割成 16X8,8X16,8X8,8X4,4X8,4X4的子块,在帧间预测时,这些不同大小的块都是从参考帧中相同大小分割的块来预测得到,并且预测得到的运动矢量可以是非整像素点的,从而提高预测的精度。但是参考帧没有分像素点,所以必须通过对周边整像素点的上采样插值来获得1/2像素和1/4像素。由于帧间预测是在一帧图像内进行的,需要对整帧图像的整像素点进行插值得出对应的分像素点,所以需要进行大量重复的插值操作。在H. 264中分为1/2像素和1/4像素插值两部分,具体分布如图1所示。H. 264标准里,半像素插值使用一个六抽头的滤波器,其系数为(1,-5,20, _5,1), 例如图1中b、h、m、s所对应的水平和垂直半像素点首先需要使用六抽头滤波器通过整像素点来计算出中间值bl、hl、ml、sl,然后将他们截断到W 255]的范围内的到相应的b、 h、m、s
bl = E-5 XF+20 XG+20 XH-5 X I+J
hi = A-5 X C+20 X G+20 X M-5 X R+T
ml = B-5 X D+20 X H+20 X N-5 X S+U
si = K-5 X L+20 X M+20 X N-5 X P+Q
b = Clip((bl+16) >> 5)
h = Clip((hl+16) >> 5)
m = Clip((ml+16) >> 5)
s = Clip((sl+16) >> 5)
其中Clip(*)是将*截断至W 255]的范围内。
在图1中aa、bb、cc、dd、ee、ff、gg、hh也是通过上述方法获得。
类似的,中心半像素点j可以通过以下的方式得到
j = Clip (((cc-5X dd+20Xhl+20Xml-5X ee+ff) +512) >> 10)
或者
j = Cl ip (((aa-5 X bb+20 X b 1+20 X s 1-5 X gg+hh) +512) >> 10)
另外,1/4像素插值使用的是二值线性滤波器,例如图1中a、c、d、n、f、i、k、q、e、g、P、r所对应的1/4像素点由下式获得a =(.:.(G+b+1)>>1)
C =Clip(H+b+1)>>1)
d =Clip(G+h+1)>>1)
η =Clip(M+h+1)>>1)
f =Clip(b+j+1)>>1)
i =Clip(h+j+1)>>1)
k =Clip(j+m+1)>>1)
q =Clip(j+s+1)>>1)
eClip(b+h+1)>>1)
...=Clip(b+m+1)>>1)
P =Clip(h+s+1)>>1)
rClip(m+s+1)>>1)其中Clip㈩是将*截断至W 255]的范围内。可以看出,H. 264运动补偿插值需要很大的计算量,每个整像素点都要计算出其相应的1/2像素点和1/4像素点,其中1/2像素点有3个,1/4像素点有12个。如此高的计算复杂度严重限制了 H. 264对高清视频以及超高清视频的实时编码,所以有必要探寻一种能够有效加快运动补偿插插值计算的方法以加速分像素点的计算。传统的H. 264编码器如JM模型和X264编码器在运动补偿插值中都是使用的串行的方式进行的,即以光栅扫描的方式首先进行1/2像素的计算,然后再进行1/4的计算。 即使在X264编码其中已经使用了像MMX (Multi Media Extension多媒体增强指令集)、 SSE (StreamingSIMD Extensions 单指令多数据流扩展)这些 SIMD (Single Instruction Multiple Data单指令多数据)指令集优化,有了一定的并发能力,但是对于高清视频巨大的计算强度仍然显得有些吃力,毕竟CPU的架构主要是针对串行的应用程序进行设计的。 随着GPGPU的不断发展,越来越多的PC机都有独立的GPU,同时像CUDA (Compute Unified Device Architecture统一计算设备架构)一系列的GPU平台不断推出,这使得大规模数据的并行计算成为可能。H. 264运动补偿插值的过程中数据量很庞大,但是数据计算过程中的耦合性不是很强,所以比较容易实现大量数据的并行化,完全可以利用GPU来取代CPU实现运动补偿插值的计算。
发明内容
本发明引入了异构多核系统,针对数据间的依赖性进行去耦合分析,提出了对运动补偿插值进行并行化的方法,充分发挥了异构多核系统中GPU的大规模数据并行计算能力,在完全不影响图像质量的前提下,降低了 CPU利用率,同时加快了高清视频的编码速度,特别适用于高清视频实时编码的需求。为了实现上述目标,本发明提供一种异构多核的并行化计算方法,其整体框架如图2所示。整个系统是由主处理器CPU和协处理器GPU组成的。主处理器CPU负责编码任务的控制、各路视频数据的编码(除运动补偿插值等外)、多路编码重建帧数据的同步、向协处理器GPU传送重建帧数据(待插值)、接受协处理器GPU传送回来的插值后数据、将插值后数据进行分离移交各路编码、视频输出。协处理器GPU负责编码任务中接受CPU传输过来的待插值数据、对待插值数据进行并行化插值计算、将插值计算结果送回主处理器CPU以进行下一步的编码过程。图2中编码任务路数可以仅为一路视频编码,也可以是多路视频编码。多路数据整合单元的作用是将各路视频编码同步,使每路编码都同步到获得重建帧,等待运动补偿插值的地方。然后将每路编码视频的重建帧数据集中并传送至协处理器GPU,以此提高数据吞吐量,减少总的数据传输时间。同理,数据分离单元是指主处理器CPU将协处理器GPU传送回来的插值后数据分离为每路视频编码对应的数据,以继续每一路视频的编码。图2中主处理器CPU中的请求控制单元的作用是通过计算视频编码任务需要的资源和协处理器GPU上的剩余计算资源,来决定视频编码任务的分配,即是否将新视频编码任务添加到当前多路视频编码队列中,请求控制单元的处理流程如图3所示。请求控制单元获得新的一路视频编码请求后,经过四个步骤对该请求做出响应步骤1 计算该路请求需占用GPU资源数目。每路视频编码占用GPU上的资源由该路编码视频的视频属性和编码算法属性决定。视频属性是指视频的分辨率,不同的分辨率的视频所需的运算量不同,在GPU上所占用的资源数目也不同。编码算法属性是指编码算法中运动补偿插值所要达到的分数像素精度和插值时所用的滤波器性质等。有的编码算法只要达到1/2像素精度,而有的算法要求为1/4甚至是1/8像素精度,在H. ^4/AVC编码中,运动补偿的精度为1/4像素精度。不同分数像素精度所要求的计算量随像素精度的提高以指数形式递增,所以不同分数像素精度在GPU上要求的资源数目也不同。滤波器性质是指编码算法中所用的滤波器的维度、阶数、滤波系数等等,不同性质的滤波器所要求的计算资源也不同。步骤2 查看当前多路视频编码已经占用的GPU资源。当前多路视频编码已经占用的GPU上的资源为当前多路视频编码队列中每路视频编码所占用的GPU资源总和。步骤3 计算当前GPU剩余资源,当前GPU剩余资源为GPU上最大资源数目减去当前多路视频编码占用的GPU资源数目。GPU上最大资源数是指在协处理器GPU上能够开辟的最大线程thread数目,最大线程数目等于在GPU上所能开辟的最多的块block数目乘以块中能开辟的最大线程thread数目。步骤4 比较当前GPU剩余资源数目和新的一路视频编码请求所需资源数目。如果 GPU剩余资源数目大于新的一路视频编码请求所需资源数目,则请求成功,并将该路视频编码添加至当前多路视频编码队列中;否则请求失败,取消该路视频编码请求。图1所示的协处理器GPU中视频编码任务的运动补偿插值并行计算,其步骤分为五步,具体如图4所示步骤一接受CPU传输过来的重建帧数据,该数据为待插值数据;步骤二以并行的方式执行预定规则中的步骤1 ;步骤三以并行的方式执行预定规则中的步骤2 ;步骤四以并行的方式执行预定规则中的步骤3 ;步骤五将插值计算的结果传回主处理器CPU以进行各路视频的编码的后续部分。
在整个插值的过程中,像素精度为1/4像素,需要对整数像素进行插值得到1/2像素和1/4像素,其中1/2像素可以分为水平方向1/2像素、垂直方向1/2像素和中心1/2像素。水平方向1/2像素和垂直方向1/2像素可以直接由整数像素通过六抽头滤波器进行插值得到,滤波器系数为(1,-5,20,20,-5,1);中心1/2像素由水平方向1/2像素或者垂直方向1/2像素通过六抽头滤波器进行插值得到,滤波器系数也为(1,-5,20,20,-5,1) ;1/4像素由整数像素和多有1/2像素通过线性维纳滤波器进行插值得到,滤波系数为(1,1)。所以分数像素的计算存在数据依赖关系,不同类型的分像素计算需分先后,在协处理器GPU进行分像素插值操作时,可以设置三种预定规则预定规则1 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向像素点和垂直方向像素点;步骤2 在GPU上由一帧图像的整数像素点和步骤1中获得的水平方向1/2像素点或者垂直方向1/2像素点通过六抽头滤波器获得中心 1/2像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的水平方向1/2像素点、步骤1中获得的垂直方向1/2像素点、步骤2中获得的中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点。预定规则2 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向1/2像素点;步骤2 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得垂直方向1/2像素点,由一帧图像的整数像素点和步骤1中获得的水平方向1/2像素点通过六抽头滤波器获得中心像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的水平方向1/2像素点、步骤2中获得的垂直方向1/2像素点和中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点。预定规则3 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得垂直方向1/2像素点;步骤2 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向1/2像素点,由一帧图像的整数像素点和步骤1中获得的垂直方向1/2像素点通过六抽头滤波器获得中心像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的垂直方向1/2像素点、步骤2中获得的水平方向1/2像素点和中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点。在预定规则的三个步骤中,为每个水平方向1/2像素点和垂直方向1/2像素点、中心1/2像素点和每个1/4像素点的计算都分配一个线程;在每个步骤中,所有的计算都是以 GPU核为单位的并行和GPU核内部的流处理器的并发的方式进行。三个预定规则的第三个步骤都是一样的,而第一步和第二步存在着差别。具体来说,预定规则1中步骤1计算水平方向和垂直方向1/2像素,而预定规则2和预定规则3则分别把垂直方向1/2像素和水平方向1/2像素的计算放到步骤2中。这样可以灵活选取预定规则来适应不同的硬件系统,以达到最高的硬件使用效率。比如在以CUDA架构为基础的系统中,由于在使用共享缓存时可能会出现冲突bank conflict,则预定规则2和预定规则3相对于预定规则1会是更好的选择。预定规则中每个步骤所要求的GPU上的资源数目是不同的,这意味着当前多路编码所占用的GPU资源为预定规则三个步骤中所占最多资源的步骤决定。
四
图11/4像素插值像素分布2H. 264编码中运动补偿插值的并行加速示意3主处理器CPU中的请求控制单元的处理流程4协处理器GPU中的并行插值流程5运动补偿插值优化的系统框架6运动补偿插值中数据依赖关系Level one图7运动补偿插值中数据依赖关系Level two图8运动补偿插值中数据依赖关系Level three图9并行化运动补偿的具体实现示意图
五具体实施例方式以下结合附图和具体的实施用例来对本发明进一步额详细说明在H. 264视频编码中,使用运动估计和运动补偿来进行帧间预测,从而达到了大大提高了编码压缩效率、降低码流的效果。运动估计和运动补偿获得相应块的运动矢量,该运动矢量为1/4像素精度。由于原始图像只有整像素点,没有1/2和1/4分像素点,所以需要对整帧的图像进行内插来获得这些分像素点。通过对内插后的图像进行具有分像素精度的运动矢量搜索。运动搜索的1/4像素精度是H. 264编码图像质量比以往H. 26x系列视频编解码标准更好的重要因素。运动补偿插值用了一个六抽头的滤波器(滤波系数1,_5, 20,20, -5,1)来对图像内插,1/4像素精度的插值提高了图像重建的精度,但需要对原始图像每个整像素点都要内插得到3个1/2像素点和12个1/4像素点,从而大大增加了实现的复杂度。现有的H. 264编码器都是使用串行的方式对进行运动补偿插值,即使是使用了诸如MMX、SSE等指令集优化的策略,其并行程度也比较有限。随着现有GPGPU的快速发展,其计算能力特别是并行计算能力得到了飞速的提升。像NVIDIA公司的CUDA就是提供了并行环境开发的平台,该平台不但可以充分利用GPU的大规模数据并行能力,还提供了友好的编程环境。 本发明旨在提升H. 264编码器的编码速度,采用了 CPU+GPU的异构多核架构,通过将编码模块中运动补偿插值模块移植到GPU上并行实现,通过充分发挥CPU和GPU各自的优势,实现编码速度的提升。需要指出的是GPU虽然有大规模并行计算的能力,但是由于缺少足够的缓存,对于一些分支判断比较复杂的应用其性能会急剧下降。H. 264编码器中存在着大量的分支预测,并不是所有的编码模块都适合移植到GPU上实现并行计算的。另一方面,CPU上有着大量的cache存储器,其目的就是为了适应一些高复杂度判断以及有着大量分支预测的应用程序,所以可以通过将需要较高的计算量但是分支预测不是很多的模块放在GPU上运行, 将分支预测较高的模块放在CPU上运行可以充分利用GPU和CPU各自的优点,避开其缺点, 从而提高系统的效率。本发明针对在运动补偿插值中分数像素点的计算之间数据耦合度较低,将除运动补偿插值以外的模块保留在CPU上运行,而仅将运动补偿插值放在GPU上进行计算,整个流程框架如图5所示。
为了能够让插值部分更有效地移植到GPU上,我们需要对插值计算的数据进行去耦合,从而可以让插值操作在使用SIMD的GPU上更大程度的实现数据的并行操作。H. 264编码运动补偿插值中存在三个层次的依赖关系。Level one 水平方向1/2像素点和垂直方向1/2像素点都是使用六抽头滤波器通过整像素点获得,而这两类1/2像素点之间没有任何的数据依赖关系。Level two 中心1/2像素不是通过整像素点获得,而是使用六抽头滤波器通过在 level one中得到的水平方向1/2像素点或者垂直方向1/2像素点获得。图7显示了中心 1/2像素需要在水平1/2像素或者垂直1/2像素点计算可得后便可以计算获得。Level three :1/4像素点使用线性维纳滤波器通过整像素点和1/2像素点来获得。图8(a)中的1/4像素点通过一个整像素点和水平方向1/2像素点得到,图8(b)中的 1/4像素点全部由1/2像素点来得到。图8表明了 1/4像素点的插值必须要在所有1/2像素点插值完成后才可进行。插值计算的依赖关系决定了各个分像素点计算的先后顺序。前面提及的三个 level,它们的计算是有先后顺序的,level two在level one之后,而level three在level two之后。在每个level中的计算却是没有任何相互的依赖关系,所以在每个level中的操作都可以同时进行。由于同一个level中的每个像素的操作都是相同的,所以完全可以利用SIMD技术将其在GPU上并行处理,从而实现加速。通过前面依赖关系的讨论,下面就以基于的CUDA架构的单路视频编码运动补偿插值并行优化的方案为例,进一步说明本发明提出的一种H. 264编码中运动补偿插值的并行优化方法的实现过程,如图9所示。步骤1,将原始整像素点值从CPU传给GPU,GPU对这些整像素点值以并行的方式进行插值。步骤2,在GPU上,对整像素点进行纵向插值,获得垂直方向1/2像素点,如图9第二步所示。步骤3,在GPU上,对整像素点进行横向插值,获得水平方向1/2像素点;同时对步骤二中获得的垂直方向1/2像素点进行横向插值,获得中心1/2像素点。计算水平方向1/2 像素点和中心1/2像素点所需要的整像素点和垂直方向1/2像素点之间没有任何数据耦合,所以可以将垂直方向1/2像素点和中心1/2像素点通过并行计算获得。至此,所有1/2 像素点计算完成。步骤4,使用整像素点和步骤2、步骤3中计算得到的1/2像素点计算1/4像素点。 至此,所有1/2像素点和1/4像素点全部计算完成。步骤五,将经过插值得到的所有分像素点值传回GPU以继续插值之后的编码操作。需要指出的是,这里我们采用了预定规则3而不是预定规则1进行插值的计算,采用该规则的原因是在具体的实现方案中选择了 CUDA作为平台,这样做更好的减少CUDA中共享内存的bank conflict。在CUDA编程中,为了能够提高数据的读取速度,需要把数据放入shared memory,而在进行并行化实现时,如果同一个half warp中的线程去读取同一个bank中的数据,则会出现bank conflict。在图6中我们可以看到,如果在level one中的水平方向1/2像素点和垂直方向1/2像素点同时在CUDA上同时计算,那么他们需要同时去读取最左上方的整像素点,由于这些整像素点存放在shared memory中,而计算水平方向 1/2像素点和垂直方向1/2像素点由不同的线程完成,从而会产生bank conflict,使得读取该点的操作变成串行而不是并行,降低了并行性能。通过将水平方向的像素点的计算放在步骤3可以避免这一问题。当然这样做是因为CUDA本身的硬件架构的限制,在其他的硬件架构中,可能使用其他预定规则可以更加高效。基于上面的方案,利用以下环境对该方案进行了测试GeForce 9800GT PCIe显卡 (拥有14个SM,总共112个SP) ,Intel四核CPU Q8300,2G DDR2内存。运行环境为Linux OpenSuse 11. 1,CUDA toolkit and SDK 2.3。对似64编码器仅仅使用CPU进行编码和使用 CPU+GPU的架构进行编码得到了测试数据,如表1所示表1 CPU和GPU运动补偿插值编码测试
权利要求
1.H. 264编码中运动补偿插值的并行加速方法及装置,其特征在于(1)主处理器CPU(Central Processor Unit中央处理单元)根据待运行的视频编码任务需要的资源和协处理器GPU (Graphic Processor Unit图形处理单元)上的剩余计算资源,决定新增视频编码任务的分配;(2)协处理器GPU根据插值操作的分数像素类型和数据依赖关系,将分数像素插值运算操作按预定规则处理。
2.根据权利要求1所述的H.264编码中运动补偿插值的并行加速方法及装置,其特征在于所述待运行的视频编码任务利用主处理器CPU和协处理器GPU构成的异构多核系统, 实现视频编码的并行加速;待运行的视频编码任务可以是一路视频编码任务,也可以是多路视频编码任务。
3.根据权利要求1所述的H.264编码中运动补偿插值的并行加速方法及装置,其特征在于所述视频编码任务所需要的资源,是指视频编码任务中移植到协处理器GPU进行计算的部分所需要占用GPU的资源;这些资源的大小由被编码的视频属性和编码算法的属性决定,视频属性指视频的分辨率等,编码算法的属性指编码时插值所要达到的分像素精度、 插值时所用滤波器的计算复杂度等。
4.根据权利要求1所述的H.264编码中运动补偿插值的并行加速方法及装置,其特征在于所述协处理器GPU上的剩余计算资源,是指协处理器GPU所能提供的最大资源数减去当前正在执行的视频编码任务占用的资源数所得到的资源数,GPU上所能提供的最大资源数是指在协处理器GPU上能够开辟的最大线程thread数目,最大线程数目等于在GPU上所能开辟的最多的块block数目乘以每个块中能开辟的最大线程数目;另外,由于具体的系统实时性需求不同,根据不同的系统实际需求,对应的GPU最大资源数目还受限于GPU实际运行时所能够真正达到并行化线程数目的最大值,从而相应的剩余资源数也会发生改变;
5.根据权利要求1所述的H.264编码中运动补偿插值的并行加速方法及装置,其特征在于所述主处理器CPU决定视频编码任务的分配,是指CPU根据待编码视频任务的视频属性和编码算法属性,计算出其中一路视频编码任务要占用协处理器GPU上所需资源数目, 如果该所需资源数大于当前GPU上的剩余资源,则CPU取消增加该路视频编码任务请求;如果该所需资源数小于等于当前GPU上的剩余资源,则CPU执行增加一路视频编码任务,以此类推,直至CPU分配完待编码视频任务或者因GPU剩余资源不足而取消增加编码视频任务为止。
6.根据权利要求1中所述的H.264编码中运动补偿插值的并行加速方法和装置中的预定规则,其特征在于所述插值操作的分数像素类型,是指在插值过程中,需要插值生成不同位置和不同精度的分数像素;分数像素根据位置和精度分为水平方向1/2像素、垂直方向1/2像素、中心1/2像素、1/4像素。
7.根据权利要求1中所述的H.264编码中运动补偿插值的一种并行加速方法和装置中的预定规则,其特征在于所述插值操作中数据的依赖关系,是指在插值过程中,中心1/2 像素由水平方向1/2像素或者垂直方向1/2像素计算得到,1/4像素由所有1/2像素计算得到,所以水平方向1/2像素或者垂直方向1/2像素必须在中心1/2像素和1/4像素之前计算获得,中心1/2像素需要在1/4像素之前计算获得。
8.根据权利要求1中所述的H.264编码中运动补偿插值的并行加速方法和装置中的预定规则,其特征在于根据插值过程中数据的依赖关系,在协处理器GPU上需要分步骤进行分数像素的插值操作,可以设置3种预定规则预定规则1、预定规则2和预定规则3,具体如下预定规则1 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向1/2像素点和垂直方向1/2像素点;步骤2 在GPU上由一帧图像的整数像素点和步骤1 中获得的水平方向1/2像素点或者垂直方向1/2像素点通过六抽头滤波器获得中心1/2像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的水平方向1/2像素点、步骤1中获得的垂直方向1/2像素点、步骤2中获得的中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点;预定规则2 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向1/2像素点;步骤2 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得垂直方向 1/2像素点,由一帧图像的整数像素点和步骤1中获得的水平方向1/2像素点通过六抽头滤波器获得中心1/2像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的水平方向1/2像素点、步骤2中获得的垂直方向1/2像素点和中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点;预定规则3 步骤1 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得垂直方向1/2像素点;步骤2 在GPU上由一帧图像的整数像素点通过六抽头滤波器获得水平方向 1/2像素点,由一帧图像的整数像素点和步骤1中获得的垂直方向1/2像素点通过六抽头滤波器获得中心1/2像素点;步骤3 在GPU上由一帧图像的整数像素点、步骤1中获得的垂直方向1/2像素点、步骤2中获得的水平方向1/2像素点和中心1/2像素点通过线性维纳滤波器获得所有的1/4像素点。
9.根据权利要求4所述编码所需资源的计算、权利要求8中所述的预定规则,其特征在于所述预定规则的三个步骤中,为每个水平方向1/2像素点和垂直方向1/2像素点、中心1/2像素点和每个1/4像素点的计算都分配一个线程;在每个步骤中,所有的计算都是以 GPU核为单位的并行和GPU核内部的流处理器的并发的方式进行;编码所需的资源数由各预定规则中三个步骤中所需最多资源的步骤决定。
10.H. 264编码中运动补偿插值的并行加速装置,其特征在于,包括主处理器CPU和协处理器GPU,主处理器用于适合CPU架构的视频编码操作、待编码视频任务的分配以及将计算获得的中间结果(如重建帧数据)传送给协处理器GPU ;协处理器用于适合GPU架构的视频编码模块,采用并行优化进行加速,并将计算的结果传回主处理器;所述适合主处理器CPU架构的模块主要是分支判断、数据耦合度高的操作所属的模块;所述适合协处理器GPU架构的模块主要是计算量及数据量较大,但计算指令单一,数据耦合度较小的操作,如运动补偿插值等。
全文摘要
本发明公开了一种H.264编码中运动补偿插值的并行加速方法及装置,所述的方法包括为主处理器根据待运行的视频编码任务需要的资源和协处理器GPU上的剩余计算资源,决定新增视频编码任务的分配;协处理器GPU根据插值操作的分数像素类型和数据依赖关系,将分数像素插值运算操作按预定规则处理。引入了异构多核系统,针对数据间的依赖性进行去耦合分析,提出了对运动补偿插值进行并行化的方法,充分发挥了异构多核系统中GPU的大规模数据并行计算能力,在完全不影响图像质量的前提下,降低了CPU利用率,满足了多路、高清视频编码的实时性需求。
文档编号H04N7/50GK102497550SQ201110398920
公开日2012年6月13日 申请日期2011年12月5日 优先权日2011年12月5日
发明者孟念鹏, 季晓勇, 张李晔, 杨杭军, 王健 申请人:南京大学