CN102625108B - 一种基于多核处理器实现的h.264解码方法 - Google Patents
一种基于多核处理器实现的h.264解码方法 Download PDFInfo
- Publication number
- CN102625108B CN102625108B CN201210089250.8A CN201210089250A CN102625108B CN 102625108 B CN102625108 B CN 102625108B CN 201210089250 A CN201210089250 A CN 201210089250A CN 102625108 B CN102625108 B CN 102625108B
- Authority
- CN
- China
- Prior art keywords
- macro block
- block group
- code stream
- responsible
- decoding
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004364 calculation method Methods 0.000 claims abstract description 33
- 238000001914 filtration Methods 0.000 claims abstract description 21
- 230000008030 elimination Effects 0.000 claims description 12
- 238000003379 elimination reaction Methods 0.000 claims description 12
- 238000013139 quantization Methods 0.000 claims description 9
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 4
- 101150083764 KCNK9 gene Proteins 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于多核处理器实现的H.264解码方法,包括:(1)接收码流,由Core1负责码流解析和熵解码;(2)由Core2~4负责对宏块组进行重建,由Core5负责对重建数据进行滤波强度计算,由Core5~6负责对重建数据进行环内去块滤波;(3)并行遍历所有宏块组,得到一帧解码图像;(4)对码流完成解码,得到码流的解码视频。本发明的解码方法根据H.264解码器各模块间的相互关系,采用功能和数据相结合的划分方式和流水线排布对各核进行任务分配,能够有效提高解码过程的并行加速比,且更适合于高分辨率和高码率的H.264解码。
Description
技术领域
本发明属于视频解码技术领域,具体涉及一种基于多核处理器实现的H.264解码方法。
背景技术
随着高清视频应用的发展,具有低码率和高图像质量的H.264标准取得了广泛的应用。但是这种低码率、高质量的算法,极大地增加了代码复杂度,H.264解码的复杂度约为MPEG-4的3倍。尤其是在高清视频应用中,计算复杂度更高,故对处理器提出了更高的要求。以往的视频处理器大多采用提高主频的方式来提高处理器性能,但是受到摩尔定律的限制,处理器的性能提升很难跟上应用的更高需求。为了满足这种高复杂的计算性能需求,多核处理器技术得到了飞速的发展,为H.264并行编解码提供了性能强大的物理平台。
实现高效的H.264多核并行解码算法,关键在于:(1)提高核间的并行效率;(2)减少模块间数据访问冲突;(3)多核的可扩展性。故高效的H.264并行解码算法,会对解码过程按数据和功能进行划分。
数据划分并行,是根据图像数据之间的相互关系进行划分并行。通常在H.264解码的数据划分中,图像按宏块级划分并行。H.264解码中帧内预测、去块滤波等操作都需要对上方和左侧相邻宏块数据进行参考和操作;另外,熵解码需要对数据进行连续操作,不能并行实现,所以至少需要完成当前行的熵解码,才能实现数据划分的宏块并行解码。
功能划分并行,是根据对解码流程的相关模块进行划分并行。通常将H.264解码过程模块化,封装成多个功能模块并行执行;并行过程中,通常采用流水线操作,提高模块间的并行程度。
Arnaldo Azevedo在标题为Parallel H.264Decoding on an Embedded MulticoreProcessor(HiPEAC2009,LNCS 5409,2009)的文章中提出了一种并行解码器,其根据图像宏块间的相互关系,采用数据划分使解码器能够并行解码。该数据划分并行方法根据宏块划分,即每个解码模块根据其解码依赖关系,独立完整解码一个宏块。这种基于宏块的并行解码算法,最大的优势在于扩展性强。采用这种宏块划分并行策略解qcif(Quarter common intermediate format,标准化图像格式)码流时,最多同时解码6个独立宏块,持续4个周期;解1080p码流时,最多同时解码60个独立宏块,持续9个周期。
所有常见的分辨率(qcif及以上)都能以六核并行的方式完成解码,但是该算法同时也存在很多不足。首先,熵解码不能按照数据划分并行,必须完成整帧的熵解码之后才能进行随后宏块级数据划分的并行解码;其次,该种并行方式,在启动和结束时,并行程度较低,解码一帧可能会影响整体的解码效率。
从以上研究分析中可以看到,对于H.264解码算法而言,单纯的数据划分或者模块划分都有各自明显的缺点,始终无法达到令人满意的效果。
发明内容
针对现有技术所存在的上述技术缺陷,本发明提供了一种基于多核处理器实现的H.264解码方法,能够有效提高解码过程的并行加速比。
一种基于多核处理器实现的H.264解码方法,所述的多核处理器至少具有6个Core(内核),各Core并行处理各自的运算任务;该方法包括如下步骤:
(1)接收H.264视频格式的码流,由Core1负责对所述的码流进行解析并截取一段帧码流,由Core1负责对所述的帧码流进行熵解码并陆续生成若干宏块组;
所述的帧码流对应为一帧视频图像的码流,所述的宏块组由n个连续的宏块组成,n为大于0的自然数;
(2)由Core2~4负责对所述的宏块组进行重建得到宏块组的重建数据;由Core5负责对所述的重建数据进行滤波强度(BS)计算得到滤波强度值;由Core5~6负责根据所述的滤波强度值对重建数据进行环内去块滤波(LPF),得到宏块组对应的解码图像;
(3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的一帧解码图像;
(4)重复步骤(1)至(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的计算负载,优化整体解码性能。
Core1~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工作,Core1空闲;则使Core1~3平均分担Core2~3所要负责的总运算处理任务。
若Core4~5工作,Core2~3空闲;则使Core3~4平均分担Core4所要负责的总运算处理任务,使Core2和Core5平均分担Core5所要负责的总运算处理任务。
若Core5工作,Core4空闲;则使Core4~5平均分担Core5所要负责的总运算处理任务。
二次运算任务分配能够平衡各Core的计算负载,充分利用空闲的Core,提高解码器整体性能。
本发明的解码方法根据H.264解码器各模块间的相互关系,采用功能和数据相结合的划分方式和流水线排布对各核进行任务分配,能够有效提高解码过程的并行加速比,且更适合于高分辨率和高码率的H.264解码。
附图说明
图1为本发明解码方法的执行流程示意图。
图2为多核处理器各核任务排布的流水线示意图。
图3为多核处理器优化后各核任务排布的流水线示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的解码方法进行详细说明。
如图1所示,一种基于多核处理器实现的H.264解码方法,多核处理器采用Tilera公司TilePro64系列的多核处理器,处理器具有64个Core,各Core并行处理各自的运算任务;该方法包括如下步骤:
(1)接收H.264视频格式的码流,由Core1负责对码流进行解析并截取一段帧码流,一段帧码流对应为一帧视频图像的码流;
产生一段帧码流后仍由Core1负责对该段帧码流进行熵解码并陆续生成若干宏块组,宏块组由n个连续的宏块组成,该n个连续的宏块对应为视频图像的一行宏块;宏块包含有残差数据以及估计数据(预测矢量或帧内预测模式)。
Core1作为主控制核,协同控制其他五个核启动和停止,同步流水线运行。
(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),得到宏块组对应的解码图像;其中:Core5负责根据滤波强度值对宏块组中每一宏块色度分量对应的重建数据进行环内去块滤波,Core6负责根据滤波强度值对宏块组中每一宏块亮度分量对应的重建数据进行环内去块滤波。
(3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的一帧解码图像;并将该帧解码图像进行缓存,作为参考帧供后续帧码流解码过程中运动补偿时使用。
(4)重复步骤(1)至(3),对码流进行解析并截取下一段帧码流,并解码得到下一段帧码流所对应的一帧解码图像;依此反复,直至将码流解码完成,得到码流的解码视频。
本实施方式中,Core1~6负责对单个宏块组执行对应运算处理任务的执行周期均相等;Core1~6各自所对应的运算处理任务如表1所示。
表1
其中:LPF_UV和LPF_Y分别对应色度分量和亮度分量的环内去块滤波任务。
但是如图2所示,处理器在对一段帧码流解码过程的启动和结束阶段,并行度较低,在前5个流水线执行周期及后5个流水线执行周期里,都有核处于空闲等待阶段;故需要充分利用这些空闲等待的核进行流水线优化,提高整体并行效率,对数据和功能进行二次划分的结果如表2所示,优化后各核任务排布的流水线如图3所示。
表2
若Core2~3工作,Core4~6空闲;则将Core2~3所要负责的运算处理任务Task2、Task3分成Task7、Task8、Task9、Task10、Task11,并分别由Core2~6执行运算处理。
若Core2~4工作,Core5~6空闲;则将Core2~3所要负责的运算处理任务Task2、Task3分成Task12、Task13、Task14,并分别由Core2~3和Core6执行运算处理;将Core4所要负责的运算处理任务Task4分成Task15、Task16,并分别由Core4~5执行运算处理。
若Core5工作,Core6空闲;则将Core5所要负责的运算处理任务Task5分成Task17、Task18,并分别Core5~6执行运算处理。
若Core2~3工作,Core1空闲;则将Core2~3所要负责的运算处理任务Task2、Task3分成Task14、Task12、Task13,并分别由Core1~3执行运算处理。
若Core4~5工作,Core2~3空闲;则将Core4所要负责的运算处理任务Task4分成Task16、Task15,并分别由Core3~4执行运算处理;将Core5所要负责的运算处理任务Task5分成Task18、Task17,并分别Core2和Core5执行运算处理。
若Core5工作,Core4空闲;则将Core5所要负责的运算处理任务Task5分成Task18、Task17,并分别由Core4~5执行运算处理。
故二次划分优化后的各核的任务排布,能够进一步提高解码效率和多核并行度,减小解码时延。
经实验测试,在分辨率为1920×1080,码率为8M,六核配置的情况下,采用现有的多核并行解码技术和本实施方式对同一码流进行解码,现有技术的并行加速比为4.0,而本实施方式的并行加速比达到了5.01,相比提高了25%。
Claims (6)
1.一种基于多核处理器实现的H.264解码方法,所述的多核处理器至少具有6个Core,各Core并行处理各自的运算任务;该方法包括如下步骤:
(1)接收H.264视频格式的码流,由Core1负责对所述的码流进行解析并截取一段帧码流,由Core1负责对所述的帧码流进行熵解码并陆续生成若干宏块组;
所述的帧码流对应为一帧视频图像的码流,所述的宏块组由n个连续的宏块组成,n为大于0的自然数;
(2)由Core2~4负责对所述的宏块组进行重建得到宏块组的重建数据;由Core5负责对所述的重建数据进行滤波强度计算得到滤波强度值;由Core5~6负责根据所述的滤波强度值对重建数据进行环内去块滤波,得到宏块组对应的解码图像;
(3)根据步骤(2),并行遍历所有宏块组,得到帧码流所对应的一帧解码图像;
(4)重复步骤(1)至(3),对所述的码流进行解析并截取下一段帧码流,并解码得到下一段帧码流所对应的一帧解码图像;依此反复,直至将码流解码完成,得到码流的解码视频;
Core1~6负责对单个宏块组执行对应运算处理任务的执行周期均相等。
2.根据权利要求1所述的基于多核处理器实现的H.264解码方法,其特征在于:所述的n个连续的宏块对应为视频图像的一行宏块。
3.根据权利要求1所述的基于多核处理器实现的H.264解码方法,其特征在于:所述的步骤(2)中,对宏块组进行重建的过程为:首先由Core2~3负责根据宏块组的估计数据进行预测得到宏块组的预测数据,所述的估计数据为预测矢量或帧内预测模式;然后由Core4负责对宏块组的残差数据进行反量化变换;最后使宏块组反量化变换后的残差数据与预测数据相加,得到宏块组的重建数据。
4.根据权利要求3所述的基于多核处理器实现的H.264解码方法,其特征在于:根据宏块组的估计数据进行预测分为两种情况:
若宏块组所属的视频图像为关键帧,则由Core2~3中每一个Core分别负责宏块组中n/2个宏块的帧内预测模式进行帧内预测,得到宏块组的预测数据;
若宏块组所属的视频图像为非关键帧,则由Core2~3中每一个Core分别负责宏块组中n/2个宏块的预测矢量进行运动补偿,得到宏块组的预测数据。
5.根据权利要求1所述的基于多核处理器实现的H.264解码方法,其特征在于:所述的步骤(2)中,由Core5负责根据滤波强度值对宏块组中每一宏块色度分量对应的重建数据进行环内去块滤波,由Core6负责根据滤波强度值对宏块组中每一宏块亮度分量对应的重建数据进行环内去块滤波,得到宏块组对应的解码图像。
6.根据权利要求1所述的基于多核处理器实现的H.264解码方法,其特征在于:在多核处理器对H.264视频格式的码流进行解码的前5个执行周期和后5个执行周期中,对于处于工作状态的Core所承担总的运算处理任务,使处于空闲状态的Core也参与其中共同平均分担所述的运算处理任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210089250.8A CN102625108B (zh) | 2012-03-30 | 2012-03-30 | 一种基于多核处理器实现的h.264解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210089250.8A CN102625108B (zh) | 2012-03-30 | 2012-03-30 | 一种基于多核处理器实现的h.264解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102625108A CN102625108A (zh) | 2012-08-01 |
CN102625108B true CN102625108B (zh) | 2014-03-12 |
Family
ID=46564769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210089250.8A Active CN102625108B (zh) | 2012-03-30 | 2012-03-30 | 一种基于多核处理器实现的h.264解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102625108B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013110899B4 (de) * | 2012-10-04 | 2019-07-04 | Cognex Corporation | Symbologie-Lesegerät mit Multicore-Prozessor und Systeme und Verfahren zum Betrieb desselben |
CN104469488B (zh) * | 2014-12-29 | 2018-02-09 | 北京奇艺世纪科技有限公司 | 视频解码方法及系统 |
CN105992018B (zh) * | 2015-02-11 | 2019-03-26 | 阿里巴巴集团控股有限公司 | 流媒体转码方法和装置 |
CN106954066A (zh) * | 2016-01-07 | 2017-07-14 | 鸿富锦精密工业(深圳)有限公司 | 视频解码方法 |
WO2018076336A1 (zh) * | 2016-10-31 | 2018-05-03 | 富士通株式会社 | 视频解码方法、视频解码装置和电子设备 |
CN107392838B (zh) * | 2017-07-27 | 2020-11-27 | 苏州浪潮智能科技有限公司 | 基于OpenCL的WebP压缩并行加速方法及装置 |
CN107613301B (zh) * | 2017-10-17 | 2020-05-26 | 苏州浪潮智能科技有限公司 | 一种图像处理方法及装置 |
CN107809643B (zh) * | 2017-11-13 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种图像的解码方法、装置及介质 |
CN108449603B (zh) * | 2018-03-22 | 2019-11-22 | 南京邮电大学 | 基于多核平台多层次任务级与数据级并行的hevc解码方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100801630B1 (ko) * | 2007-06-15 | 2008-02-05 | 디비코 주식회사 | 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법 |
CN101616323B (zh) * | 2008-06-27 | 2011-07-06 | 国际商业机器公司 | 对视频编码数据流进行解码的系统和方法 |
CN101710986B (zh) * | 2009-11-18 | 2012-05-23 | 中兴通讯股份有限公司 | 基于同构多核处理器的h.264并行解码方法和系统 |
CN102098503B (zh) * | 2009-12-14 | 2012-11-28 | 中兴通讯股份有限公司 | 一种多核处理器并行解码图像的方法和装置 |
-
2012
- 2012-03-30 CN CN201210089250.8A patent/CN102625108B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102625108A (zh) | 2012-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102625108B (zh) | 一种基于多核处理器实现的h.264解码方法 | |
CN105491377B (zh) | 一种计算复杂度感知的视频解码宏块级并行调度方法 | |
CN105245897A (zh) | 用于在多核处理器上转码到高效视频编码的高效软件 | |
US20120281760A1 (en) | Iterative Grid-Pattern Motion Search | |
CN103227919B (zh) | 一种基于多核处理器Tilera的SVC编码方法 | |
CN109495743A (zh) | 一种基于异构多处理平台的并行化视频编码方法 | |
US9654791B1 (en) | System and method for efficient multi-bitrate and multi-spatial resolution media encoding | |
CN104980764A (zh) | 基于复杂度均衡的并行编解码方法、装置及系统 | |
KR20090020460A (ko) | 비디오 디코딩 방법 및 장치 | |
CN102595137B (zh) | 基于图像像素块行/列流水线的快速模式判决装置和方法 | |
Han et al. | Optimization of motion compensation based on GPU and CPU for VVC decoding | |
Jiang et al. | Highly paralleled low-cost embedded HEVC video encoder on TI KeyStone multicore DSP | |
Rodríguez-Sánchez et al. | A fast GPU-based motion estimation algorithm for H. 264/AVC | |
CN101256668A (zh) | 一种计算均衡的多核进行视频滤波的方法 | |
CN102625109B (zh) | 一种基于多核处理器实现的mpeg-2至h.264的转码方法 | |
EP2814254A1 (en) | Combined parallel and pipelined video encoder | |
Yan et al. | Parallel deblocking filter for H. 264/AVC on the TILERA many-core systems | |
Wang et al. | An optimized parallel IDCT on graphics processing units | |
Wang et al. | Highly parallel HEVC decoding for heterogeneous systems with CPU and GPU | |
Yan et al. | Parallel deblocking filter for H. 264/AVC implemented on Tile64 platform | |
CN104602026B (zh) | 一种适用于hevc标准下编码器中全复用的重建环路结构 | |
Fan et al. | Co-ViSu: a Video Super-Resolution Accelerator Exploiting Codec Information Reuse | |
Asif et al. | Exploiting MB level parallelism in H. 264/AVC encoder for multi-core platform | |
Richter et al. | Architectural decomposition of video decoders for many core architectures | |
Liu et al. | High-efficiency parallelism solution for a Multiview High-Efficiency Video Coding decoder |
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 |