一种H264多粒度并行的处理方法技术

技术编号:9894655 阅读:145 留言:0更新日期:2014-04-09 20:50
本发明专利技术涉及一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行;多粒度的并行使程序具有更好的局部性以提高Cache命中率,提高CPU的执行效率。

【技术实现步骤摘要】

【技术保护点】
一种H264多粒度的并行处理方法,H264编码层次结构中,按照并行粒度从大到小可以分为帧级、片级和数据级;其特征在于:所述的H264多粒度并行包括帧级并行、片级并行和数据级并行三种,处理方法是利用arm指令集对向量操作实施数据运算的并行,具体的如下:1.1数据级并行H264多粒度并行编码的数据级并行主要包括以下两个方面:1.1.1 基于多媒体扩展指令集的数据级并行所述的基于多媒体扩展指令集的数据级并行运用了MMX/SSE2和AltiVec技术,多核处理器内嵌了多媒体指令集,该多媒体指令集通过对数据实行向量化运算从而达到并行处理的效果;所述的多媒体指令集是SIMD的扩展;所述SIMD是指在执行向量操作时一条指令可以同时对多个数据组成一个向量进行运算;1.1.2 异构多核下DCT变换的数据级并行数据级并行是针对异构多核平台的特点将拥有大计算量的模块划分到从核上进行计算,通过把大宏块划分成子块,在从核上对多个划分后的子块进行DCT 变换,最后再合并大宏块的DCT变换结果;对16×16大小宏块进行划分,分成4个8×8 大小的子块,把这4个子块的DCT 变换分别在从核上创建线程来执行,在每个子块DCT 变换执行完成之后再把子块变换结果传回到主核从而完成整个16×16宏块的DCT变换; 1.2片级并行所述的片级并行是通过把帧图像数据单元平均划分成多个片数据块,然后每个片同时创建线程进行并行编码,编码过程中加入片头信息,编码完成后再依次把各片数据组合成一帧图像数据;1.3.帧级并行H264 编码中,I是内部编码帧,不需要参考其它帧,P帧需要前向的I 帧作为参考,B 是双向预测帧,需要前向和后向的I或者P帧作为其参考帧;1.3.1帧级并行算法设计中实现并行I/P 帧和B 帧编码同步的方法是对I/P 帧和B 帧实行分开存储;所述的分开存储就是对读入的图像序列决定帧类型之后,如果是I/P帧就按照编码顺序进行I/P 帧入队操作,否则则进行B 帧入队操作,由于并行粒度的边界是I或者P 帧,因此并行分析首先从I/P 帧编码线程发起,具体的:如果I/P 帧队列非空,则从队列中取出一个I/P 帧,根据编码并行分析再从B 帧队列中取出可以与该I/P 帧并行的编码B 帧,创建多个线程实施帧级并行处理;当从I/P 帧队列中取出P 帧,通过帧号对应关系取出该P 帧编码之前所有的可并行B 帧,包括落后于当前P 帧编码帧的B 帧来控制并行编码的同步;对应关系如式:f(P)‑ f(B)>=T+2其中 f(P)为编码P帧帧号,f(B)为编码B帧帧号,T为B帧设置参数;当从I/P 帧队列中取出I帧,说明此I帧之前的所有图像帧的参考帧都已存在,因此在对该I帧进行编码之前,首先把B帧队列中的所有可编码帧全部取出创建编码线程实施并行编码,随后再对该I帧,新GOP的初始帧,进行编码;1.3.2在帧级并行算法设计中,实现编码码流按照编码帧号顺序写回的方法是定义一个特殊的网络提取层结构队列,具体的算法设计如下:编码开始时创建固定长度的网络提取层数据队列,此网络提取层队列总共有三种状态:A既不包含帧号也不包含码流的数据单元、B只包含帧号的数据单元、C 包含帧号和完整码流的数据单元;网络提取层队列的初始状态都是A,当每次对编码图像判断帧类型进行入队操作之后,就在网络提取层队列中也进行一次入队操作,该入队操作只写入一个帧号信息,作为写入实际码流数据的依据,此时该队列中数据单元状态变为B;当指定的帧编码完后,就根据当前已编码完的帧号到网络提取层队列中查找与之对应的帧号的数据单元,把编码完的码流都写入进去,此时该数据单元状态变为C;由于读入图像序列和决定帧类型的顺序都是帧编码顺序,因此最终写完码流之后的网络提取层队列就是顺序的,输入输出线程再一起把数据写到磁盘文件中,网络提取层队列中数据单元的状态又从C变成A,回复到初始状态,如此循环。...

【技术特征摘要】

【专利技术属性】
技术研发人员:钱荣华
申请(专利权)人:南京肯麦思智能技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1