blob: 3c0cbe07940edb64cb0ac4f95708a434acb6b756 [file] [log] [blame]
Ivo Creusen55de08e2018-09-03 11:49:27 +02001/*
2 * Copyright (c) 2018 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 API_TEST_NETEQ_SIMULATOR_FACTORY_H_
12#define API_TEST_NETEQ_SIMULATOR_FACTORY_H_
13
14#include <memory>
Ivo Creusen5ec61562019-03-20 10:52:18 +010015#include <string>
Ivo Creusen55de08e2018-09-03 11:49:27 +020016
Ivo Creusen5ec61562019-03-20 10:52:18 +010017#include "absl/strings/string_view.h"
Ivo Creusen55de08e2018-09-03 11:49:27 +020018#include "api/test/neteq_simulator.h"
19
20namespace webrtc {
21namespace test {
22
23class NetEqTestFactory;
24
25class NetEqSimulatorFactory {
26 public:
27 NetEqSimulatorFactory();
28 ~NetEqSimulatorFactory();
Ivo Creusen5ec61562019-03-20 10:52:18 +010029 struct Config {
Ivo Creusen99a20962019-10-07 13:18:18 +020030 // The maximum allowed number of packets in the jitter buffer.
Ivo Creusen5ec61562019-03-20 10:52:18 +010031 int max_nr_packets_in_buffer = 0;
Ivo Creusen99a20962019-10-07 13:18:18 +020032 // The number of audio packets to insert at the start of the simulation.
33 // Since the simulation is done with a replacement audio file, these
34 // artificial packets will take a small piece of that replacement audio.
35 int initial_dummy_packets = 0;
36 // The number of simulation steps to skip at the start of the simulation.
37 // This removes incoming packets and GetAudio events from the start of the
38 // simulation, until the requested number of GetAudio events has been
39 // removed.
40 int skip_get_audio_events = 0;
41 // A WebRTC field trial string to be used during the simulation.
42 std::string field_trial_string;
Ivo Creusen5ec61562019-03-20 10:52:18 +010043 };
Ivo Creusen55de08e2018-09-03 11:49:27 +020044 // This function takes the same arguments as the neteq_rtpplay utility.
45 std::unique_ptr<NetEqSimulator> CreateSimulator(int argc, char* argv[]);
Ivo Creusen5ec61562019-03-20 10:52:18 +010046 std::unique_ptr<NetEqSimulator> CreateSimulatorFromFile(
47 absl::string_view event_log_filename,
48 absl::string_view replacement_audio_filename,
49 Config simulation_config);
50 // The same as above, but pass the file contents as a string.
51 std::unique_ptr<NetEqSimulator> CreateSimulatorFromString(
52 absl::string_view event_log_file_contents,
53 absl::string_view replacement_audio_file,
54 Config simulation_config);
Ivo Creusen55de08e2018-09-03 11:49:27 +020055
56 private:
57 std::unique_ptr<NetEqTestFactory> factory_;
58};
59
60} // namespace test
61} // namespace webrtc
62
63#endif // API_TEST_NETEQ_SIMULATOR_FACTORY_H_