网络抽象层单元类型 (NALU)

NALU是H.264编码中的关键组成部分,其头信息包含F、NRI和Type字段。F位必须为0,NRI用于指示NALU的重要性,Type定义了NAL单元的类型,包括单独的NAL单元和不同类型的组合包。解码时需要注意起始码的处理,以及在编码时防止与起始码混淆的脱壳操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.cppblog.com/czanyou/archive/2008/11/26/67940.html

 网络抽象层单元类型 (NALU)

NALU 头由一个字节组成, 它的语法如下:

      +---------------+
      |0|1|2|3|4|5|6|7|
      +-+-+-+-+-+-+-+-+
      |F|NRI|  Type   |
      +---------------+

F: 1 个比特.
  forbidden_zero_bit. 在 H.264 规范中规定了这一位必须为 0.

NRI: 2 个比特.
  nal_ref_idc. 取 00 ~ 11, 似乎指示这个 NALU 的重要性, 如 00 的 NALU 解码器可以丢弃它而不影响图像的回放. 不过一般情况下不太关心

这个属性.

Type: 5 个比特.
  nal_unit_type. 这个 NALU 单元的类型. 简述如下:

  0     没有定义
  1-23  NAL单元  单个 NAL 单元包.
  24    STAP-A   单一时间的组合包
  25    STAP-B   单一时间的组合包
  26    MTAP16   多个时间的组合包
  27    MTAP24   多个时间的组合包
  28    FU-A     分片的单元
  29    FU-B     分片的单元
  30-31 没有定义

========================


起始码:如果 NALU 对应的 Slice 为一帧的开始,则用 4 字节表示,即 0x00000001;
否则用 3 字节表示,0x000001。 
NAL Header:forbidden_bit,nal_reference_bit(优先级),nal_unit_type(类型)。 
脱壳操作:为了使 NALU 主体不包括起始码,在编码时每遇到两个字节(连续)的 0,
就插入一字节 0x03,以和起始码相区别。解码时,则将相应的 0x03 删除掉。 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值