Convert NetEq Cng-related test to not use RegisterExternalDecoder

Bug: webrtc:10080
Change-Id: Ie91e967cd68efede71108458b912bf1e062ffea6
Reviewed-on: https://webrtc-review.googlesource.com/c/113943
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25982}
This commit is contained in:
Niels Möller
2018-12-11 14:43:21 +01:00
committed by Commit Bot
parent a099877d89
commit 50b66d55f8
2 changed files with 20 additions and 14 deletions

View File

@ -698,7 +698,10 @@ TEST_F(NetEqImplTest, FirstPacketUnknown) {
// internal CNG mode properly. // internal CNG mode properly.
TEST_F(NetEqImplTest, CodecInternalCng) { TEST_F(NetEqImplTest, CodecInternalCng) {
UseNoMocks(); UseNoMocks();
CreateInstance(); // Create a mock decoder object.
MockAudioDecoder mock_decoder;
CreateInstance(
new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
const uint8_t kPayloadType = 17; // Just an arbitrary number. const uint8_t kPayloadType = 17; // Just an arbitrary number.
const uint32_t kReceiveTime = 17; // Value doesn't matter for this test. 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.timestamp = 0x12345678;
rtp_header.ssrc = 0x87654321; rtp_header.ssrc = 0x87654321;
// Create a mock decoder object.
MockAudioDecoder mock_decoder;
EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
EXPECT_CALL(mock_decoder, SampleRateHz()) EXPECT_CALL(mock_decoder, SampleRateHz())
.WillRepeatedly(Return(kSampleRateKhz * 1000)); .WillRepeatedly(Return(kSampleRateKhz * 1000));
@ -760,9 +761,8 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
SetArgPointee<4>(AudioDecoder::kSpeech), SetArgPointee<4>(AudioDecoder::kSpeech),
Return(rtc::checked_cast<int>(kPayloadLengthSamples)))); Return(rtc::checked_cast<int>(kPayloadLengthSamples))));
EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( EXPECT_TRUE(neteq_->RegisterPayloadType(kPayloadType,
&mock_decoder, NetEqDecoder::kDecoderOpus, SdpAudioFormat("opus", 48000, 2)));
"dummy name", kPayloadType));
// Insert one packet (decoder will return speech). // Insert one packet (decoder will return speech).
EXPECT_EQ(NetEq::kOK, 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. // This test checks the behavior of NetEq when audio decoder fails during CNG.
TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) {
UseNoMocks(); UseNoMocks();
CreateInstance();
// Create a mock decoder object.
MockAudioDecoder mock_decoder;
CreateInstance(
new rtc::RefCountedObject<test::AudioDecoderProxyFactory>(&mock_decoder));
const uint8_t kPayloadType = 17; // Just an arbitrary number. const uint8_t kPayloadType = 17; // Just an arbitrary number.
const uint32_t kReceiveTime = 17; // Value doesn't matter for this test. 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.timestamp = 0x12345678;
rtp_header.ssrc = 0x87654321; rtp_header.ssrc = 0x87654321;
// Create a mock decoder object.
MockAudioDecoder mock_decoder;
EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return()); EXPECT_CALL(mock_decoder, Reset()).WillRepeatedly(Return());
EXPECT_CALL(mock_decoder, SampleRateHz()) EXPECT_CALL(mock_decoder, SampleRateHz())
.WillRepeatedly(Return(kSampleRateHz)); .WillRepeatedly(Return(kSampleRateHz));
@ -1215,9 +1217,8 @@ TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) {
Return(rtc::checked_cast<int>(kFrameLengthSamples)))); Return(rtc::checked_cast<int>(kFrameLengthSamples))));
} }
EXPECT_EQ(NetEq::kOK, neteq_->RegisterExternalDecoder( EXPECT_TRUE(neteq_->RegisterPayloadType(kPayloadType,
&mock_decoder, NetEqDecoder::kDecoderPCM16B, SdpAudioFormat("l16", 8000, 1)));
"dummy name", kPayloadType));
// Insert 2 packets. This will make netEq into codec internal CNG mode. // Insert 2 packets. This will make netEq into codec internal CNG mode.
for (int i = 0; i < 2; ++i) { for (int i = 0; i < 2; ++i) {

View File

@ -74,8 +74,13 @@ class AudioDecoderProxyFactory : public AudioDecoderFactory {
int sample_rate_hz, int sample_rate_hz,
int16_t* decoded, int16_t* decoded,
SpeechType* speech_type) override { SpeechType* speech_type) override {
RTC_NOTREACHED(); // Needed for tests of NetEqImpl::DecodeCng, which calls the deprecated
return -1; // 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_; AudioDecoder* const decoder_;