blob: e34da8c7aeaa97d82ad702adca2e1efd14ce5058 [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
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
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);
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
36class 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
48class 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_