| 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 |
| 11 #ifndef WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ | 11 #ifndef WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ |
| 12 #define WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ | 12 #define WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ |
| 13 | 13 |
| 14 #include <assert.h> | 14 #include <assert.h> |
| 15 #include <math.h> | 15 #include <math.h> |
| 16 | 16 |
| 17 #include <algorithm> | 17 #include <algorithm> |
| 18 #include <list> | 18 #include <list> |
| 19 #include <numeric> | 19 #include <numeric> |
| 20 #include <sstream> | 20 #include <sstream> |
| 21 #include <string> | 21 #include <string> |
| 22 #include <vector> | 22 #include <vector> |
| 23 | 23 |
| 24 #include "webrtc/base/common.h" | 24 #include "webrtc/base/common.h" |
| 25 #include "webrtc/base/random.h" |
| 25 #include "webrtc/base/scoped_ptr.h" | 26 #include "webrtc/base/scoped_ptr.h" |
| 26 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" | 27 #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" |
| 27 #include "webrtc/modules/include/module_common_types.h" | 28 #include "webrtc/modules/include/module_common_types.h" |
| 28 #include "webrtc/modules/pacing/paced_sender.h" | 29 #include "webrtc/modules/pacing/paced_sender.h" |
| 29 #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimat
or.h" | 30 #include "webrtc/modules/remote_bitrate_estimator/include/remote_bitrate_estimat
or.h" |
| 30 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h" | 31 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_logging.h" |
| 31 #include "webrtc/modules/remote_bitrate_estimator/test/packet.h" | 32 #include "webrtc/modules/remote_bitrate_estimator/test/packet.h" |
| 32 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 33 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
| 33 #include "webrtc/system_wrappers/include/clock.h" | 34 #include "webrtc/system_wrappers/include/clock.h" |
| 34 #include "webrtc/test/random.h" | |
| 35 | 35 |
| 36 namespace webrtc { | 36 namespace webrtc { |
| 37 | 37 |
| 38 class RtcpBandwidthObserver; | 38 class RtcpBandwidthObserver; |
| 39 | 39 |
| 40 namespace testing { | 40 namespace testing { |
| 41 namespace bwe { | 41 namespace bwe { |
| 42 | 42 |
| 43 class DelayCapHelper; | 43 class DelayCapHelper; |
| 44 | 44 |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 class LossFilter : public PacketProcessor { | 258 class LossFilter : public PacketProcessor { |
| 259 public: | 259 public: |
| 260 LossFilter(PacketProcessorListener* listener, int flow_id); | 260 LossFilter(PacketProcessorListener* listener, int flow_id); |
| 261 LossFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); | 261 LossFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); |
| 262 virtual ~LossFilter() {} | 262 virtual ~LossFilter() {} |
| 263 | 263 |
| 264 void SetLoss(float loss_percent); | 264 void SetLoss(float loss_percent); |
| 265 virtual void RunFor(int64_t time_ms, Packets* in_out); | 265 virtual void RunFor(int64_t time_ms, Packets* in_out); |
| 266 | 266 |
| 267 private: | 267 private: |
| 268 test::Random random_; | 268 Random random_; |
| 269 float loss_fraction_; | 269 float loss_fraction_; |
| 270 | 270 |
| 271 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(LossFilter); | 271 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(LossFilter); |
| 272 }; | 272 }; |
| 273 | 273 |
| 274 class DelayFilter : public PacketProcessor { | 274 class DelayFilter : public PacketProcessor { |
| 275 public: | 275 public: |
| 276 DelayFilter(PacketProcessorListener* listener, int flow_id); | 276 DelayFilter(PacketProcessorListener* listener, int flow_id); |
| 277 DelayFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); | 277 DelayFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); |
| 278 virtual ~DelayFilter() {} | 278 virtual ~DelayFilter() {} |
| (...skipping 13 matching lines...) Expand all Loading... |
| 292 JitterFilter(PacketProcessorListener* listener, int flow_id); | 292 JitterFilter(PacketProcessorListener* listener, int flow_id); |
| 293 JitterFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); | 293 JitterFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); |
| 294 virtual ~JitterFilter() {} | 294 virtual ~JitterFilter() {} |
| 295 | 295 |
| 296 void SetMaxJitter(int64_t stddev_jitter_ms); | 296 void SetMaxJitter(int64_t stddev_jitter_ms); |
| 297 virtual void RunFor(int64_t time_ms, Packets* in_out); | 297 virtual void RunFor(int64_t time_ms, Packets* in_out); |
| 298 void set_reorderdering(bool reordering) { reordering_ = reordering; } | 298 void set_reorderdering(bool reordering) { reordering_ = reordering; } |
| 299 int64_t MeanUs(); | 299 int64_t MeanUs(); |
| 300 | 300 |
| 301 private: | 301 private: |
| 302 test::Random random_; | 302 Random random_; |
| 303 int64_t stddev_jitter_us_; | 303 int64_t stddev_jitter_us_; |
| 304 int64_t last_send_time_us_; | 304 int64_t last_send_time_us_; |
| 305 bool reordering_; // False by default. | 305 bool reordering_; // False by default. |
| 306 | 306 |
| 307 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(JitterFilter); | 307 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(JitterFilter); |
| 308 }; | 308 }; |
| 309 | 309 |
| 310 // Reorders two consecutive packets with a probability of reorder_percent. | 310 // Reorders two consecutive packets with a probability of reorder_percent. |
| 311 class ReorderFilter : public PacketProcessor { | 311 class ReorderFilter : public PacketProcessor { |
| 312 public: | 312 public: |
| 313 ReorderFilter(PacketProcessorListener* listener, int flow_id); | 313 ReorderFilter(PacketProcessorListener* listener, int flow_id); |
| 314 ReorderFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); | 314 ReorderFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); |
| 315 virtual ~ReorderFilter() {} | 315 virtual ~ReorderFilter() {} |
| 316 | 316 |
| 317 void SetReorder(float reorder_percent); | 317 void SetReorder(float reorder_percent); |
| 318 virtual void RunFor(int64_t time_ms, Packets* in_out); | 318 virtual void RunFor(int64_t time_ms, Packets* in_out); |
| 319 | 319 |
| 320 private: | 320 private: |
| 321 test::Random random_; | 321 Random random_; |
| 322 float reorder_fraction_; | 322 float reorder_fraction_; |
| 323 | 323 |
| 324 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(ReorderFilter); | 324 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(ReorderFilter); |
| 325 }; | 325 }; |
| 326 | 326 |
| 327 // Apply a bitrate choke with an infinite queue on the packet stream. | 327 // Apply a bitrate choke with an infinite queue on the packet stream. |
| 328 class ChokeFilter : public PacketProcessor { | 328 class ChokeFilter : public PacketProcessor { |
| 329 public: | 329 public: |
| 330 ChokeFilter(PacketProcessorListener* listener, int flow_id); | 330 ChokeFilter(PacketProcessorListener* listener, int flow_id); |
| 331 ChokeFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); | 331 ChokeFilter(PacketProcessorListener* listener, const FlowIds& flow_ids); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 uint32_t frame_counter_; | 459 uint32_t frame_counter_; |
| 460 int compensation_bytes_; | 460 int compensation_bytes_; |
| 461 int compensation_per_frame_; | 461 int compensation_per_frame_; |
| 462 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PeriodicKeyFrameSource); | 462 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PeriodicKeyFrameSource); |
| 463 }; | 463 }; |
| 464 } // namespace bwe | 464 } // namespace bwe |
| 465 } // namespace testing | 465 } // namespace testing |
| 466 } // namespace webrtc | 466 } // namespace webrtc |
| 467 | 467 |
| 468 #endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ | 468 #endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_BWE_TEST_FRAMEWORK_H_ |
| OLD | NEW |