1 /* 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 12 #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" 13 14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "webrtc/base/format_macros.h" 16 17 namespace webrtc { 18 namespace test { 19 20 NetEqExternalDecoderTest::NetEqExternalDecoderTest(NetEqDecoder codec, 21 AudioDecoder* decoder) 22 : codec_(codec), 23 decoder_(decoder), 24 sample_rate_hz_(CodecSampleRateHz(codec_)), 25 channels_(decoder_->Channels()) { 26 NetEq::Config config; 27 config.sample_rate_hz = sample_rate_hz_; 28 neteq_.reset(NetEq::Create(config)); 29 printf("%" PRIuS "\n", channels_); 30 } 31 32 void NetEqExternalDecoderTest::Init() { 33 ASSERT_EQ(NetEq::kOK, 34 neteq_->RegisterExternalDecoder(decoder_, codec_, name_, 35 kPayloadType, sample_rate_hz_)); 36 } 37 38 void NetEqExternalDecoderTest::InsertPacket( 39 WebRtcRTPHeader rtp_header, 40 rtc::ArrayView<const uint8_t> payload, 41 uint32_t receive_timestamp) { 42 ASSERT_EQ(NetEq::kOK, 43 neteq_->InsertPacket(rtp_header, payload, receive_timestamp)); 44 } 45 46 size_t NetEqExternalDecoderTest::GetOutputAudio(size_t max_length, 47 int16_t* output, 48 NetEqOutputType* output_type) { 49 // Get audio from regular instance. 50 size_t samples_per_channel; 51 size_t num_channels; 52 EXPECT_EQ(NetEq::kOK, 53 neteq_->GetAudio(max_length, 54 output, 55 &samples_per_channel, 56 &num_channels, 57 output_type)); 58 EXPECT_EQ(channels_, num_channels); 59 EXPECT_EQ(static_cast<size_t>(kOutputLengthMs * sample_rate_hz_ / 1000), 60 samples_per_channel); 61 EXPECT_EQ(sample_rate_hz_, neteq_->last_output_sample_rate_hz()); 62 return samples_per_channel; 63 } 64 65 } // namespace test 66 } // namespace webrtc 67