一、基本概念
1.1H.264的解码顺序和显示顺序:
- 解码过程中,每一帧的数据按照相应的NAL Unit在码流中的顺序传入解码器进行解码
- 由于B帧的存在,视频帧在输出时会进行顺序重排
1.2frame_num与POC
- frame_num:表示解码顺序
- POC:表示显示顺序(picture_order_count)
- 在H.264的码流中,表示解码顺序和显示顺序分别有相应的语法元素表示。这两个值都会在码流中保存,并在读取slice信息时解析(SliceHeader中)
1.3参考帧列表
- 某一帧图像在解码完成后,可能会被保存于参考帧列表中;(不是一定,需要依赖于nal unit解析确定当前帧是否被其他帧参考)
- 参考帧列表中的图像作为帧间编码的参考数据
- 对P帧和B帧,参考帧列表有所不同
- P帧对应一个参考帧列表
- B帧对应两个参考帧列表
- 参考帧列表中的数据在某条件下可进行修改
二、frame_num和POC
2.1frame_num
- 代表视频的解码顺序:也就是编码器将每帧的图像压缩编码后写入到输出文件的顺序,同时也是解码时送入解码器的顺序