H264的熵编码和句法阅读

本文介绍了H264编码中熵编码模式的应用,以sps码流为例,详细解释了如何使用H264官方句法表解析码流,特别是描述符的作用。重点讲解了指数哥伦布编码和码流阅读步骤,包括如何根据NALU句法提取信息。
摘要由CSDN通过智能技术生成

H264为了进一步增加压缩率引入了熵编码模式,这就导致了很多时候无法从码流上直接按比特位读取到有效信息,所以必须要了解熵编码的原理才能帮助我们进行一些初步的码流阅读

句法规则

以一个sps码流为例,如何对它进行解读

我们需要用到H264官方提供的句法表,了解这段码流的组织形式,下图是NAL层和sps的RBSP的句法组织形式,我们必须按照这个组织形式才能正确的阅读这段码流

这里的关键在于表格最右出现的描述符

描述符

描述符其中有f(v),u(v),ue(v)等等

它的意思是告诉我们左边这个字段具体应该是怎么解析的

可以用一张表格来总结所有出现的描述符

描述符含义
f(n)n位固定bit串,左位在前
b(8)8位固定bit串,仅用于表示rbsp
u(n)n位固定无符号整数
i(n)n位固定有符号整数
ue(v)无符号指数哥伦布编码
se(v)有符号指数哥伦布编码
te(v)舍位指数哥伦布编码
me(v)映射指数哥伦布编码
ce(v)上下文自适应的变长编码
ae(v)上下文自适应的二进制算术编码

这里的指数哥伦布编码的具体编码方式和上下文自适应的编码方式另开文章介绍

指数哥伦布编码

码流阅读

那么这个码流的阅读就简单多了

其中00 00 00 01是起始码

根据NALU的句法

forbidden_zero_bit 是f(1), 就是读一个bit

即将0x67展开成二进制  0110 0111

读一个bit即是forbidden_zero_bit = 0

nal_ref_idc为u(2), 意思是读2个bit位,标识成一个无符号整数

则在 0[11]0 0111 继续读2个bit ,nal_ref_idc= [11] = 3

nal_unit_type 为u(5)就类似继续读5bit, [00111]

所以nal_unit_type = 7, 意思就是这个NAL是sps

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacen.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值