1 /* 2 * Copyright (c) 2015 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 #ifndef WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_PACKET_RECEIVER_H_ 12 #define WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_PACKET_RECEIVER_H_ 13 14 #include <string> 15 16 #include "webrtc/base/constructormagic.h" 17 #include "webrtc/base/scoped_ptr.h" 18 #include "webrtc/modules/remote_bitrate_estimator/test/bwe.h" 19 #include "webrtc/modules/remote_bitrate_estimator/test/bwe_test_framework.h" 20 #include "webrtc/modules/remote_bitrate_estimator/test/metric_recorder.h" 21 22 namespace webrtc { 23 namespace testing { 24 namespace bwe { 25 26 class PacketReceiver : public PacketProcessor { 27 public: 28 PacketReceiver(PacketProcessorListener* listener, 29 int flow_id, 30 BandwidthEstimatorType bwe_type, 31 bool plot_delay, 32 bool plot_bwe); 33 PacketReceiver(PacketProcessorListener* listener, 34 int flow_id, 35 BandwidthEstimatorType bwe_type, 36 bool plot_delay, 37 bool plot_bwe, 38 MetricRecorder* metric_recorder); 39 ~PacketReceiver(); 40 41 // Implements PacketProcessor. 42 void RunFor(int64_t time_ms, Packets* in_out) override; 43 44 void LogStats(); 45 46 Stats<double> GetDelayStats() const; 47 48 float GlobalPacketLoss(); 49 50 protected: 51 void UpdateMetrics(int64_t arrival_time_ms, 52 int64_t send_time_ms, 53 size_t payload_size); 54 55 Stats<double> delay_stats_; 56 rtc::scoped_ptr<BweReceiver> bwe_receiver_; 57 58 private: 59 void PlotDelay(int64_t arrival_time_ms, int64_t send_time_ms); 60 MetricRecorder* metric_recorder_; 61 bool plot_delay_; // Used in case there isn't a metric recorder. 62 int64_t last_delay_plot_ms_; 63 std::string delay_prefix_; 64 BandwidthEstimatorType bwe_type_; 65 66 RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketReceiver); 67 }; 68 } // namespace bwe 69 } // namespace testing 70 } // namespace webrtc 71 #endif // WEBRTC_MODULES_REMOTE_BITRATE_ESTIMATOR_TEST_PACKET_RECEIVER_H_ 72