Home | History | Annotate | Download | only in test
      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