该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
{
m_bSPSFound = 1;
}
/*if ( !m_bSPSFound)
{
return 0;
}*/
if(NALType == 0x07 ||NALType==0x08)
{
m_wSeq = m_RTP_Header.seq;
m_bPFrameEnd =1;
for(i=0;i
{pPayload[i+4]=pPayload[i];}
//pPayload+4=pPayload;
pPayload[0]=0x00;
pPayload[1]=0x00;
pPayload[2]=0x00;
pPayload[3]=0x01;
//pPayload -=4;
//*((DWORD*)(pPayload)) = 0x01000000 ;
//*((int *)pPayload)=0x01000000;
//outsize = PayloadSize+4;
//printf("%d\n",PayloadSize);
//printf("m_wSeq=%d\n",m_wSeq);
//printf("m_RTP_Header.seq=%d\n",m_RTP_Header.seq);
//printf("NALType=0x%x\n",NALType);
return pPayload;
//for(i=0;i<20;i++){
//printf("0x%x\n",pPayload[i]);}
}
if (m_bWKFrame)
{
if (m_RTP_Header.m) //frame end
{
m_bPFrameEnd = 1;
if (!m_bAssemblingFrame)
{
m_wSeq = m_RTP_Header.seq;
//return 0;
}
}
if ( !m_bPFrameEnd)
{
m_wSeq = m_RTP_Header.seq;
//return 0;
}
else
{
if ( NALType != 0x05) // KEY FRAME
{
m_wSeq = m_RTP_Header.seq ;
m_bPFrameEnd = 0 ;
//return 0 ;
}
}
}
//printf("m_wSeq=%d\n",m_wSeq);
printf("m_RTP_Header.seq=%d\n",m_RTP_Header.seq);
/*if ( m_RTP_Header.seq != (int)( m_wSeq + 1)) // 是否丢包lost packet
{
m_wSeq = m_RTP_Header.seq ;
SetLostPacket () ;
//return 0 ;
//printf("m_wSeq=%d\n",m_wSeq);
//printf("m_RTP_Header.seq=%d\n",m_RTP_Header.seq);
}*/
//m_pStart=(char *)malloc(BUF_SIZE);
if(m_RTP_Header.seq= m_wSeq)
{
// 码流正常 添加起始码前缀,长度加4 m_wSeq=m_RTP_Header.seq ;
m_bAssemblingFrame = 1 ;
//printf("m_pStart=%d\n",m_pStart[0]);
if ( PayloadType != 28 ) // whole NAL
{
//m_pStart += 4;
for(i=0;i
{m_pStart[i+4]=m_pStart[i];}
m_pStart[0] =0;//DWORD修改为int
m_pStart[1] =0;
m_pStart[2] =0;
m_pStart[3] =1;
m_dwSize += 4 ;
//printf("m_dwSize=%d\n",m_dwSize);
}
else // FU_A
{
if ( pPayload[1] & 0x80 ) // FU_A start
{
//m_pStart =m_pStart+4;
//*(m_pStart) =0;//DWORD修改为int
for(i=0;i
{m_pStart[i+4]=m_pStart[i];}
m_pStart[0]=0;
m_pStart[1]=0;
m_pStart[2]=0;
m_pStart[3]=1;
//printf("m_pStart=%d\n",m_pStart[3]);
m_dwSize +=4;
pPayload[1] = ( pPayload[0] & 0xE0 ) | NALType ;
pPayload += 1;
PayloadSize -=1;
//printf("pPayload=%d\n",pPayload[1]);
}
else
{
pPayload += 2;
PayloadSize -= 2;
}
}
//printf("m_pStart=0x%x\n",m_pStart);
//printf("PayloadSize=0x%x\n",PayloadSize);
//printf("m_pStart + PayloadSize=0x%x\n",(m_pStart + PayloadSize));
//printf("m_pEnd=0x%x\n",m_pEnd);
if (m_pStart + PayloadSize < m_pEnd)
{
//printf("m_pStart=0x%x\n",m_pStart);
//printf("m_pEnd=0x%x\n",m_pEnd);
//printf("pPayload[4]=%d\n",pPayload[4]);
memcpy( m_pStart, pPayload, PayloadSize ) ;
m_dwSize += PayloadSize;
//m_pStart += PayloadSize;
//printf("PayloadSize=%d\n",PayloadSize);
//for(i=0;i<10;i++){
//printf("m_pStart[i]=0x%x\n",m_pStart[i]);}
return m_pStart;
}
else // memory overflow
{
SetLostPacket () ;
return 0;
} if (m_RTP_Header.m) // frame end
{
outsize = m_dwSize;
printf("PayloadSize=%d\n",PayloadSize);
memcpy(m_pStart,m_pBuf,PayloadSize);
//m_pStart = m_pBuf;
m_dwSize = 0;
//printf("%d\n",m_dwSize);
if ( NALType == 0x05) // KEY FRAME
{
m_bWKFrame = 0;
}
//return m_pBuf; //输出数据
return m_pStart;
printf("m_pStart[0]=0x%x\n",m_pStart[0]);
//fwrite(m_pBuf,outsize,1,testfile);
}
else
{
return 0;
}
}
//fwrite(m_pBuf,outsize,1,testfile);
//printf("%s\n",&pPayload);
free(m_pBuf);
free(pBuf);
free(cp);
}
在main函数里调用了x264_rtp_unpackage函数,该函数是有返回值得,但是在main中调用后,想用printf看看之是否真确,但是执行时就出现printf段错误,请指点