📄 soundrtp.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 + -