一种基于多核处理器实现的h.264解码方法

文档序号:7892713阅读:151来源:国知局
专利名称:一种基于多核处理器实现的h.264解码方法
技术领域
本发明属于视频解码技术领域,具体涉及ー种基于多核处理器实现的H. 264解码方法。
背景技术
随着高清视频应用的发展,具有低码率和高图像质量的H. 264标准取得了广泛的应用。但是这种低码率、高质量的算法,极大地増加了代码复杂度,H. 264解码的复杂度约为MPEG-4的3倍。尤其是在高清视频应用中,计算复杂度更高,故对处理器提出了更高的要求。以往的视频处理器大多采用提高主频的方式来提高处理器性能,但是受到摩尔定律的限制,处理器的性能提升很难跟上应用的更高需求。为了满足这种高复杂的计算性能需求,多核处理器技术得到了飞速的发展,为H. 264并行编解码提供了性能強大的物理平台。实现高效的H. 264多核并行解码算法,关键在于(I)提高核间的并行效率;(2)減少模块间数据访问冲突;(3)多核的可扩展性。故高效的H. 264并行解码算法,会对解码过程按数据和功能进行划分。数据划分并行,是根据图像数据之间的相互关系进行划分并行。通常在H. 264解码的数据划分中,图像按宏块级划分并行。H. 264解码中帧内预测、去块滤波等操作都需要对上方和左侧相邻宏块数据进行參考和操作;另外,熵解码需要对数据进行连续操作,不能并行实现,所以至少需要完成当前行的熵解码,才能实现数据划分的宏块并行解码。功能划分并行,是根据对解码流程的相关模块进行划分并行。通常将H. 264解码过程模块化,封装成多个功能模块并行执行;并行过程中,通常采用流水线操作,提高模块间的并行程度。Arnaldo Azevedo在标题为 ParalIel H. 264Decoding on an Embedded MulticoreProcessor (HiPEAC2009, LNCS 5409,2009)的文章中提出了ー种并行解码器,其根据图像宏块间的相互关系,采用数据划分使解码器能够并行解码。该数据划分并行方法根据宏块划分,即每个解码模块根据其解码依赖关系,独立完整解码ー个宏块。这种基于宏块的并行解码算法,最大的优势在于扩展性强。采用这种宏块划分并行策略解qcif (Quarter commonintermediate format,标准化图像格式)码流时,最多同时解码6个独立宏块,持续4个周期;解1080p码流时,最多同时解码60个独立宏块,持续9个周期。所有常见的分辨率(qcif及以上)都能以六核并行的方式完成解码,但是该算法同时也存在很多不足。首先,熵解码不能按照数据划分并行,必须完成整帧的熵解码之后才能进行随后宏块级数据划分的并行解码;其次,该种并行方式,在启动和结束时,并行程度较低,解码ー帧可能会影响整体的解码效率。从以上研究分析中可以看到,对于H. 264解码算法而言,单纯的数据划分或者模 块划分都有各自明显的缺点,始終无法达到令人满意的效果
发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种基于多核处理器实现的
H.264解码方法,能够有效提高解码过程的并行加速比。一种基于多核处理器实现的H. 264解码方法,所述的多核处理器至少具有6个Core (内核),各Core并行处理各自的运算任务;该方法包括如下步骤(I)接收H. 264视频格式的码流,由Corel负责对所述的码流进行解析并截取一段帧码流,由Corel负责对所述的帧码流进行熵解码并陆续生成若干宏块组;所述的帧码流对应为ー帧视频图像的码流,所述的宏块组由n个连续的宏块组成,n为大于0的自然数;(2)由Core2 4负责对所述的宏块组进行重建得到宏块组的重建数据;由Core5负责对所述的重建数据进行滤波强度(BS)计算得到滤波强度值;由Core5 6负责根据所述的滤波強度值对重建数据进行环内去块滤波(LPF),得到宏块组对应的解码图像;(3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的ー帧解码图像;(4)重复步骤(I)至(3),对所述的码流进行解析并截取下一段帧码流,并解码得到下一段帧码流所对应的ー帧解码图像;依此反复,直至将码流解码完成,得到码流的解码视频。优选地,所述的n个连续的宏块对应为视频图像的一行宏块。以一行宏块为単位进行解码,能够消除因宏块数据差异而引起的模块计算负载的变化,提高整体并行解码效率。所述的步骤(2)中,对宏块组进行重建的过程为首先由Core2 3负责根据宏块组的估计数据进行预测得到宏块组的预测数据,所述的估计数据为预测矢量或帧内预测模式;然后由Core4负责对宏块组的残差数据进行反量化变换;最后使宏块组反量化变换后的残差数据与预测数据相加,得到宏块组的重建数据。所述的反量化变换过程包括反量化(IQ)和离散余弦反变换(IDCT)。优选地,根据宏块组的估计数据进行预测分为两种情况若宏块组所属的视频图像为关键帧,则由Core2 3中每ー个Core分别负责宏块组中n/2个宏块的帧内预测模式进行帧内预测,得到宏块组的预测数据;若宏块组所属的视频图像为非关键巾贞,则由Core2 3中姆ー个Core分别负责宏块组中n/2个宏块的预测矢量进行运动补偿,得到宏块组的预测数据。将预测任务平均分配给Core2 3,能够平衡Core2 3的计算负载,优化整体解码性能。优选地,所述的步骤(2)中,由Core5负责根据滤波强度值对宏块组中每一宏块色度分量对应的重建数据进行环内去块滤波,由Core6负责根据滤波强度值对宏块组中每一宏块亮度分量对应的重建数据进行环内去块滤波,得到宏块组对应的解码图像。由Core5负责滤波强度计算与色度滤波,Core6负责亮度滤波,能够平衡Core5 6的计算负载,优化整体解码性能。Corel 6负责对单个宏块组执行对应运算处理任务的执行周期均相等。优选地,在多核处理器对H. 264视频格式的码流进行解码的前5个执行周期和后5个执行周期中,对于处于工作状态的Core所承担总的运算处理任务,使处于空闲状态的Core也參与其中共同平均分担所述的运算处理任务;具体任务分配结果如下
若Core2 3工作,Core4 6空闲;则使Core2 6平均分担Core2 3所要负责的总运算处理任务。
若Core2 4工作,Core5 6空闲;则使Core2 3和Core6平均分担Core2 3所要负责的总运算处理任务,使Core4 5平均分担Core4所要负责的总运算处理任务。若Core5工作,Core6空闲;则使Core5 6平均分担Core5所要负责的总运算处理任务。若Core2 3工作,Core I空闲;则使Corel 3平均分担Core2 3所要负责的总运算处理任务。若Core4 5工作,Core2 3空闲;则使Core3 4平均分担Core4所要负责的总运算处理任务,使Core2和Core5平均分担Core5所要负责的总运算处理任务。若Core5工作,Core4空闲;则使Core4 5平均分担Core5所要负责的总运算处理任务。二次运算任务分配能够平衡各Core的计算负载,充分利用空闲的Core,提高解码器整体性能。本发明的解码方法根据H. 264解码器各模块间的相互关系,采用功能和数据相结合的划分方式和流水线排布对各核进行任务分配,能够有效提高解码过程的并行加速比,且更适合于高分辨率和高码率的札264解码。


图I为本发明解码方法的执行流程示意图。图2为多核处理器各核任务排布的流水线示意图。图3为多核处理器优化后各核任务排布的流水线示意图。
具体实施例方式为了更为具体地描述本发明,下面结合附图及具体实施方式
对本发明的解码方法进行详细说明。如图I所示,一种基于多核处理器实现的H. 264解码方法,多核处理器采用Tilera公司TilePro64系列的多核处理器,处理器具有64个Core,各Core并行处理各自的运算任务;该方法包括如下步骤(I)接收H. 264视频格式的码流,由Corel负责对码流进行解析并截取一段帧码流,一段帧码流对应为ー帧视频图像的码流;产生一段帧码流后仍由Corel负责对该段帧码流进行熵解码并陆续生成若干宏块组,宏块组由n个连续的宏块组成,该n个连续的宏块对应为视频图像的一行宏块;宏块包含有残差数据以及估计数据(预测矢量或帧内预测模式)。Corel作为主控制核,协同控制其他五个核启动和停止,同步流水线运行。(2)由Core2 4负责对宏块组进行重建得到宏块组的重建数据首先由Core2 3负责根据宏块组的估计数据进行预测得到宏块组的预测数据;其中若宏块组所属的视频图像为关键巾贞,则由Core2 3中姆ー个Core分别负责宏块组中n/2个宏块的帧内预测模式进行帧内预测(PredIntra),得到宏块组的预测数据;对当前宏块进行帧内预测时,需取当前 宏块的左边ー个宏块的重建数据或者上方一个宏块的重建数据作为參考。若宏块组所属的视频图像为非关键巾贞,则由Core2 3中姆ー个Core分别负责宏块组中n/2个宏块的预测矢量进行运动补偿(MC),得到宏块组的预测数据;对当前宏块进行运动补偿时,需取该帧码流的參考帧解码图像作为參考。然后由Core4负责对宏块组的残差数据进行反量化变换(包括IQ和IDCT);反量化(IQ)和离散余弦反变换(IDCT)的目的在于去除原始图像的空间冗余和控制码率,压缩数据量,尽可能完整地回复原始图像。最后使宏块组反量化变换后的残差数据与预测数据相加,得到宏块组的重建数据。以宏块为单位进行数据压缩和恢复后,在宏块边界会产生图像不连续的现象,该现象称为方块效应;故需根据宏块类型,计算宏块边界的滤波强度值,然后根据各条边界的滤波强度用滤波器对重建数据进行去块滤波,消除方块效应。故由Core5负责对重建数据进行滤波强度(BS)计算得到滤波强度值;由Core5 6负责根据滤波強度值对重建数据进行环内去块滤波(LPF),得到宏块组对应的解码图像;其中C0re5负责根据滤波强度值对宏块组中每一宏块色度分量对应的重建数据进行环内去块滤波,Core6负责根据滤波强度值对宏块组中每一宏块亮度分量对应的重建数据进行环内去块滤波。(3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的ー帧解码图像;并将该帧解码图像进行缓存,作为參考帧供后续帧码流解码过程中运动补偿时使用。(4)重复步骤(I)至(3),对码流进行解析并截取下一段帧码流,并解码得到下一段帧码流所对应的ー帧解码图像;依此反复,直至将码流解码完成,得到码流的解码视频。本实施方式中,Corel 6负责对单个宏块组执行对应运算处理任务的执行周期均相等;C0rel 6各自所对应的运算处理任务如表I所示。表I
权利要求
1.一种基于多核处理器实现的a 264解码方法,所述的多核处理器至少具有6个Core,各Core并行处理各自的运算任务;该方法包括如下步骤 (1)接收H.264视频格式的码流,由Corel负责对所述的码流进行解析并截取一段帧码流,由Corel负责对所述的帧码流进行熵解码并陆续生成若干宏块组; 所述的帧码流对应为ー帧视频图像的码流,所述的宏块组由n个连续的宏块组成,n为大于0的自然数; (2)由Core2 4负责对所述的宏块组进行重建得到宏块组的重建数据;由Core5负责对所述的重建数据进行滤波强度计算得到滤波强度值;由Core5 6负责根据所述的滤波強度值对重建数据进行环内去块滤波,得到宏块组对应的解码图像; (3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的ー帧解码图像; (4)重复步骤(I)至(3),对所述的码流进行解析并截取下一段帧码流,并解码得到下一段帧码流所对应的ー帧解码图像;依此反复,直至将码流解码完成,得到码流的解码视频。
2.根据权利要求I所述的基于多核处理器实现的H.264解码方法,其特征在于所述的n个连续的宏块对应为视频图像的一行宏块。
3.根据权利要求I所述的基于多核处理器实现的H.264解码方法,其特征在于所述的步骤(2)中,对宏块组进行重建的过程为首先由Core2 3负责根据宏块组的估计数据进行预测得到宏块组的预测数据,所述的估计数据为预测矢量或帧内预测模式;然后由Core4负责对宏块组的残差数据进行反量化变换;最后使宏块组反量化变换后的残差数据与预测数据相加,得到宏块组的重建数据。
4.根据权利要求3所述的基于多核处理器实现的H.264解码方法,其特征在于根据宏块组的估计数据进行预测分为两种情况 若宏块组所属的视频图像为关键帧,则由Core2 3中每ー个Core分别负责宏块组中n/2个宏块的帧内预测模式进行帧内预测,得到宏块组的预测数据; 若宏块组所属的视频图像为非关键帧,则由Core2 3中每ー个Core分别负责宏块组中n/2个宏块的预测矢量进行运动补偿,得到宏块组的预测数据。
5.根据权利要求I所述的基于多核处理器实现的H.264解码方法,其特征在于所述的步骤(2)中,由Core5负责根据滤波强度值对宏块组中每一宏块色度分量对应的重建数据进行环内去块滤波,由Core6负责根据滤波强度值对宏块组中每一宏块亮度分量对应的重建数据进行环内去块滤波,得到宏块组对应的解码图像。
6.根据权利要求I所述的基于多核处理器实现的H.264解码方法,其特征在于Corel 6负责对单个宏块组执行对应运算处理任务的执行周期均相等。
7.根据权利要求6所述的基于多核处理器实现的H.264解码方法,其特征在于在多核处理器对H. 264视频格式的码流进行解码的前5个执行周期和后5个执行周期中,对于处于工作状态的Core所承担总的运算处理任务,使处于空闲状态的Core也參与其中共同平均分担所述的运算处理任务。
全文摘要
本发明公开了一种基于多核处理器实现的H.264解码方法,包括(1)接收码流,由Core1负责码流解析和熵解码;(2)由Core2~4负责对宏块组进行重建,由Core5负责对重建数据进行滤波强度计算,由Core5~6负责对重建数据进行环内去块滤波;(3)并行遍历所有宏块组,得到一帧解码图像;(4)对码流完成解码,得到码流的解码视频。本发明的解码方法根据H.264解码器各模块间的相互关系,采用功能和数据相结合的划分方式和流水线排布对各核进行任务分配,能够有效提高解码过程的并行加速比,且更适合于高分辨率和高码率的H.264解码。
文档编号H04N7/50GK102625108SQ201210089250
公开日2012年8月1日 申请日期2012年3月30日 优先权日2012年3月30日
发明者周凡, 周承涛, 陈耀武 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1