tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

audio_options.cc (3953B)


      1 /*
      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/audio_options.h"
     12 
     13 #include <optional>
     14 #include <string>
     15 
     16 #include "api/array_view.h"
     17 #include "rtc_base/strings/string_builder.h"
     18 
     19 namespace webrtc {
     20 namespace {
     21 
     22 template <class T>
     23 void ToStringIfSet(SimpleStringBuilder* result,
     24                   const char* key,
     25                   const std::optional<T>& val) {
     26  if (val) {
     27    (*result) << key << ": " << *val << ", ";
     28  }
     29 }
     30 
     31 template <typename T>
     32 void SetFrom(std::optional<T>* s, const std::optional<T>& o) {
     33  if (o) {
     34    *s = o;
     35  }
     36 }
     37 
     38 }  // namespace
     39 
     40 AudioOptions::AudioOptions() = default;
     41 AudioOptions::~AudioOptions() = default;
     42 
     43 void AudioOptions::SetAll(const AudioOptions& change) {
     44  SetFrom(&echo_cancellation, change.echo_cancellation);
     45 #if defined(WEBRTC_IOS)
     46  SetFrom(&ios_force_software_aec_HACK, change.ios_force_software_aec_HACK);
     47 #endif
     48  SetFrom(&auto_gain_control, change.auto_gain_control);
     49  SetFrom(&noise_suppression, change.noise_suppression);
     50  SetFrom(&highpass_filter, change.highpass_filter);
     51  SetFrom(&stereo_swapping, change.stereo_swapping);
     52  SetFrom(&audio_jitter_buffer_max_packets,
     53          change.audio_jitter_buffer_max_packets);
     54  SetFrom(&audio_jitter_buffer_fast_accelerate,
     55          change.audio_jitter_buffer_fast_accelerate);
     56  SetFrom(&audio_jitter_buffer_min_delay_ms,
     57          change.audio_jitter_buffer_min_delay_ms);
     58  SetFrom(&audio_network_adaptor, change.audio_network_adaptor);
     59  SetFrom(&audio_network_adaptor_config, change.audio_network_adaptor_config);
     60  SetFrom(&init_recording_on_send, change.init_recording_on_send);
     61 }
     62 
     63 bool AudioOptions::operator==(const AudioOptions& o) const {
     64  return echo_cancellation == o.echo_cancellation &&
     65 #if defined(WEBRTC_IOS)
     66         ios_force_software_aec_HACK == o.ios_force_software_aec_HACK &&
     67 #endif
     68         auto_gain_control == o.auto_gain_control &&
     69         noise_suppression == o.noise_suppression &&
     70         highpass_filter == o.highpass_filter &&
     71         stereo_swapping == o.stereo_swapping &&
     72         audio_jitter_buffer_max_packets == o.audio_jitter_buffer_max_packets &&
     73         audio_jitter_buffer_fast_accelerate ==
     74             o.audio_jitter_buffer_fast_accelerate &&
     75         audio_jitter_buffer_min_delay_ms ==
     76             o.audio_jitter_buffer_min_delay_ms &&
     77         audio_network_adaptor == o.audio_network_adaptor &&
     78         audio_network_adaptor_config == o.audio_network_adaptor_config &&
     79         init_recording_on_send == o.init_recording_on_send;
     80 }
     81 
     82 std::string AudioOptions::ToString() const {
     83  char buffer[1024];
     84  SimpleStringBuilder result(buffer);
     85  result << "AudioOptions {";
     86  ToStringIfSet(&result, "aec", echo_cancellation);
     87 #if defined(WEBRTC_IOS)
     88  ToStringIfSet(&result, "ios_force_software_aec_HACK",
     89                ios_force_software_aec_HACK);
     90 #endif
     91  ToStringIfSet(&result, "agc", auto_gain_control);
     92  ToStringIfSet(&result, "ns", noise_suppression);
     93  ToStringIfSet(&result, "hf", highpass_filter);
     94  ToStringIfSet(&result, "swap", stereo_swapping);
     95  ToStringIfSet(&result, "audio_jitter_buffer_max_packets",
     96                audio_jitter_buffer_max_packets);
     97  ToStringIfSet(&result, "audio_jitter_buffer_fast_accelerate",
     98                audio_jitter_buffer_fast_accelerate);
     99  ToStringIfSet(&result, "audio_jitter_buffer_min_delay_ms",
    100                audio_jitter_buffer_min_delay_ms);
    101  ToStringIfSet(&result, "audio_network_adaptor", audio_network_adaptor);
    102  ToStringIfSet(&result, "init_recording_on_send", init_recording_on_send);
    103  result << "}";
    104  return result.str();
    105 }
    106 
    107 }  // namespace webrtc