| Index: webrtc/api/audio_codecs/audio_decoder.cc
|
| diff --git a/webrtc/modules/audio_coding/codecs/audio_decoder.cc b/webrtc/api/audio_codecs/audio_decoder.cc
|
| similarity index 66%
|
| rename from webrtc/modules/audio_coding/codecs/audio_decoder.cc
|
| rename to webrtc/api/audio_codecs/audio_decoder.cc
|
| index afa5115d5a1740036c566ded3c9c9019b78bb233..90342a83b4e9e81026cef006755d95e877052487 100644
|
| --- a/webrtc/modules/audio_coding/codecs/audio_decoder.cc
|
| +++ b/webrtc/api/audio_codecs/audio_decoder.cc
|
| @@ -8,7 +8,7 @@
|
| * be found in the AUTHORS file in the root of the source tree.
|
| */
|
|
|
| -#include "webrtc/modules/audio_coding/codecs/audio_decoder.h"
|
| +#include "webrtc/api/audio_codecs/audio_decoder.h"
|
|
|
| #include <assert.h>
|
| #include <memory>
|
| @@ -18,10 +18,39 @@
|
| #include "webrtc/base/checks.h"
|
| #include "webrtc/base/sanitizer.h"
|
| #include "webrtc/base/trace_event.h"
|
| -#include "webrtc/modules/audio_coding/codecs/legacy_encoded_audio_frame.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);
|
| + }
|
| +
|
| + rtc::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 ? rtc::Optional<DecodeResult>()
|
| + : rtc::Optional<DecodeResult>(
|
| + {static_cast<size_t>(ret), speech_type});
|
| + }
|
| +
|
| + private:
|
| + AudioDecoder* const decoder_;
|
| + const rtc::Buffer payload_;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| AudioDecoder::ParseResult::ParseResult() = default;
|
| AudioDecoder::ParseResult::ParseResult(ParseResult&& b) = default;
|
| AudioDecoder::ParseResult::ParseResult(uint32_t timestamp,
|
| @@ -41,14 +70,17 @@ std::vector<AudioDecoder::ParseResult> AudioDecoder::ParsePayload(
|
| uint32_t timestamp) {
|
| std::vector<ParseResult> results;
|
| std::unique_ptr<EncodedAudioFrame> frame(
|
| - new LegacyEncodedAudioFrame(this, std::move(payload)));
|
| + 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) {
|
| +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);
|
| @@ -60,9 +92,12 @@ int AudioDecoder::Decode(const uint8_t* encoded, size_t encoded_len,
|
| 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) {
|
| +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);
|
| @@ -76,13 +111,16 @@ int AudioDecoder::DecodeRedundant(const uint8_t* encoded, size_t encoded_len,
|
|
|
| int AudioDecoder::DecodeRedundantInternal(const uint8_t* encoded,
|
| size_t encoded_len,
|
| - int sample_rate_hz, int16_t* decoded,
|
| + 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; }
|
| +bool AudioDecoder::HasDecodePlc() const {
|
| + return false;
|
| +}
|
|
|
| size_t AudioDecoder::DecodePlc(size_t num_frames, int16_t* decoded) {
|
| return 0;
|
| @@ -96,7 +134,9 @@ int AudioDecoder::IncomingPacket(const uint8_t* payload,
|
| return 0;
|
| }
|
|
|
| -int AudioDecoder::ErrorCode() { return 0; }
|
| +int AudioDecoder::ErrorCode() {
|
| + return 0;
|
| +}
|
|
|
| int AudioDecoder::PacketDuration(const uint8_t* encoded,
|
| size_t encoded_len) const {
|
|
|