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 MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_ 12 #define MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_ 13 14 #include <string> 15 16 #include "modules/audio_coding/test/EncodeDecodeTest.h" 17 18 namespace webrtc { 19 20 class ReceiverWithPacketLoss : public Receiver { 21 public: 22 ReceiverWithPacketLoss(); 23 void Setup(AudioCodingModule* acm, 24 RTPStream* rtpStream, 25 std::string out_file_name, 26 int channels, 27 int file_num, 28 int loss_rate, 29 int burst_length); 30 bool IncomingPacket() override; 31 32 protected: 33 bool PacketLost(); 34 int loss_rate_; 35 int burst_length_; 36 int packet_counter_; 37 int lost_packet_counter_; 38 int burst_lost_counter_; 39 }; 40 41 class SenderWithFEC : public Sender { 42 public: 43 SenderWithFEC(); 44 void Setup(AudioCodingModule* acm, 45 RTPStream* rtpStream, 46 std::string in_file_name, 47 int payload_type, 48 SdpAudioFormat format, 49 int expected_loss_rate); 50 bool SetPacketLossRate(int expected_loss_rate); 51 bool SetFEC(bool enable_fec); 52 53 protected: 54 int expected_loss_rate_; 55 }; 56 57 class PacketLossTest { 58 public: 59 PacketLossTest(int channels, 60 int expected_loss_rate_, 61 int actual_loss_rate, 62 int burst_length); 63 void Perform(); 64 65 protected: 66 int channels_; 67 std::string in_file_name_; 68 int sample_rate_hz_; 69 int expected_loss_rate_; 70 int actual_loss_rate_; 71 int burst_length_; 72 }; 73 74 } // namespace webrtc 75 76 #endif // MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_ 77