[Git][pulseaudio/webrtc-audio-processing][master] Remove some unused files
Arun Raghavan (@arun)
gitlab at gitlab.freedesktop.org
Mon Dec 30 17:58:02 UTC 2024
Arun Raghavan pushed to branch master at PulseAudio / webrtc-audio-processing
Commits:
ecb88179 by Arun Raghavan at 2024-12-30T12:48:46-05:00
Remove some unused files
- - - - -
30 changed files:
- − webrtc/api/audio_codecs/audio_decoder.cc
- − webrtc/api/audio_codecs/audio_decoder.h
- − webrtc/api/audio_codecs/audio_encoder.cc
- − webrtc/api/audio_codecs/audio_encoder.h
- − webrtc/api/call/bitrate_allocation.h
- webrtc/api/meson.build
- − webrtc/api/units/data_rate.cc
- − webrtc/api/units/data_rate.h
- − webrtc/api/units/data_size.cc
- − webrtc/api/units/data_size.h
- webrtc/common_audio/meson.build
- − webrtc/common_audio/real_fourier.cc
- − webrtc/common_audio/real_fourier.h
- − webrtc/common_audio/real_fourier_ooura.cc
- − webrtc/common_audio/real_fourier_ooura.h
- − webrtc/common_audio/real_fourier_openmax.h
- − webrtc/common_audio/window_generator.cc
- − webrtc/common_audio/window_generator.h
- − webrtc/modules/audio_coding/codecs/audio_decoder.h
- − webrtc/modules/audio_coding/codecs/audio_encoder.h
- − webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h
- − webrtc/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
- − webrtc/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
- − webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
- − webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h
- − webrtc/rtc_base/ignore_wundef.h
- webrtc/rtc_base/meson.build
- − webrtc/rtc_base/synchronization/yield.cc
- − webrtc/rtc_base/synchronization/yield.h
- − webrtc/rtc_base/system/unused.h
Changes:
=====================================
webrtc/api/audio_codecs/audio_decoder.cc deleted
=====================================
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "api/audio_codecs/audio_decoder.h"
-
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <optional>
-#include <utility>
-#include <vector>
-
-#include "api/array_view.h"
-#include "rtc_base/buffer.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/sanitizer.h"
-#include "rtc_base/trace_event.h"
-
-namespace webrtc {
-
-namespace {
-
-class OldStyleEncodedFrame final : public AudioDecoder::EncodedAudioFrame {
- public:
- OldStyleEncodedFrame(AudioDecoder* decoder, rtc::Buffer&& payload)
- : decoder_(decoder), payload_(std::move(payload)) {}
-
- size_t Duration() const override {
- const int ret = decoder_->PacketDuration(payload_.data(), payload_.size());
- return ret < 0 ? 0 : static_cast<size_t>(ret);
- }
-
- std::optional<DecodeResult> Decode(
- rtc::ArrayView<int16_t> decoded) const override {
- auto speech_type = AudioDecoder::kSpeech;
- const int ret = decoder_->Decode(
- payload_.data(), payload_.size(), decoder_->SampleRateHz(),
- decoded.size() * sizeof(int16_t), decoded.data(), &speech_type);
- return ret < 0 ? std::nullopt
- : std::optional<DecodeResult>(
- {static_cast<size_t>(ret), speech_type});
- }
-
- private:
- AudioDecoder* const decoder_;
- const rtc::Buffer payload_;
-};
-
-} // namespace
-
-bool AudioDecoder::EncodedAudioFrame::IsDtxPacket() const {
- return false;
-}
-
-AudioDecoder::ParseResult::ParseResult() = default;
-AudioDecoder::ParseResult::ParseResult(ParseResult&& b) = default;
-AudioDecoder::ParseResult::ParseResult(uint32_t timestamp,
- int priority,
- std::unique_ptr<EncodedAudioFrame> frame)
- : timestamp(timestamp), priority(priority), frame(std::move(frame)) {
- RTC_DCHECK_GE(priority, 0);
-}
-
-AudioDecoder::ParseResult::~ParseResult() = default;
-
-AudioDecoder::ParseResult& AudioDecoder::ParseResult::operator=(
- ParseResult&& b) = default;
-
-std::vector<AudioDecoder::ParseResult> AudioDecoder::ParsePayload(
- rtc::Buffer&& payload,
- uint32_t timestamp) {
- std::vector<ParseResult> results;
- std::unique_ptr<EncodedAudioFrame> frame(
- new OldStyleEncodedFrame(this, std::move(payload)));
- results.emplace_back(timestamp, 0, std::move(frame));
- return results;
-}
-
-int AudioDecoder::Decode(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- size_t max_decoded_bytes,
- int16_t* decoded,
- SpeechType* speech_type) {
- TRACE_EVENT0("webrtc", "AudioDecoder::Decode");
- rtc::MsanCheckInitialized(rtc::MakeArrayView(encoded, encoded_len));
- int duration = PacketDuration(encoded, encoded_len);
- if (duration >= 0 &&
- duration * Channels() * sizeof(int16_t) > max_decoded_bytes) {
- return -1;
- }
- return DecodeInternal(encoded, encoded_len, sample_rate_hz, decoded,
- speech_type);
-}
-
-int AudioDecoder::DecodeRedundant(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- size_t max_decoded_bytes,
- int16_t* decoded,
- SpeechType* speech_type) {
- TRACE_EVENT0("webrtc", "AudioDecoder::DecodeRedundant");
- rtc::MsanCheckInitialized(rtc::MakeArrayView(encoded, encoded_len));
- int duration = PacketDurationRedundant(encoded, encoded_len);
- if (duration >= 0 &&
- duration * Channels() * sizeof(int16_t) > max_decoded_bytes) {
- return -1;
- }
- return DecodeRedundantInternal(encoded, encoded_len, sample_rate_hz, decoded,
- speech_type);
-}
-
-int AudioDecoder::DecodeRedundantInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) {
- return DecodeInternal(encoded, encoded_len, sample_rate_hz, decoded,
- speech_type);
-}
-
-bool AudioDecoder::HasDecodePlc() const {
- return false;
-}
-
-size_t AudioDecoder::DecodePlc(size_t num_frames, int16_t* decoded) {
- return 0;
-}
-
-// TODO(bugs.webrtc.org/9676): Remove default implementation.
-void AudioDecoder::GeneratePlc(size_t /*requested_samples_per_channel*/,
- rtc::BufferT<int16_t>* /*concealment_audio*/) {}
-
-int AudioDecoder::ErrorCode() {
- return 0;
-}
-
-int AudioDecoder::PacketDuration(const uint8_t* encoded,
- size_t encoded_len) const {
- return kNotImplemented;
-}
-
-int AudioDecoder::PacketDurationRedundant(const uint8_t* encoded,
- size_t encoded_len) const {
- return kNotImplemented;
-}
-
-bool AudioDecoder::PacketHasFec(const uint8_t* encoded,
- size_t encoded_len) const {
- return false;
-}
-
-AudioDecoder::SpeechType AudioDecoder::ConvertSpeechType(int16_t type) {
- switch (type) {
- case 0: // TODO(hlundin): Both iSAC and Opus return 0 for speech.
- case 1:
- return kSpeech;
- case 2:
- return kComfortNoise;
- default:
- RTC_DCHECK_NOTREACHED();
- return kSpeech;
- }
-}
-
-constexpr int AudioDecoder::kMaxNumberOfChannels;
-} // namespace webrtc
=====================================
webrtc/api/audio_codecs/audio_decoder.h deleted
=====================================
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef API_AUDIO_CODECS_AUDIO_DECODER_H_
-#define API_AUDIO_CODECS_AUDIO_DECODER_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-#include <optional>
-#include <vector>
-
-#include "api/array_view.h"
-#include "rtc_base/buffer.h"
-
-namespace webrtc {
-
-class AudioDecoder {
- public:
- enum SpeechType {
- kSpeech = 1,
- kComfortNoise = 2,
- };
-
- // Used by PacketDuration below. Save the value -1 for errors.
- enum { kNotImplemented = -2 };
-
- AudioDecoder() = default;
- virtual ~AudioDecoder() = default;
-
- AudioDecoder(const AudioDecoder&) = delete;
- AudioDecoder& operator=(const AudioDecoder&) = delete;
-
- class EncodedAudioFrame {
- public:
- struct DecodeResult {
- size_t num_decoded_samples;
- SpeechType speech_type;
- };
-
- virtual ~EncodedAudioFrame() = default;
-
- // Returns the duration in samples-per-channel of this audio frame.
- // If no duration can be ascertained, returns zero.
- virtual size_t Duration() const = 0;
-
- // Returns true if this packet contains DTX.
- virtual bool IsDtxPacket() const;
-
- // Decodes this frame of audio and writes the result in `decoded`.
- // `decoded` must be large enough to store as many samples as indicated by a
- // call to Duration() . On success, returns an std::optional containing the
- // total number of samples across all channels, as well as whether the
- // decoder produced comfort noise or speech. On failure, returns an empty
- // std::optional. Decode may be called at most once per frame object.
- virtual std::optional<DecodeResult> Decode(
- rtc::ArrayView<int16_t> decoded) const = 0;
- };
-
- struct ParseResult {
- ParseResult();
- ParseResult(uint32_t timestamp,
- int priority,
- std::unique_ptr<EncodedAudioFrame> frame);
- ParseResult(ParseResult&& b);
- ~ParseResult();
-
- ParseResult& operator=(ParseResult&& b);
-
- // The timestamp of the frame is in samples per channel.
- uint32_t timestamp;
- // The relative priority of the frame compared to other frames of the same
- // payload and the same timeframe. A higher value means a lower priority.
- // The highest priority is zero - negative values are not allowed.
- int priority;
- std::unique_ptr<EncodedAudioFrame> frame;
- };
-
- // Let the decoder parse this payload and prepare zero or more decodable
- // frames. Each frame must be between 10 ms and 120 ms long. The caller must
- // ensure that the AudioDecoder object outlives any frame objects returned by
- // this call. The decoder is free to swap or move the data from the `payload`
- // buffer. `timestamp` is the input timestamp, in samples, corresponding to
- // the start of the payload.
- virtual std::vector<ParseResult> ParsePayload(rtc::Buffer&& payload,
- uint32_t timestamp);
-
- // TODO(bugs.webrtc.org/10098): The Decode and DecodeRedundant methods are
- // obsolete; callers should call ParsePayload instead. For now, subclasses
- // must still implement DecodeInternal.
-
- // Decodes `encode_len` bytes from `encoded` and writes the result in
- // `decoded`. The maximum bytes allowed to be written into `decoded` is
- // `max_decoded_bytes`. Returns the total number of samples across all
- // channels. If the decoder produced comfort noise, `speech_type`
- // is set to kComfortNoise, otherwise it is kSpeech. The desired output
- // sample rate is provided in `sample_rate_hz`, which must be valid for the
- // codec at hand.
- int Decode(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- size_t max_decoded_bytes,
- int16_t* decoded,
- SpeechType* speech_type);
-
- // Same as Decode(), but interfaces to the decoders redundant decode function.
- // The default implementation simply calls the regular Decode() method.
- int DecodeRedundant(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- size_t max_decoded_bytes,
- int16_t* decoded,
- SpeechType* speech_type);
-
- // Indicates if the decoder implements the DecodePlc method.
- virtual bool HasDecodePlc() const;
-
- // Calls the packet-loss concealment of the decoder to update the state after
- // one or several lost packets. The caller has to make sure that the
- // memory allocated in `decoded` should accommodate `num_frames` frames.
- virtual size_t DecodePlc(size_t num_frames, int16_t* decoded);
-
- // Asks the decoder to generate packet-loss concealment and append it to the
- // end of `concealment_audio`. The concealment audio should be in
- // channel-interleaved format, with as many channels as the last decoded
- // packet produced. The implementation must produce at least
- // requested_samples_per_channel, or nothing at all. This is a signal to the
- // caller to conceal the loss with other means. If the implementation provides
- // concealment samples, it is also responsible for "stitching" it together
- // with the decoded audio on either side of the concealment.
- // Note: The default implementation of GeneratePlc will be deleted soon. All
- // implementations must provide their own, which can be a simple as a no-op.
- // TODO(bugs.webrtc.org/9676): Remove default implementation.
- virtual void GeneratePlc(size_t requested_samples_per_channel,
- rtc::BufferT<int16_t>* concealment_audio);
-
- // Resets the decoder state (empty buffers etc.).
- virtual void Reset() = 0;
-
- // Returns the last error code from the decoder.
- virtual int ErrorCode();
-
- // Returns the duration in samples-per-channel of the payload in `encoded`
- // which is `encoded_len` bytes long. Returns kNotImplemented if no duration
- // estimate is available, or -1 in case of an error.
- virtual int PacketDuration(const uint8_t* encoded, size_t encoded_len) const;
-
- // Returns the duration in samples-per-channel of the redandant payload in
- // `encoded` which is `encoded_len` bytes long. Returns kNotImplemented if no
- // duration estimate is available, or -1 in case of an error.
- virtual int PacketDurationRedundant(const uint8_t* encoded,
- size_t encoded_len) const;
-
- // Detects whether a packet has forward error correction. The packet is
- // comprised of the samples in `encoded` which is `encoded_len` bytes long.
- // Returns true if the packet has FEC and false otherwise.
- virtual bool PacketHasFec(const uint8_t* encoded, size_t encoded_len) const;
-
- // Returns the actual sample rate of the decoder's output. This value may not
- // change during the lifetime of the decoder.
- virtual int SampleRateHz() const = 0;
-
- // The number of channels in the decoder's output. This value may not change
- // during the lifetime of the decoder.
- virtual size_t Channels() const = 0;
-
- // The maximum number of audio channels supported by WebRTC decoders.
- static constexpr int kMaxNumberOfChannels = 24;
-
- protected:
- static SpeechType ConvertSpeechType(int16_t type);
-
- virtual int DecodeInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) = 0;
-
- virtual int DecodeRedundantInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type);
-};
-
-} // namespace webrtc
-#endif // API_AUDIO_CODECS_AUDIO_DECODER_H_
=====================================
webrtc/api/audio_codecs/audio_encoder.cc deleted
=====================================
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "api/audio_codecs/audio_encoder.h"
-
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <optional>
-#include <string>
-
-#include "api/array_view.h"
-#include "api/call/bitrate_allocation.h"
-#include "rtc_base/buffer.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/trace_event.h"
-
-namespace webrtc {
-
-ANAStats::ANAStats() = default;
-ANAStats::~ANAStats() = default;
-ANAStats::ANAStats(const ANAStats&) = default;
-
-AudioEncoder::EncodedInfo::EncodedInfo() = default;
-AudioEncoder::EncodedInfo::EncodedInfo(const EncodedInfo&) = default;
-AudioEncoder::EncodedInfo::EncodedInfo(EncodedInfo&&) = default;
-AudioEncoder::EncodedInfo::~EncodedInfo() = default;
-AudioEncoder::EncodedInfo& AudioEncoder::EncodedInfo::operator=(
- const EncodedInfo&) = default;
-AudioEncoder::EncodedInfo& AudioEncoder::EncodedInfo::operator=(EncodedInfo&&) =
- default;
-
-int AudioEncoder::RtpTimestampRateHz() const {
- return SampleRateHz();
-}
-
-AudioEncoder::EncodedInfo AudioEncoder::Encode(
- uint32_t rtp_timestamp,
- rtc::ArrayView<const int16_t> audio,
- rtc::Buffer* encoded) {
- TRACE_EVENT0("webrtc", "AudioEncoder::Encode");
- RTC_CHECK_EQ(audio.size(),
- static_cast<size_t>(NumChannels() * SampleRateHz() / 100));
-
- const size_t old_size = encoded->size();
- EncodedInfo info = EncodeImpl(rtp_timestamp, audio, encoded);
- RTC_CHECK_EQ(encoded->size() - old_size, info.encoded_bytes);
- return info;
-}
-
-bool AudioEncoder::SetFec(bool enable) {
- return !enable;
-}
-
-bool AudioEncoder::SetDtx(bool enable) {
- return !enable;
-}
-
-bool AudioEncoder::GetDtx() const {
- return false;
-}
-
-bool AudioEncoder::SetApplication(Application application) {
- return false;
-}
-
-void AudioEncoder::SetMaxPlaybackRate(int frequency_hz) {}
-
-void AudioEncoder::SetTargetBitrate(int target_bps) {}
-
-rtc::ArrayView<std::unique_ptr<AudioEncoder>>
-AudioEncoder::ReclaimContainedEncoders() {
- return nullptr;
-}
-
-bool AudioEncoder::EnableAudioNetworkAdaptor(const std::string& config_string,
- RtcEventLog* event_log) {
- return false;
-}
-
-void AudioEncoder::DisableAudioNetworkAdaptor() {}
-
-void AudioEncoder::OnReceivedUplinkPacketLossFraction(
- float uplink_packet_loss_fraction) {}
-
-void AudioEncoder::OnReceivedUplinkRecoverablePacketLossFraction(
- float uplink_recoverable_packet_loss_fraction) {
- RTC_DCHECK_NOTREACHED();
-}
-
-void AudioEncoder::OnReceivedTargetAudioBitrate(int target_audio_bitrate_bps) {
- OnReceivedUplinkBandwidth(target_audio_bitrate_bps, std::nullopt);
-}
-
-void AudioEncoder::OnReceivedUplinkBandwidth(
- int target_audio_bitrate_bps,
- std::optional<int64_t> bwe_period_ms) {}
-
-void AudioEncoder::OnReceivedUplinkAllocation(BitrateAllocationUpdate update) {
- OnReceivedUplinkBandwidth(update.target_bitrate.bps(),
- update.bwe_period.ms());
-}
-
-void AudioEncoder::OnReceivedRtt(int rtt_ms) {}
-
-void AudioEncoder::OnReceivedOverhead(size_t overhead_bytes_per_packet) {}
-
-void AudioEncoder::SetReceiverFrameLengthRange(int min_frame_length_ms,
- int max_frame_length_ms) {}
-
-ANAStats AudioEncoder::GetANAStats() const {
- return ANAStats();
-}
-
-constexpr int AudioEncoder::kMaxNumberOfChannels;
-} // namespace webrtc
=====================================
webrtc/api/audio_codecs/audio_encoder.h deleted
=====================================
@@ -1,271 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef API_AUDIO_CODECS_AUDIO_ENCODER_H_
-#define API_AUDIO_CODECS_AUDIO_ENCODER_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-#include <optional>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "absl/base/attributes.h"
-#include "api/array_view.h"
-#include "api/call/bitrate_allocation.h"
-#include "api/units/data_rate.h"
-#include "api/units/time_delta.h"
-#include "rtc_base/buffer.h"
-
-namespace webrtc {
-
-class RtcEventLog;
-
-// Statistics related to Audio Network Adaptation.
-struct ANAStats {
- ANAStats();
- ANAStats(const ANAStats&);
- ~ANAStats();
- // Number of actions taken by the ANA bitrate controller since the start of
- // the call. If this value is not set, it indicates that the bitrate
- // controller is disabled.
- std::optional<uint32_t> bitrate_action_counter;
- // Number of actions taken by the ANA channel controller since the start of
- // the call. If this value is not set, it indicates that the channel
- // controller is disabled.
- std::optional<uint32_t> channel_action_counter;
- // Number of actions taken by the ANA DTX controller since the start of the
- // call. If this value is not set, it indicates that the DTX controller is
- // disabled.
- std::optional<uint32_t> dtx_action_counter;
- // Number of actions taken by the ANA FEC controller since the start of the
- // call. If this value is not set, it indicates that the FEC controller is
- // disabled.
- std::optional<uint32_t> fec_action_counter;
- // Number of times the ANA frame length controller decided to increase the
- // frame length since the start of the call. If this value is not set, it
- // indicates that the frame length controller is disabled.
- std::optional<uint32_t> frame_length_increase_counter;
- // Number of times the ANA frame length controller decided to decrease the
- // frame length since the start of the call. If this value is not set, it
- // indicates that the frame length controller is disabled.
- std::optional<uint32_t> frame_length_decrease_counter;
- // The uplink packet loss fractions as set by the ANA FEC controller. If this
- // value is not set, it indicates that the ANA FEC controller is not active.
- std::optional<float> uplink_packet_loss_fraction;
-};
-
-// This is the interface class for encoders in AudioCoding module. Each codec
-// type must have an implementation of this class.
-class AudioEncoder {
- public:
- // Used for UMA logging of codec usage. The same codecs, with the
- // same values, must be listed in
- // src/tools/metrics/histograms/histograms.xml in chromium to log
- // correct values.
- enum class CodecType {
- kOther = 0, // Codec not specified, and/or not listed in this enum
- kOpus = 1,
- kIsac = 2,
- kPcmA = 3,
- kPcmU = 4,
- kG722 = 5,
- kIlbc = 6,
-
- // Number of histogram bins in the UMA logging of codec types. The
- // total number of different codecs that are logged cannot exceed this
- // number.
- kMaxLoggedAudioCodecTypes
- };
-
- struct EncodedInfoLeaf {
- size_t encoded_bytes = 0;
- uint32_t encoded_timestamp = 0;
- int payload_type = 0;
- bool send_even_if_empty = false;
- bool speech = true;
- CodecType encoder_type = CodecType::kOther;
- };
-
- // This is the main struct for auxiliary encoding information. Each encoded
- // packet should be accompanied by one EncodedInfo struct, containing the
- // total number of `encoded_bytes`, the `encoded_timestamp` and the
- // `payload_type`. If the packet contains redundant encodings, the `redundant`
- // vector will be populated with EncodedInfoLeaf structs. Each struct in the
- // vector represents one encoding; the order of structs in the vector is the
- // same as the order in which the actual payloads are written to the byte
- // stream. When EncoderInfoLeaf structs are present in the vector, the main
- // struct's `encoded_bytes` will be the sum of all the `encoded_bytes` in the
- // vector.
- struct EncodedInfo : public EncodedInfoLeaf {
- EncodedInfo();
- EncodedInfo(const EncodedInfo&);
- EncodedInfo(EncodedInfo&&);
- ~EncodedInfo();
- EncodedInfo& operator=(const EncodedInfo&);
- EncodedInfo& operator=(EncodedInfo&&);
-
- std::vector<EncodedInfoLeaf> redundant;
- };
-
- virtual ~AudioEncoder() = default;
-
- // Returns the input sample rate in Hz and the number of input channels.
- // These are constants set at instantiation time.
- virtual int SampleRateHz() const = 0;
- virtual size_t NumChannels() const = 0;
-
- // Returns the rate at which the RTP timestamps are updated. The default
- // implementation returns SampleRateHz().
- virtual int RtpTimestampRateHz() const;
-
- // Returns the number of 10 ms frames the encoder will put in the next
- // packet. This value may only change when Encode() outputs a packet; i.e.,
- // the encoder may vary the number of 10 ms frames from packet to packet, but
- // it must decide the length of the next packet no later than when outputting
- // the preceding packet.
- virtual size_t Num10MsFramesInNextPacket() const = 0;
-
- // Returns the maximum value that can be returned by
- // Num10MsFramesInNextPacket().
- virtual size_t Max10MsFramesInAPacket() const = 0;
-
- // Returns the current target bitrate in bits/s. The value -1 means that the
- // codec adapts the target automatically, and a current target cannot be
- // provided.
- virtual int GetTargetBitrate() const = 0;
-
- // Accepts one 10 ms block of input audio (i.e., SampleRateHz() / 100 *
- // NumChannels() samples). Multi-channel audio must be sample-interleaved.
- // The encoder appends zero or more bytes of output to `encoded` and returns
- // additional encoding information. Encode() checks some preconditions, calls
- // EncodeImpl() which does the actual work, and then checks some
- // postconditions.
- EncodedInfo Encode(uint32_t rtp_timestamp,
- rtc::ArrayView<const int16_t> audio,
- rtc::Buffer* encoded);
-
- // Resets the encoder to its starting state, discarding any input that has
- // been fed to the encoder but not yet emitted in a packet.
- virtual void Reset() = 0;
-
- // Enables or disables codec-internal FEC (forward error correction). Returns
- // true if the codec was able to comply. The default implementation returns
- // true when asked to disable FEC and false when asked to enable it (meaning
- // that FEC isn't supported).
- virtual bool SetFec(bool enable);
-
- // Enables or disables codec-internal VAD/DTX. Returns true if the codec was
- // able to comply. The default implementation returns true when asked to
- // disable DTX and false when asked to enable it (meaning that DTX isn't
- // supported).
- virtual bool SetDtx(bool enable);
-
- // Returns the status of codec-internal DTX. The default implementation always
- // returns false.
- virtual bool GetDtx() const;
-
- // Sets the application mode. Returns true if the codec was able to comply.
- // The default implementation just returns false.
- enum class Application { kSpeech, kAudio };
- virtual bool SetApplication(Application application);
-
- // Tells the encoder about the highest sample rate the decoder is expected to
- // use when decoding the bitstream. The encoder would typically use this
- // information to adjust the quality of the encoding. The default
- // implementation does nothing.
- virtual void SetMaxPlaybackRate(int frequency_hz);
-
- // Tells the encoder what average bitrate we'd like it to produce. The
- // encoder is free to adjust or disregard the given bitrate (the default
- // implementation does the latter).
- ABSL_DEPRECATED("Use OnReceivedTargetAudioBitrate instead")
- virtual void SetTargetBitrate(int target_bps);
-
- // Causes this encoder to let go of any other encoders it contains, and
- // returns a pointer to an array where they are stored (which is required to
- // live as long as this encoder). Unless the returned array is empty, you may
- // not call any methods on this encoder afterwards, except for the
- // destructor. The default implementation just returns an empty array.
- // NOTE: This method is subject to change. Do not call or override it.
- virtual rtc::ArrayView<std::unique_ptr<AudioEncoder>>
- ReclaimContainedEncoders();
-
- // Enables audio network adaptor. Returns true if successful.
- virtual bool EnableAudioNetworkAdaptor(const std::string& config_string,
- RtcEventLog* event_log);
-
- // Disables audio network adaptor.
- virtual void DisableAudioNetworkAdaptor();
-
- // Provides uplink packet loss fraction to this encoder to allow it to adapt.
- // `uplink_packet_loss_fraction` is in the range [0.0, 1.0].
- virtual void OnReceivedUplinkPacketLossFraction(
- float uplink_packet_loss_fraction);
-
- ABSL_DEPRECATED("")
- virtual void OnReceivedUplinkRecoverablePacketLossFraction(
- float uplink_recoverable_packet_loss_fraction);
-
- // Provides target audio bitrate to this encoder to allow it to adapt.
- virtual void OnReceivedTargetAudioBitrate(int target_bps);
-
- // Provides target audio bitrate and corresponding probing interval of
- // the bandwidth estimator to this encoder to allow it to adapt.
- virtual void OnReceivedUplinkBandwidth(int target_audio_bitrate_bps,
- std::optional<int64_t> bwe_period_ms);
-
- // Provides target audio bitrate and corresponding probing interval of
- // the bandwidth estimator to this encoder to allow it to adapt.
- virtual void OnReceivedUplinkAllocation(BitrateAllocationUpdate update);
-
- // Provides RTT to this encoder to allow it to adapt.
- virtual void OnReceivedRtt(int rtt_ms);
-
- // Provides overhead to this encoder to adapt. The overhead is the number of
- // bytes that will be added to each packet the encoder generates.
- virtual void OnReceivedOverhead(size_t overhead_bytes_per_packet);
-
- // To allow encoder to adapt its frame length, it must be provided the frame
- // length range that receivers can accept.
- virtual void SetReceiverFrameLengthRange(int min_frame_length_ms,
- int max_frame_length_ms);
-
- // Get statistics related to audio network adaptation.
- virtual ANAStats GetANAStats() const;
-
- // The range of frame lengths that are supported or nullopt if there's no such
- // information. This is used together with the bitrate range to calculate the
- // full bitrate range, including overhead.
- virtual std::optional<std::pair<TimeDelta, TimeDelta>> GetFrameLengthRange()
- const = 0;
-
- // The range of payload bitrates that are supported. This is used together
- // with the frame length range to calculate the full bitrate range, including
- // overhead.
- virtual std::optional<std::pair<DataRate, DataRate>> GetBitrateRange() const {
- return std::nullopt;
- }
-
- // The maximum number of audio channels supported by WebRTC encoders.
- static constexpr int kMaxNumberOfChannels = 24;
-
- protected:
- // Subclasses implement this to perform the actual encoding. Called by
- // Encode().
- virtual EncodedInfo EncodeImpl(uint32_t rtp_timestamp,
- rtc::ArrayView<const int16_t> audio,
- rtc::Buffer* encoded) = 0;
-};
-} // namespace webrtc
-#endif // API_AUDIO_CODECS_AUDIO_ENCODER_H_
=====================================
webrtc/api/call/bitrate_allocation.h deleted
=====================================
@@ -1,45 +0,0 @@
-/*
- * Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef API_CALL_BITRATE_ALLOCATION_H_
-#define API_CALL_BITRATE_ALLOCATION_H_
-
-#include "api/units/data_rate.h"
-#include "api/units/time_delta.h"
-
-namespace webrtc {
-
-// BitrateAllocationUpdate provides information to allocated streams about their
-// bitrate allocation. It originates from the BitrateAllocater class and is
-// propagated from there.
-struct BitrateAllocationUpdate {
- // The allocated target bitrate. Media streams should produce this amount of
- // data. (Note that this may include packet overhead depending on
- // configuration.)
- DataRate target_bitrate = DataRate::Zero();
- // The allocated part of the estimated link capacity. This is more stable than
- // the target as it is based on the underlying link capacity estimate. This
- // should be used to change encoder configuration when the cost of change is
- // high.
- DataRate stable_target_bitrate = DataRate::Zero();
- // Predicted packet loss ratio.
- double packet_loss_ratio = 0;
- // Predicted round trip time.
- TimeDelta round_trip_time = TimeDelta::PlusInfinity();
- // `bwe_period` is deprecated, use `stable_target_bitrate` allocation instead.
- TimeDelta bwe_period = TimeDelta::PlusInfinity();
- // Congestion window pushback bitrate reduction fraction. Used in
- // VideoStreamEncoder to reduce the bitrate by the given fraction
- // by dropping frames.
- double cwnd_reduce_ratio = 0;
-};
-
-} // namespace webrtc
-
-#endif // API_CALL_BITRATE_ALLOCATION_H_
=====================================
webrtc/api/meson.build
=====================================
@@ -4,13 +4,9 @@ api_sources = [
'audio/audio_processing_statistics.cc',
'audio/channel_layout.cc',
'audio/echo_canceller3_config.cc',
- 'audio_codecs/audio_decoder.cc',
- 'audio_codecs/audio_encoder.cc',
'rtp_headers.cc',
'rtp_packet_info.cc',
'task_queue/task_queue_base.cc',
- 'units/data_rate.cc',
- 'units/data_size.cc',
'units/frequency.cc',
'units/time_delta.cc',
'units/timestamp.cc',
=====================================
webrtc/api/units/data_rate.cc deleted
=====================================
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "api/units/data_rate.h"
-
-#include <string>
-
-#include "api/array_view.h"
-#include "rtc_base/strings/string_builder.h"
-
-namespace webrtc {
-
-std::string ToString(DataRate value) {
- char buf[64];
- rtc::SimpleStringBuilder sb(buf);
- if (value.IsPlusInfinity()) {
- sb << "+inf bps";
- } else if (value.IsMinusInfinity()) {
- sb << "-inf bps";
- } else {
- if (value.bps() == 0 || value.bps() % 1000 != 0) {
- sb << value.bps() << " bps";
- } else {
- sb << value.kbps() << " kbps";
- }
- }
- return sb.str();
-}
-} // namespace webrtc
=====================================
webrtc/api/units/data_rate.h deleted
=====================================
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef API_UNITS_DATA_RATE_H_
-#define API_UNITS_DATA_RATE_H_
-
-#include <cstdint>
-#include <limits>
-#include <string>
-#include <type_traits>
-
-#include "api/units/data_size.h"
-#include "api/units/frequency.h"
-#include "api/units/time_delta.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/system/rtc_export.h"
-#include "rtc_base/units/unit_base.h" // IWYU pragma: export
-
-namespace webrtc {
-// DataRate is a class that represents a given data rate. This can be used to
-// represent bandwidth, encoding bitrate, etc. The internal storage is bits per
-// second (bps).
-class DataRate final : public rtc_units_impl::RelativeUnit<DataRate> {
- public:
- template <typename T>
- static constexpr DataRate BitsPerSec(T value) {
- static_assert(std::is_arithmetic<T>::value, "");
- return FromValue(value);
- }
- template <typename T>
- static constexpr DataRate BytesPerSec(T value) {
- static_assert(std::is_arithmetic<T>::value, "");
- return FromFraction(8, value);
- }
- template <typename T>
- static constexpr DataRate KilobitsPerSec(T value) {
- static_assert(std::is_arithmetic<T>::value, "");
- return FromFraction(1000, value);
- }
- static constexpr DataRate Infinity() { return PlusInfinity(); }
-
- DataRate() = delete;
-
- template <typename Sink>
- friend void AbslStringify(Sink& sink, DataRate value);
-
- template <typename T = int64_t>
- constexpr T bps() const {
- return ToValue<T>();
- }
- template <typename T = int64_t>
- constexpr T bytes_per_sec() const {
- return ToFraction<8, T>();
- }
- template <typename T = int64_t>
- constexpr T kbps() const {
- return ToFraction<1000, T>();
- }
- constexpr int64_t bps_or(int64_t fallback_value) const {
- return ToValueOr(fallback_value);
- }
- constexpr int64_t kbps_or(int64_t fallback_value) const {
- return ToFractionOr<1000>(fallback_value);
- }
-
- private:
- // Bits per second used internally to simplify debugging by making the value
- // more recognizable.
- friend class rtc_units_impl::UnitBase<DataRate>;
- using RelativeUnit::RelativeUnit;
- static constexpr bool one_sided = true;
-};
-
-namespace data_rate_impl {
-inline constexpr int64_t Microbits(const DataSize& size) {
- constexpr int64_t kMaxBeforeConversion =
- std::numeric_limits<int64_t>::max() / 8000000;
- RTC_DCHECK_LE(size.bytes(), kMaxBeforeConversion)
- << "size is too large to be expressed in microbits";
- return size.bytes() * 8000000;
-}
-
-inline constexpr int64_t MillibytePerSec(const DataRate& size) {
- constexpr int64_t kMaxBeforeConversion =
- std::numeric_limits<int64_t>::max() / (1000 / 8);
- RTC_DCHECK_LE(size.bps(), kMaxBeforeConversion)
- << "rate is too large to be expressed in microbytes per second";
- return size.bps() * (1000 / 8);
-}
-} // namespace data_rate_impl
-
-inline constexpr DataRate operator/(const DataSize size,
- const TimeDelta duration) {
- return DataRate::BitsPerSec(data_rate_impl::Microbits(size) / duration.us());
-}
-inline constexpr TimeDelta operator/(const DataSize size, const DataRate rate) {
- return TimeDelta::Micros(data_rate_impl::Microbits(size) / rate.bps());
-}
-inline constexpr DataSize operator*(const DataRate rate,
- const TimeDelta duration) {
- int64_t microbits = rate.bps() * duration.us();
- return DataSize::Bytes((microbits + 4000000) / 8000000);
-}
-inline constexpr DataSize operator*(const TimeDelta duration,
- const DataRate rate) {
- return rate * duration;
-}
-
-inline constexpr DataSize operator/(const DataRate rate,
- const Frequency frequency) {
- int64_t millihertz = frequency.millihertz<int64_t>();
- // Note that the value is truncated here reather than rounded, potentially
- // introducing an error of .5 bytes if rounding were expected.
- return DataSize::Bytes(data_rate_impl::MillibytePerSec(rate) / millihertz);
-}
-inline constexpr Frequency operator/(const DataRate rate, const DataSize size) {
- return Frequency::MilliHertz(data_rate_impl::MillibytePerSec(rate) /
- size.bytes());
-}
-inline constexpr DataRate operator*(const DataSize size,
- const Frequency frequency) {
- RTC_DCHECK(frequency.IsZero() ||
- size.bytes() <= std::numeric_limits<int64_t>::max() / 8 /
- frequency.millihertz<int64_t>());
- int64_t millibits_per_second =
- size.bytes() * 8 * frequency.millihertz<int64_t>();
- return DataRate::BitsPerSec((millibits_per_second + 500) / 1000);
-}
-inline constexpr DataRate operator*(const Frequency frequency,
- const DataSize size) {
- return size * frequency;
-}
-
-RTC_EXPORT std::string ToString(DataRate value);
-inline std::string ToLogString(DataRate value) {
- return ToString(value);
-}
-
-template <typename Sink>
-void AbslStringify(Sink& sink, DataRate value) {
- sink.Append(ToString(value));
-}
-
-} // namespace webrtc
-
-#endif // API_UNITS_DATA_RATE_H_
=====================================
webrtc/api/units/data_size.cc deleted
=====================================
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "api/units/data_size.h"
-
-#include <string>
-
-#include "api/array_view.h"
-#include "rtc_base/strings/string_builder.h"
-
-namespace webrtc {
-
-std::string ToString(DataSize value) {
- char buf[64];
- rtc::SimpleStringBuilder sb(buf);
- if (value.IsPlusInfinity()) {
- sb << "+inf bytes";
- } else if (value.IsMinusInfinity()) {
- sb << "-inf bytes";
- } else {
- sb << value.bytes() << " bytes";
- }
- return sb.str();
-}
-} // namespace webrtc
=====================================
webrtc/api/units/data_size.h deleted
=====================================
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef API_UNITS_DATA_SIZE_H_
-#define API_UNITS_DATA_SIZE_H_
-
-#include <cstdint>
-#include <string>
-#include <type_traits>
-
-#include "rtc_base/system/rtc_export.h"
-#include "rtc_base/units/unit_base.h" // IWYU pragma: export
-
-namespace webrtc {
-// DataSize is a class represeting a count of bytes.
-class DataSize final : public rtc_units_impl::RelativeUnit<DataSize> {
- public:
- template <typename T>
- static constexpr DataSize Bytes(T value) {
- static_assert(std::is_arithmetic<T>::value, "");
- return FromValue(value);
- }
- static constexpr DataSize Infinity() { return PlusInfinity(); }
-
- DataSize() = delete;
-
- template <typename Sink>
- friend void AbslStringify(Sink& sink, DataSize value);
-
- template <typename T = int64_t>
- constexpr T bytes() const {
- return ToValue<T>();
- }
-
- constexpr int64_t bytes_or(int64_t fallback_value) const {
- return ToValueOr(fallback_value);
- }
-
- private:
- friend class rtc_units_impl::UnitBase<DataSize>;
- using RelativeUnit::RelativeUnit;
- static constexpr bool one_sided = true;
-};
-
-RTC_EXPORT std::string ToString(DataSize value);
-inline std::string ToLogString(DataSize value) {
- return ToString(value);
-}
-
-template <typename Sink>
-void AbslStringify(Sink& sink, DataSize value) {
- sink.Append(ToString(value));
-}
-
-} // namespace webrtc
-
-#endif // API_UNITS_DATA_SIZE_H_
=====================================
webrtc/common_audio/meson.build
=====================================
@@ -4,8 +4,6 @@ common_audio_sources = [
'channel_buffer.cc',
'fir_filter_c.cc',
'fir_filter_factory.cc',
- 'real_fourier.cc',
- 'real_fourier_ooura.cc',
'resampler/push_resampler.cc',
'resampler/push_sinc_resampler.cc',
'resampler/resampler.cc',
@@ -55,7 +53,6 @@ common_audio_sources = [
'vad/vad_gmm.c',
'vad/vad_sp.c',
'vad/webrtc_vad.c',
- 'window_generator.cc',
]
arch_libs = []
=====================================
webrtc/common_audio/real_fourier.cc deleted
=====================================
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "common_audio/real_fourier.h"
-
-#include "common_audio/real_fourier_ooura.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "rtc_base/checks.h"
-
-namespace webrtc {
-
-using std::complex;
-
-const size_t RealFourier::kFftBufferAlignment = 32;
-
-std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
- return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
-}
-
-int RealFourier::FftOrder(size_t length) {
- RTC_CHECK_GT(length, 0U);
- return WebRtcSpl_GetSizeInBits(static_cast<uint32_t>(length - 1));
-}
-
-size_t RealFourier::FftLength(int order) {
- RTC_CHECK_GE(order, 0);
- return size_t{1} << order;
-}
-
-size_t RealFourier::ComplexLength(int order) {
- return FftLength(order) / 2 + 1;
-}
-
-RealFourier::fft_real_scoper RealFourier::AllocRealBuffer(int count) {
- return fft_real_scoper(static_cast<float*>(
- AlignedMalloc(sizeof(float) * count, kFftBufferAlignment)));
-}
-
-RealFourier::fft_cplx_scoper RealFourier::AllocCplxBuffer(int count) {
- return fft_cplx_scoper(static_cast<complex<float>*>(
- AlignedMalloc(sizeof(complex<float>) * count, kFftBufferAlignment)));
-}
-
-} // namespace webrtc
=====================================
webrtc/common_audio/real_fourier.h deleted
=====================================
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef COMMON_AUDIO_REAL_FOURIER_H_
-#define COMMON_AUDIO_REAL_FOURIER_H_
-
-#include <stddef.h>
-
-#include <complex>
-#include <memory>
-
-#include "rtc_base/memory/aligned_malloc.h"
-
-// Uniform interface class for the real DFT and its inverse, for power-of-2
-// input lengths. Also contains helper functions for buffer allocation, taking
-// care of any memory alignment requirements the underlying library might have.
-
-namespace webrtc {
-
-class RealFourier {
- public:
- // Shorthand typenames for the scopers used by the buffer allocation helpers.
- typedef std::unique_ptr<float[], AlignedFreeDeleter> fft_real_scoper;
- typedef std::unique_ptr<std::complex<float>[], AlignedFreeDeleter>
- fft_cplx_scoper;
-
- // The alignment required for all input and output buffers, in bytes.
- static const size_t kFftBufferAlignment;
-
- // Construct a wrapper instance for the given input order, which must be
- // between 1 and kMaxFftOrder, inclusively.
- static std::unique_ptr<RealFourier> Create(int fft_order);
- virtual ~RealFourier() {}
-
- // Helper to compute the smallest FFT order (a power of 2) which will contain
- // the given input length.
- static int FftOrder(size_t length);
-
- // Helper to compute the input length from the FFT order.
- static size_t FftLength(int order);
-
- // Helper to compute the exact length, in complex floats, of the transform
- // output (i.e. |2^order / 2 + 1|).
- static size_t ComplexLength(int order);
-
- // Buffer allocation helpers. The buffers are large enough to hold `count`
- // floats/complexes and suitably aligned for use by the implementation.
- // The returned scopers are set up with proper deleters; the caller owns
- // the allocated memory.
- static fft_real_scoper AllocRealBuffer(int count);
- static fft_cplx_scoper AllocCplxBuffer(int count);
-
- // Main forward transform interface. The output array need only be big
- // enough for |2^order / 2 + 1| elements - the conjugate pairs are not
- // returned. Input and output must be properly aligned (e.g. through
- // AllocRealBuffer and AllocCplxBuffer) and input length must be
- // |2^order| (same as given at construction time).
- virtual void Forward(const float* src, std::complex<float>* dest) const = 0;
-
- // Inverse transform. Same input format as output above, conjugate pairs
- // not needed.
- virtual void Inverse(const std::complex<float>* src, float* dest) const = 0;
-
- virtual int order() const = 0;
-};
-
-} // namespace webrtc
-
-#endif // COMMON_AUDIO_REAL_FOURIER_H_
=====================================
webrtc/common_audio/real_fourier_ooura.cc deleted
=====================================
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "common_audio/real_fourier_ooura.h"
-
-#include <algorithm>
-#include <cmath>
-
-#include "common_audio/third_party/ooura/fft_size_256/fft4g.h"
-#include "rtc_base/checks.h"
-
-namespace webrtc {
-
-using std::complex;
-
-namespace {
-
-void Conjugate(complex<float>* array, size_t complex_length) {
- std::for_each(array, array + complex_length,
- [=](complex<float>& v) { v = std::conj(v); });
-}
-
-size_t ComputeWorkIpSize(size_t fft_length) {
- return static_cast<size_t>(
- 2 + std::ceil(std::sqrt(static_cast<float>(fft_length))));
-}
-
-} // namespace
-
-RealFourierOoura::RealFourierOoura(int fft_order)
- : order_(fft_order),
- length_(FftLength(order_)),
- complex_length_(ComplexLength(order_)),
- // Zero-initializing work_ip_ will cause rdft to initialize these work
- // arrays on the first call.
- work_ip_(new size_t[ComputeWorkIpSize(length_)]()),
- work_w_(new float[complex_length_]()) {
- RTC_CHECK_GE(fft_order, 1);
-}
-
-RealFourierOoura::~RealFourierOoura() = default;
-
-void RealFourierOoura::Forward(const float* src, complex<float>* dest) const {
- {
- // This cast is well-defined since C++11. See "Non-static data members" at:
- // http://en.cppreference.com/w/cpp/numeric/complex
- auto* dest_float = reinterpret_cast<float*>(dest);
- std::copy(src, src + length_, dest_float);
- WebRtc_rdft(length_, 1, dest_float, work_ip_.get(), work_w_.get());
- }
-
- // Ooura places real[n/2] in imag[0].
- dest[complex_length_ - 1] = complex<float>(dest[0].imag(), 0.0f);
- dest[0] = complex<float>(dest[0].real(), 0.0f);
- // Ooura returns the conjugate of the usual Fourier definition.
- Conjugate(dest, complex_length_);
-}
-
-void RealFourierOoura::Inverse(const complex<float>* src, float* dest) const {
- {
- auto* dest_complex = reinterpret_cast<complex<float>*>(dest);
- // The real output array is shorter than the input complex array by one
- // complex element.
- const size_t dest_complex_length = complex_length_ - 1;
- std::copy(src, src + dest_complex_length, dest_complex);
- // Restore Ooura's conjugate definition.
- Conjugate(dest_complex, dest_complex_length);
- // Restore real[n/2] to imag[0].
- dest_complex[0] =
- complex<float>(dest_complex[0].real(), src[complex_length_ - 1].real());
- }
-
- WebRtc_rdft(length_, -1, dest, work_ip_.get(), work_w_.get());
-
- // Ooura returns a scaled version.
- const float scale = 2.0f / length_;
- std::for_each(dest, dest + length_, [scale](float& v) { v *= scale; });
-}
-
-int RealFourierOoura::order() const {
- return order_;
-}
-
-} // namespace webrtc
=====================================
webrtc/common_audio/real_fourier_ooura.h deleted
=====================================
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef COMMON_AUDIO_REAL_FOURIER_OOURA_H_
-#define COMMON_AUDIO_REAL_FOURIER_OOURA_H_
-
-#include <stddef.h>
-
-#include <complex>
-#include <memory>
-
-#include "common_audio/real_fourier.h"
-
-namespace webrtc {
-
-class RealFourierOoura : public RealFourier {
- public:
- explicit RealFourierOoura(int fft_order);
- ~RealFourierOoura() override;
-
- void Forward(const float* src, std::complex<float>* dest) const override;
- void Inverse(const std::complex<float>* src, float* dest) const override;
-
- int order() const override;
-
- private:
- const int order_;
- const size_t length_;
- const size_t complex_length_;
- // These are work arrays for Ooura. The names are based on the comments in
- // common_audio/third_party/ooura/fft_size_256/fft4g.cc.
- const std::unique_ptr<size_t[]> work_ip_;
- const std::unique_ptr<float[]> work_w_;
-};
-
-} // namespace webrtc
-
-#endif // COMMON_AUDIO_REAL_FOURIER_OOURA_H_
=====================================
webrtc/common_audio/real_fourier_openmax.h deleted
=====================================
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_COMMON_AUDIO_REAL_FOURIER_OPENMAX_H_
-#define WEBRTC_COMMON_AUDIO_REAL_FOURIER_OPENMAX_H_
-
-#include <complex>
-
-#include "webrtc/common_audio/real_fourier.h"
-
-namespace webrtc {
-
-class RealFourierOpenmax : public RealFourier {
- public:
- explicit RealFourierOpenmax(int fft_order);
- ~RealFourierOpenmax() override;
-
- void Forward(const float* src, std::complex<float>* dest) const override;
- void Inverse(const std::complex<float>* src, float* dest) const override;
-
- int order() const override {
- return order_;
- }
-
- private:
- // Basically a forward declare of OMXFFTSpec_R_F32. To get rid of the
- // dependency on openmax.
- typedef void OMXFFTSpec_R_F32_;
- const int order_;
-
- OMXFFTSpec_R_F32_* const omx_spec_;
-};
-
-} // namespace webrtc
-
-#endif // WEBRTC_COMMON_AUDIO_REAL_FOURIER_OPENMAX_H_
-
=====================================
webrtc/common_audio/window_generator.cc deleted
=====================================
@@ -1,71 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#define _USE_MATH_DEFINES
-
-#include "common_audio/window_generator.h"
-
-#include <cmath>
-#include <complex>
-
-#include "rtc_base/checks.h"
-
-using std::complex;
-
-namespace {
-
-// Modified Bessel function of order 0 for complex inputs.
-complex<float> I0(complex<float> x) {
- complex<float> y = x / 3.75f;
- y *= y;
- return 1.0f + y * (3.5156229f +
- y * (3.0899424f +
- y * (1.2067492f +
- y * (0.2659732f +
- y * (0.360768e-1f + y * 0.45813e-2f)))));
-}
-
-} // namespace
-
-namespace webrtc {
-
-void WindowGenerator::Hanning(int length, float* window) {
- RTC_CHECK_GT(length, 1);
- RTC_CHECK(window != nullptr);
- for (int i = 0; i < length; ++i) {
- window[i] =
- 0.5f * (1 - cosf(2 * static_cast<float>(M_PI) * i / (length - 1)));
- }
-}
-
-void WindowGenerator::KaiserBesselDerived(float alpha,
- size_t length,
- float* window) {
- RTC_CHECK_GT(length, 1U);
- RTC_CHECK(window != nullptr);
-
- const size_t half = (length + 1) / 2;
- float sum = 0.0f;
-
- for (size_t i = 0; i <= half; ++i) {
- complex<float> r = (4.0f * i) / length - 1.0f;
- sum += I0(static_cast<float>(M_PI) * alpha * sqrt(1.0f - r * r)).real();
- window[i] = sum;
- }
- for (size_t i = length - 1; i >= half; --i) {
- window[length - i - 1] = sqrtf(window[length - i - 1] / sum);
- window[i] = window[length - i - 1];
- }
- if (length % 2 == 1) {
- window[half - 1] = sqrtf(window[half - 1] / sum);
- }
-}
-
-} // namespace webrtc
=====================================
webrtc/common_audio/window_generator.h deleted
=====================================
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef COMMON_AUDIO_WINDOW_GENERATOR_H_
-#define COMMON_AUDIO_WINDOW_GENERATOR_H_
-
-#include <stddef.h>
-
-namespace webrtc {
-
-// Helper class with generators for various signal transform windows.
-class WindowGenerator {
- public:
- WindowGenerator() = delete;
- WindowGenerator(const WindowGenerator&) = delete;
- WindowGenerator& operator=(const WindowGenerator&) = delete;
-
- static void Hanning(int length, float* window);
- static void KaiserBesselDerived(float alpha, size_t length, float* window);
-};
-
-} // namespace webrtc
-
-#endif // COMMON_AUDIO_WINDOW_GENERATOR_H_
=====================================
webrtc/modules/audio_coding/codecs/audio_decoder.h deleted
=====================================
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This file is for backwards compatibility only! Use
-// webrtc/api/audio_codecs/audio_decoder.h instead!
-// TODO(kwiberg): Remove it.
-
-#ifndef MODULES_AUDIO_CODING_CODECS_AUDIO_DECODER_H_
-#define MODULES_AUDIO_CODING_CODECS_AUDIO_DECODER_H_
-
-#include "api/audio_codecs/audio_decoder.h"
-
-#endif // MODULES_AUDIO_CODING_CODECS_AUDIO_DECODER_H_
=====================================
webrtc/modules/audio_coding/codecs/audio_encoder.h deleted
=====================================
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// This file is for backwards compatibility only! Use
-// webrtc/api/audio_codecs/audio_encoder.h instead!
-// TODO(ossu): Remove it.
-
-#ifndef MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_
-#define MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_
-
-#include "api/audio_codecs/audio_encoder.h"
-
-#endif // MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_
=====================================
webrtc/modules/audio_coding/codecs/cng/webrtc_cng.h deleted
=====================================
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-
-#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_CNG_MAIN_INCLUDE_WEBRTC_CNG_H_
-#define WEBRTC_MODULES_AUDIO_CODING_CODECS_CNG_MAIN_INCLUDE_WEBRTC_CNG_H_
-
-#include <stddef.h>
-#include "webrtc/typedefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define WEBRTC_CNG_MAX_LPC_ORDER 12
-#define WEBRTC_CNG_MAX_OUTSIZE_ORDER 640
-
-/* Define Error codes. */
-
-/* 6100 Encoder */
-#define CNG_ENCODER_NOT_INITIATED 6120
-#define CNG_DISALLOWED_LPC_ORDER 6130
-#define CNG_DISALLOWED_FRAME_SIZE 6140
-#define CNG_DISALLOWED_SAMPLING_FREQUENCY 6150
-/* 6200 Decoder */
-#define CNG_DECODER_NOT_INITIATED 6220
-
-typedef struct WebRtcCngEncInst CNG_enc_inst;
-typedef struct WebRtcCngDecInst CNG_dec_inst;
-
-/****************************************************************************
- * WebRtcCng_CreateEnc/Dec(...)
- *
- * These functions create an instance to the specified structure
- *
- * Input:
- * - XXX_inst : Pointer to created instance that should be created
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-int16_t WebRtcCng_CreateEnc(CNG_enc_inst** cng_inst);
-int16_t WebRtcCng_CreateDec(CNG_dec_inst** cng_inst);
-
-/****************************************************************************
- * WebRtcCng_InitEnc/Dec(...)
- *
- * This function initializes a instance
- *
- * Input:
- * - cng_inst : Instance that should be initialized
- *
- * - fs : 8000 for narrowband and 16000 for wideband
- * - interval : generate SID data every interval ms
- * - quality : Number of refl. coefs, maximum allowed is 12
- *
- * Output:
- * - cng_inst : Initialized instance
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-
-int WebRtcCng_InitEnc(CNG_enc_inst* cng_inst, int fs, int16_t interval,
- int16_t quality);
-void WebRtcCng_InitDec(CNG_dec_inst* cng_inst);
-
-/****************************************************************************
- * WebRtcCng_FreeEnc/Dec(...)
- *
- * These functions frees the dynamic memory of a specified instance
- *
- * Input:
- * - cng_inst : Pointer to created instance that should be freed
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-int16_t WebRtcCng_FreeEnc(CNG_enc_inst* cng_inst);
-int16_t WebRtcCng_FreeDec(CNG_dec_inst* cng_inst);
-
-/****************************************************************************
- * WebRtcCng_Encode(...)
- *
- * These functions analyzes background noise
- *
- * Input:
- * - cng_inst : Pointer to created instance
- * - speech : Signal to be analyzed
- * - nrOfSamples : Size of speech vector
- * - forceSID : not zero to force SID frame and reset
- *
- * Output:
- * - bytesOut : Nr of bytes to transmit, might be 0
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-int WebRtcCng_Encode(CNG_enc_inst* cng_inst, int16_t* speech,
- size_t nrOfSamples, uint8_t* SIDdata,
- size_t* bytesOut, int16_t forceSID);
-
-/****************************************************************************
- * WebRtcCng_UpdateSid(...)
- *
- * These functions updates the CN state, when a new SID packet arrives
- *
- * Input:
- * - cng_inst : Pointer to created instance that should be freed
- * - SID : SID packet, all headers removed
- * - length : Length in bytes of SID packet
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-int16_t WebRtcCng_UpdateSid(CNG_dec_inst* cng_inst, uint8_t* SID,
- size_t length);
-
-/****************************************************************************
- * WebRtcCng_Generate(...)
- *
- * These functions generates CN data when needed
- *
- * Input:
- * - cng_inst : Pointer to created instance that should be freed
- * - outData : pointer to area to write CN data
- * - nrOfSamples : How much data to generate
- * - new_period : >0 if a new period of CNG, will reset history
- *
- * Return value : 0 - Ok
- * -1 - Error
- */
-int16_t WebRtcCng_Generate(CNG_dec_inst* cng_inst, int16_t* outData,
- size_t nrOfSamples, int16_t new_period);
-
-/*****************************************************************************
- * WebRtcCng_GetErrorCodeEnc/Dec(...)
- *
- * This functions can be used to check the error code of a CNG instance. When
- * a function returns -1 a error code will be set for that instance. The
- * function below extract the code of the last error that occurred in the
- * specified instance.
- *
- * Input:
- * - CNG_inst : CNG enc/dec instance
- *
- * Return value : Error code
- */
-int16_t WebRtcCng_GetErrorCodeEnc(CNG_enc_inst* cng_inst);
-int16_t WebRtcCng_GetErrorCodeDec(CNG_dec_inst* cng_inst);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_CNG_MAIN_INCLUDE_WEBRTC_CNG_H_
=====================================
webrtc/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h deleted
=====================================
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
-
-#include <vector>
-
-#include "absl/types/optional.h"
-#include "api/audio_codecs/audio_decoder.h"
-#include "api/scoped_refptr.h"
-#include "rtc_base/constructor_magic.h"
-
-namespace webrtc {
-
-template <typename T>
-class AudioDecoderIsacT final : public AudioDecoder {
- public:
- struct Config {
- bool IsOk() const;
- int sample_rate_hz = 16000;
- };
- explicit AudioDecoderIsacT(const Config& config);
- virtual ~AudioDecoderIsacT() override;
-
- bool HasDecodePlc() const override;
- size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
- void Reset() override;
- int ErrorCode() override;
- int SampleRateHz() const override;
- size_t Channels() const override;
- int DecodeInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) override;
-
- private:
- typename T::instance_type* isac_state_;
- int sample_rate_hz_;
-
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioDecoderIsacT);
-};
-
-} // namespace webrtc
-
-#endif // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
=====================================
webrtc/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h deleted
=====================================
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
-
-#include "rtc_base/checks.h"
-
-namespace webrtc {
-
-template <typename T>
-bool AudioDecoderIsacT<T>::Config::IsOk() const {
- return (sample_rate_hz == 16000 || sample_rate_hz == 32000);
-}
-
-template <typename T>
-AudioDecoderIsacT<T>::AudioDecoderIsacT(const Config& config)
- : sample_rate_hz_(config.sample_rate_hz) {
- RTC_CHECK(config.IsOk()) << "Unsupported sample rate "
- << config.sample_rate_hz;
- RTC_CHECK_EQ(0, T::Create(&isac_state_));
- T::DecoderInit(isac_state_);
- RTC_CHECK_EQ(0, T::SetDecSampRate(isac_state_, sample_rate_hz_));
-}
-
-template <typename T>
-AudioDecoderIsacT<T>::~AudioDecoderIsacT() {
- RTC_CHECK_EQ(0, T::Free(isac_state_));
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::DecodeInternal(const uint8_t* encoded,
- size_t encoded_len,
- int sample_rate_hz,
- int16_t* decoded,
- SpeechType* speech_type) {
- RTC_CHECK_EQ(sample_rate_hz_, sample_rate_hz);
- int16_t temp_type = 1; // Default is speech.
- int ret =
- T::DecodeInternal(isac_state_, encoded, encoded_len, decoded, &temp_type);
- *speech_type = ConvertSpeechType(temp_type);
- return ret;
-}
-
-template <typename T>
-bool AudioDecoderIsacT<T>::HasDecodePlc() const {
- return false;
-}
-
-template <typename T>
-size_t AudioDecoderIsacT<T>::DecodePlc(size_t num_frames, int16_t* decoded) {
- return T::DecodePlc(isac_state_, decoded, num_frames);
-}
-
-template <typename T>
-void AudioDecoderIsacT<T>::Reset() {
- T::DecoderInit(isac_state_);
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::ErrorCode() {
- return T::GetErrorCode(isac_state_);
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::SampleRateHz() const {
- return sample_rate_hz_;
-}
-
-template <typename T>
-size_t AudioDecoderIsacT<T>::Channels() const {
- return 1;
-}
-
-} // namespace webrtc
-
-#endif // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
=====================================
webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h deleted
=====================================
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
-
-#include <utility>
-#include <vector>
-
-#include "absl/types/optional.h"
-#include "api/audio_codecs/audio_encoder.h"
-#include "api/scoped_refptr.h"
-#include "api/units/time_delta.h"
-#include "rtc_base/constructor_magic.h"
-#include "system_wrappers/include/field_trial.h"
-
-namespace webrtc {
-
-template <typename T>
-class AudioEncoderIsacT final : public AudioEncoder {
- public:
- // Allowed combinations of sample rate, frame size, and bit rate are
- // - 16000 Hz, 30 ms, 10000-32000 bps
- // - 16000 Hz, 60 ms, 10000-32000 bps
- // - 32000 Hz, 30 ms, 10000-56000 bps (if T has super-wideband support)
- struct Config {
- bool IsOk() const;
- int payload_type = 103;
- int sample_rate_hz = 16000;
- int frame_size_ms = 30;
- int bit_rate = kDefaultBitRate; // Limit on the short-term average bit
- // rate, in bits/s.
- int max_payload_size_bytes = -1;
- int max_bit_rate = -1;
- };
-
- explicit AudioEncoderIsacT(const Config& config);
- ~AudioEncoderIsacT() override;
-
- int SampleRateHz() const override;
- size_t NumChannels() const override;
- size_t Num10MsFramesInNextPacket() const override;
- size_t Max10MsFramesInAPacket() const override;
- int GetTargetBitrate() const override;
- void SetTargetBitrate(int target_bps) override;
- void OnReceivedTargetAudioBitrate(int target_bps) override;
- void OnReceivedUplinkBandwidth(
- int target_audio_bitrate_bps,
- absl::optional<int64_t> bwe_period_ms) override;
- void OnReceivedUplinkAllocation(BitrateAllocationUpdate update) override;
- void OnReceivedOverhead(size_t overhead_bytes_per_packet) override;
- EncodedInfo EncodeImpl(uint32_t rtp_timestamp,
- rtc::ArrayView<const int16_t> audio,
- rtc::Buffer* encoded) override;
- void Reset() override;
- absl::optional<std::pair<TimeDelta, TimeDelta>> GetFrameLengthRange()
- const override;
-
- private:
- // This value is taken from STREAM_SIZE_MAX_60 for iSAC float (60 ms) and
- // STREAM_MAXW16_60MS for iSAC fix (60 ms).
- static const size_t kSufficientEncodeBufferSizeBytes = 400;
-
- static constexpr int kDefaultBitRate = 32000;
- static constexpr int kMinBitrateBps = 10000;
- static constexpr int MaxBitrateBps(int sample_rate_hz) {
- return sample_rate_hz == 32000 ? 56000 : 32000;
- }
-
- void SetTargetBitrate(int target_bps, bool subtract_per_packet_overhead);
-
- // Recreate the iSAC encoder instance with the given settings, and save them.
- void RecreateEncoderInstance(const Config& config);
-
- Config config_;
- typename T::instance_type* isac_state_ = nullptr;
-
- // Have we accepted input but not yet emitted it in a packet?
- bool packet_in_progress_ = false;
-
- // Timestamp of the first input of the currently in-progress packet.
- uint32_t packet_timestamp_;
-
- // Timestamp of the previously encoded packet.
- uint32_t last_encoded_timestamp_;
-
- // Cache the value of the "WebRTC-SendSideBwe-WithOverhead" field trial.
- const bool send_side_bwe_with_overhead_ =
- field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead");
-
- // When we send a packet, expect this many bytes of headers to be added to it.
- // Start out with a reasonable default that we can use until we receive a real
- // value.
- DataSize overhead_per_packet_ = DataSize::Bytes(28);
-
- RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderIsacT);
-};
-
-} // namespace webrtc
-
-#endif // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
=====================================
webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h deleted
=====================================
@@ -1,219 +0,0 @@
-/*
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
-
-#include "rtc_base/checks.h"
-#include "rtc_base/numerics/safe_minmax.h"
-
-namespace webrtc {
-
-template <typename T>
-bool AudioEncoderIsacT<T>::Config::IsOk() const {
- if (max_bit_rate < 32000 && max_bit_rate != -1)
- return false;
- if (max_payload_size_bytes < 120 && max_payload_size_bytes != -1)
- return false;
-
- switch (sample_rate_hz) {
- case 16000:
- if (max_bit_rate > 53400)
- return false;
- if (max_payload_size_bytes > 400)
- return false;
- return (frame_size_ms == 30 || frame_size_ms == 60) &&
- (bit_rate == 0 || (bit_rate >= 10000 && bit_rate <= 32000));
- case 32000:
- if (max_bit_rate > 160000)
- return false;
- if (max_payload_size_bytes > 600)
- return false;
- return T::has_swb &&
- (frame_size_ms == 30 &&
- (bit_rate == 0 || (bit_rate >= 10000 && bit_rate <= 56000)));
- default:
- return false;
- }
-}
-
-template <typename T>
-AudioEncoderIsacT<T>::AudioEncoderIsacT(const Config& config) {
- RecreateEncoderInstance(config);
-}
-
-template <typename T>
-AudioEncoderIsacT<T>::~AudioEncoderIsacT() {
- RTC_CHECK_EQ(0, T::Free(isac_state_));
-}
-
-template <typename T>
-int AudioEncoderIsacT<T>::SampleRateHz() const {
- return T::EncSampRate(isac_state_);
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::NumChannels() const {
- return 1;
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::Num10MsFramesInNextPacket() const {
- const int samples_in_next_packet = T::GetNewFrameLen(isac_state_);
- return static_cast<size_t>(rtc::CheckedDivExact(
- samples_in_next_packet, rtc::CheckedDivExact(SampleRateHz(), 100)));
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::Max10MsFramesInAPacket() const {
- return 6; // iSAC puts at most 60 ms in a packet.
-}
-
-template <typename T>
-int AudioEncoderIsacT<T>::GetTargetBitrate() const {
- return config_.bit_rate == 0 ? kDefaultBitRate : config_.bit_rate;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::SetTargetBitrate(int target_bps) {
- // Set target bitrate directly without subtracting per-packet overhead,
- // because that's what AudioEncoderOpus does.
- SetTargetBitrate(target_bps,
- /*subtract_per_packet_overhead=*/false);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedTargetAudioBitrate(int target_bps) {
- // Set target bitrate directly without subtracting per-packet overhead,
- // because that's what AudioEncoderOpus does.
- SetTargetBitrate(target_bps,
- /*subtract_per_packet_overhead=*/false);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedUplinkBandwidth(
- int target_audio_bitrate_bps,
- absl::optional<int64_t> /*bwe_period_ms*/) {
- // Set target bitrate, subtracting the per-packet overhead if
- // WebRTC-SendSideBwe-WithOverhead is enabled, because that's what
- // AudioEncoderOpus does.
- SetTargetBitrate(
- target_audio_bitrate_bps,
- /*subtract_per_packet_overhead=*/send_side_bwe_with_overhead_);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedUplinkAllocation(
- BitrateAllocationUpdate update) {
- // Set target bitrate, subtracting the per-packet overhead if
- // WebRTC-SendSideBwe-WithOverhead is enabled, because that's what
- // AudioEncoderOpus does.
- SetTargetBitrate(
- update.target_bitrate.bps<int>(),
- /*subtract_per_packet_overhead=*/send_side_bwe_with_overhead_);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedOverhead(
- size_t overhead_bytes_per_packet) {
- overhead_per_packet_ = DataSize::Bytes(overhead_bytes_per_packet);
-}
-
-template <typename T>
-AudioEncoder::EncodedInfo AudioEncoderIsacT<T>::EncodeImpl(
- uint32_t rtp_timestamp,
- rtc::ArrayView<const int16_t> audio,
- rtc::Buffer* encoded) {
- if (!packet_in_progress_) {
- // Starting a new packet; remember the timestamp for later.
- packet_in_progress_ = true;
- packet_timestamp_ = rtp_timestamp;
- }
- size_t encoded_bytes = encoded->AppendData(
- kSufficientEncodeBufferSizeBytes, [&](rtc::ArrayView<uint8_t> encoded) {
- int r = T::Encode(isac_state_, audio.data(), encoded.data());
-
- RTC_CHECK_GE(r, 0) << "Encode failed (error code "
- << T::GetErrorCode(isac_state_) << ")";
-
- return static_cast<size_t>(r);
- });
-
- if (encoded_bytes == 0)
- return EncodedInfo();
-
- // Got enough input to produce a packet. Return the saved timestamp from
- // the first chunk of input that went into the packet.
- packet_in_progress_ = false;
- EncodedInfo info;
- info.encoded_bytes = encoded_bytes;
- info.encoded_timestamp = packet_timestamp_;
- info.payload_type = config_.payload_type;
- info.encoder_type = CodecType::kIsac;
- return info;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::Reset() {
- RecreateEncoderInstance(config_);
-}
-
-template <typename T>
-absl::optional<std::pair<TimeDelta, TimeDelta>>
-AudioEncoderIsacT<T>::GetFrameLengthRange() const {
- return {{TimeDelta::Millis(config_.frame_size_ms),
- TimeDelta::Millis(config_.frame_size_ms)}};
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::SetTargetBitrate(int target_bps,
- bool subtract_per_packet_overhead) {
- if (subtract_per_packet_overhead) {
- const DataRate overhead_rate =
- overhead_per_packet_ / TimeDelta::Millis(config_.frame_size_ms);
- target_bps -= overhead_rate.bps();
- }
- target_bps = rtc::SafeClamp(target_bps, kMinBitrateBps,
- MaxBitrateBps(config_.sample_rate_hz));
- int result = T::Control(isac_state_, target_bps, config_.frame_size_ms);
- RTC_DCHECK_EQ(result, 0);
- config_.bit_rate = target_bps;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::RecreateEncoderInstance(const Config& config) {
- RTC_CHECK(config.IsOk());
- packet_in_progress_ = false;
- if (isac_state_)
- RTC_CHECK_EQ(0, T::Free(isac_state_));
- RTC_CHECK_EQ(0, T::Create(&isac_state_));
- RTC_CHECK_EQ(0, T::EncoderInit(isac_state_, /*coding_mode=*/1));
- RTC_CHECK_EQ(0, T::SetEncSampRate(isac_state_, config.sample_rate_hz));
- const int bit_rate = config.bit_rate == 0 ? kDefaultBitRate : config.bit_rate;
- RTC_CHECK_EQ(0, T::Control(isac_state_, bit_rate, config.frame_size_ms));
-
- if (config.max_payload_size_bytes != -1)
- RTC_CHECK_EQ(
- 0, T::SetMaxPayloadSize(isac_state_, config.max_payload_size_bytes));
- if (config.max_bit_rate != -1)
- RTC_CHECK_EQ(0, T::SetMaxRate(isac_state_, config.max_bit_rate));
-
- // Set the decoder sample rate even though we just use the encoder. This
- // doesn't appear to be necessary to produce a valid encoding, but without it
- // we get an encoding that isn't bit-for-bit identical with what a combined
- // encoder+decoder object produces.
- RTC_CHECK_EQ(0, T::SetDecSampRate(isac_state_, config.sample_rate_hz));
-
- config_ = config;
-}
-
-} // namespace webrtc
-
-#endif // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
=====================================
webrtc/rtc_base/ignore_wundef.h deleted
=====================================
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef RTC_BASE_IGNORE_WUNDEF_H_
-#define RTC_BASE_IGNORE_WUNDEF_H_
-
-// If a header file uses #if on possibly undefined macros (and it's for some
-// reason not possible to just fix the header file), include it like this:
-//
-// RTC_PUSH_IGNORING_WUNDEF()
-// #include "misbehaving_header.h"
-// RTC_POP_IGNORING_WUNDEF()
-//
-// This will cause the compiler to not emit -Wundef warnings for that file.
-
-#ifdef __clang__
-#define RTC_PUSH_IGNORING_WUNDEF() \
- _Pragma("clang diagnostic push") \
- _Pragma("clang diagnostic ignored \"-Wundef\"")
-#define RTC_POP_IGNORING_WUNDEF() _Pragma("clang diagnostic pop")
-#else
-#define RTC_PUSH_IGNORING_WUNDEF()
-#define RTC_POP_IGNORING_WUNDEF()
-#endif // __clang__
-
-#endif // RTC_BASE_IGNORE_WUNDEF_H_
=====================================
webrtc/rtc_base/meson.build
=====================================
@@ -15,7 +15,6 @@ base_sources = [
'string_utils.cc',
'strings/string_builder.cc',
'synchronization/sequence_checker_internal.cc',
- 'synchronization/yield.cc',
'synchronization/yield_policy.cc',
'system/file_wrapper.cc',
'system_time.cc',
=====================================
webrtc/rtc_base/synchronization/yield.cc deleted
=====================================
@@ -1,36 +0,0 @@
-/*
- * Copyright 2020 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "rtc_base/synchronization/yield.h"
-
-#if defined(WEBRTC_WIN)
-#include <windows.h>
-#else
-#include <sched.h>
-#include <time.h>
-#endif
-
-namespace webrtc {
-
-void YieldCurrentThread() {
- // TODO(bugs.webrtc.org/11634): use dedicated OS functionality instead of
- // sleep for yielding.
-#if defined(WEBRTC_WIN)
- ::Sleep(0);
-#elif defined(WEBRTC_MAC) && defined(RTC_USE_NATIVE_MUTEX_ON_MAC) && \
- !RTC_USE_NATIVE_MUTEX_ON_MAC
- sched_yield();
-#else
- static const struct timespec ts_null = {0};
- nanosleep(&ts_null, nullptr);
-#endif
-}
-
-} // namespace webrtc
=====================================
webrtc/rtc_base/synchronization/yield.h deleted
=====================================
@@ -1,20 +0,0 @@
-/*
- * Copyright 2020 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef RTC_BASE_SYNCHRONIZATION_YIELD_H_
-#define RTC_BASE_SYNCHRONIZATION_YIELD_H_
-
-namespace webrtc {
-
-// Request rescheduling of threads.
-void YieldCurrentThread();
-
-} // namespace webrtc
-
-#endif // RTC_BASE_SYNCHRONIZATION_YIELD_H_
=====================================
webrtc/rtc_base/system/unused.h deleted
=====================================
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef RTC_BASE_SYSTEM_UNUSED_H_
-#define RTC_BASE_SYSTEM_UNUSED_H_
-
-// Prevent the compiler from warning about an unused variable. For example:
-// int result = DoSomething();
-// RTC_DCHECK(result == 17);
-// RTC_UNUSED(result);
-// Note: In most cases it is better to remove the unused variable rather than
-// suppressing the compiler warning.
-#ifndef RTC_UNUSED
-#ifdef __cplusplus
-#define RTC_UNUSED(x) static_cast<void>(x)
-#else
-#define RTC_UNUSED(x) (void)(x)
-#endif
-#endif // RTC_UNUSED
-
-#endif // RTC_BASE_SYSTEM_UNUSED_H_
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/commit/ecb8817972d3312942c870b355d9f294a5f1be4d
--
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/commit/ecb8817972d3312942c870b355d9f294a5f1be4d
You're receiving this email because of your account on gitlab.freedesktop.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20241230/01d93829/attachment-0001.htm>
More information about the pulseaudio-commits
mailing list