[发明专利]一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法有效
申请号: | 201510266416.2 | 申请日: | 2015-05-21 |
公开(公告)号: | CN104869398B | 公开(公告)日: | 2017-08-22 |
发明(设计)人: | 郭成安;章琨 | 申请(专利权)人: | 大连理工大学 |
主分类号: | H04N19/13 | 分类号: | H04N19/13;H04N19/436 |
代理公司: | 大连理工大学专利中心21200 | 代理人: | 潘迅,梅洪玉 |
地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 cpu gpu 平台 实现 hevc 中的 cabac 并行 方法 | ||
1.一种基于CPU+GPU异构平台实现HEVC中的CABAC的并行方法,其特征在于:
(1)将CABAC中所要完成的全部任务划分成两个模块:CABAC模块1和CABAC模块2;
(2)CABAC模块1的任务为语法元素转换、二进制化和上下文模型选择:
由GPU多线程完成当前帧图像各个CTU的语法元素转换、二进制化和上下文模型选择处理任务;设在此运算之前,已在GPU中完成包括将当前帧图像划分成M个CTU,M为一帧图像中所包含的CTU个数;对各个CTU的预测、变换、量化及滤波重建,再在GPU上开设M个线程,一个线程负责完成一个CTU的CABAC模块1的处理任务,M个线程并行处理;
(3)CABAC模块2的任务为算术编码:
在CPU端开设CPU主线程和CPU从线程两个线程,CPU主线程用于调度和管理GPU多线程与CPU从线程,CPU从线程用于完成CABAC模块2的处理任务;CPU主线程对GPU多线程和CPU从线程的调度方案如下:
在同一时间中分配GPU多线程处理当前帧的图像数据,包括对当前帧进行预测、变换、量化、滤波重建以及CABAC模块1的计算,CPU从线程处理前一帧经过GPU多线程完成CABAC模块1后的码流数据;当CPU设备中具备双核以上的CPU处理器时,将CPU主线程和CPU从线程映射到两个CPU核上,使两个线程并行工作。
2.根据权利要求1所述的并行方法,其特征在于如下步骤,
步骤1:由CPU主线程对GPU多线程发调度指令,对分块后的第1帧图像进行帧内预测、变换、量化及滤波重建等处理,产生分割模式、预测模式、像素残差等待编码数据;结束时向CPU主线程发结束标志;CPU主线程接到GPU发来的结束标志,对GPU多线程发调度指令执行CABAC模块1;在CABAC模块1中,首先对得到的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;对得到的各个CTU的语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流;一个GPU线程处理一个CTU单元,NCTU个线程并行;对得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC进行上下文模型选择,存储上下文模型选择结果;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;结束时向CPU主线程发送结束标志;其中,NCTU为当前一帧图像所包含的CTU个数;
步骤2:CPU主线程接到GPU发来的结束标志,将在步骤1中得到的二进制化预编码码流和上下文模型的选择结果取到CPU中;
步骤3:CPU主线程开启CPU从线程,并分别向CPU从线程和GPU多线程发调度指令、启动CPU从线程和GPU多线程;CPU从线程对步骤2中得到的第1帧图像的二进制化预编码码流和上下文模型选择结果进行编码运算;结束时向CPU主线程发结束标志;GPU多线程对第2帧图像进行帧间预测、变换、量化及滤波重建等处理,产生分割模式、运动矢量误差、像素残差等待编码数据;结束时向CPU主线程发结束标志;CPU主线程接到GPU发来的结束标志,对GPU发调度指令执行CABAC模块1;在GPU端的CABAC模块1中,首先对得到的第2帧图像的待编码数据以CTU为单元进行划分,按照HEVC中的CABAC算法原理对每一个CTU单元的待编码数据进行语法元素转换,按光栅扫描顺序存储各个CTU的语法元素;一个GPU线程处理一个CTU单元,NCTU个线程并行处理;GPU多线程对得到的图像语法元素按照HEVC中的CABAC算法原理进行二进制化处理,产生以CTU为单元的二进制化预编码码流;一个GPU线程处理一个CTU单元,NCTU个线程并行;GPU多线程对得到的二进制化预编码码流以CTU为单元按照HEVC中的CABAC算法原理进行上下文模型选择,存储上下文模型选择结果;一个GPU线程处理一个CTU单元,NCTU个线程并行;结束时向CPU主线程发送结束标志;
步骤4:CPU主线程接到CPU从线程发来的结束标志和GPU多线程发来的结束标志后,将在步骤3中得到的二进制化预编码码流和上下文模型选择结果取到CPU中;分别向CPU从线程和GPU多线程发调度指令,按照步骤3执行,分别由CPU从线程完成对第2帧图像进行编码运算、GPU多线程完成分配给GPU端的对第3帧图像的处理任务;
步骤5:设执行到第k帧,2≤k≤N;按照步骤4分别由CPU从线程完成对第k-1帧图像进行算术编码(CABAC模块2)运算、GPU多线程完成分配给GPU端的对第k帧图像的处理任务;
步骤6:CPU主线程接到CPU从线程发来的完成第N-1帧CABAC模块2的结束标志和GPU多线程发来的完成第N帧的CABAC模块1的结束标志,对CPU从线程发调度指令执行对第N帧图像的CABAC模块2的处理,整个视频序列的CABAC编码过程结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510266416.2/1.html,转载请声明来源钻瓜专利网。