帧间预测整个流程可以理解为一个在巨大搜索空间中寻找最优率失真 (RDO) 解的过程。编码器会尝试多种模式,最终选择一个消耗比特最少且失真最小的组合。
第 1 步:CU 划分决策
编码器从最大的 CTU 尺寸开始,进行递归检查。它会计算:
不划分 (Split_flag = 0):将当前整个 CU 作为...
阅读更多
角度(Angular)模式通过 33 种精细的方向来模拟图像的纹理和边缘。
其核心流程可以概括为:为块内每个像素点,沿着指定角度反向投影到参考像素行/列上,再通过插值计算出预测值。
第 1 步:模式与角度的映射
首先,33 个角度模式(模式号 2 到 34)需要映射为具体的几何角度和位移参数。这些模式被分为...
阅读更多
Planar (平面) 模式适合处理像素值平滑渐变的区域(如天空、墙壁的阴影等),能有效避免块效应。
核心思想
假设当前块内的像素值构成一个平滑的、倾斜的平面。这个“平面”是由块的边界像素(上方、左方、右上方、左下方)决定的。块内任意一点 (x, y) 的像素值,都可以通过这个假想的平面计算出来。
这本质上...
阅读更多
Intra 过程可以分为七个关键步骤。假设我们现在要处理一个决定采用 Intra 模式的 CU (Coding Unit)。
第 1 步:参考像素的获取与滤波
这是所有 Intra 预测的基础。预测当前块需要用到其左边和上边的、已经解码并重建好的像素。
确定可用性:
首先检查所需...
阅读更多
PU 的划分规则是HEVC 能够精细地描述物体运动,从而提升帧间预测效率的关键所在。
与 CU 和 TU 的四叉树划分不同,PU 的划分方式更加多样,但规则也更固定,其划分方式完全取决于 CU 的预测模式(Intra/Inter)和尺寸。
PU 划分的核心思想
目的:为预测(特别是帧间运动预测)提供灵...
阅读更多
CTU
CTU是HEVC处理视频帧的基本单位,取代了H.264中的宏块(Macroblock)。
作用:作为一帧图像划分的起点和编码处理的入口。编码器会依次处理图像中的每一个CTU。
大小:在序列参数集(SPS)中指定,可以是16x16、32x32或64x64的亮度像素块。
结构:一个CTU包含...
阅读更多
x264 中的行级码率控制
执行
x264 中的行级速率控制是通过 VBV(视频缓冲验证器)系统实现的,以便在各个帧内而不是仅在帧级别提供更精确的比特率控制。
核心实现围绕x264_ratecontrol_mb()函数ratecontrol.c:1496展开,该函数在每个宏块行的末尾被调用,以根据实际消耗的位数...
阅读更多
指数哥伦布编码(Exponential-Golomb Coding,简称 Exp-Golomb)**在 H.264 中的具体应用。
指数哥伦布编码是一种无损熵编码方法,属于可变长度编码(VLC)的一种。它的核心设计思想是:为值越小、出现概率越高的非负整数分配越短的码字。这与视频编码中很多语法元素(如运动向量差、...
阅读更多