H264---片slice 和 宏块Macroblock

H.264(九)Slice数据和宏块结构

H.264的语法单元:H.264中没有I图像,P图像和B图像的概念,取而代之的是I片,P片和B片:
在这里插入图片描述

0、Slice的概念

在这里插入图片描述

定义Slice的意义:为限制误码的扩散和传输
1、一个Slice:包含某一帧的全部(不分片时)或部分数据(分片时)
2、不同的slice之间,其解码操作独立👉防止误码的扩散
    slice的解码过程所参考的数据(例如预测编码)不能越过slice的边界

图像解码过程中总是按照片slice进行解码,然后按照片组将解码宏块重组成图像。

5种Slice的类型

根据码流中不同的数据类型,H.264标准中共定义了5种Slice类型:
I slice: 帧内编码的条带;							只包含I宏块
P slice: 单向帧间编码的条带;							包含P宏块,可能有I宏块
B slice: 双向帧间编码的条带;							包含B宏块,可能有I宏块
SI slice: 切换I条带,用于扩展档次中码流切换使用;		SI + I
SP slice: 切换P条带,用于扩展档次中码流切换使用;		P + I

0、 slice通过nalu装载并进行网络传输

NALU内可以是切片,也可能装载着其他用作描述视频的信息,如sps ppe等

1、若不采用DP数据分割机制,一片只包含1个NALU,
2、若采用DP数据分割,则一片拆分成3个NALU,nal_unit_type值等于234(A、B、C)的NALU属于同一个片
		  分割A:包含片头和片中每个宏块头数据。			nal_unit_type=2
  		分割B:包含帧内和 SI 片宏块的编码残差数据。	nal_unit_type=3
  		分割C;包含帧间宏块的编码残差数据。			nal_unit_type=4
   		每个分割可放在独立的 NAL 单元并独立传输。
   		//如果分割 A 数据丢失,便很难或者不能重建片,因此分割 A 对传输误差很敏感。
   		//解码器可根据要求只解 A 和 B 或者A和 C,以降低在一定传输条件下的复杂度。

1、4类Slice

在这里插入图片描述
在这里插入图片描述

Slice_body,通常是一组连续的宏块结构(或者宏块跳过信息)
在这里插入图片描述

1.1 Slice_Header

1、first_mb_in_slice:片中的第一个宏块的地址, 片通过这个句法元素来标定它自己的地址。
					注意:在【帧场自适应模式】下,宏块都是成对出现,这时本句法元素表示的是第几个宏块对,
							对应的第一个宏块的真实地址应该是2 * first_mb_in_slice

2、slice_type:指明片的类型,IDR 图像时, slice_type 等于 2, 4, 7, 9。
num_of_slice_type	slice_type
	 0				P(P slice)
	 1				B(B slice)
	 2				I(I slice)
	 3				SP(SP slice)
	 4				SI(SI slice)
	 5				P(P slice)
	 6				B(B slice)
	 7				I(I slice)
	 8				SP(SP slice)
	 9				SI(SI slice)</
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值