AVC/HEVC解码后VUI信息存储位置问询:是否存于*.yuv文件?
关于AVC/HEVC解码后VUI信息存储的问题解答
问题背景与疑问
视频可用性信息(VUI)是可插入AVC(h.264)或HEVC(h.265)视频码流的额外信息,AVC与HEVC的定义文档明确要求解码器提取该信息,其编解码参考软件为JM(AVC)和HM(HEVC)。
疑问点:
- AVC/HEVC解码完成后,VUI信息存储在何处?
- 是否会被存入输出的
*.yuv文件中?
用户已研究两款参考软件,但无法追踪提取后VUI的后续去向,寻求专业建议。
核心解答
1. VUI信息不会写入*.yuv文件
*.yuv文件仅存储原始像素数据(亮度Y、色度U/V分量),属于纯像素载体,不包含任何码流元数据。VUI作为描述视频属性的元数据(如色彩空间、时序信息、扫描方式等),不会被写入YUV输出文件。
2. 参考软件中VUI的存储去向
- AVC JM解码器:提取后的VUI信息会被存储在
SeqParameterSet(序列参数集,简称SPS)结构体的vui_parameters成员中,该结构体保存在解码器的运行内存上下文里,主要用于指导解码流程(比如色彩空间转换、帧率同步等),不会被导出到外部文件。 - HEVC HM解码器:逻辑与JM一致,VUI信息封装在SPS的
vui_parameters结构体成员中,仅作为解码过程的控制参考数据存在于内存中,不会随像素数据输出。
追踪VUI流程的建议
- 在JM代码中,可在
decoder/src/seq_parameter_set.c(负责解析SPS和VUI)、decoder/src/decoder.c(解码主流程)中搜索vui_parameters关键字,查看其赋值、引用逻辑,能看到它仅服务于解码环节,未进入YUV输出的代码分支。 - 在HM代码中,可查看
source/Lib/TLibDecoder/TDecSPS.cpp(SPS解析)、source/Lib/TLibDecoder/TDecDecoder.cpp(解码主逻辑)中的VUI处理代码,同样能确认其仅作为内部控制数据使用。
内容的提问来源于stack exchange,提问作者JosefMaier93
相关产品推荐
相关产品推荐

