diff --git a/modules/audio_coding/neteq/neteq_impl_unittest.cc b/modules/audio_coding/neteq/neteq_impl_unittest.cc index b509cec3b1..15ec1f4191 100644 --- a/modules/audio_coding/neteq/neteq_impl_unittest.cc +++ b/modules/audio_coding/neteq/neteq_impl_unittest.cc @@ -698,7 +698,10 @@ TEST_F(NetEqImplTest, FirstPacketUnknown) { // internal CNG mode properly. TEST_F(NetEqImplTest, CodecInternalCng) { UseNoMocks(); - CreateInstance(); + // Create a mock decoder object. + MockAudioDecoder mock_decoder; + CreateInstance( + new rtc::RefCountedObject(&mock_decoder)); const uint8_t kPayloadType = 17; // Just an arbitrary number. const uint32_t kReceiveTime = 17; // Value doesn't matter for this test. @@ -715,8 +718,6 @@ TEST_F(NetEqImplTest, CodecInternalCng) { rtp_header.timestamp = 0x12345678; rtp_header.ssrc = 0x87654321; - // Create a mock decoder object. - MockAudioDecoder mock_decoder; EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); EXPECT_CALL(mock_decoder, SampleRateHz()) .WillRepeatedly(Return(kSampleRateKhz * 1000)); @@ -760,9 +761,8 @@ TEST_F(NetEqImplTest, CodecInternalCng) { SetArgPointee<4>(AudioDecoder::kSpeech), Return(rtc::checked_cast(kPayloadLengthSamples)))); - EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( - &mock_decoder, NetEqDecoder::kDecoderOpus, - "dummy name", kPayloadType)); + EXPECT_TRUE(neteq_->RegisterPayloadType(kPayloadType, + SdpAudioFormat("opus", 48000, 2))); // Insert one packet (decoder will return speech). EXPECT_EQ(NetEq::kOK, @@ -1151,7 +1151,11 @@ TEST_F(NetEqImplTest, DecodingError) { // This test checks the behavior of NetEq when audio decoder fails during CNG. TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { UseNoMocks(); - CreateInstance(); + + // Create a mock decoder object. + MockAudioDecoder mock_decoder; + CreateInstance( + new rtc::RefCountedObject(&mock_decoder)); const uint8_t kPayloadType = 17; // Just an arbitrary number. const uint32_t kReceiveTime = 17; // Value doesn't matter for this test. @@ -1172,8 +1176,6 @@ TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { rtp_header.timestamp = 0x12345678; rtp_header.ssrc = 0x87654321; - // Create a mock decoder object. - MockAudioDecoder mock_decoder; EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); EXPECT_CALL(mock_decoder, SampleRateHz()) .WillRepeatedly(Return(kSampleRateHz)); @@ -1215,9 +1217,8 @@ TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { Return(rtc::checked_cast(kFrameLengthSamples)))); } - EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( - &mock_decoder, NetEqDecoder::kDecoderPCM16B, - "dummy name", kPayloadType)); + EXPECT_TRUE(neteq_->RegisterPayloadType(kPayloadType, + SdpAudioFormat("l16", 8000, 1))); // Insert 2 packets. This will make netEq into codec internal CNG mode. for (int i = 0; i < 2; ++i) { diff --git a/test/audio_decoder_proxy_factory.h b/test/audio_decoder_proxy_factory.h index af08581d17..18988e66f7 100644 --- a/test/audio_decoder_proxy_factory.h +++ b/test/audio_decoder_proxy_factory.h @@ -74,8 +74,13 @@ class AudioDecoderProxyFactory : public AudioDecoderFactory { int sample_rate_hz, int16_t* decoded, SpeechType* speech_type) override { - RTC_NOTREACHED(); - return -1; + // Needed for tests of NetEqImpl::DecodeCng, which calls the deprecated + // Decode method. + size_t max_decoded_bytes = + decoder_->PacketDuration(encoded, encoded_len) * + decoder_->Channels() * sizeof(int16_t); + return decoder_->Decode(encoded, encoded_len, sample_rate_hz, + max_decoded_bytes, decoded, speech_type); } AudioDecoder* const decoder_;