tor-browser

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

audio_send_stream.cc (3737B)


      1 /*
      2 *  Copyright (c) 2015 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 "call/audio_send_stream.h"
     12 
     13 #include <cstddef>
     14 #include <string>
     15 
     16 #include "absl/strings/str_cat.h"
     17 #include "api/audio_codecs/audio_format.h"
     18 #include "api/call/transport.h"
     19 #include "rtc_base/strings/string_builder.h"
     20 
     21 namespace webrtc {
     22 
     23 AudioSendStream::Stats::Stats() = default;
     24 AudioSendStream::Stats::~Stats() = default;
     25 
     26 AudioSendStream::Config::Config(Transport* send_transport)
     27    : send_transport(send_transport) {}
     28 
     29 AudioSendStream::Config::~Config() = default;
     30 
     31 std::string AudioSendStream::Config::ToString() const {
     32  StringBuilder ss;
     33  ss << "{rtp: " << rtp.ToString();
     34  ss << ", rtcp_report_interval_ms: " << rtcp_report_interval_ms;
     35  ss << ", send_transport: " << (send_transport ? "(Transport)" : "null");
     36  ss << ", min_bitrate_bps: " << min_bitrate_bps;
     37  ss << ", max_bitrate_bps: " << max_bitrate_bps;
     38  ss << ", has audio_network_adaptor_config: "
     39     << (audio_network_adaptor_config ? "true" : "false");
     40  ss << ", has_dscp: " << (has_dscp ? "true" : "false");
     41  ss << ", send_codec_spec: "
     42     << (send_codec_spec ? send_codec_spec->ToString() : "<unset>");
     43  ss << "}";
     44  return ss.Release();
     45 }
     46 
     47 AudioSendStream::Config::Rtp::Rtp() = default;
     48 
     49 AudioSendStream::Config::Rtp::~Rtp() = default;
     50 
     51 std::string AudioSendStream::Config::Rtp::ToString() const {
     52  char buf[1024];
     53  SimpleStringBuilder ss(buf);
     54  ss << "{ssrc: " << ssrc;
     55  if (!rid.empty()) {
     56    ss << ", rid: " << rid;
     57  }
     58  if (!mid.empty()) {
     59    ss << ", mid: " << mid;
     60  }
     61  ss << ", csrcs: [";
     62  for (size_t i = 0; i < csrcs.size(); ++i) {
     63    ss << csrcs[i];
     64    if (i != csrcs.size() - 1) {
     65      ss << ", ";
     66    }
     67  }
     68  ss << ']';
     69  ss << ", extmap-allow-mixed: " << (extmap_allow_mixed ? "true" : "false");
     70  ss << ", extensions: [";
     71  for (size_t i = 0; i < extensions.size(); ++i) {
     72    ss << extensions[i].ToString();
     73    if (i != extensions.size() - 1) {
     74      ss << ", ";
     75    }
     76  }
     77  ss << ']';
     78  ss << ", c_name: " << c_name;
     79  ss << '}';
     80  return ss.str();
     81 }
     82 
     83 AudioSendStream::Config::SendCodecSpec::SendCodecSpec(
     84    int payload_type,
     85    const SdpAudioFormat& format)
     86    : payload_type(payload_type), format(format) {}
     87 AudioSendStream::Config::SendCodecSpec::~SendCodecSpec() = default;
     88 
     89 std::string AudioSendStream::Config::SendCodecSpec::ToString() const {
     90  char buf[1024];
     91  SimpleStringBuilder ss(buf);
     92  ss << "{nack_enabled: " << (nack_enabled ? "true" : "false");
     93  ss << ", enable_non_sender_rtt: "
     94     << (enable_non_sender_rtt ? "true" : "false");
     95  ss << ", cng_payload_type: "
     96     << (cng_payload_type ? absl::StrCat(*cng_payload_type) : "<unset>");
     97  ss << ", red_payload_type: "
     98     << (red_payload_type ? absl::StrCat(*red_payload_type) : "<unset>");
     99  ss << ", payload_type: " << payload_type;
    100  ss << ", format: " << absl::StrCat(format);
    101  ss << '}';
    102  return ss.str();
    103 }
    104 
    105 bool AudioSendStream::Config::SendCodecSpec::operator==(
    106    const AudioSendStream::Config::SendCodecSpec& rhs) const {
    107  if (nack_enabled == rhs.nack_enabled &&
    108      enable_non_sender_rtt == rhs.enable_non_sender_rtt &&
    109      cng_payload_type == rhs.cng_payload_type &&
    110      red_payload_type == rhs.red_payload_type &&
    111      payload_type == rhs.payload_type && format == rhs.format &&
    112      target_bitrate_bps == rhs.target_bitrate_bps) {
    113    return true;
    114  }
    115  return false;
    116 }
    117 }  // namespace webrtc