解码图像缓存器(decoded picture buffer,DPB)用于存放解码图像。DPB中既存在参考图像也存在非参考图像,那些不用于参考的图像输出后会被移除出DPB。
DPB的容量由SPS中的sps_max_dec_pic_buffering_minus1字段决定,HEVC中规定DPB容量最大为16。当DPB容量为1时,则其只能存储一帧当前解码图像,无法再存参考图像所以所有帧都必须使用帧内编码。
DPB中有三类图像:非参考(non-reference)图像、短期参考( short-term)图像、长期参考( long-term)图像。
DPB中图像状态变化如下:
一幅图像解码后首先被初始化为短期参考图像。短期参考图像可以保持为短期参考图像或变为长期参考图像、非参考图像。长期参考图像可以保持为长期参考图像或变为非参考图像,但是不能变成短期参考图像。非参考图像不能变为参考图像。
SPS中还有两个字段和DPB相关sps_max_num_reorder_pics和sps_max_latency_increase_plus1
sps_max_num_reorder_pics表示解码顺序在某图像之前,而显示顺序在该图像之后的图像的最大数量。
sps_max_latency_increase_plus1用于计算SpsMaxLatencyPictures表示显示顺序在某图像之前,而解码顺序在该图像之后的图像的最大数量。
感兴趣的请关注微信公众号Video Coding