blob: 7eab442b592ced8d59f053aa1939ec5ce6a3eb3b [file] [log] [blame]
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +00001/*
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
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_
12#define MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +000013
kwiberg37478382016-02-14 20:40:57 -080014#include <memory>
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +000015#include <string>
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020016#include "modules/audio_coding/test/EncodeDecodeTest.h"
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +000017
18namespace webrtc {
19
20class 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);
kjellander@webrtc.org14665ff2015-03-04 12:58:35 +000026 bool IncomingPacket() override;
27
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +000028 protected:
29 bool PacketLost();
30 int loss_rate_;
31 int burst_length_;
32 int packet_counter_;
33 int lost_packet_counter_;
34 int burst_lost_counter_;
35};
36
37class SenderWithFEC : public Sender {
38 public:
39 SenderWithFEC();
40 void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
41 std::string in_file_name, int sample_rate, int channels,
42 int expected_loss_rate);
43 bool SetPacketLossRate(int expected_loss_rate);
44 bool SetFEC(bool enable_fec);
45 protected:
46 int expected_loss_rate_;
47};
48
49class PacketLossTest : public ACMTest {
50 public:
51 PacketLossTest(int channels, int expected_loss_rate_, int actual_loss_rate,
52 int burst_length);
53 void Perform();
54 protected:
55 int channels_;
56 std::string in_file_name_;
57 int sample_rate_hz_;
kwiberg37478382016-02-14 20:40:57 -080058 std::unique_ptr<SenderWithFEC> sender_;
59 std::unique_ptr<ReceiverWithPacketLoss> receiver_;
minyue@webrtc.orgaa5ea1c2014-05-23 15:16:51 +000060 int expected_loss_rate_;
61 int actual_loss_rate_;
62 int burst_length_;
63};
64
65} // namespace webrtc
66
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020067#endif // MODULES_AUDIO_CODING_TEST_PACKETLOSSTEST_H_