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:
@ -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) {
|
||||||
|
@ -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_;
|
||||||
|
Reference in New Issue
Block a user