openh264中关于SVC的编码结构

openh264中的SVC包括时域可伸缩、空域可伸缩编码。

时域可伸缩编码

时域可伸缩编码是通过调节图像的帧率,在基本层帧率和最高帧率之间提供帧率的可伸缩性。当网络带宽较窄时,接收端只需接收基本层帧率f_BL帧图像就可以恢复出基本视频;当网络带宽较宽时,接收端可以接收到f_BL+f_EL帧图像,这样解码后的视频更流畅。
时域可伸缩在编码的时候根据一个时间ID分成基本层和增强层进行编码,先编基本层,再编增强层,增强层可以有一个,也可以有多个。增强层可以参考基本层。一个基本层和增强层组织成一个GOP。openh264中时域可伸缩编码结构如下,这里空域层数都是1。
编码过程中根据TemporalLayerNum的值来确定时域层数,GOP的大小也根据TemporalLayerNum的值来确定,GOPSize=2^(TemporalLayerNum-1).
TemporalLayerNum=1时,GOPSize=1,,codingIdx2TemporalId={0,0} ,只有一个基本层,编码结构如下:
在这里插入图片描述
TemporalLayerNum=2时,GOPSize=2,,codingIdx2TemporalId={0,1,0} ,有一个基本层,一个增强层,编码结构如下:
在这里插入图片描述
TemporalLayerNum=3时,GOPSize=4,,codingIdx2TemporalId={0,2,1,2,0} ,有一个基本层,两个增强层,编码结构如下:
在这里插入图片描述
从这些图中可以看出,增强层可以参考基本层,基本层不能参考增强层。对于增强层,时间级别高的可以参考时间级别低的,时间级别低的不能参考时间级别高的。

空域可伸缩编码

空域可伸缩编码是将视频中的图像分为多个不同的分辨率。其主要思想是对原始视频的每帧图像进行下采样得到低分辨率的图像,对其编码得到空域基本层码流。然后编码原始视频和低分辨率图像上采样恢复图像的差值信息,生成增强层码流。当接收端接收到基本层后就可以解码恢复出低分辨率的基本视频。当接收端还能接收到增强层数据时,重建的图像的分辨率增加,当接收端接收到所有增强层的数据就可以恢复出原始分辨率的图像。
openh264中是在配置文件welsenc.cfg中设置空域层数,其参数是NumLayers,若NumLayers设为3,则对应的LayerCfg配置文件也要设置3个,并且每个LayerCfg文件中的分辨率都不一样,分辨率最低的是基本层,3个LayerCfg文件中的SpatialBitrate值的和不能超过welsenc.cfg中的TargetBitrate值。
当TemporalLayerNum=3,NumLayers=2时,编码结构如下图:
在这里插入图片描述
这时增强层S1将基本层S0作为参考层。
当TemporalLayerNum=3,NumLayers=3时,编码结构如下图:
在这里插入图片描述
这时增强层S2将S1作为参考层。空域基本层和增强层的帧间预测过程稍有不同。增强层会根据参考层宏块的MV得到sBaseMv,这个值将加入到增强层宏块的运动矢量预测列表中。
从图中可以看出,空域基本层的参考图像是空域基本层,空域增强层的参考图像是空域增强层。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值