OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license | |
5 * that can be found in the LICENSE file in the root of the source | |
6 * tree. An additional intellectual property rights grant can be found | |
7 * in the file PATENTS. All contributing project authors may | |
8 * be found in the AUTHORS file in the root of the source tree. | |
9 */ | |
10 | |
11 // BWEStandAlone.cpp : Defines the entry point for the console application. | |
12 // | |
13 | |
14 #include <stdio.h> | |
15 #include <string> | |
16 | |
17 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" | |
18 #include "webrtc/system_wrappers/include/event_wrapper.h" | |
19 #include "webrtc/system_wrappers/include/trace.h" | |
20 #include "webrtc/test/channel_transport/udp_transport.h" | |
21 | |
22 #include "webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestLoadGenerator.h" | |
23 #include "webrtc/modules/rtp_rtcp/test/BWEStandAlone/TestSenderReceiver.h" | |
24 | |
25 #include "webrtc/modules/rtp_rtcp/test/BWEStandAlone/MatlabPlot.h" | |
26 | |
27 //#include "vld.h" | |
28 | |
29 class myTransportCB: public UdpTransportData | |
30 { | |
31 public: | |
32 myTransportCB (RtpRtcp *rtpMod) : _rtpMod(rtpMod) {}; | |
33 protected: | |
34 // Inherited from UdpTransportData | |
35 void IncomingRTPPacket(const int8_t* incomingRtpPacket, | |
36 const size_t rtpPacketLength, | |
37 const int8_t* fromIP, | |
38 const uint16_t fromPort) override; | |
39 | |
40 void IncomingRTCPPacket(const int8_t* incomingRtcpPacket, | |
41 const size_t rtcpPacketLength, | |
42 const int8_t* fromIP, | |
43 const uint16_t fromPort) override; | |
44 | |
45 private: | |
46 RtpRtcp *_rtpMod; | |
47 }; | |
48 | |
49 void myTransportCB::IncomingRTPPacket(const int8_t* incomingRtpPacket, | |
50 const size_t rtpPacketLength, | |
51 const int8_t* fromIP, | |
52 const uint16_t fromPort) | |
53 { | |
54 printf("Receiving RTP from IP %s, port %u\n", fromIP, fromPort); | |
55 _rtpMod->IncomingPacket((uint8_t *) incomingRtpPacket, rtpPacketLength); | |
56 } | |
57 | |
58 void myTransportCB::IncomingRTCPPacket(const int8_t* incomingRtcpPacket, | |
59 const size_t rtcpPacketLength, | |
60 const int8_t* fromIP, | |
61 const uint16_t fromPort) | |
62 { | |
63 printf("Receiving RTCP from IP %s, port %u\n", fromIP, fromPort); | |
64 _rtpMod->IncomingPacket((uint8_t *) incomingRtcpPacket, rtcpPacketLength); | |
65 } | |
66 | |
67 | |
68 int main(int argc, char* argv[]) | |
69 { | |
70 bool isSender = false; | |
71 bool isReceiver = false; | |
72 uint16_t port; | |
73 std::string ip; | |
74 TestSenderReceiver *sendrec = new TestSenderReceiver(); | |
75 TestLoadGenerator *gen; | |
76 | |
77 if (argc == 2) | |
78 { | |
79 // receiver only | |
80 isReceiver = true; | |
81 | |
82 // read port | |
83 port = atoi(argv[1]); | |
84 } | |
85 else if (argc == 3) | |
86 { | |
87 // sender and receiver | |
88 isSender = true; | |
89 isReceiver = true; | |
90 | |
91 // read IP | |
92 ip = argv[1]; | |
93 | |
94 // read port | |
95 port = atoi(argv[2]); | |
96 } | |
97 | |
98 Trace::CreateTrace(); | |
99 Trace::SetTraceFile("BWEStandAloneTrace.txt"); | |
100 Trace::set_level_filter(webrtc::kTraceAll); | |
101 | |
102 sendrec->InitReceiver(port); | |
103 | |
104 sendrec->Start(); | |
105 | |
106 if (isSender) | |
107 { | |
108 const uint32_t startRateKbps = 1000; | |
109 //gen = new CBRGenerator(sendrec, 1000, 500); | |
110 gen = new CBRFixFRGenerator(sendrec, startRateKbps, 90000, 30, 0.2); | |
111 //gen = new PeriodicKeyFixFRGenerator(sendrec, startRateKbps, 90000, 30,
0.2, 7, 300); | |
112 //const uint16_t numFrameRates = 5; | |
113 //const uint8_t frameRates[numFrameRates] = {30, 15, 20, 23, 25}; | |
114 //gen = new CBRVarFRGenerator(sendrec, 1000, frameRates, numFrameRates,
90000, 4.0, 0.1, 0.2); | |
115 //gen = new CBRFrameDropGenerator(sendrec, startRateKbps, 90000, 0.2); | |
116 sendrec->SetLoadGenerator(gen); | |
117 sendrec->InitSender(startRateKbps, ip.c_str(), port); | |
118 gen->Start(); | |
119 } | |
120 | |
121 while (1) | |
122 { | |
123 } | |
124 | |
125 if (isSender) | |
126 { | |
127 gen->Stop(); | |
128 delete gen; | |
129 } | |
130 | |
131 delete sendrec; | |
132 | |
133 //uint8_t numberOfSocketThreads = 1; | |
134 //UdpTransport* transport = UdpTransport::Create(0, numberOfSocketThreads); | |
135 | |
136 //RtpRtcp* rtp = RtpRtcp::CreateRtpRtcp(1, false); | |
137 //if (rtp->InitSender() != 0) | |
138 //{ | |
139 // exit(1); | |
140 //} | |
141 //if (rtp->RegisterSendTransport(transport) != 0) | |
142 //{ | |
143 // exit(1); | |
144 //} | |
145 | |
146 // transport->InitializeSendSockets("192.168.200.39", 8000); | |
147 //transport->InitializeSendSockets("127.0.0.1", 10000); | |
148 //transport->InitializeSourcePorts(8000); | |
149 | |
150 | |
151 return(0); | |
152 // myTransportCB *tp = new myTransportCB(rtp); | |
153 // transport->InitializeReceiveSockets(tp, 10000, "0.0.0.0"); | |
154 // transport->StartReceiving(500); | |
155 | |
156 // int8_t data[100]; | |
157 // for (int i = 0; i < 100; data[i] = i++); | |
158 | |
159 // for (int i = 0; i < 100; i++) | |
160 // { | |
161 // transport->SendRaw(data, 100, false); | |
162 // } | |
163 | |
164 | |
165 | |
166 // int32_t totTime = 0; | |
167 // while (totTime < 10000) | |
168 // { | |
169 // transport->Process(); | |
170 // int32_t wTime = transport->TimeUntilNextProcess(); | |
171 // totTime += wTime; | |
172 // Sleep(wTime); | |
173 // } | |
174 | |
175 | |
176 //if (transport) | |
177 //{ | |
178 // // Destroy the Socket Transport module | |
179 // transport->StopReceiving(); | |
180 // transport->InitializeReceiveSockets(NULL,0);// deregister callback | |
181 // UdpTransport::Destroy(transport); | |
182 // transport = NULL; | |
183 // } | |
184 | |
185 // if (tp) | |
186 // { | |
187 // delete tp; | |
188 // tp = NULL; | |
189 // } | |
190 | |
191 // if (rtp) | |
192 // { | |
193 // RtpRtcp::DestroyRtpRtcp(rtp); | |
194 // rtp = NULL; | |
195 // } | |
196 | |
197 | |
198 //return 0; | |
199 } | |
OLD | NEW |