基於內容的自適應變長編碼

2021-05-24 07:57:18 字數 2204 閱讀 2162

基於內容自適應的變長編碼方式用於編碼

zigzag

順序掃瞄的

4x4和

2x2殘差變換係數塊。 1、

編碼係數個數和零序列

(coeff_token):

coeff_token = ;

totalcoeff =

編碼非零係數總數

;[0 , 16]

trailingones =

特殊處理的

+/-1

個數;[0 , 3] 2、

編碼每個

trailingone

的符號:

倒序,從高頻開始向前編碼

trailingone

符號,每個符號一位,

0為正,

1為負,最多為3個。

3、編碼餘下非零係數的幅值:

編碼順序

:倒序,從高頻開始向前編碼直到

dc係數,每個幅值碼字level[i]包含乙個幅值字首level_prefix和乙個幅值字尾level_suffix。

level[i]:

level

為實際係數的幅值。但有個例外:

當trailingones<3時,那麼被編碼的第乙個非t1 幅值肯定不是+/-1(否則將算作t1)。這個幅值如果為負就加1(如果為正就減1),例如+/-2 被對映成+/-1, +/-3對映成+/-2進行編碼,這樣可以用較短的變長碼.

levelcode:

如果 level[i]

為正, levelcode = (level[i] << 1) - 2;

如果 level[i]

為負, levelcode = -(level[i] << 1) - 1; 計算

level_prefix

: 編碼時

:level_prefix = levelcode / (1 << suffixlength);

根據level_prefix

查標準表

9-6得到碼字

解碼時:

從位元流的當前位置開始讀取,計算為0的

leading bits

數量。0

的長度即為

level_prefix

值,對應關係可察看標準文件中表9-6。 計算

suffixlength:

suffixlength

為0-6

位元,其長度是自適應變換的。

suffixlength

增長過程: 1、

初始化suffixlength = 0 ;

如果有超過

10個非零係數,並且少於3個

tailingones

,這時suffixlength = 1;

2、編碼最高頻的非零係數; 3、

如果這個係數的幅值大於一定的閾值,則增長

suffixlength 當前

suffixlength 增加

suffixlength

的係數閾值 0

0 13 2

6 312 4

24 5

48 6

n/a

更新suffixlength

函式如下:

if(suffixlength == 0)

++suffixlength;

else if(level[i] > (3<

++suffixlength; 計算

levelsuffixsize

: (字尾是長度為levelsuffixsize的無符號整數)

除了以下兩種情況

levelsuffixsize

等於suffixlength:

1、level_prefix == 14 && suffixlength == 0

時, levelsuffixsize = 4; 2、

level_prefix >= 15

時,levelsuffixsize = level_prefix – 3; 4、

編碼最後乙個非零係數前零的個數

使用vlc

編碼最高頻非零係數前所有零的個數

total_zeros:

既為最高非零係數前所有零的個數;編碼表見標準表9-7;表9-8;表9-9

5、編碼每個零遊程

zerosleft

: 當前係數之前所有的零的個數

run_before

: 緊接當前係數前的零個數

基於JTable的列寬與內容自適應的實現方法

jta程式設計客棧ble預設的各列寬度平均,下函式可以實現各列寬度與內容長度適應!複製 如下 public void fittablecolumns jtable mytable header.setresizingcolumn column 此行很重要 column.setwidth width ...

基於MPC的自適應巡航控制

關於mpc 模型 控制 網上的理論很多,簡單易懂的,複雜全面的都有。這邊我也記錄一下mpc的學習,主要是通過汽車acc的例子,這裡汽車模型只是簡單的積分器,主要目的還是mpc的乙個應用。中間的相減模組不小心被注釋掉了,不想開啟matlab重新截圖了,因為懶,直接編輯了一下,ahhh 首先分別用兩個積...

webView自適應實際內容高度的問題

問題描述 專案詳情要用h5展示,載入webview,高度不確定,需要根據webview的內容高度去設定。webview可以在載入完成時獲取到網頁內容高度,然後再去改變webview的frame即可。void webviewdidfinishload uiwebview webview webview...