編碼過程:
假設有乙個4*4資料塊
資料重排列:0,3,0,1,-1,-1,0,1,0……
1) 初始值設定:
非零係數的數目(totalcoeffs) = 5;
拖尾係數的數目(trailingones)= 3;
最後乙個非零係數前零的數目(total_zeros) = 3;
變數nc=1;
(說明:nc值的確定:色度的直流係數nc=-1;其他係數型別nc值是根據當前塊左邊4*4塊的非零係數數目(na)當前塊上面4*4塊的非零係數數目(nb)求得的,見畢厚傑書p120表6.10)
suffixlength = 0;
i = totalcoeffs = 5;
2) 編碼coeff_token:
查標準(bs iso/iec 14496-10:2003)table 9-5,可得:
if (totalcoeffs == 5 && trailingones == 3 && 0 <= nc < 2)
coeff_token = 0000 100;
code = 0000 100;
3) 編碼所有trailingones的符號:
逆序編碼,三個拖尾係數的符號依次是+(0),-(1),-(1);
即: trailingone sign[i--] = 0;
trailingone sign[i--] = 1;
trailingone sign[i--] = 1;
code = 0000 1000 11;
4) 編碼除了拖尾係數以外非零係數幅值levels:
過程如下:
(1)將有符號的level轉換成無符號的levelcode;
如果level是正的,levelcode = (level<<1) – 2;
如果level是負的,levelcode = - (level<<1) – 1;
(2)計算level_prefix:level_prefix = levelcode / (1< (3 回到例子中,依然按照逆序,level[i--] = 1;(此時i = 1) levelcode = 0;level_prefix = 0; 查表9-6,可得level_prefix = 0時對應的bit string = 1; 因為suffixlength初始化為0,故該level沒有字尾; 因為suffixlength = 0,故suffixlength++; code = 0000 1000 111; levelcode = 4;level_prefix = 2;查表得bit string = 001; level_suffix = 0;suffixlength = 1;故碼流為0010; code = 0000 1000 1110 010; i = 0,編碼level結束。 5)編碼最後乙個非零係數前零的數目(totalzeros): 查表9-7,當totalcoeffs = 5,total_zero = 3時,bit string = 111; code = 0000 1000 1110 0101 11; 6) 對每個非零係數前零的個數(runbefore)進行編碼: i = totalcoeffs = 5;zerosleft = total_zeros = 3;查表9-10: 依然按照逆序編碼 zerosleft =3, run_before = 1 run_before[4]=10; zerosleft =2, run_before = 0 run_before[3]=1; zerosleft =2, run_before = 0 run_before[2]=1; zerosleft =2, run_before = 1 run_before[1]=01; zerosleft =1, run_before = 1 run_before[0]不需要碼流來表示 code = 0000 1000 1110 0101 1110 1101; 編碼完畢。 編碼過程 假設有乙個4 4資料塊 資料重排列 0,3,0,1,1,1,0,1,0 1 初始值設定 非零係數的數目 totalcoeffs 5 拖尾係數的數目 trailingones 3 最後乙個非零係數前零的數目 total zeros 3 變數nc 1 說明 nc值的確定 色度的直流係數nc 1... 例項解析 nc 1 編碼後得到輸出碼流為 0000 1000 1110 0101 1110 1101 解碼詳細過程如下 1.根據coeff token和nc查表 見標準表9 5 得到非零係數數目totalcoeffs和拖尾係數數目trailingones nc 1選擇對應的表,coeff token... 程式從一堆字元怎麼變成乙個可執行的程式呢,在這我們使用最簡單的乙個hello word 程式來演示程式的乙個完整流程。在這過程中找到一些有用的除錯方法,幫助我們在debug時快速解決問題。程式編譯時的整體流程經過 執行環境 windows 10 cygwin gcc 版本 7.4.0 按照c語言語法...CAVLC編碼過程詳解
H 264中CAVLC解碼過程詳解
從編碼到執行 程式編譯過程詳解