#include "audio/audio_send_stream.h"
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/audio_codecs/audio_format.h"
#include "api/call/transport.h"
#include "api/crypto/frame_encryptor_interface.h"
#include "api/function_view.h"
#include "api/rtc_event_log/rtc_event_log.h"
#include "api/task_queue/task_queue_base.h"
#include "audio/audio_state.h"
#include "audio/channel_send.h"
#include "audio/conversion.h"
#include "call/rtp_config.h"
#include "call/rtp_transport_controller_send_interface.h"
#include "common_audio/vad/include/vad.h"
#include "logging/rtc_event_log/events/rtc_event_audio_send_stream_config.h"
#include "logging/rtc_event_log/rtc_stream_config.h"
#include "media/base/media_channel.h"
#include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
#include "modules/audio_coding/codecs/red/audio_encoder_copy_red.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/strings/audio_format_to_string.h"
#include "rtc_base/trace_event.h"
namespace webrtc {
namespace {
void UpdateEventLogStreamConfig(RtcEventLog& event_log,
const AudioSendStream::Config& config,
const AudioSendStream::Config* old_config) { … }
}
constexpr char AudioAllocationConfig::kKey[];
std::unique_ptr<StructParametersParser> AudioAllocationConfig::Parser() { … }
AudioAllocationConfig::AudioAllocationConfig(
const FieldTrialsView& field_trials) { … }
namespace internal {
AudioSendStream::AudioSendStream(
const Environment& env,
const webrtc::AudioSendStream::Config& config,
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
RtpTransportControllerSendInterface* rtp_transport,
BitrateAllocatorInterface* bitrate_allocator,
RtcpRttStats* rtcp_rtt_stats,
const absl::optional<RtpState>& suspended_rtp_state)
: … { … }
AudioSendStream::AudioSendStream(
const Environment& env,
const webrtc::AudioSendStream::Config& config,
const rtc::scoped_refptr<webrtc::AudioState>& audio_state,
RtpTransportControllerSendInterface* rtp_transport,
BitrateAllocatorInterface* bitrate_allocator,
const absl::optional<RtpState>& suspended_rtp_state,
std::unique_ptr<voe::ChannelSendInterface> channel_send)
: … { … }
AudioSendStream::~AudioSendStream() { … }
const webrtc::AudioSendStream::Config& AudioSendStream::GetConfig() const { … }
void AudioSendStream::Reconfigure(
const webrtc::AudioSendStream::Config& new_config,
SetParametersCallback callback) { … }
AudioSendStream::ExtensionIds AudioSendStream::FindExtensionIds(
const std::vector<RtpExtension>& extensions) { … }
int AudioSendStream::TransportSeqNumId(const AudioSendStream::Config& config) { … }
void AudioSendStream::ConfigureStream(
const webrtc::AudioSendStream::Config& new_config,
bool first_time,
SetParametersCallback callback) { … }
void AudioSendStream::Start() { … }
void AudioSendStream::Stop() { … }
void AudioSendStream::SendAudioData(std::unique_ptr<AudioFrame> audio_frame) { … }
bool AudioSendStream::SendTelephoneEvent(int payload_type,
int payload_frequency,
int event,
int duration_ms) { … }
void AudioSendStream::SetMuted(bool muted) { … }
webrtc::AudioSendStream::Stats AudioSendStream::GetStats() const { … }
webrtc::AudioSendStream::Stats AudioSendStream::GetStats(
bool has_remote_tracks) const { … }
void AudioSendStream::DeliverRtcp(const uint8_t* packet, size_t length) { … }
uint32_t AudioSendStream::OnBitrateUpdated(BitrateAllocationUpdate update) { … }
absl::optional<DataRate> AudioSendStream::GetUsedRate() const { … }
void AudioSendStream::SetTransportOverhead(
int transport_overhead_per_packet_bytes) { … }
void AudioSendStream::UpdateOverheadPerPacket() { … }
size_t AudioSendStream::TestOnlyGetPerPacketOverheadBytes() const { … }
RtpState AudioSendStream::GetRtpState() const { … }
const voe::ChannelSendInterface* AudioSendStream::GetChannel() const { … }
internal::AudioState* AudioSendStream::audio_state() { … }
const internal::AudioState* AudioSendStream::audio_state() const { … }
void AudioSendStream::StoreEncoderProperties(int sample_rate_hz,
size_t num_channels) { … }
bool AudioSendStream::SetupSendCodec(const Config& new_config) { … }
bool AudioSendStream::ReconfigureSendCodec(const Config& new_config) { … }
void AudioSendStream::ReconfigureANA(const Config& new_config) { … }
void AudioSendStream::ReconfigureCNG(const Config& new_config) { … }
void AudioSendStream::ReconfigureBitrateObserver(
const webrtc::AudioSendStream::Config& new_config) { … }
void AudioSendStream::ConfigureBitrateObserver() { … }
void AudioSendStream::RemoveBitrateObserver() { … }
absl::optional<AudioSendStream::TargetAudioBitrateConstraints>
AudioSendStream::GetMinMaxBitrateConstraints() const { … }
void AudioSendStream::RegisterCngPayloadType(int payload_type,
int clockrate_hz) { … }
}
}