Home | History | Annotate | Download | only in test
      1 /*
      2  *  Copyright (c) 2014 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_AUDIO_CODING_MAIN_TEST_PACKETLOSSTEST_H_
     12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_PACKETLOSSTEST_H_
     13 
     14 #include <string>
     15 #include "webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h"
     16 #include "webrtc/system_wrappers/interface/scoped_ptr.h"
     17 
     18 namespace webrtc {
     19 
     20 class ReceiverWithPacketLoss : public Receiver {
     21  public:
     22   ReceiverWithPacketLoss();
     23   void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
     24              std::string out_file_name, int channels, int loss_rate,
     25              int burst_length);
     26   bool IncomingPacket() OVERRIDE;
     27  protected:
     28   bool PacketLost();
     29   int loss_rate_;
     30   int burst_length_;
     31   int packet_counter_;
     32   int lost_packet_counter_;
     33   int burst_lost_counter_;
     34 };
     35 
     36 class SenderWithFEC : public Sender {
     37  public:
     38   SenderWithFEC();
     39   void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
     40              std::string in_file_name, int sample_rate, int channels,
     41              int expected_loss_rate);
     42   bool SetPacketLossRate(int expected_loss_rate);
     43   bool SetFEC(bool enable_fec);
     44  protected:
     45   int expected_loss_rate_;
     46 };
     47 
     48 class PacketLossTest : public ACMTest {
     49  public:
     50   PacketLossTest(int channels, int expected_loss_rate_, int actual_loss_rate,
     51                  int burst_length);
     52   void Perform();
     53  protected:
     54   int channels_;
     55   std::string in_file_name_;
     56   int sample_rate_hz_;
     57   scoped_ptr<SenderWithFEC> sender_;
     58   scoped_ptr<ReceiverWithPacketLoss> receiver_;
     59   int expected_loss_rate_;
     60   int actual_loss_rate_;
     61   int burst_length_;
     62 };
     63 
     64 }  // namespace webrtc
     65 
     66 #endif  // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_PACKETLOSSTEST_H_
     67