[发明专利]一种H.264/AVC中4x4子宏块的并行帧内预测方法有效
申请号: | 201310740320.6 | 申请日: | 2013-12-28 |
公开(公告)号: | CN103747250A | 公开(公告)日: | 2014-04-23 |
发明(设计)人: | 金海;蒋文斌;廖小飞;龙敏;王鹏程;梅鸿雁 | 申请(专利权)人: | 华中科技大学 |
主分类号: | H04N19/103 | 分类号: | H04N19/103;H04N19/436;H04N19/176 |
代理公司: | 华中科技大学专利中心 42201 | 代理人: | 朱仁玲 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 264 avc x4 子宏块 并行 预测 方法 | ||
技术领域
本发明属于视频编码领域和显卡通用计算领域,更具体地,涉及一种H.264/AVC中4x4子宏块的并行帧内预测方法。
背景技术
H.264/AVC标准是当前主流的视频压缩标准,在许多领域都有着广泛地应用。与之前的标准不同,H.264/AVC提出了一种全新的基于像素域的帧内预测方法,该方法针对9种可用的预测模式以及各种分块大小进行遍历计算,通过率失真公式得到一个在视频质量和视频压缩率两方面效果都比较好的一种预测模式,然而这种全模式预测使得整个过程计算复杂度相当高。
为了降低全模式预测的编码时间,研究者提出了许多行之有效的解决方案,其中基于GPU硬件加速的方法在减少编码时间上效果最好。基于GPU的帧内预测主要采用的是CUDA架构,它是由NVIDIA提出的通用计算平台,将复杂的GPU指令包装成浅显易懂的运行时指令,极大地降低了编写显卡设备代码的难度。CUDA采用的是一种类似于SIMD的执行模型,比较适合于易并行计算,对于数据相关性强、逻辑复杂的情况,CUDA并行并不是很好的选择。
利用GPU的众核优势并行处理多帧图像,可以极大地提升编码效率。这一类算法需要修改视频帧中的像素块之间的编码顺序来提升并行度,其中一部分算法甚至牺牲视频质量,主动减少可使用的模式来降低数据依赖,进一步提升并行度。但是现有算法只是停留在粗粒度的并行方法上,对于细粒度的像素级并行仍然没有涉及,对GPU的性能还不能充分地利用。现有技术方案总是采用单线程来遍历计算4x4子宏块中的9种预测模式,不能采用多线程来并行处理所有像素,这是由于编码块中的每个像素对应的预测公式不尽相同,并且每个像素所参考的重建像素值也随自己所在位置而变化,进一步地这种情况会导致大量的分支语句,因此不适合采用CUDA来并行处理。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种H.264/AVC中4x4子宏块的并行帧内预测方法,其目的在于,根据CUDA执行模型以及4x4子宏块帧内预测中的特性,统一帧内预测中各种模式的预测公式,消除了执行过程中的大量分支语句,从而实现了像素级的并行,使之可以更有效地利用GPU的众核优势。
为实现上述目的,按照本发明的一个方面,提供了一种H.264/AVC中4x4子宏块的并行帧内预测方法,包括以下步骤:
(1)从已编码的视频帧中获取13个参考像素A~M,其中A、B、C和D为从上到下排列的上方参考像素,E、F、G和H为从左到右排列的右上方参考像素,I、J、K和L为从左到右排列的左侧参考像素,M为左上方参考像素;其中需要预测的4x4子宏块中的像素为a-p,所有a-p像素构成4x4子宏块,这些像素在对应的子宏块内的坐标位置表示为(x,y);
(2)根据获取的参考像素生成一个长度为16的空的参考值数组Ref,该参考值数组用于存储A至M的像素、两个随机生成的保留值、以及一个根据H.264/AVC标准对13个参考像素进行计算生成的预测值DC;
(3)根据H.264/AVC中针对4x4子宏块的帧内预测计算公式和参考值数组Ref构造参考位置表T;
(4)根据步骤(3)构造的参考位置表T对4x4子宏块执行基于CUDA的并行帧内预测,其共有144个线程用于并行处理所有9种预测模式。
优选地,步骤(3)包括以下子步骤:
(3.1)将H.264/AVC中针对4x4子宏块的帧内预测计算公式归纳成以下四种形式:
pred(x,y,m)=U (1)
pred(x,y,m)=(U+V+1)>>1 (2)
pred(x,y,m)=(U+V*3+2)>>2 (3)
pred(x,y,m)=(U+V*2+W+2)>>2 (4)
其中U、V和W是4x4子宏块中的参考像素A~M、以及预测值DC的任何一个,pred(x,y,m)是指坐标为(x,y)且模式为m的像素的预测值,m表示4x4子宏块中帧内预测的预测模式,(x,y,m)表示该像素对应的线程序号:
(3.2)将公式(1)~公式(4)转换成以下形式:
pred(x,y,m)=(U+U+U+U+2)>>2 (5)
pred(x,y,m)=(U+U+V+V+2)>>2 (6)
pred(x,y,m)=(U+V+V+V+2)>>2 (7)
pred(x,y,m)=(U+V+V+W+2)>>2 (8)
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310740320.6/2.html,转载请声明来源钻瓜专利网。