H.266/VVC代碼學習43:VLC編解碼

在ALF的係數上糾結了兩個周,不瞭解它爲什麼沒有傳flag卻可以從解碼端直接獲得,終於終於在VLCReader.cpp中抓到了它,也許這對RBSP的瞭解也有很大的益處吧,下面走進變長編碼的世界。

1 簡介

VLC即變長編碼。原理是用短碼來編頻率高的信息來達到少比特的目的。
我們知道視頻編碼中多數內容都是通過CABAC進行編解碼的,對多數flag和變換系數熵編碼都使用,並具有較高的編碼效率。但以零階指數哥倫布碼爲首的VLC的編碼效率對於廣義高斯信源也很高,且編解碼簡單,因此在VPS、SPS、PPS參數和Slice頭信息的大部分語法元素上都得以使用

2 零階指數哥倫布碼

只要根據碼字信息就能計算出編碼後的碼長,通過簡單的計算解碼碼字,無需查表。
解碼方式:
1、讀取第一個1前面0的個數,有幾位0就先加上2的幾次方,記爲C1
2、讀取第一個1後面的二進制數字,記爲C2
3、解碼值爲C1+C2-1,若需要表達有符號數,則如下表所示:

碼字 解碼值 有符號數
1 0 0
010 1 1
011 2 -1
00100 3 2
00101 4 -2
00110 5 3
00111 6 -3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章