首先解码器中有一个全局变量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内有调用。
sps及pps在解码器内传递过程
转载
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
H264 编码RawBitstream 格式分析以及SPS&PPS数据分析
基于MPP框架开发了demo展示应用,方案数据流如下图所示,简单
html css 数据 码率 3c