blob: 82b27e546dc9eaa3d2522c02676d25bf644ed952 [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#include "api/test/neteq_simulator_factory.h"
12
Mirko Bonadei317a1f02019-09-17 17:06:18 +020013#include <memory>
Alessio Bazzica5ad789c2019-03-13 11:51:44 +010014#include <string>
Mirko Bonadei2ab97f62019-07-18 13:44:12 +020015#include <vector>
Alessio Bazzica5ad789c2019-03-13 11:51:44 +010016
Mirko Bonadei2ab97f62019-07-18 13:44:12 +020017#include "absl/flags/flag.h"
18#include "absl/flags/parse.h"
Ivo Creusen55de08e2018-09-03 11:49:27 +020019#include "modules/audio_coding/neteq/tools/neteq_test_factory.h"
Ivo Creusenf81b0f12018-09-11 10:30:58 +020020#include "rtc_base/checks.h"
Ivo Creusen55de08e2018-09-03 11:49:27 +020021
22namespace webrtc {
23namespace test {
Ivo Creusen47156e22020-10-13 15:17:32 +020024namespace {
25NetEqTestFactory::Config convertConfig(
26 const NetEqSimulatorFactory::Config& simulation_config,
27 absl::string_view replacement_audio_filename) {
28 NetEqTestFactory::Config config;
29 config.replacement_audio_file = std::string(replacement_audio_filename);
30 config.max_nr_packets_in_buffer = simulation_config.max_nr_packets_in_buffer;
31 config.initial_dummy_packets = simulation_config.initial_dummy_packets;
32 config.skip_get_audio_events = simulation_config.skip_get_audio_events;
33 config.field_trial_string = simulation_config.field_trial_string;
34 config.output_audio_filename = simulation_config.output_audio_filename;
35 config.pythonplot = simulation_config.python_plot_filename.has_value();
36 config.plot_scripts_basename = simulation_config.python_plot_filename;
37 config.textlog = simulation_config.text_log_filename.has_value();
38 config.textlog_filename = simulation_config.text_log_filename;
39 return config;
40}
41} // namespace
Ivo Creusen55de08e2018-09-03 11:49:27 +020042
43NetEqSimulatorFactory::NetEqSimulatorFactory()
Mirko Bonadei317a1f02019-09-17 17:06:18 +020044 : factory_(std::make_unique<NetEqTestFactory>()) {}
Ivo Creusen55de08e2018-09-03 11:49:27 +020045
46NetEqSimulatorFactory::~NetEqSimulatorFactory() = default;
47
Ivo Creusen5ec61562019-03-20 10:52:18 +010048std::unique_ptr<NetEqSimulator> NetEqSimulatorFactory::CreateSimulatorFromFile(
49 absl::string_view event_log_filename,
50 absl::string_view replacement_audio_filename,
51 Config simulation_config) {
Ivo Creusen47156e22020-10-13 15:17:32 +020052 NetEqTestFactory::Config config =
53 convertConfig(simulation_config, replacement_audio_filename);
Ivo Creusencee751a2020-01-16 17:17:09 +010054 return factory_->InitializeTestFromFile(
55 std::string(event_log_filename), simulation_config.neteq_factory, config);
Ivo Creusen5ec61562019-03-20 10:52:18 +010056}
57
58std::unique_ptr<NetEqSimulator>
59NetEqSimulatorFactory::CreateSimulatorFromString(
60 absl::string_view event_log_file_contents,
61 absl::string_view replacement_audio_filename,
62 Config simulation_config) {
Ivo Creusen47156e22020-10-13 15:17:32 +020063 NetEqTestFactory::Config config =
64 convertConfig(simulation_config, replacement_audio_filename);
Ivo Creusen5ec61562019-03-20 10:52:18 +010065 return factory_->InitializeTestFromString(
Ivo Creusencee751a2020-01-16 17:17:09 +010066 std::string(event_log_file_contents), simulation_config.neteq_factory,
67 config);
Ivo Creusen55de08e2018-09-03 11:49:27 +020068}
69
70} // namespace test
71} // namespace webrtc