首先解码器中有一个全局变量seq_parameter_set_rbsp_t SeqParSet[MAXSPS];
//++ MAXSPS=32,它是一个指向序列参数集的数组。
还有一个全局变量seq_parameter_set_rbsp_t *active_sps;主要为后续解码所用。
解码器先将码流中的数据读入临时指针sps,之后存入全局变量数组SeqParSet,最后需要使用这些参数时,将SeqParSet中的数据读入active_sps,同理pps。
整个过程如下:
case NALU_TYPE_SPS:
//NALU_TYPE_SPS=7,对应C=0,第一个解码
ProcessSPS(nalu);
void ProcessSPS (NALU_t *nalu)
{
…………
seq_parameter_set_rbsp_t *sps = AllocSPS(); //++ 返回值为指向序列参数集的指针
…………
dummy = InterpretSPS (dp, sps); //在此函数里将码流中的句法元素读入sps
…………
MakeSPSavailable (sps->seq_parameter_set_id, sps);
}
void MakeSPSavailable (int id, seq_parameter_set_rbsp_t *sps)
{
assert (sps->Valid == TRUE);
memcpy (&SeqParSet[id], sps, sizeof (seq_parameter_set_rbsp_t));
//hainei_10_3_15_将读入的sps存入全局变量数组SeqParSet,以备后用
}
UseParameterSet (currSlice->pic_parameter_set_id);
{
…………
sps =
&SeqParSet[PicParSet[PicParsetId].seq_parameter_set_id];
…………
activate_sps(sps);
…………
}//此函数在解码IDR内有调用。
分享到:
相关推荐
通过具体的例子详细的分析h264编码算法的sps和pps字段的具体涵义和解析方法。
程序获取h264中sps与pps。附上h264码流小片断
一眼看出NALU中SPS与PPS与SEI与IDR与P帧
MP4格式及在MP4文件中提取H264的SPS、PPS及码流
本文档讲叙如何从mp4文件中查找 sps pps等和h264编码信息相关的内容,同时介绍了h264 raw 流中 naul单元的分类。
内含30w、720p、1080p图像的sps pps头,可用来给解码器解码,只需把内容复制到码流的最前面就可以了
h264协议sps pps解析
可在linux下编译通过的c++ sps pps解析类。读取文件(包中有测试文件),解析结果显示在打印里。可自行修改。
psips, 在h264位流中,复制 sps/pps 实时HLS与 树莓派 摄像机的流。我想使用 树莓派 相机来编码of流的视频,iphone 。ipad和许多它的他设备使用的格式。 HLS使用h264编码用于视频和AAC音频。不幸的是,我无法很容易...
c+提取h264的sps pps,从ffmpeg中提取出来的,亲测可用
本源码主要是完成了基于H264中的sps(0000000167)及pps(0000000168)的H264编码数据的解析 直接转换为结构体数据信息 方便使用 更能让大家对H264编码更深一步学习!如果有问题请联系我 谢谢!直接编译即可 请注意...
从FFmpeg中抽取出来, 读取文件中数据流,快速找到buffer中的SPS 和 PPS,并解析它们的代码;
纯c代码,在linux上验证,编译可直接运行。已验证分辨率: 模拟摄像头h264(海思编码):cif、2cif、d1 高清ipc h264编码数:cif, VGA、720P、1080P
通过RTSP获取到的SDP字符串里面,获取流的一些参数,首先需要将sprop-parameter-sets键值内容解出字符串,得到SPS,PPS
这是由Java脚本编写的解析器,用于解析H.26 sps / pps。 简介 以在线解析器为例
里边.c/.h文件直接加工程可以使用,解析算法感兴趣的可以下载研究学习
完全的C语言实现H.264标准中SPS和PPS解析的源码,经过测试验证,可方便移植。
c+提取h264的sps pps,从ffmpeg中提取出来的,亲测可用
x264-SPS&PPS-简介
解析SPS和PPS需要用到的头文件bs.h,在解析SPS和PPS的时候,我们需要从码流中读取1-n个字节,然后还需要无符号指数哥伦布编码和有符号指数哥伦布编码的解析,这里面用到一些函数,刚还bs.h头文件就包含了这些解析过程