CN105898321B - 运动补偿方法及装置、hevc解码方法及设备 - Google Patents
运动补偿方法及装置、hevc解码方法及设备 Download PDFInfo
- Publication number
- CN105898321B CN105898321B CN201610279617.0A CN201610279617A CN105898321B CN 105898321 B CN105898321 B CN 105898321B CN 201610279617 A CN201610279617 A CN 201610279617A CN 105898321 B CN105898321 B CN 105898321B
- Authority
- CN
- China
- Prior art keywords
- gpu
- matching
- motion compensation
- cpu
- bulk
- 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.)
- Active
Links
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/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- 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
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
Abstract
本发明涉及一种运动补偿方法,包括获取当前帧的全部预测单元块的全部匹配块,将全部匹配块分成大小相同的匹配小方块,将全部所述匹配小方块根据GPU的缓存行的大小和GPU的局部缓存的大小组合成匹配大块,GPU接收全部匹配大块并做运动补偿计算,以生成帧间预测图像。本发明还提供了使用所述运动补偿方法的HEVC解码方法,为嵌入式系统在纯CPU软解码和硬件专用解码模块之外,提供了一种在性能、功耗、成本、扩展性等方面更为平衡的HEVC解码方案。本发明还提供了一种运动补偿装置和使用所述运动补偿装置HEVC解码设备。
Description
技术领域
本发明涉及视频编解码领域,具体涉及一种运动补偿方法及装置、HEVC解码方法及设备。
背景技术
HEVC是新一代的视频压缩技术,在继承了H.264众多优点基础上,进一步提升了压缩率。对高清晰度的视频,在编码质量不变的情况下,HEVC的压缩率相比H.264提高了30-50%,大大减轻了对存储空间和传输带宽的消耗。但压缩率的提升是以增加复杂度为代价的。
对嵌入式系统,目前主流的HEVC解码方法有两种:纯CPU软解码(包括NEON加速)和硬件专用模块解码。
纯CPU软解码对系统资源,尤其是CPU资源消耗非常大,在面对高码率视频时,很容易出现解码不流畅的现象;同时高负载下系统耗电量很大,散热压力也很大,这些严重影响了软解码在嵌入式系统中的使用。
硬件专用解码模块,具有解码流畅、耗电低,发热小的特点,往往得到SoC厂家的青睐。但该模块的引入会增加研发周期和硬件成本,后续扩展性差,一旦出现兼容性问题,则不容易解决,因而即便是包含硬件解码的系统,往往也需要一套软解码作为备份解码方案。
在学术界上,有诸多使用CUDA加速的HEVC编解码方案,相对于纯CPU软解码和硬件专用解码模块来说,是一种较好的折衷。但这些方案全都基于PC平台,由于CUDA技术在嵌入式系统中基本不通用,并且嵌入式系统在GPU结构和显存方面与PC平台有显著差异,使得基于PC平台的GPU-HEVC加速方案很难直接应用在嵌入式系统中。目前在嵌入式系统中,尚无基于CPU和GPU协作的HEVC解码方案。
发明内容
本发明提供一种嵌入式系统中基于CPU和GPU协作的运动补偿方法及装置,同时还设计了一种使用所述运动补偿方法及装置的HEVC解码方法及设备,在纯CPU软解码和硬件专用解码模块之外,提供一种在性能、功耗、成本、扩展性等方面更为平衡的HEVC解码方案。克服了嵌入式系统中纯CPU软解码对系统资源消耗大、解码不流畅、耗电量大等和硬件专用解码模块的成本高、扩展性差等的缺陷。
根据本发明的一个方面,提供了一种运动补偿方法,包括获取当前帧的全部预测单元块的全部匹配块,将所述全部匹配块分成大小相同的匹配小方块,将全部所述匹配小方块根据GPU的缓存行的大小和GPU的局部缓存的大小组合成匹配大块,GPU接收所述匹配大块并做运动补偿计算。
进一步的,所述匹配小方块的边长为2的幂次。
进一步的,取所述全部匹配块的边长的最大公约数作为所述匹配小方块的边长。
进一步的,所述匹配大块的宽度为GPU的缓存行的预设整数倍,所述匹配大块的高度为GPU的局部缓存的大小除以所述GPU的缓存行的预设整数倍和预设值的乘积。
进一步的,当所述匹配大块的宽度和/或高度不是所述匹配小方块边长的整数倍时,将所述匹配大块的宽度和/或高度减至匹配小方块边长的整数倍。
进一步的,对全部所述匹配大块做运动补偿计算由GPU完成,其他步骤由CPU完成。
进一步的,所述GPU从所述CPU接收所述匹配大块。
进一步的,所述GPU从所述CPU一次接收所述匹配大块的数量是基于当前帧的整帧或半帧图像。
进一步的,所述GPU从所述CPU接收所述匹配大块具体为所述GPU读取系统内存中所述CPU所存入的匹配大块,所述系统内存以所述CPU和所述GPU都能识别的方式申请,从而实现内存零拷贝。
进一步的,所述GPU向所述CPU输出运动补偿计算结果。
进一步的,所述GPU向所述CPU一次输出的运动补偿计算结果是基于当前帧的整帧或半帧图像。
进一步的,以所述CPU和所述GPU都能识别的方式申请系统内存,所述运动补偿计算结果存入所述系统内存,所述CPU读取所述系统内存中的运动补偿计算结果,从而实现内存零拷贝。
另一方面,本发明还提供了一种HEVC解码方法,采用如权利要求1至12任一项所述的运动补偿方法对当前帧做运动补偿运算。
进一步的,所述HEVC解码方法中除运动补偿方法外的其他运算由CPU完成。
进一步的,所述HEVC解码方法中的反量化反变换运算由CPU和GPU协作完成。
进一步的,所述HEVC解码方法中的重构运算由GPU完成。
另一方面,本发明还提供了一种运动补偿装置,包括处理模块和计算模块,所述处理模块获取当前帧的全部预测单元块的全部匹配块,并将所述全部匹配块根据GPU的缓存行的大小和GPU的局部缓存的大小重新组合成匹配大块;所述计算模块对全部所述匹配大块做运动补偿计算。
进一步的,所述处理模块取所述匹配大块的宽度为GPU的缓存行的预设整数倍,所述匹配大块的高度为GPU的局部缓存的大小除以所述GPU的缓存行的预设整数倍和预设值的乘积。
进一步的,所述处理模块将全部所述匹配块分成大小相等的匹配小方块,所述匹配小方块根据所述GPU的缓存行的大小和所述GPU的局部缓存的大小组成所述匹配大块。
进一步的,所述处理模块取所述匹配小方块的边长为2的幂次。
进一步的,所述处理模块取所述全部匹配块的边长的最大公约数作为所述匹配小方块的边长。
进一步的,当所述匹配大块的宽度和/或高度不是所述匹配小方块边长的整数倍时,将所述匹配大块的宽度和/或高度减至匹配小方块边长的整数倍。
进一步的,所述处理模块由CPU执行完成,所述计算模块由GPU执行完成。
进一步的,所述GPU从所述CPU接收所述匹配大块。
进一步的,所述GPU从所述CPU一次接收所述匹配大块的数量是基于当前帧的整帧或半帧图像。
进一步的,所述GPU从所述CPU接收所述匹配大块具体包括所述GPU读取系统内存中所述CPU存入的匹配大块,所述系统内存以所述CPU和所述GPU都能识别的方式申请,从而实现内存零拷贝。
进一步的,所述GPU向所述CPU输出运动补偿计算结果。
进一步的,所述GPU向所述CPU一次输出的所述运动补偿计算结果是基于当前帧的整帧或半帧图像。
进一步的,以所述CPU和所述GPU都能识别的方式申请系统内存,所述运动补偿计算结果存入所述系统内存,所述CPU读取所述系统内存中的运动补偿计算结果,从而实现内存零拷贝。
另一方面,本发明还提供了一种HEVC解码设备,包括如权利要求17至29任一项所述的运动补偿装置,用于执行HEVC解码设备中的运动补偿模块的运算。
进一步的,所述HEVC解码设备中的除运动补偿外的其他运算模块由CPU完成。
进一步的,所述HEVC解码设备中的反量化反变换模块由CPU和GPU协作完成。
进一步的,所述HEVC解码设备中的重构模块由GPU完成。
本发明的有益效果在于,通过针对嵌入式系统GPU显存的特性和嵌入式系统GPU运算结构的特点,设计了一种嵌入式系统中基于CPU和GPU协作的运动补偿方法及装置,同时设计了一种使用所述运动补偿方法及装置的HEVC解码方法及设备,有效提高了解码效率,同时降低了解码功耗。为嵌入式系统在纯CPU软解码和硬件专用解码模块之外,提供了一种在性能、功耗、成本、扩展性等方面更为平衡的HEVC解码方案。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明一实施例的HEVC解码方法100的流程框图;
图2是本发明一实施例的运动补偿方法200的流程图;
图3是本发明一实施例的匹配大块计算方法300的流程图;
图4是现有CPU和GPU交互方法与本发明一实施例中CPU和GPU间交互方法400的对比图;
图5是本发明一实施例的运动补偿装置500的框图。
图6是本发明一实施例的HEVC解码设备600的框图。
具体实施方式
现结合附图,对本发明的较佳实施例作详细说明。
图1是本发明一实施例的HEVC解码方法100的流程框图,包括流处理熵解码102、运动补偿104、帧内预测106、反量化反变换108、重构110、去块滤波112和自适应样点补偿114。
HEVC解码方法的具体流程:流处理熵解码102接收当前帧的输入码流,做流处理熵解码运算;运动补偿104接收流处理熵解码102的输出中用于运动补偿运算的数据和已经解码的输出图像,经过运动补偿运算输出当前帧的帧间预测图像,帧内预测106接收帧间预测图像做帧内预测运算,输出当前帧的预测图像;反量化反变换108接收流处理熵解码102输出的用于反量化反变换运算的数据,经过反量化反变换运算输出当前帧的图像时域的残差信息;重构110接收当前帧的预测图像和图像时域的残差信息做重构运算,去块滤波112接收流处理熵解码102输出的用于去块滤波运算的数据和重构运算的输出做去块滤波运算,自适应样点补偿114接收流处理熵解码102输出的用于自适应样点补偿运算的数据和去块滤波112的输出做自适应样点补偿运算,从而完成对当前帧的HEVC解码。其中,当前帧是指待解码的帧。
在一实施方式中,HEVC解码方法中的运动补偿104可由CPU和GPU协作完成,HEVC解码方法中除运动补偿104外的其他运算可由CPU完成。在另一实施方式中,反量化反变换108可由CPU和GPU协作完成。在又一实施方式中,重构110可由GPU完成。
在具体的HEVC解码中,运动补偿104和反量化反变换108执行的先后顺序是可以调换的。在一实施方式中,可先由CPU和GPU协作完成运动补偿104,并输出帧间预测图像,然后由CPU根据该帧间预测图像做帧内预测106,同时由CPU和GPU协作进行反量化反变换108,GPU完成反量化反变换计算得到图像时域的残差信息后,在GPU将此图像时域的残差信息传输给CPU之前,GPU读取帧内预测106输出的预测图像,由GPU进行重构110,这样可以进一步减少GPU对系统内存的一次读和写,进一步提高HEVC解码性能。
图2是本发明一实施例的运动补偿方法200的流程图,用于完成图1所示的HEVC解码方法的运动补偿104运算,包括以下步骤:
步骤202,获取当前帧的全部预测单元(PU)块的匹配块。在具体实施方式中,可通过当前帧的所有预测单元块的运动矢量、参考帧索引来获取所有匹配块,匹配块是指参考帧中与当前帧中的PU块相匹配的PU块。
步骤204,将全部匹配块分成大小相同的匹配小方块。在具体实施方式中,GPU的数据吞吐情况是影响GPU效率的一个主要因素,将多个预测单元块组合成预测单元大块,可减少GPU吞吐数据的次数,可极大能提升GPU效率,进而提升运动补偿运算效率。而匹配块的形状有很多种(如32x8,8x4,16x16等),很难直接组成匹配大块,所以需要先切成匹配小方块,然后再组合成匹配大块。切分匹配块即将所有匹配块的位置索引做切分,对于同一匹配块切分后得来的所有匹配小方块,复制该同一匹配块的滤波方式和滤波系数,分配给该同一匹配块切分后的所有匹配小方块。即为每个切分后的匹配小方块重新分配位置索引、滤波方式和滤波系数。其中,匹配块的位置索引用来表示该匹配块的位置和大小;滤波方式包括和水平垂直滤波、单水平滤波、单垂直滤波和直接拷贝;滤波系数包括1/4亚像素,1/2亚像素,3/4亚像素三种配置。另外,将所有匹配块切分成大小相同的匹配小方块,使得GPU众核处理时各线程工作量更均衡,避免最慢线程拖慢整个流程。
步骤206,匹配小方块组合成匹配大块。在具体实施方式中,将全部匹配小方块根据GPU的缓存行(cache line)的大小和GPU的局部缓存(GPU最外层的缓存)的大小组合成匹配大块。组成匹配大块之后可以充分利用GPU的缓存行和GPU的局部缓存,从而最大化GPU效率,进而提升运动补偿运算效率。
步骤208,匹配大块做运动补偿计算。在具体实施方式中,GPU接收全部匹配大块,全部匹配大块根据组成该匹配大块的所有匹配小方块的滤波方式和滤波系数做运动补偿计算,并根据匹配小方块的位置索引将运动补偿计算结果放入当前帧的相应位置。需要说明的是本发明中的运动补偿运算是指包括图2所有步骤的整个计算过程,而运动补偿计算是指图2中步骤208的具体计算。HEVC解码中的其他运算模块也做同样理解。
步骤210,输出帧间预测图像。在具体实施方式中,所有匹配大块完成运动补偿计算之后输出帧间预测图像。
在一实施方式中,匹配小块的边长可为2的幂次。从而保证匹配小方块可组合成匹配大块。
在一实施方式中,可取全部匹配块的边长的最大公约数作为匹配小方块的边长。经过计算,全部匹配块的边长的最大公约数一般都是2的幂次,从而保证匹配小方块可组合成匹配大块。
图3是本发明一实施例的匹配大块计算放大300的流程图。用来完成图2所示的运动补偿方法中的步骤206,包括以下步骤:
步骤302,根据GPU的缓存行的大小计算匹配大块的宽度。在具体实施方式中,匹配大块的宽度可为GPU的缓存行的整数倍。例如GPU的缓存行为128bytes,则匹配大块宽度为128*N,不失一般性,可将匹配大块的宽度设为128bytes。
步骤304,根据GPU的局部缓存的大小计算匹配大块的高度。在具体实施方式中,匹配大块的高度可为GPU的局部缓存的大小除以步骤302计算得出的匹配大块的宽度与预设值的乘积。其中,预设值为同时缓存的匹配大块的块数,在具体实施方式中,可通过设置不同预设值来测试CPU计算效率等性能参数,从而选择合适的预设值。例如,GPU的局部缓存是4096bytes,要求同时缓存的匹配大块的块数为4,则匹配大块的高度可为4096/4/128,即8bytes。
步骤306,判断匹配大块的宽度和高度是否是匹配小方块边长的整数倍。在具体实施方式中,通过步骤302和304计算得出的匹配大块的宽度和高度一般都是匹配小方块边长的整数倍。
步骤308,如果经过步骤302和304计算后,匹配大块的宽度和/或高度不为匹配小方块边长的整数倍,则将匹配大块的宽度和/或高度减至匹配小方块边长的整数倍,可以避免进一步分割匹配小方块,同时充分利用了GPU的缓存行和GPU的局部缓存,从而最大化GPU效率。
在其他实施方式中,匹配大块的宽度和高度也可以根据需要设为其他数值,只需满足,在同一时刻,所有匹配大块本身及其计算时的中间变量消耗的缓存小于GPU的局部缓存的大小,可充分利用GPU的缓存行和GPU的局部缓存,从而最大化GPU效率即可。
在一实施方式中,对全部匹配大块做运动补偿计算可由GPU执行完成,其他步骤可由CPU执行完成。在具体实施方式中,GPU读取匹配大块,GPU对匹配大块做运动补偿计算,GPU输出运动补偿计算结果,产生帧间预测图像。在其他实施方式中,除运动补偿计算以外的其他步骤可由其他处理器执行完成。
在一实施方式中,GPU从CPU接收匹配大块,并对匹配大块做运动补偿计算。
在一实施方式中,GPU从CPU一次接收匹配大块的数量可以是基于当前帧的整帧或半帧图像。现有技术中,GPU与CPU交互是基于块的,会使得每次任务都比较小,而任务数量比较多,这是不适合GPU做处理的。因为GPU做整个任务的总时间=任务切换损耗+读写数据时间+计算时间。由于GPU的cache较小,处理逻辑和分支能力差,任务零散会极大的增加GPU任务切换损耗和读写数据时间,从而大大降低GPU的工作效率。而本实施方式中,GPU与CPU的交互是基于当前帧的整帧或半帧图像,使得每次任务很大,但任务个数少,这可以减少任务切换损耗和读写数据时间,从而减小GPU完成全部任务的总时间。且GPU是根据匹配小方块的数据对匹配大块做运动补偿计算的,使得GPU众核处理时各线程工作量更均衡,避免最慢线程拖慢整个流程。
在一实施方式中,可采用以CPU和GPU都能识别的方式申请系统内存,在通过图2中步骤202之后,获取的所有匹配块存入该系统内存中,并进行图2中步骤204和步骤206的处理生成匹配大块,GPU读取该系统内存中的匹配大块做运动补偿计算,从而实现内存零拷贝,避免需使用显存执行内存拷贝导致的性能下降。其中,匹配大块做可根据其中的所有匹配小方块的滤波方式和滤波系数做运动补偿计算。现有技术的PC平台中,CPU需将系统内存中的匹配大块先写入显存,然后GPU再读取显存中的匹配大块做运动补偿计算,可见本实施例中的内存零拷贝方法避免了需要使用显存传递数据而导致性能下降的缺陷,从而提升了运动补偿的运算效率。
在一实施方式中,GPU向CPU输出运动补偿计算结果。
在一实施方式中,GPU向CPU一次输出的运动补偿计算结果可以是基于当前帧的整帧或半帧图像。这样可以减少GPU吞吐数据占总时间的比例,并减少任务切换损耗,从而减小GPU完成全部任务的总时间,提高GPU的工作效率。
在一实施方式中,可采用以CPU和GPU都能识别的方式申请系统内存,在完成图2中步骤208之后,GPU将运动补偿计算结果存入该系统内存,CPU读取该系统内存中的运动补偿计算结果,产生帧间预测图像,现有技术的PC平台中,GPU运动补偿计算完成产生的数据结果需先写入显存,然后CPU读取显存中的数据,可见本实施例中的内存零拷贝方法避免了需要使用显存传递数据而导致的性能下降的缺陷,从而提升了运动补偿运算的效率。
图4是现有CPU和GPU交互方法与本发明一实施例中CPU和GPU间交互方法400的对比图。现有技术中,CPU需将系统内存中的运动补偿计算所需的数据先写入显存,GPU再读取该显存中的数据并做运动补偿计算,计算完成之后,GPU将运动补偿计算结果写入显存,CPU读取该显存中的运动补偿计算结果,以生成帧间预测图像。而嵌入式系统中,GPU均使用系统内存作为显存。本实施方式中,运动补偿运算所需的所有数据均以CPU和GPU都能识别的方式申请系统内存,此系统内存称之为源系统内存,在具体实施方式中,所有匹配块保存在源系统内存,并作图2中步骤204和步骤206的处理。GPU读取源系统内存中的匹配大块做运动补偿计算,运动补偿计算的结果写入目标系统内存,所述目标系统内存同样以CPU和GPU都能识别的方式申请,CPU读取目标系统内存中的运动补偿计算结果,产生帧间预测图像。,可见,与现有技术相比,本实施方式避免使用显存拷贝数据导致的性能下降,提升了运动补偿的运算效率。
图5是本发明一实施例的运动补偿装置500的框图。包括处理模块502和计算模块504。
处理模块502获取当前帧的全部预测单元块的全部匹配块,将全部匹配块根据GPU的缓存行的大小和GPU的局部缓存的大小重新组合成匹配大块。计算模块504对匹配大块做运动补偿计算,以产生帧间预测图像。在具体实施方式中,处理模块502可根据当前帧的全部预测单元块的参考帧索引和运动矢量获取全部匹配块,然后将所有匹配块重新组合成匹配大块。在其他实施方式中,处理模块502可由其他处理器执行完成。
在一实施方式中,处理模块502可取匹配大块的宽度为GPU的缓存行的预设整数倍,匹配大块的高度可为GPU的局部缓存的大小除以GPU的缓存行的预设整数倍与预设值的乘积。其中,预设值为同时缓存的匹配大块的块数,在具体实施方式中,可通过设置不同预设值来测试运动补偿装置的运算性能,从而选择合适的预设值。例如,GPU的缓存行为128bytes,则匹配大块宽度为128*N,不失一般性,可将匹配大块的宽度设为128bytes,如果GPU的局部缓存是4096bytes,要求同时缓存的匹配大块的块数为4,则匹配大块的高度为4096/4/128,即8bytes。
在其他实施方式中,匹配大块的宽度和高度也可以根据需要设为其他数值,只需要满足,在同一时刻,所有匹配大块本身及其计算时的中间变量消耗的缓存小于GPU的局部缓存的大小,进而充分利用GPU的缓存行和GPU的局部缓存,从而最大化GPU效率即可。
在一实施方式中,处理模块502可将全部匹配大块分成大小相等匹配小方块,匹配小方块再根据GPU的缓存行的大小和GPU的局部缓存的大小重新组合成匹配大块。在具体实施方式中,处理模块502将所有匹配块切分成大小相同的匹配小方块后又组合成匹配大块,减少了GPU吞吐数据的次数,充分利用GPU的缓存行和GPU的局部缓存,从而最大化GPU效率,大大提升了解码效率。
在一实施方式中,处理模块502中的匹配小块的边长可为2的幂次。从而保证匹配小方块可组合成匹配大块。
在一实施方式中,处理模块502中,可取全部匹配块的边长的最大公约数作为匹配小方块的边长。在具体实施方式中,全部匹配块的边长的最大公约数一般都是2的幂次,从而保证匹配小方块可组合成匹配大块。
在具体实施方式中,处理模块502中,通过计算,匹配大块的宽度和高度基本都是匹配小方块边长的整数倍。如果匹配大块的宽度和/或高度不是匹配小方块边长的整数倍,则将匹配大块的宽度和/或高度减至匹配小方块边长的整数倍。这样可以避免进一步分割PU小方块,同时充分利用了GPU的缓存行和GPU的局部缓存,从而最大化GPU效率。
在一实施方式中,处理模块502可由CPU完成,计算模块504可由GPU完成。在具体实施方式中,GPU读取CPU处理完成的匹配大块,GPU对匹配大块做运动补偿计算,GPU输出运动补偿计算结果,产生帧间预测图像。在其他实施方式中,处理模块也可选用其他处理器来完成。
在一实施方式中,计算模块504可由GPU从CPU接收匹配大块,并做运动补偿计算。
在一实施方式中,完成计算模块504的GPU一次接收来自完成处理模块502的CPU的匹配大块的数量可以是基于当前帧的整帧或半帧图像。现有技术中,GPU与CPU交互是基于块的,使得每次任务都比较小,而任务数量比较多,这是不适合GPU做处理的。因为GPU做整个任务的总时间=任务切换损耗+读写数据时间+计算时间。由于GPU的cache较小,处理逻辑和分支能力差,任务零散会极大的增加GPU任务切换损耗和读写数据时间,从而大大降低GPU的工作效率。而本实施方式中,GPU从CPU接收匹配大块是基于当前帧的整帧或半帧图像的,使得每次任务很大,但任务个数少,这可以减少任务切换损耗和读写数据时间,从而减小GPU完成全部任务的总时间。且GPU是根据分块模块502中的匹配小方块的数据对匹配大块做运动补偿计算的,使得GPU众核处理时各线程工作量更均衡,避免最慢线程拖慢整个流程。
在一实施方式中,完成处理模块502的CPU和完成计算模块504的GPU之间进行数据传输时,可采用内存零拷贝的方式进行。在具体实施方式中,可以是以CPU和GPU都能识别的方式申请系统内存,所有匹配大块保存在该系统内存,GPU读取该系统内存中的匹配大块做运动补偿计算,从而实现内存零拷贝。现有技术中,CPU需将系统内存中的匹配大块先写入显存,然后GPU再读取该显存中的匹配大块做运动补偿计算,可见本实施例中的内存零拷贝方法避免了需要使用显存传递数据而导致性能下降的缺陷,从而提升了运动补偿装置的运算效率。
在一实施方式中,GPU向CPU一次输出的运动补偿计算结果可以是基于当前帧的整帧或半帧图像。可以减少GPU吞吐数据占总时间的比例,并减少任务切换损耗,从而减小GPU完成全部任务的总时间,提高GPU的工作效率。
在一实施方式中,可以采用以GPU和CPU都能识别的方式申请系统内存。计算模块504将运动补偿计算结果存入该系统内存,CPU读取该系统内存中的运动补偿计算结果,生成帧间预测图像。现有技术中,GPU完成运动补偿计算后的输出结果需先写入显存,然后由CPU读取该显存中的数据,以生成帧间预测图像。可见本实施例中的内存零拷贝方法避免了使用显存传递数据而导致的性能下降的缺陷,从而提升了运动补偿装置的运算效率。
图6是本发明一实施例的HEVC解码设备600的框图,包括流处理熵解码模块602,运动补偿模块604,帧内预测模块606,反量化反变换模块608,重构模块610,去块滤波模块612,自适应样点补偿模块614,采用图5所示的运动补偿装置500。实现了嵌入式系统中基于CPU和GPU协作的HEVC解码设备,大大提升了解码效率,并降低功耗。
在一实施方式中,流处理熵解码模块602,帧内预测模块606,反量化反变换模块608,重构模块610、去块滤波模块612,自适应样点补偿模块614可由CPU完成,运动补偿模块604可由GPU和CPU协作完成。在另一实施方式中,反量化反变换模块608可由CPU和GPU协作完成。在又一实施方式中,重构模块610可由GPU完成。
在具体的HEVC解码设备中,运动补偿模块604和反量化反变换模块608执行的先后顺序是可以调换的。在一实施方式中,可先由CPU和GPU协作完成运动补偿模块604的运算,并输出帧间预测图像,然后由CPU执行帧内预测模块606,同时由CPU和GPU协作执行反量化反变换模块608的运算,GPU完成反量化反变换计算得到图像时域的残差信息,在GPU将此图像时域的残差信息传输给CPU之前,GPU读取帧内预测模块606输出的预测图像,由GPU执行重构模块610运算,这样可以进一步减少GPU对系统内存的一次读和写,进一步提高HEVC解码设备的性能。
应当理解的是,以上实施例仅用以说明本发明的技术方案,而非对其限制,对本领域技术人员来说,可以对上述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而所有这些修改和替换,都应属于本发明所附权利要求的保护范围。
Claims (26)
1.一种运动补偿方法,其特征在于,包括以下步骤:
获取当前帧的全部预测单元块的全部匹配块;
将所述全部匹配块的位置索引做切分,所述全部匹配块分成大小相同的匹配小方块,所述匹配小方块的边长为2的幂次;
将所述匹配小方块根据GPU的缓存行的大小和GPU的局部缓存的大小组合成多个匹配大块,所述匹配大块的宽度为GPU的缓存行的预设整数倍,所述匹配大块的高度为GPU的局部缓存的大小除以所述GPU的缓存行的预设整数倍与预设值的乘积,当所述匹配大块的宽度和/或高度不是所述匹配小方块边长的整数倍时,将所述匹配大块的宽度和/或高度减至所述匹配小方块边长的整数倍;
所述GPU接收所述匹配大块,根据组成所述匹配大块的所有匹配小方块的滤波方式和滤波系数做运动补偿计算,根据所述匹配小方块的位置索引将运动补偿计算结果放入所述当前帧的相应位置。
2.如权利要求1所述的运动补偿方法,其特征在于,取所述全部匹配块的边长的最大公约数作为所述匹配小方块的边长。
3.如权利要求1所述的运动补偿方法,其特征在于,对所述匹配大块做运动补偿计算由GPU完成,其他步骤由CPU完成。
4.如权利要求3所述的运动补偿方法,其特征在于,所述GPU从所述CPU接收所述匹配大块。
5.如权利要求4所述的运动补偿方法,其特征在于,所述GPU从所述CPU一次接收的所述匹配大块的数量是基于当前帧的整帧或半帧图像。
6.如权利要求4所述的运动补偿方法,其特征在于,所述GPU从所述CPU接收所述匹配大块具体包括:
所述GPU读取系统内存中所述CPU存入的匹配大块,所述系统内存以所述CPU和所述GPU都能识别的方式申请,从而实现内存零拷贝。
7.如权利要求3所述的运动补偿方法,其特征在于,还包括:所述GPU向CPU输出运动补偿计算结果。
8.如权利要求7所述的运动补偿方法,其特征在于,所述GPU向所述CPU一次输出的运动补偿计算结果是基于当前帧的整帧或半帧图像。
9.如权利要求7所述的运动补偿方法,其特征在于,所述GPU向所述CPU输出运动补偿计算结果具体包括:
以所述CPU和所述GPU都能识别的方式申请系统内存,所述运动补偿计算结果存入所述系统内存;
所述CPU读取所述系统内存中的运动补偿计算结果,从而实现内存零拷贝。
10.一种HEVC解码方法,其特征在于,采用如权利要求1至9任一项所述的运动补偿方法对当前帧做运动补偿运算。
11.如权利要求10所述的HEVC解码方法,其特征在于,所述HEVC解码方法中除运动补偿运算外的其他运算由CPU完成。
12.如权利要求10所述的HEVC解码方法,其特征在于,所述HEVC解码方法中的反量化反变换运算由CPU和GPU协作完成。
13.如权利要求10所述的HEVC解码方法,其特征在于,所述HEVC解码方法中的重构运算由GPU完成。
14.一种运动补偿装置,其特征在于,包括:
处理模块,用于获取当前帧的全部预测单元块的全部匹配块,并将所述全部匹配块的位置索引做切分,所述全部匹配块分成大小相同的匹配小方块,所述匹配小方块的边长为2的幂次;
所述处理模块还将所述匹配小方块根据GPU的缓存行的大小和GPU的局部缓存的大小组合成匹配大块,所述匹配大块的宽度为GPU的缓存行的预设整数倍;所述匹配大块的高度为GPU的局部缓存的大小除以所述GPU的缓存行的预设整数倍与预设值的乘积,且当所述匹配大块的宽度和/或高度不是所述匹配小方块边长的整数倍时,所述合成模块将所述匹配大块的宽度和/或高度减至匹配小方块边长的整数倍;及
计算模块,用于对所述匹配大块根据组成所述匹配大块的所有匹配小方块的滤波方式和滤波系数做运动补偿计算,根据所述匹配小方块的位置索引将运动补偿计算结果放入所述当前帧的相应位置。
15.如权利要求14所述的运动补偿装置,其特征在于,所述处理模块取所述全部匹配块的边长的最大公约数作为所述匹配小方块的边长。
16.如权利要求14所述的运动补偿装置,其特征在于,所述处理模块由CPU执行完成,所述计算模块由GPU执行完成。
17.如权利要求16所述的运动补偿装置,其特征在于,所述GPU从所述CPU接收所述匹配大块。
18.如权利要求17所述的运动补偿装置,其特征在于,所述GPU从所述CPU一次接收的所述匹配大块的数量是基于当前帧的整帧或半帧图像。
19.如权利要求17所述的运动补偿装置,其特征在于,所述GPU从所述CPU接收所述匹配大块具体包括:
所述GPU读取系统内存中所述CPU存入的匹配大块,所述系统内存以所述CPU和所述GPU都能识别的方式申请,从而实现内存零拷贝。
20.如权利要求16所述的运动补偿装置,其特征在于,还包括:所述GPU向CPU输出运动补偿计算结果。
21.如权利要求20所述的运动补偿装置,其特征在于,所述GPU向所述CPU一次输出的所述运动补偿计算结果是基于当前帧的整帧或半帧图像。
22.如权利要求20所述的运动补偿装置,其特征在于,所述GPU向所述CPU输出运动补偿计算结果具体包括:
以所述CPU和所述GPU都能识别的方式申请系统内存,所述运动补偿计算结果存入所述系统内存;
所述CPU读取所述系统内存中的运动补偿计算结果,从而实现内存零拷贝。
23.一种HEVC解码设备,其特征在于,包括如权利要求14至22任一项所述的运动补偿装置,用于执行HEVC解码设备中的运动补偿模块的运算。
24.如权利要求23所述的HEVC解码设备,其特征在于,所述HEVC解码设备中的除运动补偿外的其他运算模块由CPU完成。
25.如权利要求23所述的HEVC解码设备,其特征在于,所述HEVC解码设备中的反量化反变换模块由CPU和GPU协作完成。
26.如权利要求23所述的HEVC解码设备,其特征在于,所述HEVC解码设备中的重构模块由GPU完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610279617.0A CN105898321B (zh) | 2016-04-29 | 2016-04-29 | 运动补偿方法及装置、hevc解码方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610279617.0A CN105898321B (zh) | 2016-04-29 | 2016-04-29 | 运动补偿方法及装置、hevc解码方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105898321A CN105898321A (zh) | 2016-08-24 |
CN105898321B true CN105898321B (zh) | 2019-04-05 |
Family
ID=56702958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610279617.0A Active CN105898321B (zh) | 2016-04-29 | 2016-04-29 | 运动补偿方法及装置、hevc解码方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105898321B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338358A (zh) * | 2014-07-25 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 对图像进行解码的方法及装置 |
CN105491377A (zh) * | 2015-12-15 | 2016-04-13 | 华中科技大学 | 一种计算复杂度感知的视频解码宏块级并行调度方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9674540B2 (en) * | 2014-09-25 | 2017-06-06 | Microsoft Technology Licensing, Llc | Processing parameters for operations on blocks while decoding images |
-
2016
- 2016-04-29 CN CN201610279617.0A patent/CN105898321B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105338358A (zh) * | 2014-07-25 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 对图像进行解码的方法及装置 |
CN105491377A (zh) * | 2015-12-15 | 2016-04-13 | 华中科技大学 | 一种计算复杂度感知的视频解码宏块级并行调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105898321A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104854866B (zh) | 下一代视频的内容自适应、特性补偿预测 | |
CN104885470B (zh) | 用于下一代视频的预测和编码的内容自适应划分 | |
CN107667528A (zh) | 用于视频编解码的自适应参考帧缓存的方法和系统 | |
CN104350752B (zh) | 用于高性能视频编码中的无损编码模式的环内滤波的装置 | |
CN102625108B (zh) | 一种基于多核处理器实现的h.264解码方法 | |
de Souza et al. | HEVC in-loop filters GPU parallelization in embedded systems | |
CN105245896A (zh) | Hevc并行运动补偿方法及装置 | |
de Souza et al. | GHEVC: An efficient HEVC decoder for graphics processing units | |
US9693071B1 (en) | Self-adaptive load balance optimization for multicore parallel processing of video data | |
Radicke et al. | Bi-predictive motion estimation for HEVC on a graphics processing unit (GPU) | |
CN106851298B (zh) | 一种高效视频编码方法及装置 | |
Lee et al. | Fast motion estimation for HEVC on graphics processing unit (GPU) | |
CN101137062A (zh) | 具有双核处理器的视频编码系统双核协同编码方法 | |
CN106921862A (zh) | 多核解码器系统和视频解码方法 | |
CN111757103A (zh) | 基于显卡计算单元的vr视频编解码方法、系统和存储介质 | |
CN104378642A (zh) | 一种基于cuda的h.264分数像素快速插值方法 | |
CN105898321B (zh) | 运动补偿方法及装置、hevc解码方法及设备 | |
CN101256668B (zh) | 一种计算均衡的多核进行视频滤波的方法 | |
Jiang et al. | Highly paralleled low-cost embedded HEVC video encoder on TI KeyStone multicore DSP | |
Han et al. | Optimization of motion compensation based on GPU and CPU for VVC decoding | |
CN105959704B (zh) | 反量化反变换方法及装置、hevc解码方法及设备 | |
Kolpakov et al. | Advanced mixing audio streams for heterogeneous computer systems in telecommunications | |
Igarashi et al. | Highly parallel transformation and quantization for HEVC encoder on GPUs | |
Wang et al. | Multi-Grain Parallel Accelerate System for H. 264 Encoder on ULTRASPARC T2. | |
Barina et al. | Accelerating discrete wavelet transforms on GPUs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |