OpenGL ES系列---H264协议
系列 | 内核版本 |
---|---|
OpenGL | OpenGL ES - 示例及GLSurfaceView源码分析 |
H.264
,同时也是MPEG-4
第十部分,… 通常被称之为H.264/AVC
H.264
的功能分为两层,视频编码层(VCL
)和网络提取层(NAL
)
VCL
数据即编码处理的输出,它表示被压缩编码后的视频数据序列,在VCL
数据传输或存储之前,这些编码的VCL
数据,先被映射或封装进NAL
单元中。NAL
定义片级以上的语法级别(如序列参数集和图像参数集,针对网络传输)。
NALU
SPS | 序列参数集,SPS中保存了一组编码视频序列(Coded video sequence)的全局参数。 |
PPS | 图像参数集,对应的是一个序列中某一幅图像或者某几幅图像的参数。 |
I帧 | 帧内编码帧,可独立解码生成完整的图片。 |
P帧 | 前向预测编码帧,需要参考其前面的一个I 或者B 来生成一张完整的图片。 |
B帧 | 双向预测内插编码帧,则要参考其前一个I或者P帧及其后面的一个P帧来生成一张完整的图片 |
解析NALU
每个NAL
单元是一个一定语法元素的可变长字节字符串,包括包含一个字节的头信息(用来表示数据类型),以及若干整数字节的负荷数据。
NALU
头信息(一个字节)
其中:
T
为负荷数据类型,占5bit
;
R
为重要性指示位,占2bit
;
最后的F
为禁止位,占1bit
。
H.264
草案指出,当数据流是储存在介质上时,在每个NALU
前添加起始码:0x000001
或 0x00000001
,用来指示一个NALU
的起始和终止位置。
在这样的机制下,在码流中检测起始码,作为一个NALU
得起始标识,当检测到下一个起始码时,当前NALU
结束。
3
字节的0x000001
只有一种场合下使用,就是一个完整的帧被编为多个slice
(片)的时候,包含这些slice
的NALU
使用3
字节起始码。其余场合都是4
字节0x00000001
的。
文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。
原文链接:xuesong.blog.csdn.net/article/details/90135489
- 点赞
- 收藏
- 关注作者
评论(0)