xref: /aosp_15_r20/external/webrtc/api/audio_codecs/audio_encoder.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
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