blob: 1356f272314636795b72f53fc3fb7ec64921a523 [file] [log] [blame]
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +00001/*
2 * Copyright (c) 2012 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_OPUS_TEST_H_
12#define MODULES_AUDIO_CODING_TEST_OPUS_TEST_H_
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000013
14#include <math.h>
15
kwiberg37478382016-02-14 20:40:57 -080016#include <memory>
17
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020018#include "modules/audio_coding/acm2/acm_resampler.h"
Yves Gerey665174f2018-06-19 15:03:05 +020019#include "modules/audio_coding/codecs/opus/opus_interface.h"
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020020#include "modules/audio_coding/test/ACMTest.h"
21#include "modules/audio_coding/test/Channel.h"
22#include "modules/audio_coding/test/PCMFile.h"
23#include "modules/audio_coding/test/TestStereo.h"
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000024
25namespace webrtc {
26
27class OpusTest : public ACMTest {
28 public:
henrik.lundin@webrtc.orgadaf8092014-04-17 08:29:10 +000029 OpusTest();
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000030 ~OpusTest();
31
32 void Perform();
turaj@webrtc.org48af6522013-09-13 23:06:59 +000033
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000034 private:
pkasting25702cb2016-01-08 13:50:27 -080035 void Run(TestPackStereo* channel,
Peter Kasting69558702016-01-12 16:26:35 -080036 size_t channels,
pkasting25702cb2016-01-08 13:50:27 -080037 int bitrate,
38 size_t frame_length,
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000039 int percent_loss = 0);
40
41 void OpenOutFile(int test_number);
42
kwiberg37478382016-02-14 20:40:57 -080043 std::unique_ptr<AudioCodingModule> acm_receiver_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000044 TestPackStereo* channel_a2b_;
45 PCMFile in_file_stereo_;
46 PCMFile in_file_mono_;
47 PCMFile out_file_;
tina.legrand@webrtc.orgbd21fb52013-08-08 11:01:07 +000048 PCMFile out_file_standalone_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000049 int counter_;
50 uint8_t payload_type_;
pkasting25702cb2016-01-08 13:50:27 -080051 uint32_t rtp_timestamp_;
henrik.lundin@webrtc.orgadaf8092014-04-17 08:29:10 +000052 acm2::ACMResampler resampler_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000053 WebRtcOpusEncInst* opus_mono_encoder_;
54 WebRtcOpusEncInst* opus_stereo_encoder_;
tina.legrand@webrtc.orgbd21fb52013-08-08 11:01:07 +000055 WebRtcOpusDecInst* opus_mono_decoder_;
56 WebRtcOpusDecInst* opus_stereo_decoder_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000057};
58
59} // namespace webrtc
60
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020061#endif // MODULES_AUDIO_CODING_TEST_OPUS_TEST_H_