1.什么是SPS

一个H264码流序列中,每个slice都会有各自的编码参数,其中有些参数在整个码流序列中不会改变,为节省码流,把这类参数提取出来放入SPS单独编码。这些参数就是SPS。

SPS是 nalu 单元的一种,它的nalu type是7。以一个h264码流为例,蓝色数据就是SPS。

2.SPS的语法结构

SPS语法结构如下:

profile_idc/level_idc:

h264通过 profile_idc 和 level_idc 来确定该码流支持哪些特性。
我们的测试码流中 profile_idc 对应第6个字节 0x42=66,level_idc对应第8个字节 0x1e=30.

seq_parameter_set_id:

表示当前SPS的唯一id,一个码流中可能存在多个SPS,由PPS根据seq_parameter_set_id 选择要使用的SPS。seq_parameter_set_id的数值范围是0-31.

chroma_format_idc:

表示YUV格式类型,

  • chroma_format_idc=0,为YUV400,也就是没有UV分量
  • chroma_format_idc=1,为YUV420
  • chroma_format_idc=2,为YUV422
  • chroma_format_idc=3,为YUV444

bit_depth_luma_minus8/bit_depth_chroma_minus8 :

表示亮度、色度分量数据位深,即一个像素分量由几个bit表示。
常见的位深是8bit,此时bit_depth_luma_minus8/bit_depth_chroma_minus8都为0.

seq_scaling_matrix_present_flag

表示量化矩阵是否存在,如果seq_scaling_matrix_present_flag=0,表示不存在,使用系数全为16的默认量化矩阵。

log2_max_frame_num_minus4:

用于计算MaxFrameNum的值。计算公式为MaxFrameNum = 2^(log2_max_frame_num_minus4 + 4)。
MaxFrameNum是frame_num的上限值,frame_num是图像解码序号。

pic_order_cnt_type

表示picture of count(POC)的计算方式,共由三种方式(0、1、2)。计算过程可看这篇 POC计算
POC表示图像的显示顺序,当存在B slice时,解码顺序和显示顺序不一样。

max_num_ref_frames

表示参考帧最大个数

pic_width_in_mbs_minus1

用于计算图像宽度,width=16*(pic_width_in_mbs_minus1+1)

pic_height_in_map_units_minus1

用于计算图像高度,计算过程需结合 frame_mbs_only_flag。
height = ( 2 − frame_mbs_only_flag ) *(pic_height_in_map_units_minus1+1)*16

frame_mbs_only_flag

表示码流中是否只存在帧宏块,如果frame_mbs_only_flag =1,表示码流中图像为帧格式,否则可能时场格式和MBAFF

mb_adaptive_frame_field_flag

表示是否使用宏块级帧场自适应编码,如果mb_adaptive_frame_field_flag=1,则宏块可能帧宏块,也可能是场宏块,具体由宏块头中的mb_field_decoding_flag决定。

direct_8x8_inference_flag

用于B slice中 B_Skip\B_Direct宏块 direct 预测 mv。
frame_mbs_only_flag= 0时,direct_8x8_inference_flag 需为 1.

frame_cropping_flag

表示解码后的图像需要根据crop信息进行裁剪,如下图所示。真实图像数据为黄色区域,而解码输出数据为蓝色区域(包括黄色区域)。通过4个crop信息可以得到真实数据区域。
通常crop信息出现在图像宽高不是16整数倍的码流中,因为H264解码以16x16大小宏块为单位,图像真实宽高需要16byte对齐。

vui_parameters_present_flag

表示SPS中是否存在VUI信息。

