| /* | |
| * 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 "modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" | |
| #include "api/audio/audio_frame.h" | |
| #include "api/audio_codecs/builtin_audio_decoder_factory.h" | |
| #include "rtc_base/format_macros.h" | |
| #include "test/gtest.h" | |
| namespace webrtc { | |
| namespace test { | |
| NetEqExternalDecoderTest::NetEqExternalDecoderTest(NetEqDecoder codec, | |
| int sample_rate_hz, | |
| AudioDecoder* decoder) | |
| : codec_(codec), | |
| decoder_(decoder), | |
| sample_rate_hz_(sample_rate_hz), | |
| channels_(decoder_->Channels()) { | |
| NetEq::Config config; | |
| config.sample_rate_hz = sample_rate_hz_; | |
| neteq_.reset(NetEq::Create(config, CreateBuiltinAudioDecoderFactory())); | |
| } | |
| void NetEqExternalDecoderTest::Init() { | |
| ASSERT_EQ(NetEq::kOK, | |
| neteq_->RegisterExternalDecoder(decoder_, codec_, name_, | |
| kPayloadType)); | |
| } | |
| void NetEqExternalDecoderTest::InsertPacket( | |
| RTPHeader rtp_header, | |
| rtc::ArrayView<const uint8_t> payload, | |
| uint32_t receive_timestamp) { | |
| ASSERT_EQ(NetEq::kOK, | |
| neteq_->InsertPacket(rtp_header, payload, receive_timestamp)); | |
| } | |
| void NetEqExternalDecoderTest::GetOutputAudio(AudioFrame* output) { | |
| // Get audio from regular instance. | |
| bool muted; | |
| EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(output, &muted)); | |
| ASSERT_FALSE(muted); | |
| EXPECT_EQ(channels_, output->num_channels_); | |
| EXPECT_EQ(static_cast<size_t>(kOutputLengthMs * sample_rate_hz_ / 1000), | |
| output->samples_per_channel_); | |
| EXPECT_EQ(sample_rate_hz_, neteq_->last_output_sample_rate_hz()); | |
| } | |
| } // namespace test | |
| } // namespace webrtc |