blob: 019e96b9b28b2b8817969eebc108a56ac617eced [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/Channel.h"
21#include "modules/audio_coding/test/PCMFile.h"
22#include "modules/audio_coding/test/TestStereo.h"
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000023
24namespace webrtc {
25
Karl Wiberg3ff52ff2018-10-01 12:31:22 +020026class OpusTest {
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000027 public:
henrik.lundin@webrtc.orgadaf8092014-04-17 08:29:10 +000028 OpusTest();
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000029 ~OpusTest();
30
31 void Perform();
turaj@webrtc.org48af6522013-09-13 23:06:59 +000032
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000033 private:
pkasting25702cb2016-01-08 13:50:27 -080034 void Run(TestPackStereo* channel,
Peter Kasting69558702016-01-12 16:26:35 -080035 size_t channels,
pkasting25702cb2016-01-08 13:50:27 -080036 int bitrate,
37 size_t frame_length,
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000038 int percent_loss = 0);
39
40 void OpenOutFile(int test_number);
41
kwiberg37478382016-02-14 20:40:57 -080042 std::unique_ptr<AudioCodingModule> acm_receiver_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000043 TestPackStereo* channel_a2b_;
44 PCMFile in_file_stereo_;
45 PCMFile in_file_mono_;
46 PCMFile out_file_;
tina.legrand@webrtc.orgbd21fb52013-08-08 11:01:07 +000047 PCMFile out_file_standalone_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000048 int counter_;
49 uint8_t payload_type_;
pkasting25702cb2016-01-08 13:50:27 -080050 uint32_t rtp_timestamp_;
henrik.lundin@webrtc.orgadaf8092014-04-17 08:29:10 +000051 acm2::ACMResampler resampler_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000052 WebRtcOpusEncInst* opus_mono_encoder_;
53 WebRtcOpusEncInst* opus_stereo_encoder_;
tina.legrand@webrtc.orgbd21fb52013-08-08 11:01:07 +000054 WebRtcOpusDecInst* opus_mono_decoder_;
55 WebRtcOpusDecInst* opus_stereo_decoder_;
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000056};
57
58} // namespace webrtc
59
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020060#endif // MODULES_AUDIO_CODING_TEST_OPUS_TEST_H_