哥伦布编码以及sps分析

h264有官方标准文档,可以下载一个看看

先看一下哥伦布编码再看sps内容

指数哥伦布编码
规定语法元素的编解码模式的描述符如下:
比特串:
b(8):    任意形式的8比特字节(就是为了说明语法元素是为8个比特,没有语法上的含义)
f(n):     n位固定模式比特串(其值固定,如forbidden_zero_bit的值恒为0)
i(n):     使用n比特的有符号整数(语法中没有采用此格式)
u(n):    n位无符号整数
指数哥伦布编码:
ue(v):   无符号整数指数哥伦布码编码的语法元素
se(v):   有符号整数指数哥伦布编码的语法元素,位在先
te(v):    舍位指数哥伦布码编码语法元素,左位在先
ce(v):CAVLC

ae(v):CABAC。


指数哥伦布编码过程:
在表9-1中,比特串格式为“前缀+1+后缀”。

1)1后缀=codeNum+1,如codeNum = 3,则1后缀=4,即为100,后缀为00(100后面的00);

2)前缀与后缀的比特数相同,且前缀的各位比特为0,如codeNum=3,则最终编码所得的比特串为:00100.
对于ue(v),按上述规则进行编码;
对于se(v),则按照表9-3转换成codeNum,然后按上述规则进行编码;


有了上面的基础,现在我们看一下一段h264流的数据,就是之前一篇文章里提到的 AVC sequence header

就重复的使用这张图片的数据吧

在这里建议大家看一下h264文档的7.3.2.1 序列参数集RBSP语法,对照着文档我们可以开始分析数据

这里面我们只看sps的数据

67 42 80 1E 96 54 0A 0F D8 0A 84 .........42 44 D4

 67 ---0110 0111 

forbidden_zero_bit(1)= 0//网络传输正确
nal_ref_idc(2)= 11//参考值为3
nal_unit_type(5) = 0 0111:seq_parameter_set_rbsp( )//7,序列参数集
说明这个NALU的RBSP里装的是SPS数据 ,所以 processSPS

42 --- 0100 0010

profile _idc(8)  = 66

80 --- 1000 0000

constraint_set0_flag(1):1
constraint_set1_flag(1):0
constraint_set2_flag(1):0
constraint_set3_flag(1):0
reserved_zero_4bits(4):0

1E ---- 0001 1110
level_idc(8) = 30

 

后面注意了seq_parameter_set_id以及后面几个是ue(v)类型的,就是哥伦布编码

96 54 0A 0F D8

1001 0110 0101 0100 0000 1010 0000 1111 1101 1000

1

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值