HEVCHigh Efficiency Video Coding高效率视频编码即 H.265作为 H.264 的继任者在提供更高压缩比的同时其计算复杂度也呈指数级上升尤其是在 4K/8K 超高清分辨率和高帧率场景下。为了满足实时编码和低延迟解码的需求HEVC 在架构设计之初就将并行处理能力作为核心特性之一。传统的 H.264 主要依赖基于帧级别Frame-level或宏块条带级别Slice-level的并行但这些方式存在明显的局限性如同步延迟高、牺牲压缩率等。HEVC 引入了更细粒度、更高效的并行技术主要包括Tile瓦片、WPPWavefront Parallel Processing波前并行处理并结合其特有的CTU 树形划分以及流水线硬件优化。CTU 划分与依赖关系HEVC 放弃了 H.264 的16×1616 \times 1616×16宏块Macroblock引入了CTUCoding Tree Unit编码树单元大小通常为64×6464 \times 6464×64。在视频编码中并行处理的最大障碍是数据依赖性Data Dependency。主要体现在帧内预测Intra Prediction当前块需要参考左侧、左上、正上、右上已重建像素。熵编码CABAC上下文自适应二进制算术编码是一个强串行的过程当前概率模型的更新依赖于上一个语法元素的编码结果。环路滤波Loop Filters去块滤波DBF和样点自适应补偿SAO跨越边界进行通常需要等待周边块完成像素重建。HEVC 的并行技术正是通过切断或重新排列这些依赖关系来实现的。Tile瓦片技术Tile 是 HEVC 引入的一种将图像在空间上进行水平和垂直网格状划分的机制。一个具体的视频帧可以被划分为若干个矩形区域每个区域包含若干个 CTU这些矩形区域被称为 Tile。-----------------------------------|Tile0|Tile1||(CTU0, CTU1...)|(CTU4, CTU5...)|----------------------------------|Tile2|Tile3||(CTU8, CTU9...)|(CTU12,CTU13...|-----------------------------------Tile 的并行实现原理相互独立性属于不同 Tile 的 CTU 在帧内预测和熵编码CABAC时彼此之间的所有数据依赖关系都会被强制切断。CABAC 状态重置每个 Tile 的第一行第一个 CTU 在进行 CABAC 编码时都会重新初始化其上下文概率模型。扫描顺序在帧级别CTU 的扫描顺序变成了先在 Tile 内部按光栅顺序扫描然后再按照 Tile 之间的光栅顺序扫描。Tile 的优势与代价优势由于 Tile 之间完全没有多线程同步的阻塞各个线程可以完全独立地处理不同的 Tile。这非常适合多核 CPU 或分布式集群进行粗粒度的多线程调度。代价压缩率损失切断了跨 Tile 边界的帧内空间预测且 CABAC 频繁重置会导致编码性能BD-Rate出现一定程度的下降。此外虽然预滤波和熵编码完全独立但环路滤波DBF/SAO在默认情况下仍然允许跨 Tile 边界进行可通过配置关闭这在最后一阶段引入了微小的同步开销。WPP波前并行处理相比于 Tile 暴力切断空间依赖的做法WPPWavefront Parallel Processing是一种更加优雅、几乎不损失压缩效率的细粒度并行技术。它允许一行 CTU 与其上下行 CTU 同时进行并行编码由于其处理推进的形状像波浪推进故称“波前并行”。WPP 的依赖与触发机制在标准的光栅扫描中当前 CTU假设为第NNN行第MMM列记为CTUN,MCTU_{N, M}CTUN,M的帧内预测和 CABAC 概率模型依赖于其左侧CTUN,M−1CTU_{N, M-1}CTUN,M−1、左上CTUN−1,M−1CTU_{N-1, M-1}CTUN−1,M−1、正上CTUN−1,MCTU_{N-1, M}CTUN−1,M以及右上CTUN−1,M1CTU_{N-1, M1}CTUN−1,M1。WPP 通过以下巧妙的设计实现了并行延迟触发Two-CTU Delay第NNN行的线程不需要等待第N−1N-1N−1行全部编码完而只需要等待第N−1N-1N−1行的前两个 CTU即CTUN−1,0CTU_{N-1, 0}CTUN−1,0和CTUN−1,1CTU_{N-1, 1}CTUN−1,1处理完毕。一旦这两块完成第NNN行的线程即可启动处理CTUN,0CTU_{N, 0}CTUN,0。CABAC 状态传递Entropy Coding SynchronizationWPP 规定第NNN行的第一个 CTUCTUN,0CTU_{N, 0}CTUN,0在初始化其 CABAC 上下文模型时直接复制第N−1N-1N−1行第二个 CTUCTUN−1,1CTU_{N-1, 1}CTUN−1,1结束时的 CABAC 概率状态。由此各行线程呈现一种“阶梯状”或“波前状”的并行推进态势线程 1 处理第 1 行当 线程 1 推进到第 1 行第 2 个 CTU 完结时唤醒 线程 2 处理第 2 行第 1 个 CTU当 线程 2 推进到第 2 行第 2 个 CTU 完结时唤醒 线程 3 处理第 3 行第 1 个 CTU……WPP 的优势与代价优势高压缩比维持WPP 并没有真正切断 CTU 之间的空间预测依赖只是在时间轴上重新编排了处理顺序。因此它对视频压缩效率Rate-Distortion Performance的负面影响微乎其微通常 BD-Rate 损失小于 1%。代价线程同步开销与延迟由于各行之间存在严格的“超前两个 CTU”的依赖WPP 需要非常频繁且低延迟的线程同步机制如通过原子变量或信号量进行行状态通知。如果某一行由于复杂的纹理导致编码变慢会引发下游所有行线程的串行阻塞木桶效应。Tile 与 WPP 的横向对比与互斥关系在 HEVC 标准中Tile 和 WPP 在同一个主 Profile 下是互斥的即在一帧图像内不能同时开启 Tile 和 WPP但它们都可以与 Slice 结合使用。特性 / 维度Tile (瓦片技术)WPP (波前并行处理)并行粒度粗粒度矩形区域细粒度以 CTU 行为单位数据依赖性跨边界帧内预测与 CABAC 强行切断保留所有空间预测仅 CABAC 状态跨行同步压缩效率损失较大因边界断开、概率重置极小几近无损线程同步频率极低仅在开始/结束或环路滤波时极高每个 CTU 行推进都需要同步通知硬件/架构友好度适合多核 CPU、多芯片分布式、GPU 并行适合具有高效 IPC进程间通信的多核专用芯片/CPU内存带宽开销较小局部性好较大多行同时处于活跃状态缓存压力大其他层面的并行设计除了 Tile 和 WPP 这两个标志性技术HEVC 还在其他模块针对硬件流水线Pipelining进行了深度优化运动向量预测的并行化Merge / AMVP在 H.264 中运动向量预测MVP具有很强的串行依赖。HEVC 引入了并行合并模式估计Parallel Merge Estimation。它允许编码器在一个特定大小的区域如8×88 \times 88×8或16×1616 \times 1616×16的 Merge Estimation Region, MER内所有预测单元PU可以同时并行计算它们的 Merge 候选列表因为 MER 内部的相互依赖被隐式禁止了。这极大地有利于硬件编码器在流水线中并发执行运动估计。环路滤波的并行化DBF SAO去块滤波DBFHEVC 修改了滤波顺序。H.264 采用宏块级别的交替滤波而 HEVC 采用全帧垂直边界统一滤波、随后全帧水平边界统一滤波的模式。这种将垂直与水平完全解耦的设计使得 DBF 阶段可以非常容易地通过高度并行的向量处理器如 GPU 或 DSP实现。样点自适应补偿SAOSAO 的像素分类和边界补偿完全基于重建像素本身其处理过程具备天然的像素级或 CTU 级并行性各单元互不干扰。总结HEVC 的并行处理是一套“组合拳”在系统架构层面提供Tile满足高吞吐、多处理器解耦的需求。在算法精细度层面提供WPP满足对画质极其苛刻、但多线程同步高效的实时编码场景。在微架构与流水线层面通过MER、解耦的DBF/SAO保证了专用集成电路ASIC和 FPGA 能够以极高的时钟频率进行流水线作业。在当前的开源与商用工程实践中如著名的x265编码器 为了压榨多核服务器如 64 核或更高的性能通常会结合使用帧级并行Frame-level Parallelism、WPP 开启以及帧内 CTU 级的 Lookahead 并行。这种多层次的并行策略成功地将 HEVC 那庞大的计算复杂度摊薄到了无数个处理器核心中使其在当下的超高清视频直播、安防智能监控及低延迟音视频通信中真正具备了工业落地的可行性。
HEVC(二):如何实现并行处理
发布时间:2026/6/8 1:07:22
HEVCHigh Efficiency Video Coding高效率视频编码即 H.265作为 H.264 的继任者在提供更高压缩比的同时其计算复杂度也呈指数级上升尤其是在 4K/8K 超高清分辨率和高帧率场景下。为了满足实时编码和低延迟解码的需求HEVC 在架构设计之初就将并行处理能力作为核心特性之一。传统的 H.264 主要依赖基于帧级别Frame-level或宏块条带级别Slice-level的并行但这些方式存在明显的局限性如同步延迟高、牺牲压缩率等。HEVC 引入了更细粒度、更高效的并行技术主要包括Tile瓦片、WPPWavefront Parallel Processing波前并行处理并结合其特有的CTU 树形划分以及流水线硬件优化。CTU 划分与依赖关系HEVC 放弃了 H.264 的16×1616 \times 1616×16宏块Macroblock引入了CTUCoding Tree Unit编码树单元大小通常为64×6464 \times 6464×64。在视频编码中并行处理的最大障碍是数据依赖性Data Dependency。主要体现在帧内预测Intra Prediction当前块需要参考左侧、左上、正上、右上已重建像素。熵编码CABAC上下文自适应二进制算术编码是一个强串行的过程当前概率模型的更新依赖于上一个语法元素的编码结果。环路滤波Loop Filters去块滤波DBF和样点自适应补偿SAO跨越边界进行通常需要等待周边块完成像素重建。HEVC 的并行技术正是通过切断或重新排列这些依赖关系来实现的。Tile瓦片技术Tile 是 HEVC 引入的一种将图像在空间上进行水平和垂直网格状划分的机制。一个具体的视频帧可以被划分为若干个矩形区域每个区域包含若干个 CTU这些矩形区域被称为 Tile。-----------------------------------|Tile0|Tile1||(CTU0, CTU1...)|(CTU4, CTU5...)|----------------------------------|Tile2|Tile3||(CTU8, CTU9...)|(CTU12,CTU13...|-----------------------------------Tile 的并行实现原理相互独立性属于不同 Tile 的 CTU 在帧内预测和熵编码CABAC时彼此之间的所有数据依赖关系都会被强制切断。CABAC 状态重置每个 Tile 的第一行第一个 CTU 在进行 CABAC 编码时都会重新初始化其上下文概率模型。扫描顺序在帧级别CTU 的扫描顺序变成了先在 Tile 内部按光栅顺序扫描然后再按照 Tile 之间的光栅顺序扫描。Tile 的优势与代价优势由于 Tile 之间完全没有多线程同步的阻塞各个线程可以完全独立地处理不同的 Tile。这非常适合多核 CPU 或分布式集群进行粗粒度的多线程调度。代价压缩率损失切断了跨 Tile 边界的帧内空间预测且 CABAC 频繁重置会导致编码性能BD-Rate出现一定程度的下降。此外虽然预滤波和熵编码完全独立但环路滤波DBF/SAO在默认情况下仍然允许跨 Tile 边界进行可通过配置关闭这在最后一阶段引入了微小的同步开销。WPP波前并行处理相比于 Tile 暴力切断空间依赖的做法WPPWavefront Parallel Processing是一种更加优雅、几乎不损失压缩效率的细粒度并行技术。它允许一行 CTU 与其上下行 CTU 同时进行并行编码由于其处理推进的形状像波浪推进故称“波前并行”。WPP 的依赖与触发机制在标准的光栅扫描中当前 CTU假设为第NNN行第MMM列记为CTUN,MCTU_{N, M}CTUN,M的帧内预测和 CABAC 概率模型依赖于其左侧CTUN,M−1CTU_{N, M-1}CTUN,M−1、左上CTUN−1,M−1CTU_{N-1, M-1}CTUN−1,M−1、正上CTUN−1,MCTU_{N-1, M}CTUN−1,M以及右上CTUN−1,M1CTU_{N-1, M1}CTUN−1,M1。WPP 通过以下巧妙的设计实现了并行延迟触发Two-CTU Delay第NNN行的线程不需要等待第N−1N-1N−1行全部编码完而只需要等待第N−1N-1N−1行的前两个 CTU即CTUN−1,0CTU_{N-1, 0}CTUN−1,0和CTUN−1,1CTU_{N-1, 1}CTUN−1,1处理完毕。一旦这两块完成第NNN行的线程即可启动处理CTUN,0CTU_{N, 0}CTUN,0。CABAC 状态传递Entropy Coding SynchronizationWPP 规定第NNN行的第一个 CTUCTUN,0CTU_{N, 0}CTUN,0在初始化其 CABAC 上下文模型时直接复制第N−1N-1N−1行第二个 CTUCTUN−1,1CTU_{N-1, 1}CTUN−1,1结束时的 CABAC 概率状态。由此各行线程呈现一种“阶梯状”或“波前状”的并行推进态势线程 1 处理第 1 行当 线程 1 推进到第 1 行第 2 个 CTU 完结时唤醒 线程 2 处理第 2 行第 1 个 CTU当 线程 2 推进到第 2 行第 2 个 CTU 完结时唤醒 线程 3 处理第 3 行第 1 个 CTU……WPP 的优势与代价优势高压缩比维持WPP 并没有真正切断 CTU 之间的空间预测依赖只是在时间轴上重新编排了处理顺序。因此它对视频压缩效率Rate-Distortion Performance的负面影响微乎其微通常 BD-Rate 损失小于 1%。代价线程同步开销与延迟由于各行之间存在严格的“超前两个 CTU”的依赖WPP 需要非常频繁且低延迟的线程同步机制如通过原子变量或信号量进行行状态通知。如果某一行由于复杂的纹理导致编码变慢会引发下游所有行线程的串行阻塞木桶效应。Tile 与 WPP 的横向对比与互斥关系在 HEVC 标准中Tile 和 WPP 在同一个主 Profile 下是互斥的即在一帧图像内不能同时开启 Tile 和 WPP但它们都可以与 Slice 结合使用。特性 / 维度Tile (瓦片技术)WPP (波前并行处理)并行粒度粗粒度矩形区域细粒度以 CTU 行为单位数据依赖性跨边界帧内预测与 CABAC 强行切断保留所有空间预测仅 CABAC 状态跨行同步压缩效率损失较大因边界断开、概率重置极小几近无损线程同步频率极低仅在开始/结束或环路滤波时极高每个 CTU 行推进都需要同步通知硬件/架构友好度适合多核 CPU、多芯片分布式、GPU 并行适合具有高效 IPC进程间通信的多核专用芯片/CPU内存带宽开销较小局部性好较大多行同时处于活跃状态缓存压力大其他层面的并行设计除了 Tile 和 WPP 这两个标志性技术HEVC 还在其他模块针对硬件流水线Pipelining进行了深度优化运动向量预测的并行化Merge / AMVP在 H.264 中运动向量预测MVP具有很强的串行依赖。HEVC 引入了并行合并模式估计Parallel Merge Estimation。它允许编码器在一个特定大小的区域如8×88 \times 88×8或16×1616 \times 1616×16的 Merge Estimation Region, MER内所有预测单元PU可以同时并行计算它们的 Merge 候选列表因为 MER 内部的相互依赖被隐式禁止了。这极大地有利于硬件编码器在流水线中并发执行运动估计。环路滤波的并行化DBF SAO去块滤波DBFHEVC 修改了滤波顺序。H.264 采用宏块级别的交替滤波而 HEVC 采用全帧垂直边界统一滤波、随后全帧水平边界统一滤波的模式。这种将垂直与水平完全解耦的设计使得 DBF 阶段可以非常容易地通过高度并行的向量处理器如 GPU 或 DSP实现。样点自适应补偿SAOSAO 的像素分类和边界补偿完全基于重建像素本身其处理过程具备天然的像素级或 CTU 级并行性各单元互不干扰。总结HEVC 的并行处理是一套“组合拳”在系统架构层面提供Tile满足高吞吐、多处理器解耦的需求。在算法精细度层面提供WPP满足对画质极其苛刻、但多线程同步高效的实时编码场景。在微架构与流水线层面通过MER、解耦的DBF/SAO保证了专用集成电路ASIC和 FPGA 能够以极高的时钟频率进行流水线作业。在当前的开源与商用工程实践中如著名的x265编码器 为了压榨多核服务器如 64 核或更高的性能通常会结合使用帧级并行Frame-level Parallelism、WPP 开启以及帧内 CTU 级的 Lookahead 并行。这种多层次的并行策略成功地将 HEVC 那庞大的计算复杂度摊薄到了无数个处理器核心中使其在当下的超高清视频直播、安防智能监控及低延迟音视频通信中真正具备了工业落地的可行性。