织梦CMS - 轻松建站从此开始!

罗索实验室

H.264 中的指数哥伦布编码

落鹤生 发布于 2010-06-28 12:34 点击:次 
UVLC编码中有一种编码方式就是指数哥伦布编码。程序实现该编码时需要计算编码长度len及其value,下面分别对无符号和有符号两种指数哥伦布编码进行分析。
TAG:

H.264的一个重要特色就是采用UVLC(Universal Variable Length coding, 统一可变长编码)编码,提高了编码效率。

UVLC编码中有一种编码方式就是指数哥伦布编码。程序实现该编码时需要计算编码长度len及其value,下面分别对无符号和有符号两种指数哥伦布编码进行分析。

设编码值为code_val。

 

  1. static const int i_size0_255[256] = 
  2.     1,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 
  3.     6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 
  4.     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 
  5.     7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 
  6.     8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
  7.     8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
  8.     8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 
  9.     8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 
  10. }; 
  11.  
  12. void bs_write( bs_t *s, int bit_len, int value);  

1. ue(v)

        1) value = code_val+1
        2)len = 2*i_size0_255[value]+1
编程实现如下:
 
  1. void ue_v( bs_t *s, unsigned int code_val ) 
  2.     int i_size = 0; 
  3.     if( val == 0 ) 
  4.     { 
  5.         bs_write( s, 1, 1);  
  6.     } 
  7.     else 
  8.     { 
  9.         unsigned int tmp = ++code_val; 
  10.         if( tmp >= 0x00010000 ) 
  11.         { 
  12.             i_size += 16; 
  13.             tmp >>= 16; 
  14.         } 
  15.         if( tmp >= 0x100 ) 
  16.         { 
  17.             i_size += 8; 
  18.             tmp >>= 8; 
  19.         } 
  20.         i_size += i_size0_255[tmp]; 
  21.         bs_write( s, 2 * i_size - 1, code_val); 
  22.     } 

2. se(v)

        1) 若code_val>0:    value = 2*code_val-1
            若code_val>0:     value = -2*val
       2)len = 2*i_size0_255[value]+1
编程实现如下:
 
  1. static void se_v( bs_t *s, int code_val ) 
  2.     ue_v( s, code_val <= 0 ? -code_val  * 2 : code_val * 2 - 1); 

 

(leesphone)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201006/9740.html]
本文出处:CSDN博客 作者:leesphone
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容