H.264分层结构与码流结构
H.264分层结构
H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构,分别描述各个层次的信息。
在H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次。在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能再被正确解码出来,尤其在序列层及图像层。
在 H.264 中,分层结构最大的不同是取消了序列层和图像层,并将原本属于序列和图像头部的大部分句法元素游离出来形成序列和图像两级参数集,其余的部分则放入片层。
参数集是一个独立的数据单位,不依赖于参数集外的其他句法元素。一个参数集不对应某一个特定的图像或序列,同一序列参数集可以被多个图像参数集引用,同理,同一个图像参数集也可以被多个图像引用。只在编码器认为需要更新参数集的内容时,才会发出新的参数集。
复杂通信中的码流中可能出现的数据单位:
IDR: 在H.264中,图像以序列为单位进行组织。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。 IDR 图像一定是 I 图像,但 I 图像不一定是 IDR 图像。I帧之后的图像有可能会使用I帧之前的图像做运动参考。
H264码流结构
表1 NAL单元格式
|
|||
NAL头 | RBSP | NAL头 | RBSP |
RBSP 类型之一 PS: 包括序列参数集 SPS 和 图像参数集 PPS
SPS 包含的是针对一连续编码视频序列的参数,如标识符 seq_parameter_set_id、帧数及 POC 的约束、参考帧数目、解码图像尺寸和帧场编码模式选择标识等等。
PPS对应的是一个序列中某一幅图像或者某几幅图像,其参数如标识符 pic_parameter_set_id、可选的 seq_parameter_set_id、熵编码模式选择标识、片组数目、初始量化参数和去方块滤波系数调整标识等等。
标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL单元。
0:未规定
1:非IDR图像中不采用数据划分的片段
2:非IDR图像中A类数据划分片段
3:非IDR图像中B类数据划分片段
4:非IDR图像中C类数据划分片段
5:IDR图像的片段
6:补充增强信息 (SEI)
7:序列参数集
8:图像参数集
9:分割符
10:序列结束符
11:流结束符
12:填充数据
13 – 23:保留
24 – 31:未规定
转:https://www.cnblogs.com/lidabo/p/4582040.html
最新文章
- xUnit入门一
- fedora23也会死机, 怎么办
- .NET Nancy 详解(二) 简易路由实现
- contentSize、contentInset和contentOffset区别
- iOS如何添加照片模拟器(附带诉讼)
- Cloudsim 3.0在myclipse下的安装过程
- jQuery库冲突解决办法
- 使用 Gitbook 打造你的电子书
- VIM文本替换命令
- iOS-xcode代码统计
- 手机端仿ios的单级联动脚本三
- 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存
- OpenStack端口(15)
- Spring,Spring MVC及Spring Boot区别
- C++版- Leetcode 3. Longest Substring Without Repeating Characters解题报告
- ibatis中的resultMap
- 使用HttpClient发送Get/Post请求 你get了吗?
- springMVC 拦截器源码解析
- Delpher 必记-delphi环境安装
- firadisk 把 win7(32位) 装入 VHD :仅仅支持内存模式:--mem
热门文章
- AKOJ-2021-逆序对(归并,二分)
- pycharm 虚拟环境virtualenv迁移到别的机器 无法读取包的问题
- 牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别
- Masonry UIScrollView autolayout 的一个奇特的问题
- JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
- 学习php中的mysql()函数
- Somethings about Floors题解
- 关于js对象中的,属性的增删改查问题
- 第14周翻译:SQL Server的阶梯安全级别2
- Postgres远程访问配置