关键词:
HEVC解码
多核处理平台
并行处理
像素解码重构
数据结构
CTU
摘要:
H.265/HEVC视频编解码标准和H.264标准相比,不仅继承了H.264编解码标准中优良特性,同时也引入了很多新的技术,包括灵活的四叉树划分方式、多角度帧内预测等,这些新技术的引入不仅保证了视频的编解码质量,也减少一半的码率。但是相较于H.264,HEVC标准的处理复杂度也提升了接近2至3倍。另外,由于HEVC面向高清和超高清视频编解码,相较于普通视频,会带来更大的工作量,因此,提供了多种层次的并行编码方法。同时,多核处理器技术的发展也为并行编解码的实现提供了硬件实现基础。因此,基于HEVC编解码标准的并行编解码技术成为了众多国内外学者的研究的课题。本文以包含36个核心的TileraGx36多核处理器为研究平台,研究基于多核处理器的HEVC解码主要模块并行处理技术与实现。论文的主要研究内容有以下几点:(1)设计并实现了一种基于多线程负载均衡的像素解码重构算法,实现了像素解码重构模块的多线程并行解码。由于图像区域的纹理特性和CTU四叉树划分方式的不确定性,导致每个CTU的解码复杂度不同,即解码时间不同,当前线程如果不能解码完当前CTU,那么依赖于当前CTU的待解码CTU就需要等待当前CTU解码完成,此时待解码CTU占有线程资源,导致多核资源的浪费。针对这一问题,提出了一种CTU复杂度估计算法,以CTU的划分深度以及CU到PU的划分方式来确定CTU的解码复杂度,再将相同复杂度的CTU组分配给多个线程进行并行处理,从而实现像素解码重构时的多线程负载均衡。(2)设计并实现了一种基于数据结构优化的并行解码算法。解码过程中CTU的解码状态等信息是访问量最多的数据之一,普通的数组存储不利于多线程的快速读写,针对这一问题,在解码过程中设计了一种使用位图记录CTU解码状态信息的方案,既节省存储空间,又提高了存储和查询效率。四叉树划分是HEVC新引入的CTU划分方式,在数据结构层面建立增强四叉树数据结构,仅在四叉树的叶子节点存储解码信息,同时在解码前,读取位图中存储的CTU解码状态信息,再对当前CTU进行解码。这种增强四叉树数据结构节约了非叶子节点的存储空间,增加了数据索引的效率和稳定性。同时,实现存储、查询等一系列的方法,进一步提高数据读写效率。(3)设计并实现了一种基于读写锁的数据级和任务级融合的并行解码方案。通过在位图和四叉树等数据结构中引入读写锁,实现多个线程同时读取共享数据,多个线程对解码信息的读取会产生资源冲突现象。结合Tilera多核平台的特性,在数据级和任务级融合的并行解码算法的基础上实现了解码效率的进一步提升。本文所有的设计都是在Tilera-Gx36多核处理平台上编程实现,以最新的libde265作为基本参考软件,对包括高清、超高清在内的多个分辨率的视频测试序列进行解码测试。根据实验结果,提出的基于多线程负载均衡的像素解码重构算法相较于前任提出的基于核心模块融合的HEVC并行解码算法,并行加速比平均提升了约7.9%;基于数据结构优化的并行解码方案相较于OWF和基于CTU的HEVC帧内/帧间融合并行解码算法,并行解码加速比分别提升了约22.9%和3.4%;基于读写锁的数据级和任务级融合并行解码算法相较于基于核心模块融合的HEVC并行解码算法,并行加速比平均提升了约11.2%。