视频参考帧和重构帧复用

1、 视频编码中的参考帧和重构帧

从下图的编码框架可以看出,每编码一帧需要先使用当前帧CU(n)减去当前帧的参考帧CU'(n)得到残差。同时,需要将当前帧的重构帧CU*(n)输出,然后再读取重构帧进行预测,得到下一帧的参考帧CU'(n+1)。

考虑单P帧,且没有进行参考帧复用的情况下,我们需要申请2块buffer分别存放当前帧的参考帧和重构帧。如下图所示,rcn位写入重构帧指针,ref为读取参考帧指针。

由于读者和写者都只有一个,那么理论上可以设计成队列的形式,使用一块buffer来完成,当参考帧的一部分数据被读走以后就可以写入重构帧数据。这样的设计可以节省内存,但是由于参考帧内容读取 以后被覆盖,因此该过程不可逆,在出现异常时,无法重编当前帧。

2、单P帧的参考帧重构帧复用方案

单P帧的参考帧重构帧复用情况如下,类似于环形队列,从下图也可以看出,参考帧重构帧复用节省的内存<1帧所需要的buffer大小,原因时需要保持一定的安全距离,安全距离的大小和配置的搜索窗大小有关,目的是保证被覆盖的参考帧数据在搜索窗之外,不影响编码的参考。

3、双P帧的参考帧重构帧复用方案

  1. 双P帧的GOP结构

双P帧模式下P帧参考就近的两个前向参考帧,能够利用更多参考帧的时域相关性提升编码压缩性能。主要应用在运动且有低延时要求的场景,双P帧的压缩性能高于单P帧模式。

双P帧分为无SP帧和有SP帧两种情况,SP帧指特殊的P帧,这里简称SP帧,该帧Qp值推荐小于其他P帧Qp值。

无SP帧的GOP结构如下图所示:

有SP帧的GOP结构如下图所示:

  1. 无SP帧的buffer轮转

双P帧有2个前向参考帧,开启参考帧重构帧复用以后,需要申请两块buffer,无SP帧时,buffer的轮转如下图所示。参考帧有两帧,在每一帧的处理中,重构帧只需要与其中一个参考帧buffer复用。

  1. 有SP帧的buffer轮转

有SP帧时,SP帧和I帧作为长期参考帧不能被覆盖,仅当长期参考帧刷新时与重构帧复用。

4、参考帧和重构帧复用优缺点

优点:

  1. 节省内存

缺点:

1、 由于参考帧会被覆盖,整个过程不可逆,所以不支持重编

2、 单参考帧情况下省内存明显,多参考帧效果变差。参考帧数量

大于(图像高度 / 搜索框高)时,出现负收益

3、 参考帧重构帧采用紧凑压缩方式存储时,局部可能会发生压缩膨胀,导致预留空间不足

相关推荐
qq_2529599716 小时前
8K+Red+Raw+ProRes422分享5个影视级视频素材网站
视频
野蛮的大西瓜1 天前
BigBlueButton视频会议 vs 华为云会议的详细对比
人工智能·自动化·音视频·实时音视频·信息与通信·视频编解码
野蛮的大西瓜1 天前
BigBlueButton视频会议 vs 钉钉视频会议系统的详细对比
人工智能·自然语言处理·自动化·音视频·实时音视频·信息与通信·视频编解码
无法雾题啊3 天前
拍摄镜头模式要怎么选择
视频编解码
野蛮的大西瓜3 天前
大模型和呼叫中心的结合如何提高自动化水平?
运维·自然语言处理·机器人·开源·自动化·音视频·视频编解码
野蛮的大西瓜3 天前
BigBlueButton视频会议 vs 华为视频会议系统的详细对比
人工智能·机器人·自动化·音视频·实时音视频·信息与通信·视频编解码
盛世隐者7 天前
ffprobe文档
音视频·视频编解码
无法雾题啊8 天前
一行一行出字的视频怎么做?简单的操作方法
音视频·视频编解码
人才程序员8 天前
ffmpeg C语音 读取视频帧源码
c语言·c++·ffmpeg·音视频·webrtc·实时音视频·视频编解码
PsEmperor10 天前
mp4影像和m4a音频无损合成视频方法
音视频·视频编解码