diff options
Diffstat (limited to 'examples/example2.cpp')
-rw-r--r-- | examples/example2.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/examples/example2.cpp b/examples/example2.cpp new file mode 100644 index 0000000..30b8471 --- /dev/null +++ b/examples/example2.cpp @@ -0,0 +1,99 @@ +#include "rtpsession.h" +#include "rtpsessionparams.h" +#include "rtpudpv4transmitter.h" +#include "rtpipv4address.h" +#include "rtptimeutilities.h" +#include "rtppacket.h" +#include <stdlib.h> +#include <iostream> + +int main(void) +{ +#ifdef WIN32 + WSADATA dat; + WSAStartup(MAKEWORD(2,2),&dat); +#endif // WIN32 + + RTPSession session; + + RTPSessionParams sessionparams; + sessionparams.SetOwnTimestampUnit(1.0/8000.0); + + RTPUDPv4TransmissionParams transparams; + transparams.SetPortbase(8000); + + int status = session.Create(sessionparams,&transparams); + if (status < 0) + { + std::cerr << RTPGetErrorString(status) << std::endl; + exit(-1); + } + + uint8_t localip[]={127,0,0,1}; + RTPIPv4Address addr(localip,9000); + + status = session.AddDestination(addr); + if (status < 0) + { + std::cerr << RTPGetErrorString(status) << std::endl; + exit(-1); + } + + session.SetDefaultPayloadType(96); + session.SetDefaultMark(false); + session.SetDefaultTimestampIncrement(160); + + uint8_t silencebuffer[160]; + for (int i = 0 ; i < 160 ; i++) + silencebuffer[i] = 128; + + RTPTime delay(0.020); + RTPTime starttime = RTPTime::CurrentTime(); + + bool done = false; + while (!done) + { + status = session.SendPacket(silencebuffer,160); + if (status < 0) + { + std::cerr << RTPGetErrorString(status) << std::endl; + exit(-1); + } + + session.BeginDataAccess(); + if (session.GotoFirstSource()) + { + do + { + RTPPacket *packet; + + while ((packet = session.GetNextPacket()) != 0) + { + std::cout << "Got packet with " + << "extended sequence number " + << packet->GetExtendedSequenceNumber() + << " from SSRC " << packet->GetSSRC() + << std::endl; + session.DeletePacket(packet); + } + } while (session.GotoNextSource()); + } + session.EndDataAccess(); + + RTPTime::Wait(delay); + + RTPTime t = RTPTime::CurrentTime(); + t -= starttime; + if (t > RTPTime(60.0)) + done = true; + } + + delay = RTPTime(10.0); + session.BYEDestroy(delay,"Time's up",9); + +#ifdef WIN32 + WSACleanup(); +#endif // WIN32 + return 0; +} + |