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 前添加起始码:0x0000010x00000001,用来指示一个NALU 的起始和终止位置。
在这样的机制下,在码流中检测起始码,作为一个NALU得起始标识,当检测到下一个起始码时,当前NALU结束。
3字节的0x000001只有一种场合下使用,就是一个完整的帧被编为多个slice(片)的时候,包含这些sliceNALU 使用3字节起始码。其余场合都是4字节0x00000001的。

发布了247 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/90135489
今日推荐