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)