1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker *
4*d9f75844SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker */
10*d9f75844SAndroid Build Coastguard Worker
11*d9f75844SAndroid Build Coastguard Worker #include "api/audio_codecs/audio_encoder.h"
12*d9f75844SAndroid Build Coastguard Worker
13*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/checks.h"
14*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/trace_event.h"
15*d9f75844SAndroid Build Coastguard Worker
16*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
17*d9f75844SAndroid Build Coastguard Worker
18*d9f75844SAndroid Build Coastguard Worker ANAStats::ANAStats() = default;
19*d9f75844SAndroid Build Coastguard Worker ANAStats::~ANAStats() = default;
20*d9f75844SAndroid Build Coastguard Worker ANAStats::ANAStats(const ANAStats&) = default;
21*d9f75844SAndroid Build Coastguard Worker
22*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo::EncodedInfo() = default;
23*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo::EncodedInfo(const EncodedInfo&) = default;
24*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo::EncodedInfo(EncodedInfo&&) = default;
25*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo::~EncodedInfo() = default;
26*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo& AudioEncoder::EncodedInfo::operator=(
27*d9f75844SAndroid Build Coastguard Worker const EncodedInfo&) = default;
28*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo& AudioEncoder::EncodedInfo::operator=(EncodedInfo&&) =
29*d9f75844SAndroid Build Coastguard Worker default;
30*d9f75844SAndroid Build Coastguard Worker
RtpTimestampRateHz() const31*d9f75844SAndroid Build Coastguard Worker int AudioEncoder::RtpTimestampRateHz() const {
32*d9f75844SAndroid Build Coastguard Worker return SampleRateHz();
33*d9f75844SAndroid Build Coastguard Worker }
34*d9f75844SAndroid Build Coastguard Worker
Encode(uint32_t rtp_timestamp,rtc::ArrayView<const int16_t> audio,rtc::Buffer * encoded)35*d9f75844SAndroid Build Coastguard Worker AudioEncoder::EncodedInfo AudioEncoder::Encode(
36*d9f75844SAndroid Build Coastguard Worker uint32_t rtp_timestamp,
37*d9f75844SAndroid Build Coastguard Worker rtc::ArrayView<const int16_t> audio,
38*d9f75844SAndroid Build Coastguard Worker rtc::Buffer* encoded) {
39*d9f75844SAndroid Build Coastguard Worker TRACE_EVENT0("webrtc", "AudioEncoder::Encode");
40*d9f75844SAndroid Build Coastguard Worker RTC_CHECK_EQ(audio.size(),
41*d9f75844SAndroid Build Coastguard Worker static_cast<size_t>(NumChannels() * SampleRateHz() / 100));
42*d9f75844SAndroid Build Coastguard Worker
43*d9f75844SAndroid Build Coastguard Worker const size_t old_size = encoded->size();
44*d9f75844SAndroid Build Coastguard Worker EncodedInfo info = EncodeImpl(rtp_timestamp, audio, encoded);
45*d9f75844SAndroid Build Coastguard Worker RTC_CHECK_EQ(encoded->size() - old_size, info.encoded_bytes);
46*d9f75844SAndroid Build Coastguard Worker return info;
47*d9f75844SAndroid Build Coastguard Worker }
48*d9f75844SAndroid Build Coastguard Worker
SetFec(bool enable)49*d9f75844SAndroid Build Coastguard Worker bool AudioEncoder::SetFec(bool enable) {
50*d9f75844SAndroid Build Coastguard Worker return !enable;
51*d9f75844SAndroid Build Coastguard Worker }
52*d9f75844SAndroid Build Coastguard Worker
SetDtx(bool enable)53*d9f75844SAndroid Build Coastguard Worker bool AudioEncoder::SetDtx(bool enable) {
54*d9f75844SAndroid Build Coastguard Worker return !enable;
55*d9f75844SAndroid Build Coastguard Worker }
56*d9f75844SAndroid Build Coastguard Worker
GetDtx() const57*d9f75844SAndroid Build Coastguard Worker bool AudioEncoder::GetDtx() const {
58*d9f75844SAndroid Build Coastguard Worker return false;
59*d9f75844SAndroid Build Coastguard Worker }
60*d9f75844SAndroid Build Coastguard Worker
SetApplication(Application application)61*d9f75844SAndroid Build Coastguard Worker bool AudioEncoder::SetApplication(Application application) {
62*d9f75844SAndroid Build Coastguard Worker return false;
63*d9f75844SAndroid Build Coastguard Worker }
64*d9f75844SAndroid Build Coastguard Worker
SetMaxPlaybackRate(int frequency_hz)65*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::SetMaxPlaybackRate(int frequency_hz) {}
66*d9f75844SAndroid Build Coastguard Worker
SetTargetBitrate(int target_bps)67*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::SetTargetBitrate(int target_bps) {}
68*d9f75844SAndroid Build Coastguard Worker
69*d9f75844SAndroid Build Coastguard Worker rtc::ArrayView<std::unique_ptr<AudioEncoder>>
ReclaimContainedEncoders()70*d9f75844SAndroid Build Coastguard Worker AudioEncoder::ReclaimContainedEncoders() {
71*d9f75844SAndroid Build Coastguard Worker return nullptr;
72*d9f75844SAndroid Build Coastguard Worker }
73*d9f75844SAndroid Build Coastguard Worker
EnableAudioNetworkAdaptor(const std::string & config_string,RtcEventLog * event_log)74*d9f75844SAndroid Build Coastguard Worker bool AudioEncoder::EnableAudioNetworkAdaptor(const std::string& config_string,
75*d9f75844SAndroid Build Coastguard Worker RtcEventLog* event_log) {
76*d9f75844SAndroid Build Coastguard Worker return false;
77*d9f75844SAndroid Build Coastguard Worker }
78*d9f75844SAndroid Build Coastguard Worker
DisableAudioNetworkAdaptor()79*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::DisableAudioNetworkAdaptor() {}
80*d9f75844SAndroid Build Coastguard Worker
OnReceivedUplinkPacketLossFraction(float uplink_packet_loss_fraction)81*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedUplinkPacketLossFraction(
82*d9f75844SAndroid Build Coastguard Worker float uplink_packet_loss_fraction) {}
83*d9f75844SAndroid Build Coastguard Worker
OnReceivedUplinkRecoverablePacketLossFraction(float uplink_recoverable_packet_loss_fraction)84*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedUplinkRecoverablePacketLossFraction(
85*d9f75844SAndroid Build Coastguard Worker float uplink_recoverable_packet_loss_fraction) {
86*d9f75844SAndroid Build Coastguard Worker RTC_DCHECK_NOTREACHED();
87*d9f75844SAndroid Build Coastguard Worker }
88*d9f75844SAndroid Build Coastguard Worker
OnReceivedTargetAudioBitrate(int target_audio_bitrate_bps)89*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedTargetAudioBitrate(int target_audio_bitrate_bps) {
90*d9f75844SAndroid Build Coastguard Worker OnReceivedUplinkBandwidth(target_audio_bitrate_bps, absl::nullopt);
91*d9f75844SAndroid Build Coastguard Worker }
92*d9f75844SAndroid Build Coastguard Worker
OnReceivedUplinkBandwidth(int target_audio_bitrate_bps,absl::optional<int64_t> bwe_period_ms)93*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedUplinkBandwidth(
94*d9f75844SAndroid Build Coastguard Worker int target_audio_bitrate_bps,
95*d9f75844SAndroid Build Coastguard Worker absl::optional<int64_t> bwe_period_ms) {}
96*d9f75844SAndroid Build Coastguard Worker
OnReceivedUplinkAllocation(BitrateAllocationUpdate update)97*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedUplinkAllocation(BitrateAllocationUpdate update) {
98*d9f75844SAndroid Build Coastguard Worker OnReceivedUplinkBandwidth(update.target_bitrate.bps(),
99*d9f75844SAndroid Build Coastguard Worker update.bwe_period.ms());
100*d9f75844SAndroid Build Coastguard Worker }
101*d9f75844SAndroid Build Coastguard Worker
OnReceivedRtt(int rtt_ms)102*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedRtt(int rtt_ms) {}
103*d9f75844SAndroid Build Coastguard Worker
OnReceivedOverhead(size_t overhead_bytes_per_packet)104*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::OnReceivedOverhead(size_t overhead_bytes_per_packet) {}
105*d9f75844SAndroid Build Coastguard Worker
SetReceiverFrameLengthRange(int min_frame_length_ms,int max_frame_length_ms)106*d9f75844SAndroid Build Coastguard Worker void AudioEncoder::SetReceiverFrameLengthRange(int min_frame_length_ms,
107*d9f75844SAndroid Build Coastguard Worker int max_frame_length_ms) {}
108*d9f75844SAndroid Build Coastguard Worker
GetANAStats() const109*d9f75844SAndroid Build Coastguard Worker ANAStats AudioEncoder::GetANAStats() const {
110*d9f75844SAndroid Build Coastguard Worker return ANAStats();
111*d9f75844SAndroid Build Coastguard Worker }
112*d9f75844SAndroid Build Coastguard Worker
113*d9f75844SAndroid Build Coastguard Worker constexpr int AudioEncoder::kMaxNumberOfChannels;
114*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc
115