| /* | |
| * 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 "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| namespace webrtc { | |
| namespace test { | |
| NetEqExternalDecoderTest::NetEqExternalDecoderTest(NetEqDecoder codec, | |
| AudioDecoder* decoder) | |
| : codec_(codec), | |
| decoder_(decoder), | |
| sample_rate_hz_(CodecSampleRateHz(codec_)), | |
| channels_(static_cast<int>(decoder_->Channels())) { | |
| NetEq::Config config; | |
| config.sample_rate_hz = sample_rate_hz_; | |
| neteq_.reset(NetEq::Create(config)); | |
| printf("%d\n", channels_); | |
| } | |
| void NetEqExternalDecoderTest::Init() { | |
| ASSERT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( | |
| decoder_, codec_, kPayloadType, sample_rate_hz_)); | |
| } | |
| void NetEqExternalDecoderTest::InsertPacket(WebRtcRTPHeader rtp_header, | |
| const uint8_t* payload, | |
| size_t payload_size_bytes, | |
| uint32_t receive_timestamp) { | |
| ASSERT_EQ( | |
| NetEq::kOK, | |
| neteq_->InsertPacket( | |
| rtp_header, payload, payload_size_bytes, receive_timestamp)); | |
| } | |
| int NetEqExternalDecoderTest::GetOutputAudio(size_t max_length, | |
| int16_t* output, | |
| NetEqOutputType* output_type) { | |
| // Get audio from regular instance. | |
| int samples_per_channel; | |
| int num_channels; | |
| EXPECT_EQ(NetEq::kOK, | |
| neteq_->GetAudio(max_length, | |
| output, | |
| &samples_per_channel, | |
| &num_channels, | |
| output_type)); | |
| EXPECT_EQ(channels_, num_channels); | |
| EXPECT_EQ(kOutputLengthMs * sample_rate_hz_ / 1000, samples_per_channel); | |
| return samples_per_channel; | |
| } | |
| } // namespace test | |
| } // namespace webrtc |