admin 管理员组文章数量: 887021
2024年1月24日发(作者:matlabr2014a安装包)
篓 D吲黼. 佃 【本文献信息】叶朝敏,陈颖琪,高志勇.基于多核处理器的高清实时MPEG一2一H_264转码器设计[J].电视技术,2012,36(21) 基于多核处理器的高清实时 ⅣI]E,EG_2一H. 264转码器设计 叶朝敏,陈颖琪,高志勇 (上海交通大学电子工程系图像通信与信息处理研究所,上海200240) 【摘要】基于多核处理器的并行计算为实时实现高清MPEG一2至H.264转码器提供了1种可行的实现方案。提出了1种多 颗粒度的MPEG_2一H.264全解全编并行转码器设计方案,其中MPEG一2解码器采用了帧内与数据级两级并行,H.264编码器 采用了帧间、帧内与数据级三级并行。实验结果表明本设计不仅具有良好的并行加速比,而且可以在使用1/4的TilePro64处理 器核资源的条件下完成1路实时高清转码。 【关键词】MPEG—H.264转码器;Tilera多核处理器;多粒度并行计算 【中图分类号】TN949.292 【文献标识码】B Design of HD MPEG-2一H.264 Transcoder Based on Mulfi--core Processor YE Chaomin,CHEN Yingqi,GAO Zhiyong (Image Communication and Information Processing Institute,Electronic Engineering,Shanghai Jiao Tong University,Shanghai 200240,China) 【Abstract】Parallel computing provides a practical solution to implementation of MPEG2一H.264 Transcoder.A novel multi—grain parallel algorithm for MPEG2一H.264 transcoder,with Slice—based and SIMD-based parallelism for MPEG一2 decoder,as well as Frame-based,Slice—based and SIMD— based parallelism for H.264 encoder,is proposed.Experiment indicates that this algorithm is not only of outstanding parallel acceleration ratio,but also capable of real time transeoding for one channel HD video,using only one quarter of total resources. 【Key words】MPEG—H.264 trd_nsc0cIer;Tilera multi—core processor;multi—grain parallelism 随着网络与个人通信终端的发展,人们对于视频的要 本文针对以往研究中存在的问题,提出并实现了1种 求已经越来越强烈。H.264视频压缩标准在提供了优异 采用了帧级、片级与数据级混合并行的多粒度高清实时全 的压缩比的同时,保证了出色的解码视频质量,是窄带视 解全编转码方案,并在Tilera_l 公司Tile Pro64同构多核 频传输的理想选择,已经越来越广泛地应用于在线视频 平台上成功应用。 中。与此同时,目前已有的视频数据源,包括电影、电视等 依旧采用MPEG-2编码。如果可以将MPEG一2视频源转 1 研究现状 化成为H.264,则可以极大地扩充H.264的节目来源,进 在并行程序设计中,功能分解与数据分解是常用的2 一步丰富人民群众的精神文化生活。 种方法。具体到编解码器设计中,I帧数据通常由若干个 H.264的出色性能是建立在庞大的运算量的基础上 宏块行组成,因此具有天然的数据可分解性。编解码器采 的,H.264虽然比MPEG-2节约了约50%的码率,但是付 用了模块化设计,每个功能模块任务明确,具有较好的功 出的代价却是MPEG一2 3倍以上的编码计算复杂度。对 能可分解性。 于高清(本文特指分辨率为1 920×1 080的视频)实时的 在MPEG-2解码器设计中,最常用的并行设计方法 MPEG-2至H.264转码器,目前尚未有快速高效且效果显 是帧内数据分解。由于MPEG一2码流中1帧内各个宏块 著的快速转码算法,采用全解全编的转码器又面临着庞大 行(片)的解码互不相关,因此可以将不同宏块行的解码 的计算复杂度的问题。 任务放在不同的核上进行一z 。 并行计算为实时实现高清MPEG-2至H.264转码器 采用帧间并行的MPEG-2解码设计则相对复杂。解 提供了切实可行的解决方案。良好设计的并行转码器可 码器设计中,由于运动向量搜索范围可以包含一整帧数 以提供接近线性的加速比,即便对于计算量最大的全解全 据,P帧的解码有可能需要用到I帧的完整数据,因此I帧 编转码器,利用目前常见的四核处理器也能在原先1/4的 与P帧之间很难实现并行。然而对于IBBPBBP的码流结 时间内完成转码,对于核数更多的处理器,则能更进一步 构,可以在所有B帧的参考帧均解码完毕之后,对所有B 实现多路高清实时转码。 帧进行帧级的并行解码 』。对于非实时码流,采用GoP 投稿网址h廿p://www.VideoE.onI《电视技术》第86卷第21期(, ̄398期) 15
II D 黼 分组也是1种可行的帧间并行方案 。 2.1并行MPEG-2解码器设计 除此之外,并行MPEG一2解码器还可以采用基于功 同模块分配到不同的核上以实现并行。然而功能分解的 不多。 并行H.264编码器的研究主要突破点同样在于数据 在MPEG-2码流中,1个宏块行为1个片(Slice),码 code,slicem_能分解的设计方案,即采用流水线设计,将解码过程的不 流start_code中包含了片的序号,其变化范围由slice_rain— start_ax—start_code确定。由于各个片之间不 可扩展性较差 j,因此基于功能分解的编解码器研究并 具有任何相关性,因此MPEG一2码流具有天然的帧内可 并行性。 在解码分辨力为1 920×1 080的高清码流时,共有 [1 080/16] 68个片,如果以每个片的解码作为1个基本 个并行基本任务,对于核数少于8的处理器而言,任务数 分解。数据分解重点在于设计并行的颗粒度:颗粒度过 大,则容易出现空闲核等待状况;颗粒度过小,则会出现通 的并行任务,每1个基本并行任务颗粒度较小,总计有68 信量过大,影响CPU真正执行编解码核心任务。 早期的研究主要集中于单一颗粒度的并行。从颗粒 已经足够,因此不再引入帧间并行。当处理器核数更多 度最大的GoP级帧间并行 J,到颗粒度降低的帧级并行 时,可以引入基于B帧的帧间并行 J,进一步提升基本并 与片级并行 。 ,一直到颗粒度更低的宏块或者宏块组级 行任务个数,以便进一步提高加速比。 并行 ' ,甚至于为加速编解码而引入的指令集(本文中 单独的并行MPEG-2解码器流程图如图1所示。 也称为数据级)并行 ,均有相关文献发表。单一颗粒度 的并行一定程度上提高了编码速度,然而很遗憾的是此种 并行引入的并行加速比均较为有限。 相比较单颗粒度并行,采用多颗粒度的并行编码器 则展现出了优异的性能。混合采用B帧并行、片级并行、 宏块级并行以及数据级并行的设计在码率增长4%的基 础上获得了34倍左右的性能提升 。事实上,各级并行 虽然较为独立,但是在编码过程中可以完美地融合在一 起。帧级并行调用帧内并行,帧内并行调用宏块级并行, 宏块级并行调用数据级并行,各级并行完成各自任务,最 终完成编码。多颗粒度并行编码器中,可以通过良好的任 务分配,保证适中的颗粒度,避免出现过久的空闲和等待, 并且也不会出现通信量过大的情况。 本文实现了1种全解全编的实时并行MPEG一2至 H.264转码器。在解码端,可以对任何符合MPEG一2标准 的码流进行解码;在编码端,目前仅支持Baseline的H.264 编码。本文的MPEG-2并行解码器采用了常见的片(1个 图1并行MPEG-2编码流程图 主线程首先从输入码流中通过搜索截出解码1帧所 宏块行)级并行与数据级并行混合并行算法,H.264编码 需的码流数据,随后对截出的码流进行解析,在解析到 iceheader的时候开始创建片级并行任务,各个片级任 器则采用了独特的帧级并行、片(若干个宏块行)级并行、 sl—数据级并行的多粒度混合并行模型。 务经调度器管理在不同的线程上独立完成,主线程在等待 1帧的所有片均解码完并输出1帧之后开始解码下1帧, 如此往复,直至码流解码完毕。 2 并行转码器设计方案 ¨ ,64编码器设计 本设计由主线程与包含若干个线程的线程池以及包 2.2并行H.2含若干个任务的任务池组成。其中主线程负责初始化线 2.2.1帧级并行 程池以及创建帧级并行任务等,任务池负责完成具体的编 运动搜索引人的帧间依赖性阻碍了帧级并行的实 解码任务。为了管理好任务池,本设计中实现了1个用户 现。为了解决此问题,可以将1帧数据进行分片编码,人 态的调度器。调度器遍历任务池查找依赖性满足的,即可 为规定运动向量搜索范围为其参考帧对应的片的高度。以被执行并行任务并分配给空闲的线程执行,对应线程完 假设1帧的每1个片由numMbr个宏块行组成,为了保证 数据的依赖性得到满足,第Ⅳ帧开始编码后,第Ⅳ+1帧 成该任务之后便会将该任务移除出任务池。 16 《电视技术》第36卷第21期(总第398期)I投稿网址http://www.VideoE.on
D 黼菪 可以在第Ⅳ帧的[numMbr/2]宏块行编码完成之后才开始 帧对应的Slice是否已经编码完成(此处只考虑Baseline 不包含B帧的情形,如果包含B帧,则需要检测第Ⅳ+1 Ⅳ帧对应的Slice已经编码完成后才会真正开始对第Ⅳ+1 帧进行编码。 片顺序将码流重组最后有序输出。 编码。在第Ⅳ+1帧编码到某一个Slice时,会检测第Ⅳ 2.2.3数据级并行(指令级并行) 数据级并行,或者指令级并行,是指利用处理器提供 的多媒体处理指令集(例如Intel SSE/SSE2指令集、Til— MD指令集等)中提供的SIMD(Single In. 帧所依赖的参考帧对应的Slice编码完成情况),只有在第 era…公司的SIstruction Multiple Data)指令对编码过程中的一些核心计 算模块进行优化所引入的并行。 本文实验所用的多核平台为同构多核,各核处理速 采用数据并行不需对编码器并行框架进行任何修 度可认为一致,第Ⅳ+1帧由于落后第Ⅳ帧[numMbr/2] 改,使用方便,但是所引入的并行加速比却非常可观。本 个宏块行,因此第Ⅳ+1帧的某个Slice需要等待第Ⅳ帧 设计采用Tilera公司SIMD指令优化离散余弦变换、运动 对应Slice编码完成的可能性比较小,帧间并行性非常高。 补偿、去块滤波、量化等模块之后,可以引入5倍以上的并 另一方面,由于每1帧相对于前1帧编码都要落后[nun— 行加速比提升。然而由于指令集并行涉及模块多,且数据 Mbr/2]个宏块行的处理时问,因此无限增加帧问并行以 并行的加速比提升受限于上层编码器设计,因此很难事先 提高速度意义不大。实际实现时需要根据核的个数调整 估计单纯引入指令集所带来的并行加速比。 可以并行的帧数。 2.3并行转码器设计 2.2.2片级并行 并行转码器设计流程图如图2所示,图中粗箭头是指 如前所述,本设计将1帧数据分成若干个片进行独立 在线程任务池中完成的任务。 编码。1个帧级编码任务仅仅是接收来自上层的参数并 解码函数并行框架类似于图1中所示的单独解码器, 根据对应的参数创建多个片级编码任务。调度器随后将 解码函数与编码函数之间的联系除了用于缓存解码器输 片级的编码任务分发到各个核上同时执行,各个片编码完 出的YUV缓冲区以及YUV缓冲区对应的可读可写标志 成之后再将各个片的码流重组在一起进行输出(例如写 之外,再没有别的联系。此外,具体的并行解码任务与并 入文件或者封包成RTP数据包)。 行编码任务都被放置在线程任务池中,由调度器统一管 产生了片级的并行任务之后,可以根据核的个数决 理。具体流程描述如下: 定是否采用更小粒度的并行。如果并行帧数为4,帧内片 1)主线程首先初始化MPEG一2解码器与H.264编 数为14(即5个宏块行为1个片),则理论上最多同时有 码器,创建YUV缓冲区队列并设置所有缓冲区可写标志, 4×14=56个颗粒度较小的并行任务,对于10个核以下的 随后读人MPEG-2码流。 处理器,任务数已经足够。此外,引入分片之后,由于帧内 2)主线程检查YUV缓冲区队列对应YUV缓冲区是 相关性降低 J,会导致编码之后码率增大,因此虽然分 否可写。若可写,则调用并行解码函数解析码流并创建并 片可以增大并行加速比,但是不可能为了提高编码速度无 行解码基本任务(在主线程中)。若不可写,即代表该缓 限提高分片数。实现时分片数可以根据具体性能予以 冲区正在被编码器使用,解码器暂停直至该缓冲区可写标 调整。 志重新被设置。 对于本设计,并行任务细化到片级并行任务时任务 3a)主线程等待一帧数据解码完毕。 数已经足够,因后不再进行粒度更小的宏块级并行。此时 3b)调度器调度各线程执行具体的解码任务。 1个片级并行任务包含了如下功能: 4a)1帧数据解码完毕之后主线程输出解码产生的 1)接收来自上层的参数并存取。由于采用了并行设 YUV数据至YUV缓冲区中并清空该缓冲区对应的可写 计,很多参数都会随着并行的出现发生改变,因此在进行 标志。之后主线程调用编码函数创建帧间并行任务。主 真正的片级编码之前,需要首先备份来自上层的有关 线程随后继续解码下1帧。 参数。 4b)调度器调度线程执行帧间并行任务以及其后的 2)帧内数据从变换量化预测补偿到熵编码的一整套 片级并行任务。1帧YUV数据编码完毕之后输出该帧码 编码流程。每片的编码任务仅仅会在该片所需数据已经 流并设置缓冲区可写标志。 准备就绪的时候才开始,因此一旦并行任务开始执行时, 上述流程中,包含3b)的任务是计算量最大的任务, 该片编码已经不用考虑依赖性问题,保证了高效并行。 由调度器管理,由各工作线程完成,其余任务由主线程完 3)各片已编码码流整合。分片编码之后需要按照各 成。上述流程除了4a)依赖于3b)之外(不包括由于缓冲 投稿网址http:/^  ̄v.VideoE.onI《电视技术》第36卷第21期(总第398期) 17
II,D 解码端 编码端 图2转码器流程图 区引入的等待),主函数与线程任务池之间没有依赖。 换之后的H.264码流码率为6 Mbit/s。 从而保证了二者都可以各自执行自己的任务,提高了效 通过比较YUV缓冲队列长度对于转码性能的影响, 率从而保证了较高的并行性。实际实现时,YUV缓冲区 最终确定的YUV缓冲区队列长度为4。队列的长度可以根据具体性能以及可用的内存资源确 3.2.1并行线性 并行线性是指并行设计的加速比随着核数的增多而 定一个较为合理的值:当缓冲区队列长度较小时,容易 线性 造成编码器与解码器过多的等待,影响转码器性能;而 线性增长的性质。对于一个并行设计的转码器而言,队列过长,并不能带来太多性能的提升,反而造成内存 无疑是最重要的性质。对相同码率不同码流转码速度的 资源的浪费。 测试结果如图3所示。 3 Tilera平台并行转码器实现 40 3.1 Tilera平台简介 本设计的实现平台即采用Tilera公司Tile Pro64处理 器的计算服务器。该处理器由64个同构的核构成,单核 1 3o 20 频率最高为866 MHz。核间通信通过Tilera公司独特的 核问互联技术实现,保证了极高的吞吐率与极小的时延, 留 10 是实现多核设计或者众核设计的出色的实验平台。此外, 服务器共有4个DDR2 667控制器,每个控制器控制 2 Gbyte内存,共8 Gbyte内存。 3.2 Tilera平台并行转码器性能 本设计测试了3个MPEG码流,即:CrowdRun (25 Mbit/s),Tractor(25 Mbit/s)以及“fe(25 Mbit/s),转 4 8 12 16 2O 24 核数 图3相同码率不同码流转码结果 可以看到,在核数较少的时候(10个核以下),本设计 l8《电视技术》第36卷第21期(总第398期)I投稿网址hltp://www.VideoE.CR
版权声明:本文标题:基于多核处理器的高清实时MPEG-2--H.264转揪哥 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1706074045h500775.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论