Home | History | Annotate | Download | only in tools
      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