| Index: webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
|
| diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
|
| index 8b47adb9c549376b47abcf229ac70db17e33b524..c2a60cf2f5330592e54a3b487b226479fa04c861 100644
|
| --- a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
|
| +++ b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
|
| @@ -441,7 +441,9 @@ TEST_F(NetEqImplTest, VerifyTimestampPropagation) {
|
| // Pull audio once.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| + ASSERT_FALSE(muted_output);
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
| @@ -518,7 +520,8 @@ TEST_F(NetEqImplTest, ReorderedPacket) {
|
| // Pull audio once.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
| @@ -546,7 +549,7 @@ TEST_F(NetEqImplTest, ReorderedPacket) {
|
| Return(kPayloadLengthSamples)));
|
|
|
| // Pull audio once.
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
| @@ -586,7 +589,8 @@ TEST_F(NetEqImplTest, FirstPacketUnknown) {
|
| // Pull audio once.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| ASSERT_LE(output.samples_per_channel_, kMaxOutputSize);
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| @@ -607,7 +611,7 @@ TEST_F(NetEqImplTest, FirstPacketUnknown) {
|
|
|
| // Pull audio repeatedly and make sure we get normal output, that is not PLC.
|
| for (size_t i = 0; i < 3; ++i) {
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| ASSERT_LE(output.samples_per_channel_, kMaxOutputSize);
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| @@ -711,7 +715,8 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
|
| 50 * kSampleRateKhz, 10 * kSampleRateKhz
|
| };
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| rtc::Optional<uint32_t> last_timestamp = neteq_->GetPlayoutTimestamp();
|
| ASSERT_TRUE(last_timestamp);
|
|
|
| @@ -733,7 +738,7 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(expected_type[i - 1], output.speech_type_);
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| SCOPED_TRACE("");
|
| verify_timestamp(neteq_->GetPlayoutTimestamp(), i);
|
| }
|
| @@ -749,7 +754,7 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(expected_type[i - 1], output.speech_type_);
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| SCOPED_TRACE("");
|
| verify_timestamp(neteq_->GetPlayoutTimestamp(), i);
|
| }
|
| @@ -841,9 +846,10 @@ TEST_F(NetEqImplTest, UnsupportedDecoder) {
|
| neteq_->InsertPacket(rtp_header, payload, kReceiveTime));
|
|
|
| AudioFrame output;
|
| + bool muted_output;
|
| // First call to GetAudio will try to decode the "faulty" packet.
|
| // Expect kFail return value...
|
| - EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted_output));
|
| // ... and kOtherDecoderError error code.
|
| EXPECT_EQ(NetEq::kOtherDecoderError, neteq_->LastError());
|
| // Output size and number of channels should be correct.
|
| @@ -853,7 +859,7 @@ TEST_F(NetEqImplTest, UnsupportedDecoder) {
|
|
|
| // Second call to GetAudio will decode the packet that is ok. No errors are
|
| // expected.
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kExpectedOutputSize, output.samples_per_channel_ * kChannels);
|
| EXPECT_EQ(kChannels, output.num_channels_);
|
| }
|
| @@ -946,7 +952,8 @@ TEST_F(NetEqImplTest, DecodedPayloadTooShort) {
|
| // Pull audio once.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
| @@ -1038,13 +1045,14 @@ TEST_F(NetEqImplTest, DecodingError) {
|
| // Pull audio.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
|
|
| // Pull audio again. Decoder fails.
|
| - EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError());
|
| EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError());
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| @@ -1053,13 +1061,13 @@ TEST_F(NetEqImplTest, DecodingError) {
|
| // returned.
|
|
|
| // Pull audio again, should continue an expansion.
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kPLC, output.speech_type_);
|
|
|
| // Pull audio again, should behave normal.
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_);
|
| @@ -1147,13 +1155,14 @@ TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) {
|
| // Pull audio.
|
| const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000);
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kCNG, output.speech_type_);
|
|
|
| // Pull audio again. Decoder fails.
|
| - EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError());
|
| EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError());
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| @@ -1162,7 +1171,7 @@ TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) {
|
| // returned.
|
|
|
| // Pull audio again, should resume codec CNG.
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_);
|
| EXPECT_EQ(1u, output.num_channels_);
|
| EXPECT_EQ(AudioFrame::kCNG, output.speech_type_);
|
| @@ -1185,7 +1194,8 @@ TEST_F(NetEqImplTest, TickTimerIncrement) {
|
| ASSERT_TRUE(tick_timer_);
|
| EXPECT_EQ(0u, tick_timer_->ticks());
|
| AudioFrame output;
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted_output));
|
| EXPECT_EQ(1u, tick_timer_->ticks());
|
| }
|
|
|
| @@ -1240,8 +1250,10 @@ class NetEqImplTest120ms : public NetEqImplTest {
|
| uint32_t first_timestamp() const { return 10u; }
|
|
|
| void GetFirstPacket() {
|
| + bool muted_output;
|
| for (int i = 0; i < 12; i++) {
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| + EXPECT_FALSE(muted_output);
|
| }
|
| }
|
|
|
| @@ -1280,7 +1292,8 @@ TEST_F(NetEqImplTest120ms, AudioRepetition) {
|
| InsertPacket(first_timestamp());
|
| GetFirstPacket();
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kAudioRepetition, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1292,7 +1305,8 @@ TEST_F(NetEqImplTest120ms, AlternativePlc) {
|
| InsertPacket(first_timestamp());
|
| GetFirstPacket();
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kAlternativePlc, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1303,7 +1317,8 @@ TEST_F(NetEqImplTest120ms, CodecInternalCng) {
|
| InsertPacket(first_timestamp());
|
| GetFirstPacket();
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kCodecInternalCng, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1324,14 +1339,15 @@ TEST_F(NetEqImplTest120ms, Merge) {
|
| InsertPacket(first_timestamp());
|
|
|
| GetFirstPacket();
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
|
|
| InsertPacket(first_timestamp() + 2 * timestamp_diff_between_packets());
|
|
|
| // Delay manager reports a target level which should cause a Merge.
|
| EXPECT_CALL(*mock_delay_manager_, TargetLevel()).WillOnce(Return(-10));
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kMerge, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1342,7 +1358,8 @@ TEST_F(NetEqImplTest120ms, Expand) {
|
| InsertPacket(first_timestamp());
|
| GetFirstPacket();
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kExpand, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1359,7 +1376,8 @@ TEST_F(NetEqImplTest120ms, FastAccelerate) {
|
| .Times(1)
|
| .WillOnce(DoAll(SetArgPointee<0>(0), SetArgPointee<1>(0)));
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kFastAccelerate, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1377,7 +1395,8 @@ TEST_F(NetEqImplTest120ms, PreemptiveExpand) {
|
| .Times(1)
|
| .WillOnce(DoAll(SetArgPointee<0>(100), SetArgPointee<1>(100)));
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kPreemptiveExpand, neteq_->last_operation_for_test());
|
| }
|
|
|
| @@ -1395,7 +1414,8 @@ TEST_F(NetEqImplTest120ms, Accelerate) {
|
| .Times(1)
|
| .WillOnce(DoAll(SetArgPointee<0>(1), SetArgPointee<1>(2)));
|
|
|
| - EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_));
|
| + bool muted_output;
|
| + EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted_output));
|
| EXPECT_EQ(kAccelerate, neteq_->last_operation_for_test());
|
| }
|
|
|
|
|