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.
TEST_F(NetEqImplTest, CodecInternalCng) {
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 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<int>(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<test::AudioDecoderProxyFactory>(&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<int>(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) {

View File

@ -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_;