视频参考帧和重构帧复用

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

相关推荐
d6760158632 天前
如何使用混剪工具 + 豆包 做漫画视频
人工智能·视频编解码
Never_every992 天前
8 个高清 4K 视频素材网址!无水印可商用
大数据·前端·音视频·视频
承渊政道2 天前
群晖配Plex搭建私人影音中心,用起来到底怎么样?
服务器·windows·网络协议·https·ip·视频·持续部署
大学生小郑3 天前
如何定义图像质量,如何评价图像质量
图像处理·学习·音视频·视频
枫叶丹43 天前
【HarmonyOS 6.0】AVCodec Kit 同步模式视频编解码深度解析:从API演进到高性能实战
开发语言·华为·harmonyos·视频编解码
珊瑚怪人5 天前
分享一个Edge浏览器播放H265 RTSP流的问题,涉及到ZLMediaKit、WebRTC
音视频·视频·js·zlmediakit·视频流处理
悦悦子a啊7 天前
将wallpaper上的壁纸下载到本地的方法
视频编解码·wallpaper·repkg-gui
Code-keys8 天前
Android Codec2 Filter 算法模块开发指南
android·算法·音视频·视频编解码
wiliam_luky9 天前
视频编解码
网络·视频编解码
_Emma_11 天前
【Linux media】Linux Media Driver Framework
linux·服务器·视频