OpenGL ES系列---H264协议

举报
内核笔记 发表于 2021/06/08 22:40:48 2021/06/08
【摘要】 系列内核版本OpenGLOpenGL ES - 示例及GLSurfaceView源码分析 文章目录 NALU解析NALU H.264,同时也是MPEG-4第十部分,… 通常被称之为H.264/AVC H.264的功能分为两层,视频编码层(VCL)和网络提取层(NAL) VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列,在VCL数据传输或...
系列 内核版本
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的。

文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:xuesong.blog.csdn.net/article/details/90135489

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。