我是楼主,自己再来顶一下..
最近在调试Streaming Client端的程序,使用live555接收streaming server传输过来的h.264 rtp视频流,然后解码,播放.
现在live555的rtp数据接收基本上是可以了,不过在解码这块还有点小问题,想问一下:
如何从SPS帧里解析出video width and height呢?
部分代码如下:
/*
parse SPS for extract video width and height....
*/
if(naltype == 7) {
unsigned char* data = &_pcbdata[4];
int len = 0;
int val = 0x00;
int bitoffset = 0;
val = _get_ue(data, 64, bitoffset, &len);
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
if(val == 0) {
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
} else if(val == 1) {
return ;
} else {
// don't anything
}
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
// gaps_in_frame_num_value_allowed_flag bit
bitoffset ++;
// get width
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
m_nWidth = (val + 1)*16;
if(m_nWidth==144)
m_nWidth=176;
_ptHdr->nWidth = m_nWidth;
_ptHdr->cSeqLow = m_cbSeqLow;
// get height
bitoffset += len;
val = _get_ue(data, 64, bitoffset, &len);
m_nHeight = (val + 1)*16;
if(m_nHeight==128)
m_nHeight=120;
_ptHdr->nHeight = m_nHeight;
}
编码端的参数设置为720*480,怎么我执行这段代码从SPS里解析出来的video width and height为608*480呢?
请各位高手给小弟答疑啊!..
|