H264/AVC-SPS(序列参数集)解析相关推荐

  1. H264参数SPS(序列参数集)和PPS(图像参数集)说明

    H264参数SPS(序列参数集)和PPS(图像参数集)说明 https://blog.csdn.net/heanyu/article/details/6191576 https://blog.csdn ...

  2. h264、sps、pps详解

    1.学习路线 step1.初步了解h264,了解h264数据帧分类和识别 step2.h264语法相关算法解析,这里对理解h264的视频帧很重要.通俗的说h264数据定义是由一组Bit组成,但是某个字 ...

  3. H264编码介绍和参数设置

    视频h264编码流程 宏块划分 Macro Block 帧内预测 I帧 帧间预测和GOP P帧和B帧 DCT离散余弦变换 量化 熵编码 preset 预设编码器 预设编码器 比特率控制 恒定比特率(C ...

  4. H264/AVC NAL单元和解码

    在264中,NAL是以NALU(NAL unit)为单元来支持编码数据在基于包交换技术网络中的传输的:它定义了符合传输层或存储介质需求的数据格式,同时提供头信息,从而提供了视频编码与外部世界的接口.网 ...

  5. 音视频系列--哥伦布编码和H264片段sps解析宽高信息

    H.264码流中的NALU进行了一个简单的划分,标出了NALU的类型和长度等信息.因为我们在解析SPS和PPS中要使用到指数哥伦布编码的解析,所以有必要了解一下指数哥伦布编码. 一.指数哥伦布编码(理 ...

  6. 解析H264的SPS信息

    原文链接 在做音视频开发的时候,存在不解码视频帧的前提下需要获取视频宽高.帧率等信息,而H.264中的SPS数据可为我们提供这些相关的信息.在此之前,我们需要对一些协议和算法有一定的初步了解,后文中有 ...

  7. H264之sps解析分辨率

    sps定义如下: 解析如下: 分辨率: 宽高可从SPS字段计算得到,公式如下: Width = (pic_width_in_mbs_minus1+1)*16; Height = (pic_height ...

  8. 音视频开发之旅(56) -H264/AVC基本结构

    从这篇开始,我们进入H264的学习实践,主要分三个阶段 学习H264基本结构: 了解具体编码压缩技术: 分析了解相关开源库 x264和h264bitstream. 这篇我们来一起学习H264的基本结构 ...

  9. 【H264/AVC 句法和语义详解】(二):h264码流格式与NALU详解一

    上一篇中,我们站在句法元素(或称语法元素)的角度,介绍了H.264的句法和语义,和句法元素的分层结构.在这篇中,我们更进一步,从比特的角度出发,来探索h264码流的组成.通过这篇的学习,我们会初步具备 ...

最新文章

  1. 【统计学习方法】K近邻对鸢尾花(iris)数据集进行多分类
  2. CommonsMultipartFile 转为 File 类型
  3. zblog php标签,201502200101 zblogphp调整“显示常用标签”个数方法
  4. Android延伸布局到状态栏,Android 状态栏透明
  5. javascript MouseEvent对象
  6. 阿里MySQL读写一致_缓存与数据库读写一致的解决方案
  7. windows 系统电脑内外网出问题,解决方案
  8. html页眉页脚独立,页眉页脚怎么单独设置
  9. Tri Tiling
  10. WINRAR诊断信息:不可预料的压缩文件末端
  11. 加密币Terra创始人权道亨已从新加坡飞往杜拜转往第三国
  12. WPP和iHeartMedia推出“聆听项目”
  13. 卡片机和单反机详细对比
  14. LeetCode——面试题 10.11. 峰与谷(JAVA)
  15. JAVA--阿尔法平台编程练习---篮球弹跳
  16. Django框架的中的setting.py文件说明详解
  17. Vue学习之混入(Mixin)
  18. 远程桌面连接,有时候由于操作不当,导致远程桌面出现蓝屏,不显示桌面,一片空白。
  19. AndroidStudio中Method “xxx” is never used 解决方案
  20. 多维分析预汇总应该怎样做才管用?

热门文章

  1. html-盒子模型-垂直布局
  2. C语言入门与进阶——typedef与#define
  3. mysql备份文件的有效性,MySQL备份和还原总结
  4. C# DateTimePicker:日期时间控件
  5. mysql查询persons表中是否存在_Sql语句的一些事(一)
  6. Gets和scanf的区别
  7. python抢购火车票源代码_Python动刷新抢12306火车票的代码(附源码)
  8. 十年前是2006,不是1996
  9. 在SAP中使用标准表维护SM30说明
  10. 牛客练习赛3 贝伦卡斯泰露——队列爆搜