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幀建模背景,因而出現編碼端丟幀的情況。