BG帧:用于计算一个图像与背景的差分结果的背景图像缓冲;在差分模式启用时,BG帧是S帧的参考帧.
差分预测全局运动矢量数量global_mv_num_x
4位无符号整数。表示当前图像在差分模式下与BG帧做差分运算时用到的横轴轴方向的全局运动矢量数量。
差分预测全局运动矢量数量global_mv_num_y
4位无符号整数。表示当前图像在差分模式下与BG帧做差分运算时用到的纵轴方向的全局运动矢量数量。
差分预测全局运动矢量global_mv_x[i]
4位无符号整数。表示当前图像在差分模式下与BG帧做差分运算时用到的全局运动矢量的横坐标。
差分预测全局运动矢量global_mv_y[i]
4位无符号整数。表示当前图像在差分模式下与BG帧做差分运算时用到的全局运动矢量的纵坐标。
差分模式允许标志 difference_mode_enable标志。
值为“1”表示当前图像允许使用差分模式编码。值为“0”表示当前图像不使用差分模式编码。
宏块差分模式标志 difference_mode_flag
标志。值为“1”表示当前宏块使用差分模式编码。值为“0”表示当前宏块不使用差分模式编码。
背景图像输出标志 background_picture_output_flag
标志。如果该标志不存在,BackgroundPictureOutputFlag的值为1。如果background_picture_output_flag的值为“1”,表示当前图像是应被输出的G帧,BackgroundPictureOutputFlag的值为1;如果background_picture_output_flag的值为“0”,表示当前图像是不应被输出的G帧,BackgroundPictureOutputFlag的值为0。
背景图像输出标志difference_mode_enable
标志。值为“1”表示当前图像启用已经允许使用的差分模式,DiffModeEnable的值为1;值为“0”表示当前图像关闭已经允许使用的差分模式,DiffModeEnable的值为0。
场景自适应标志 scene_adapt_disable
标志。值为“1”表示当前图像不应使用场景自适应;值为“0”表示使用场景自适应。SceneAdaptDisable的值等于scene_adapt_disable的值。
场景模型更新标志 scene_model_update_flag
标志。值为“1”表示应更新场景模型;值为“0”表示不更新场景模型。SceneModelUpdate的值等于scene_model_update_flag的值。
frames_before_next_intra
存在时,FramesBeforeNextIntra值等于frames_before_next_intra,不存在时FramesBeForeNextIntra值为0。
图像间距相同标志 next_distance_equal_flag
1位无符号整数,该标志存在且值为1表示该帧与后一帧的picture_distance相同。
9.4.5 参考图像选择
——如果当前图像是S帧并且PictureStructure 等于1,
——如果DifferenceModeEnable等于0,其参考图像是最近解码的G 帧。
——如果DifferenceModeEnable等于1,参考图像是当前的BG帧。
参考图像的标记方法如图29所示。此时NumberOfReference 等于1。
——如果当前图像是S帧并且PictureStructure 等于0,同时当前解码场在显示顺序上是第一场:
——如果DifferenceModeEnable等于0,其参考图像是最近解码的G 帧的第一场;
——如果DifferenceModeEnable等于1,参考图像是当前的BG帧的第一场。
参考图像的标记方法如图30所示。此时NumberOfReference 等于1。
——如果当前图像是S帧并且PictureStructure 等于0,同时当前解码场在显示顺序上是第二场:
——如果DifferenceModeEnable等于0,其参考图像是最近解码的G 帧的第二场;
——如果DifferenceModeEnable等于1,参考图像是当前的BG帧的第二场。
参考图像的标记方法如图31所示。此时NumberOfReference 等于1。
9.4.6 在视频中新加入一个建模图像,编码时只要保证给该图像分配帧号,打包时分配时间戳,那么在解码时的问题就如同普通的不输出G帧。解决了普通的不输出G帧的问题,建模G帧的问题就迎刃而解.
通过将背景建模图像作为G帧编入码流,这样一来,S帧在参考G帧编码时就可以得到更好的率失真特性,后续的PB帧通过参考S帧可以进一步获得编码效率提升,进而可以显著提高监控视频的编码性能。
但是,由于将背景建模图像作为G帧编入码流为视频序列引入了一个额外的编码帧,将会产生下列影响:
1、对于同时实时工作的编码+解码系统,在线工作时,要保证解码器的解码延迟不会累积。由于解码器大体上按照标准规定的“两帧时间间隔=帧率的倒数的”进行解码,如果编码端不丢帧,由于编码器中需要添加一帧背景建模帧,会导致播放时间大于编码端输入数据的时间,导致解码器播放器延迟累积。因而编码端需要丢一帧并将该帧的id分配给背景建模帧。于是,在规定的时间T内,信源输入的帧数为T×帧率,而编码器只编码了T×帧率-1帧原始图像,以及1帧建模背景,因而出现编码端丢帧的情况。