Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 26138定义了MPEG-4高级视频编码(AVC,即H.264)的一致性测试要求——H.264是世界上最广泛部署的视频压缩标准。一致性测试确保编码器和解码器实现正确解释比特流语法并生成有效的解码图像。缺乏严格的一致性验证,来自不同供应商的编码器和解码器之间的互操作性将不可靠,从而破坏从流媒体服务到视频会议的整个视频生态系统。
ISO/IEC 26138规定了两级一致性:比特流一致性和解码器一致性。比特流一致性验证编码流是否符合AVC规范中定义的语法、语义约束和级别限制。解码器一致性验证解码器实现能否正确解码所有一致性比特流并生成正确的输出帧。
| 一致性级别 | 测试内容 | 测试方法 | 失败后果 |
|---|---|---|---|
| 比特流一致性 | NAL单元语法、SPS/PPS参数、片头、宏块预测模式、熵编码 | 比特流解析和语法元素对照规范表的验证 | 非一致性流可能导致解码器崩溃或产生视觉伪影 |
| 解码器一致性 | 帧间预测、帧内预测、去块滤波器、CABAC/CAVLC解码、参考图像管理 | 解码参考比特流并将输出PSNR与阈值比较 | 非一致性解码器产生错误图像或在有效流上失败 |
| 假设参考解码器(HRD) | 缓存管理、编码图像缓冲区(CPB)上溢/下溢、解码时序 | 使用编码流时序参数模拟HRD缓冲模型 | 非一致性流可能导致实时解码中的缓冲区下溢 |
一致性测试比特流按档次和级别组织。标准定义了基线、主要、扩展、高端和多个其他档次的测试向量。每个测试向量针对解码过程的特定方面——例如,去块滤波器一致性测试向量验证滤波器在各种量化参数值下正确处理块边界。
该标准提供了全面的测试比特流集合,按类别组织,针对特定的解码特性。对于每个测试比特流,标准指定了:
预期的解码输出——作为参考YUV文件(用于全像素精度比较)或解码图像缓冲区内容的CRC/SHA校验和。基于校验和的比较是自动化测试套件中的首选方法,因为它避免了参考YUV文件的存储开销并消除了浮点舍入问题。
解码器配置参数——包括输出格式(8位或10位)、色度格式(4:2:0、4:2:2或4:4:4)和帧率。被测解码器必须按指定方式精确配置以产生正确的输出。
容差阈值——对于不需要精确比特级输出的测试(例如后滤波处理),标准定义了PSNR和最大每像素误差阈值。解码器一致性的典型阈值是低于参考0.5 dB PSNR,且任意单个像素误差不超过2个量化级别。
构建一致性AVC编解码器需要仔细关注经常导致不一致的边缘情况:
参考图像管理:解码图像缓冲区(DPB)管理逻辑——包括滑动窗口和自适应内存控制——是AVC标准中最复杂的部分之一。DPB的一致性测试向量针对边缘情况进行测试,例如长期参考图像标记、内存管理控制操作(MMCO)命令和各级别的最大DPB大小。
算术精度:AVC规定了使用6阶FIR滤波器进行半像素位置运动补偿插值,双线性滤波器进行四分之一像素位置插值。中间舍入操作必须精确匹配规范。即使舍入中一位的差异也会在帧间累积,导致长视频序列中的可见漂移。
去块滤波器:滤波器强度是量化参数、运动矢量差异和编码残差信息的函数。边界强度赋值错误是常见的一致性失败来源。标准的测试向量包括专门为测试边界强度计算的每个分支而设计的序列。