⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soundrtp.cpp

📁 G.723在ARM上的实现。实现平台为Linux2.4.8+ Intel Xscal。包括源代码
💻 CPP
字号:
#include "soundrtp.h"// The main int main(int argc,char **argv){		uint16_t portbase,destport;	uint32_t destip;			cout << "Enter local portbase:" <<endl;	cin >> portbase;	cout << std::endl;	cout << "Enter dest portbase:" <<endl;	cin >> destport;	cout << std::endl;      	if(argc!=2)		cout<<"dest ip"<<endl;	destip = inet_addr(argv[1]);		if (destip == INADDR_NONE)	{		cout<<"error ip "<<endl;		exit(0);	}		destip = ntohl(destip);		/*	* rtp session 	*/	MyRTPSession sess;	int status;		RTPUDPv4TransmissionParams transparams;	RTPSessionParams sessparams;	sessparams.SetOwnTimestampUnit(1.0/8000.0);	sessparams.SetAcceptOwnPackets(true);	sessparams.SetUsePollThread(true);	sessparams.SetMinimumRTCPTransmissionInterval(RTPTime(1.0));	transparams.SetPortbase(portbase);		status = sess.Create(sessparams,&transparams);		sess.checkerror(status);	RTPIPv4Address addr(destip,destport);	status = sess.AddDestination(addr);	sess.checkerror(status);		/*	*  audiodev and buff initlize	*/	AudioDev audiodev;		fd_re=audiodev.open_audiodev(MOD_RDONLY);		audiodev.init_audiodev(fd_re);	fd_wr=audiodev.open_audiodev(MOD_WRONLY);			audiodev.init_audiodev(fd_wr);		/*	* sendpack thread	*/	sess.sendthread_start();	/*	* uncompress thread	*/	sess.uncompresthread_start();		/*	* voiceplay thread	*/	audiodev.voiceplaythread_start();			Deliver de;	de.tmpbuf=(unsigned char *)malloc(sizeof(unsigned char)*BITS);	de.flag=1;		while(1)	{							sess.BeginDataAccess();						if (sess.GotoFirstSourceWithData())		{						do			{				RTPPacket *pack;				RTPSourceData *srcdat;				srcdat = sess.GetCurrentSourceInfo();				while ((pack = sess.GetNextPacket()) != NULL)				{									cout<<"receive pack!size :"<<pack->GetPayloadLength()<<endl;							 	if(de.flag)					 {				   		de.firststamp=pack->GetTimestamp();						de.flag=0;				   	 }						de.index=(pack->GetTimestamp()-de.firststamp)/16;					de.index=de.index%compressbuf.getframenum();					 	memcpy(de.tmpbuf,pack->GetPayloadData(),					pack->GetPayloadLength());					cout<<"write to "<<de.index<<"buff"<<endl;								compressbuf.writebuff(de.index,de.tmpbuf);									   delete pack;				}  //while						} while (sess.GotoNextSourceWithData());		} //if				sess.EndDataAccess();					   	} //while	 		sess.BYEDestroy(RTPTime(10,0),"shut down",9);	return 0;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -