OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 30 matching lines...) Expand all Loading... |
41 } | 41 } |
42 | 42 |
43 void PacketProcessorRunner::RunFor(int64_t time_ms, | 43 void PacketProcessorRunner::RunFor(int64_t time_ms, |
44 int64_t time_now_ms, | 44 int64_t time_now_ms, |
45 Packets* in_out) { | 45 Packets* in_out) { |
46 Packets to_process; | 46 Packets to_process; |
47 FindPacketsToProcess(processor_->flow_ids(), in_out, &to_process); | 47 FindPacketsToProcess(processor_->flow_ids(), in_out, &to_process); |
48 processor_->RunFor(time_ms, &to_process); | 48 processor_->RunFor(time_ms, &to_process); |
49 QueuePackets(&to_process, time_now_ms * 1000); | 49 QueuePackets(&to_process, time_now_ms * 1000); |
50 if (!to_process.empty()) { | 50 if (!to_process.empty()) { |
51 processor_->Plot((to_process.back()->send_time_us() + 500) / 1000); | 51 processor_->Plot(to_process.back()->send_time_ms()); |
52 } | 52 } |
53 in_out->merge(to_process, DereferencingComparator<Packet>); | 53 in_out->merge(to_process, DereferencingComparator<Packet>); |
54 } | 54 } |
55 | 55 |
56 void PacketProcessorRunner::FindPacketsToProcess(const FlowIds& flow_ids, | 56 void PacketProcessorRunner::FindPacketsToProcess(const FlowIds& flow_ids, |
57 Packets* in, | 57 Packets* in, |
58 Packets* out) { | 58 Packets* out) { |
59 assert(out->empty()); | 59 assert(out->empty()); |
60 for (Packets::iterator it = in->begin(); it != in->end();) { | 60 for (Packets::iterator it = in->begin(); it != in->end();) { |
61 // TODO(holmer): Further optimize this by looking for consecutive flow ids | 61 // TODO(holmer): Further optimize this by looking for consecutive flow ids |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 sources.push_back(new AdaptiveVideoSource(media_flow, 30, 300, 0, | 262 sources.push_back(new AdaptiveVideoSource(media_flow, 30, 300, 0, |
263 kFlowStartOffsetMs)); | 263 kFlowStartOffsetMs)); |
264 senders.push_back(new PacedVideoSender(&uplink_, sources.back(), bwe_type)); | 264 senders.push_back(new PacedVideoSender(&uplink_, sources.back(), bwe_type)); |
265 } | 265 } |
266 | 266 |
267 const int64_t kTcpStartOffsetMs = 5000; | 267 const int64_t kTcpStartOffsetMs = 5000; |
268 for (int tcp_flow : tcp_flow_ids) | 268 for (int tcp_flow : tcp_flow_ids) |
269 senders.push_back(new TcpSender(&uplink_, tcp_flow, kTcpStartOffsetMs)); | 269 senders.push_back(new TcpSender(&uplink_, tcp_flow, kTcpStartOffsetMs)); |
270 | 270 |
271 ChokeFilter choke(&uplink_, all_flow_ids); | 271 ChokeFilter choke(&uplink_, all_flow_ids); |
272 choke.SetCapacity(capacity_kbps); | 272 choke.set_capacity_kbps(capacity_kbps); |
273 choke.SetMaxDelay(max_delay_ms); | 273 choke.set_max_delay_ms(max_delay_ms); |
274 | 274 |
275 DelayFilter delay_uplink(&uplink_, all_flow_ids); | 275 DelayFilter delay_uplink(&uplink_, all_flow_ids); |
276 delay_uplink.SetDelayMs(25); | 276 delay_uplink.SetOneWayDelayMs(25); |
277 | 277 |
278 std::vector<RateCounterFilter*> rate_counters; | 278 std::vector<RateCounterFilter*> rate_counters; |
279 for (int flow : all_flow_ids) { | 279 for (int flow : all_flow_ids) { |
280 rate_counters.push_back( | 280 rate_counters.push_back( |
281 new RateCounterFilter(&uplink_, flow, "receiver_input")); | 281 new RateCounterFilter(&uplink_, flow, "receiver_input")); |
282 } | 282 } |
283 | 283 |
284 RateCounterFilter total_utilization(&uplink_, all_flow_ids, | 284 RateCounterFilter total_utilization(&uplink_, all_flow_ids, |
285 "total_utilization"); | 285 "total_utilization"); |
286 | 286 |
287 std::vector<PacketReceiver*> receivers; | 287 std::vector<PacketReceiver*> receivers; |
288 i = 0; | 288 i = 0; |
289 for (int media_flow : media_flow_ids) { | 289 for (int media_flow : media_flow_ids) { |
290 receivers.push_back( | 290 receivers.push_back( |
291 new PacketReceiver(&uplink_, media_flow, bwe_type, i++ == 0, false)); | 291 new PacketReceiver(&uplink_, media_flow, bwe_type, i++ == 0, false)); |
292 } | 292 } |
293 for (int tcp_flow : tcp_flow_ids) { | 293 for (int tcp_flow : tcp_flow_ids) { |
294 receivers.push_back( | 294 receivers.push_back( |
295 new PacketReceiver(&uplink_, tcp_flow, kTcpEstimator, false, false)); | 295 new PacketReceiver(&uplink_, tcp_flow, kTcpEstimator, false, false)); |
296 } | 296 } |
297 | 297 |
298 DelayFilter delay_downlink(&downlink_, all_flow_ids); | 298 DelayFilter delay_downlink(&downlink_, all_flow_ids); |
299 delay_downlink.SetDelayMs(25); | 299 delay_downlink.SetOneWayDelayMs(25); |
300 | 300 |
301 RunFor(run_time_seconds * 1000); | 301 RunFor(run_time_seconds * 1000); |
302 | 302 |
303 std::map<int, Stats<double>> flow_throughput_kbps; | 303 std::map<int, Stats<double>> flow_throughput_kbps; |
304 for (RateCounterFilter* rate_counter : rate_counters) { | 304 for (RateCounterFilter* rate_counter : rate_counters) { |
305 int flow_id = *rate_counter->flow_ids().begin(); | 305 int flow_id = *rate_counter->flow_ids().begin(); |
306 flow_throughput_kbps[flow_id] = rate_counter->GetBitrateStats(); | 306 flow_throughput_kbps[flow_id] = rate_counter->GetBitrateStats(); |
307 } | 307 } |
308 | 308 |
309 std::map<int, Stats<double>> flow_delay_ms; | 309 std::map<int, Stats<double>> flow_delay_ms; |
(...skipping 10 matching lines...) Expand all Loading... |
320 for (PacketSender* sender : senders) | 320 for (PacketSender* sender : senders) |
321 delete sender; | 321 delete sender; |
322 for (RateCounterFilter* rate_counter : rate_counters) | 322 for (RateCounterFilter* rate_counter : rate_counters) |
323 delete rate_counter; | 323 delete rate_counter; |
324 for (PacketReceiver* receiver : receivers) | 324 for (PacketReceiver* receiver : receivers) |
325 delete receiver; | 325 delete receiver; |
326 } | 326 } |
327 } // namespace bwe | 327 } // namespace bwe |
328 } // namespace testing | 328 } // namespace testing |
329 } // namespace webrtc | 329 } // namespace webrtc |
OLD | NEW |