视频参考帧和重构帧复用

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、 参考帧重构帧采用紧凑压缩方式存储时,局部可能会发生压缩膨胀,导致预留空间不足

相关推荐
ALONE_WORK2 天前
ffmpeg-rk3568-mpp 硬件加速版本
ffmpeg·视频编解码·mpp·视频推流
高心星4 天前
鸿蒙6.0应用开发——图片合成视频
视频·图片处理·图片合成视频·鸿蒙6.0·harmonyos6.0
_Emma_5 天前
【Raspberry PI】Raspberry Pi HEVC (H.265) 硬件解码器
linux·驱动开发·视频编解码
_Emma_8 天前
【QCOM】 Linux下qcom venus 编解码驱动框架分析
linux·驱动开发·视频编解码
Hello.Reader10 天前
一堆 `.ts` 分片合并后音画不同步?从问题定位到通用修复脚本的完整实战
python·ffmpeg·视频
TEL1892462247710 天前
IT6636/IT66362(3进1出 / 2进1出 HDMI 2.1 48Gbps Retiming Switch,内置 MCU)
音视频·实时音视频·视频编解码
ipad协议开发11 天前
视频号直播间全功能自动化场控插件开发指南:基于 API 调用的全链路拆解
运维·微信·自动化·视频·ipad
AF_INET613 天前
RV1126B开发板学习篇(二)v4l2+mpp编码
c语言·经验分享·音视频·视频编解码·嵌入式软件·rv1126b
Struart_R15 天前
StreamVGGT、Stream3R、InfiniteVGGT论文解读
人工智能·计算机视觉·3d·视频·多模态
小虎卫远程打卡app17 天前
光通信与视频编码前沿技术综述:从超大容量传输到实时神经网络编码
运维·网络·信息与通信·视频编解码