| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |     2  *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 
|     3  * |     3  * | 
|     4  *  Use of this source code is governed by a BSD-style license |     4  *  Use of this source code is governed by a BSD-style license | 
|     5  *  that can be found in the LICENSE file in the root of the source |     5  *  that can be found in the LICENSE file in the root of the source | 
|     6  *  tree. An additional intellectual property rights grant can be found |     6  *  tree. An additional intellectual property rights grant can be found | 
|     7  *  in the file PATENTS.  All contributing project authors may |     7  *  in the file PATENTS.  All contributing project authors may | 
|     8  *  be found in the AUTHORS file in the root of the source tree. |     8  *  be found in the AUTHORS file in the root of the source tree. | 
|     9  */ |     9  */ | 
|    10  |    10  | 
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   434                             &decoder_, NetEqDecoder::kDecoderPCM16B, |   434                             &decoder_, NetEqDecoder::kDecoderPCM16B, | 
|   435                             "dummy name", kPayloadType, kSampleRateHz)); |   435                             "dummy name", kPayloadType, kSampleRateHz)); | 
|   436  |   436  | 
|   437   // Insert one packet. |   437   // Insert one packet. | 
|   438   EXPECT_EQ(NetEq::kOK, |   438   EXPECT_EQ(NetEq::kOK, | 
|   439             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   439             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   440  |   440  | 
|   441   // Pull audio once. |   441   // Pull audio once. | 
|   442   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |   442   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|   443   AudioFrame output; |   443   AudioFrame output; | 
|   444   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   444   bool muted; | 
 |   445   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
 |   446   ASSERT_FALSE(muted); | 
|   445   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   447   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   446   EXPECT_EQ(1u, output.num_channels_); |   448   EXPECT_EQ(1u, output.num_channels_); | 
|   447   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |   449   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|   448  |   450  | 
|   449   // Start with a simple check that the fake decoder is behaving as expected. |   451   // Start with a simple check that the fake decoder is behaving as expected. | 
|   450   EXPECT_EQ(kPayloadLengthSamples, |   452   EXPECT_EQ(kPayloadLengthSamples, | 
|   451             static_cast<size_t>(decoder_.next_value() - 1)); |   453             static_cast<size_t>(decoder_.next_value() - 1)); | 
|   452  |   454  | 
|   453   // The value of the last of the output samples is the same as the number of |   455   // The value of the last of the output samples is the same as the number of | 
|   454   // samples played from the decoded packet. Thus, this number + the RTP |   456   // samples played from the decoded packet. Thus, this number + the RTP | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   511                             &mock_decoder, NetEqDecoder::kDecoderPCM16B, |   513                             &mock_decoder, NetEqDecoder::kDecoderPCM16B, | 
|   512                             "dummy name", kPayloadType, kSampleRateHz)); |   514                             "dummy name", kPayloadType, kSampleRateHz)); | 
|   513  |   515  | 
|   514   // Insert one packet. |   516   // Insert one packet. | 
|   515   EXPECT_EQ(NetEq::kOK, |   517   EXPECT_EQ(NetEq::kOK, | 
|   516             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   518             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   517  |   519  | 
|   518   // Pull audio once. |   520   // Pull audio once. | 
|   519   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |   521   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|   520   AudioFrame output; |   522   AudioFrame output; | 
|   521   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   523   bool muted; | 
 |   524   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   522   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   525   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   523   EXPECT_EQ(1u, output.num_channels_); |   526   EXPECT_EQ(1u, output.num_channels_); | 
|   524   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |   527   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|   525  |   528  | 
|   526   // Insert two more packets. The first one is out of order, and is already too |   529   // Insert two more packets. The first one is out of order, and is already too | 
|   527   // old, the second one is the expected next packet. |   530   // old, the second one is the expected next packet. | 
|   528   rtp_header.header.sequenceNumber -= 1; |   531   rtp_header.header.sequenceNumber -= 1; | 
|   529   rtp_header.header.timestamp -= kPayloadLengthSamples; |   532   rtp_header.header.timestamp -= kPayloadLengthSamples; | 
|   530   payload[0] = 1; |   533   payload[0] = 1; | 
|   531   EXPECT_EQ(NetEq::kOK, |   534   EXPECT_EQ(NetEq::kOK, | 
|   532             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   535             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   533   rtp_header.header.sequenceNumber += 2; |   536   rtp_header.header.sequenceNumber += 2; | 
|   534   rtp_header.header.timestamp += 2 * kPayloadLengthSamples; |   537   rtp_header.header.timestamp += 2 * kPayloadLengthSamples; | 
|   535   payload[0] = 2; |   538   payload[0] = 2; | 
|   536   EXPECT_EQ(NetEq::kOK, |   539   EXPECT_EQ(NetEq::kOK, | 
|   537             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   540             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   538  |   541  | 
|   539   // Expect only the second packet to be decoded (the one with "2" as the first |   542   // Expect only the second packet to be decoded (the one with "2" as the first | 
|   540   // payload byte). |   543   // payload byte). | 
|   541   EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes, |   544   EXPECT_CALL(mock_decoder, DecodeInternal(Pointee(2), kPayloadLengthBytes, | 
|   542                                            kSampleRateHz, _, _)) |   545                                            kSampleRateHz, _, _)) | 
|   543       .WillOnce(DoAll(SetArrayArgument<3>(dummy_output, |   546       .WillOnce(DoAll(SetArrayArgument<3>(dummy_output, | 
|   544                                           dummy_output + kPayloadLengthSamples), |   547                                           dummy_output + kPayloadLengthSamples), | 
|   545                       SetArgPointee<4>(AudioDecoder::kSpeech), |   548                       SetArgPointee<4>(AudioDecoder::kSpeech), | 
|   546                       Return(kPayloadLengthSamples))); |   549                       Return(kPayloadLengthSamples))); | 
|   547  |   550  | 
|   548   // Pull audio once. |   551   // Pull audio once. | 
|   549   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   552   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   550   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   553   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   551   EXPECT_EQ(1u, output.num_channels_); |   554   EXPECT_EQ(1u, output.num_channels_); | 
|   552   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |   555   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|   553  |   556  | 
|   554   // Now check the packet buffer, and make sure it is empty, since the |   557   // Now check the packet buffer, and make sure it is empty, since the | 
|   555   // out-of-order packet should have been discarded. |   558   // out-of-order packet should have been discarded. | 
|   556   EXPECT_TRUE(packet_buffer_->Empty()); |   559   EXPECT_TRUE(packet_buffer_->Empty()); | 
|   557  |   560  | 
|   558   EXPECT_CALL(mock_decoder, Die()); |   561   EXPECT_CALL(mock_decoder, Die()); | 
|   559 } |   562 } | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|   579  |   582  | 
|   580   // Insert one packet. Note that we have not registered any payload type, so |   583   // Insert one packet. Note that we have not registered any payload type, so | 
|   581   // this packet will be rejected. |   584   // this packet will be rejected. | 
|   582   EXPECT_EQ(NetEq::kFail, |   585   EXPECT_EQ(NetEq::kFail, | 
|   583             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   586             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   584   EXPECT_EQ(NetEq::kUnknownRtpPayloadType, neteq_->LastError()); |   587   EXPECT_EQ(NetEq::kUnknownRtpPayloadType, neteq_->LastError()); | 
|   585  |   588  | 
|   586   // Pull audio once. |   589   // Pull audio once. | 
|   587   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |   590   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|   588   AudioFrame output; |   591   AudioFrame output; | 
|   589   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   592   bool muted; | 
 |   593   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   590   ASSERT_LE(output.samples_per_channel_, kMaxOutputSize); |   594   ASSERT_LE(output.samples_per_channel_, kMaxOutputSize); | 
|   591   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |   595   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   592   EXPECT_EQ(1u, output.num_channels_); |   596   EXPECT_EQ(1u, output.num_channels_); | 
|   593   EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); |   597   EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); | 
|   594  |   598  | 
|   595   // Register the payload type. |   599   // Register the payload type. | 
|   596   EXPECT_EQ(NetEq::kOK, neteq_->RegisterPayloadType( |   600   EXPECT_EQ(NetEq::kOK, neteq_->RegisterPayloadType( | 
|   597                             NetEqDecoder::kDecoderPCM16B, "", kPayloadType)); |   601                             NetEqDecoder::kDecoderPCM16B, "", kPayloadType)); | 
|   598  |   602  | 
|   599   // Insert 10 packets. |   603   // Insert 10 packets. | 
|   600   for (size_t i = 0; i < 10; ++i) { |   604   for (size_t i = 0; i < 10; ++i) { | 
|   601     rtp_header.header.sequenceNumber++; |   605     rtp_header.header.sequenceNumber++; | 
|   602     rtp_header.header.timestamp += kPayloadLengthSamples; |   606     rtp_header.header.timestamp += kPayloadLengthSamples; | 
|   603     EXPECT_EQ(NetEq::kOK, |   607     EXPECT_EQ(NetEq::kOK, | 
|   604               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   608               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   605     EXPECT_EQ(i + 1, packet_buffer_->NumPacketsInBuffer()); |   609     EXPECT_EQ(i + 1, packet_buffer_->NumPacketsInBuffer()); | 
|   606   } |   610   } | 
|   607  |   611  | 
|   608   // Pull audio repeatedly and make sure we get normal output, that is not PLC. |   612   // Pull audio repeatedly and make sure we get normal output, that is not PLC. | 
|   609   for (size_t i = 0; i < 3; ++i) { |   613   for (size_t i = 0; i < 3; ++i) { | 
|   610     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   614     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   611     ASSERT_LE(output.samples_per_channel_, kMaxOutputSize); |   615     ASSERT_LE(output.samples_per_channel_, kMaxOutputSize); | 
|   612     EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |   616     EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   613     EXPECT_EQ(1u, output.num_channels_); |   617     EXPECT_EQ(1u, output.num_channels_); | 
|   614     EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_) |   618     EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_) | 
|   615         << "NetEq did not decode the packets as expected."; |   619         << "NetEq did not decode the packets as expected."; | 
|   616   } |   620   } | 
|   617 } |   621 } | 
|   618  |   622  | 
|   619 // This test verifies that NetEq can handle comfort noise and enters/quits codec |   623 // This test verifies that NetEq can handle comfort noise and enters/quits codec | 
|   620 // internal CNG mode properly. |   624 // internal CNG mode properly. | 
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   704       AudioFrame::kNormalSpeech, AudioFrame::kNormalSpeech |   708       AudioFrame::kNormalSpeech, AudioFrame::kNormalSpeech | 
|   705   }; |   709   }; | 
|   706   int expected_timestamp_increment[8] = { |   710   int expected_timestamp_increment[8] = { | 
|   707       -1,  // will not be used. |   711       -1,  // will not be used. | 
|   708       10 * kSampleRateKhz, |   712       10 * kSampleRateKhz, | 
|   709       -1, -1,  // timestamp will be empty during CNG mode; indicated by -1 here. |   713       -1, -1,  // timestamp will be empty during CNG mode; indicated by -1 here. | 
|   710       -1, -1, |   714       -1, -1, | 
|   711       50 * kSampleRateKhz, 10 * kSampleRateKhz |   715       50 * kSampleRateKhz, 10 * kSampleRateKhz | 
|   712   }; |   716   }; | 
|   713  |   717  | 
|   714   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   718   bool muted; | 
 |   719   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   715   rtc::Optional<uint32_t> last_timestamp = neteq_->GetPlayoutTimestamp(); |   720   rtc::Optional<uint32_t> last_timestamp = neteq_->GetPlayoutTimestamp(); | 
|   716   ASSERT_TRUE(last_timestamp); |   721   ASSERT_TRUE(last_timestamp); | 
|   717  |   722  | 
|   718   // Lambda for verifying the timestamps. |   723   // Lambda for verifying the timestamps. | 
|   719   auto verify_timestamp = [&last_timestamp, &expected_timestamp_increment]( |   724   auto verify_timestamp = [&last_timestamp, &expected_timestamp_increment]( | 
|   720       rtc::Optional<uint32_t> ts, size_t i) { |   725       rtc::Optional<uint32_t> ts, size_t i) { | 
|   721     if (expected_timestamp_increment[i] == -1) { |   726     if (expected_timestamp_increment[i] == -1) { | 
|   722       // Expect to get an empty timestamp value during CNG and PLC. |   727       // Expect to get an empty timestamp value during CNG and PLC. | 
|   723       EXPECT_FALSE(ts) << "i = " << i; |   728       EXPECT_FALSE(ts) << "i = " << i; | 
|   724     } else { |   729     } else { | 
|   725       ASSERT_TRUE(ts) << "i = " << i; |   730       ASSERT_TRUE(ts) << "i = " << i; | 
|   726       EXPECT_EQ(*ts, *last_timestamp + expected_timestamp_increment[i]) |   731       EXPECT_EQ(*ts, *last_timestamp + expected_timestamp_increment[i]) | 
|   727           << "i = " << i; |   732           << "i = " << i; | 
|   728       last_timestamp = ts; |   733       last_timestamp = ts; | 
|   729     } |   734     } | 
|   730   }; |   735   }; | 
|   731  |   736  | 
|   732   for (size_t i = 1; i < 6; ++i) { |   737   for (size_t i = 1; i < 6; ++i) { | 
|   733     ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   738     ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   734     EXPECT_EQ(1u, output.num_channels_); |   739     EXPECT_EQ(1u, output.num_channels_); | 
|   735     EXPECT_EQ(expected_type[i - 1], output.speech_type_); |   740     EXPECT_EQ(expected_type[i - 1], output.speech_type_); | 
|   736     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   741     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   737     SCOPED_TRACE(""); |   742     SCOPED_TRACE(""); | 
|   738     verify_timestamp(neteq_->GetPlayoutTimestamp(), i); |   743     verify_timestamp(neteq_->GetPlayoutTimestamp(), i); | 
|   739   } |   744   } | 
|   740  |   745  | 
|   741   // Insert third packet, which leaves a gap from last packet. |   746   // Insert third packet, which leaves a gap from last packet. | 
|   742   payload[0] = 2; |   747   payload[0] = 2; | 
|   743   rtp_header.header.sequenceNumber += 2; |   748   rtp_header.header.sequenceNumber += 2; | 
|   744   rtp_header.header.timestamp += 2 * kPayloadLengthSamples; |   749   rtp_header.header.timestamp += 2 * kPayloadLengthSamples; | 
|   745   EXPECT_EQ(NetEq::kOK, |   750   EXPECT_EQ(NetEq::kOK, | 
|   746             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   751             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   747  |   752  | 
|   748   for (size_t i = 6; i < 8; ++i) { |   753   for (size_t i = 6; i < 8; ++i) { | 
|   749     ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   754     ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   750     EXPECT_EQ(1u, output.num_channels_); |   755     EXPECT_EQ(1u, output.num_channels_); | 
|   751     EXPECT_EQ(expected_type[i - 1], output.speech_type_); |   756     EXPECT_EQ(expected_type[i - 1], output.speech_type_); | 
|   752     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   757     EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   753     SCOPED_TRACE(""); |   758     SCOPED_TRACE(""); | 
|   754     verify_timestamp(neteq_->GetPlayoutTimestamp(), i); |   759     verify_timestamp(neteq_->GetPlayoutTimestamp(), i); | 
|   755   } |   760   } | 
|   756  |   761  | 
|   757   // Now check the packet buffer, and make sure it is empty. |   762   // Now check the packet buffer, and make sure it is empty. | 
|   758   EXPECT_TRUE(packet_buffer_->Empty()); |   763   EXPECT_TRUE(packet_buffer_->Empty()); | 
|   759  |   764  | 
|   760   EXPECT_CALL(mock_decoder, Die()); |   765   EXPECT_CALL(mock_decoder, Die()); | 
|   761 } |   766 } | 
|   762  |   767  | 
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   834   // Insert another packet. |   839   // Insert another packet. | 
|   835   payload[0] = kSecondPayloadValue;  // This will make Decode() successful. |   840   payload[0] = kSecondPayloadValue;  // This will make Decode() successful. | 
|   836   rtp_header.header.sequenceNumber++; |   841   rtp_header.header.sequenceNumber++; | 
|   837   // The second timestamp needs to be at least 30 ms after the first to make |   842   // The second timestamp needs to be at least 30 ms after the first to make | 
|   838   // the second packet get decoded. |   843   // the second packet get decoded. | 
|   839   rtp_header.header.timestamp += 3 * kPayloadLengthSamples; |   844   rtp_header.header.timestamp += 3 * kPayloadLengthSamples; | 
|   840   EXPECT_EQ(NetEq::kOK, |   845   EXPECT_EQ(NetEq::kOK, | 
|   841             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   846             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   842  |   847  | 
|   843   AudioFrame output; |   848   AudioFrame output; | 
 |   849   bool muted; | 
|   844   // First call to GetAudio will try to decode the "faulty" packet. |   850   // First call to GetAudio will try to decode the "faulty" packet. | 
|   845   // Expect kFail return value... |   851   // Expect kFail return value... | 
|   846   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output)); |   852   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted)); | 
|   847   // ... and kOtherDecoderError error code. |   853   // ... and kOtherDecoderError error code. | 
|   848   EXPECT_EQ(NetEq::kOtherDecoderError, neteq_->LastError()); |   854   EXPECT_EQ(NetEq::kOtherDecoderError, neteq_->LastError()); | 
|   849   // Output size and number of channels should be correct. |   855   // Output size and number of channels should be correct. | 
|   850   const size_t kExpectedOutputSize = 10 * (kSampleRateHz / 1000) * kChannels; |   856   const size_t kExpectedOutputSize = 10 * (kSampleRateHz / 1000) * kChannels; | 
|   851   EXPECT_EQ(kExpectedOutputSize, output.samples_per_channel_ * kChannels); |   857   EXPECT_EQ(kExpectedOutputSize, output.samples_per_channel_ * kChannels); | 
|   852   EXPECT_EQ(kChannels, output.num_channels_); |   858   EXPECT_EQ(kChannels, output.num_channels_); | 
|   853  |   859  | 
|   854   // Second call to GetAudio will decode the packet that is ok. No errors are |   860   // Second call to GetAudio will decode the packet that is ok. No errors are | 
|   855   // expected. |   861   // expected. | 
|   856   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   862   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   857   EXPECT_EQ(kExpectedOutputSize, output.samples_per_channel_ * kChannels); |   863   EXPECT_EQ(kExpectedOutputSize, output.samples_per_channel_ * kChannels); | 
|   858   EXPECT_EQ(kChannels, output.num_channels_); |   864   EXPECT_EQ(kChannels, output.num_channels_); | 
|   859 } |   865 } | 
|   860  |   866  | 
|   861 // This test inserts packets until the buffer is flushed. After that, it asks |   867 // This test inserts packets until the buffer is flushed. After that, it asks | 
|   862 // NetEq for the network statistics. The purpose of the test is to make sure |   868 // NetEq for the network statistics. The purpose of the test is to make sure | 
|   863 // that even though the buffer size increment is negative (which it becomes when |   869 // that even though the buffer size increment is negative (which it becomes when | 
|   864 // the packet causing a flush is inserted), the packet length stored in the |   870 // the packet causing a flush is inserted), the packet length stored in the | 
|   865 // decision logic remains valid. |   871 // decision logic remains valid. | 
|   866 TEST_F(NetEqImplTest, FloodBufferAndGetNetworkStats) { |   872 TEST_F(NetEqImplTest, FloodBufferAndGetNetworkStats) { | 
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   939  |   945  | 
|   940   // Insert one packet. |   946   // Insert one packet. | 
|   941   EXPECT_EQ(NetEq::kOK, |   947   EXPECT_EQ(NetEq::kOK, | 
|   942             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |   948             neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|   943  |   949  | 
|   944   EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength()); |   950   EXPECT_EQ(5u, neteq_->sync_buffer_for_test()->FutureLength()); | 
|   945  |   951  | 
|   946   // Pull audio once. |   952   // Pull audio once. | 
|   947   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |   953   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|   948   AudioFrame output; |   954   AudioFrame output; | 
|   949   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |   955   bool muted; | 
 |   956   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|   950   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); |   957   ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|   951   EXPECT_EQ(1u, output.num_channels_); |   958   EXPECT_EQ(1u, output.num_channels_); | 
|   952   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |   959   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|   953  |   960  | 
|   954   EXPECT_CALL(mock_decoder, Die()); |   961   EXPECT_CALL(mock_decoder, Die()); | 
|   955 } |   962 } | 
|   956  |   963  | 
|   957 // This test checks the behavior of NetEq when audio decoder fails. |   964 // This test checks the behavior of NetEq when audio decoder fails. | 
|   958 TEST_F(NetEqImplTest, DecodingError) { |   965 TEST_F(NetEqImplTest, DecodingError) { | 
|   959   UseNoMocks(); |   966   UseNoMocks(); | 
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1031   for (int i = 0; i < 6; ++i) { |  1038   for (int i = 0; i < 6; ++i) { | 
|  1032     rtp_header.header.sequenceNumber += 1; |  1039     rtp_header.header.sequenceNumber += 1; | 
|  1033     rtp_header.header.timestamp += kFrameLengthSamples; |  1040     rtp_header.header.timestamp += kFrameLengthSamples; | 
|  1034     EXPECT_EQ(NetEq::kOK, |  1041     EXPECT_EQ(NetEq::kOK, | 
|  1035               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |  1042               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|  1036   } |  1043   } | 
|  1037  |  1044  | 
|  1038   // Pull audio. |  1045   // Pull audio. | 
|  1039   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |  1046   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|  1040   AudioFrame output; |  1047   AudioFrame output; | 
|  1041   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1048   bool muted; | 
 |  1049   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1042   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1050   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1043   EXPECT_EQ(1u, output.num_channels_); |  1051   EXPECT_EQ(1u, output.num_channels_); | 
|  1044   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |  1052   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|  1045  |  1053  | 
|  1046   // Pull audio again. Decoder fails. |  1054   // Pull audio again. Decoder fails. | 
|  1047   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output)); |  1055   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted)); | 
|  1048   EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); |  1056   EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); | 
|  1049   EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); |  1057   EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); | 
|  1050   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1058   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1051   EXPECT_EQ(1u, output.num_channels_); |  1059   EXPECT_EQ(1u, output.num_channels_); | 
|  1052   // We are not expecting anything for output.speech_type_, since an error was |  1060   // We are not expecting anything for output.speech_type_, since an error was | 
|  1053   // returned. |  1061   // returned. | 
|  1054  |  1062  | 
|  1055   // Pull audio again, should continue an expansion. |  1063   // Pull audio again, should continue an expansion. | 
|  1056   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1064   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1057   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1065   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1058   EXPECT_EQ(1u, output.num_channels_); |  1066   EXPECT_EQ(1u, output.num_channels_); | 
|  1059   EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); |  1067   EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); | 
|  1060  |  1068  | 
|  1061   // Pull audio again, should behave normal. |  1069   // Pull audio again, should behave normal. | 
|  1062   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1070   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1063   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1071   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1064   EXPECT_EQ(1u, output.num_channels_); |  1072   EXPECT_EQ(1u, output.num_channels_); | 
|  1065   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); |  1073   EXPECT_EQ(AudioFrame::kNormalSpeech, output.speech_type_); | 
|  1066  |  1074  | 
|  1067   EXPECT_CALL(mock_decoder, Die()); |  1075   EXPECT_CALL(mock_decoder, Die()); | 
|  1068 } |  1076 } | 
|  1069  |  1077  | 
|  1070 // This test checks the behavior of NetEq when audio decoder fails during CNG. |  1078 // This test checks the behavior of NetEq when audio decoder fails during CNG. | 
|  1071 TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { |  1079 TEST_F(NetEqImplTest, DecodingErrorDuringInternalCng) { | 
|  1072   UseNoMocks(); |  1080   UseNoMocks(); | 
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1140   for (int i = 0; i < 2; ++i) { |  1148   for (int i = 0; i < 2; ++i) { | 
|  1141     rtp_header.header.sequenceNumber += 1; |  1149     rtp_header.header.sequenceNumber += 1; | 
|  1142     rtp_header.header.timestamp += kFrameLengthSamples; |  1150     rtp_header.header.timestamp += kFrameLengthSamples; | 
|  1143     EXPECT_EQ(NetEq::kOK, |  1151     EXPECT_EQ(NetEq::kOK, | 
|  1144               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); |  1152               neteq_->InsertPacket(rtp_header, payload, kReceiveTime)); | 
|  1145   } |  1153   } | 
|  1146  |  1154  | 
|  1147   // Pull audio. |  1155   // Pull audio. | 
|  1148   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); |  1156   const size_t kMaxOutputSize = static_cast<size_t>(10 * kSampleRateHz / 1000); | 
|  1149   AudioFrame output; |  1157   AudioFrame output; | 
|  1150   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1158   bool muted; | 
 |  1159   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1151   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1160   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1152   EXPECT_EQ(1u, output.num_channels_); |  1161   EXPECT_EQ(1u, output.num_channels_); | 
|  1153   EXPECT_EQ(AudioFrame::kCNG, output.speech_type_); |  1162   EXPECT_EQ(AudioFrame::kCNG, output.speech_type_); | 
|  1154  |  1163  | 
|  1155   // Pull audio again. Decoder fails. |  1164   // Pull audio again. Decoder fails. | 
|  1156   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output)); |  1165   EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&output, &muted)); | 
|  1157   EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); |  1166   EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); | 
|  1158   EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); |  1167   EXPECT_EQ(kDecoderErrorCode, neteq_->LastDecoderError()); | 
|  1159   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1168   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1160   EXPECT_EQ(1u, output.num_channels_); |  1169   EXPECT_EQ(1u, output.num_channels_); | 
|  1161   // We are not expecting anything for output.speech_type_, since an error was |  1170   // We are not expecting anything for output.speech_type_, since an error was | 
|  1162   // returned. |  1171   // returned. | 
|  1163  |  1172  | 
|  1164   // Pull audio again, should resume codec CNG. |  1173   // Pull audio again, should resume codec CNG. | 
|  1165   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1174   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1166   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); |  1175   EXPECT_EQ(kMaxOutputSize, output.samples_per_channel_); | 
|  1167   EXPECT_EQ(1u, output.num_channels_); |  1176   EXPECT_EQ(1u, output.num_channels_); | 
|  1168   EXPECT_EQ(AudioFrame::kCNG, output.speech_type_); |  1177   EXPECT_EQ(AudioFrame::kCNG, output.speech_type_); | 
|  1169  |  1178  | 
|  1170   EXPECT_CALL(mock_decoder, Die()); |  1179   EXPECT_CALL(mock_decoder, Die()); | 
|  1171 } |  1180 } | 
|  1172  |  1181  | 
|  1173 // Tests that the return value from last_output_sample_rate_hz() is equal to the |  1182 // Tests that the return value from last_output_sample_rate_hz() is equal to the | 
|  1174 // configured inital sample rate. |  1183 // configured inital sample rate. | 
|  1175 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) { |  1184 TEST_F(NetEqImplTest, InitialLastOutputSampleRate) { | 
|  1176   UseNoMocks(); |  1185   UseNoMocks(); | 
|  1177   config_.sample_rate_hz = 48000; |  1186   config_.sample_rate_hz = 48000; | 
|  1178   CreateInstance(); |  1187   CreateInstance(); | 
|  1179   EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz()); |  1188   EXPECT_EQ(48000, neteq_->last_output_sample_rate_hz()); | 
|  1180 } |  1189 } | 
|  1181  |  1190  | 
|  1182 TEST_F(NetEqImplTest, TickTimerIncrement) { |  1191 TEST_F(NetEqImplTest, TickTimerIncrement) { | 
|  1183   UseNoMocks(); |  1192   UseNoMocks(); | 
|  1184   CreateInstance(); |  1193   CreateInstance(); | 
|  1185   ASSERT_TRUE(tick_timer_); |  1194   ASSERT_TRUE(tick_timer_); | 
|  1186   EXPECT_EQ(0u, tick_timer_->ticks()); |  1195   EXPECT_EQ(0u, tick_timer_->ticks()); | 
|  1187   AudioFrame output; |  1196   AudioFrame output; | 
|  1188   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output)); |  1197   bool muted; | 
 |  1198   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output, &muted)); | 
|  1189   EXPECT_EQ(1u, tick_timer_->ticks()); |  1199   EXPECT_EQ(1u, tick_timer_->ticks()); | 
|  1190 } |  1200 } | 
|  1191  |  1201  | 
|  1192 class Decoder120ms : public AudioDecoder { |  1202 class Decoder120ms : public AudioDecoder { | 
|  1193  public: |  1203  public: | 
|  1194   Decoder120ms(SpeechType speech_type) |  1204   Decoder120ms(SpeechType speech_type) | 
|  1195       : next_value_(1), |  1205       : next_value_(1), | 
|  1196         speech_type_(speech_type) {} |  1206         speech_type_(speech_type) {} | 
|  1197  |  1207  | 
|  1198   int DecodeInternal(const uint8_t* encoded, |  1208   int DecodeInternal(const uint8_t* encoded, | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1233     CreateInstance(); |  1243     CreateInstance(); | 
|  1234   } |  1244   } | 
|  1235  |  1245  | 
|  1236   uint32_t timestamp_diff_between_packets() const { |  1246   uint32_t timestamp_diff_between_packets() const { | 
|  1237     return rtc::CheckedDivExact(kSamplingFreq_, 1000u) * 120; |  1247     return rtc::CheckedDivExact(kSamplingFreq_, 1000u) * 120; | 
|  1238   } |  1248   } | 
|  1239  |  1249  | 
|  1240   uint32_t first_timestamp() const { return 10u; } |  1250   uint32_t first_timestamp() const { return 10u; } | 
|  1241  |  1251  | 
|  1242   void GetFirstPacket() { |  1252   void GetFirstPacket() { | 
 |  1253     bool muted; | 
|  1243     for (int i = 0; i < 12; i++) { |  1254     for (int i = 0; i < 12; i++) { | 
|  1244       EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1255       EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
 |  1256       EXPECT_FALSE(muted); | 
|  1245     } |  1257     } | 
|  1246   } |  1258   } | 
|  1247  |  1259  | 
|  1248   void InsertPacket(uint32_t timestamp) { |  1260   void InsertPacket(uint32_t timestamp) { | 
|  1249     WebRtcRTPHeader rtp_header; |  1261     WebRtcRTPHeader rtp_header; | 
|  1250     rtp_header.header.payloadType = kPayloadType; |  1262     rtp_header.header.payloadType = kPayloadType; | 
|  1251     rtp_header.header.sequenceNumber = sequence_number_; |  1263     rtp_header.header.sequenceNumber = sequence_number_; | 
|  1252     rtp_header.header.timestamp = timestamp; |  1264     rtp_header.header.timestamp = timestamp; | 
|  1253     rtp_header.header.ssrc = 15; |  1265     rtp_header.header.ssrc = 15; | 
|  1254     const size_t kPayloadLengthBytes = 1;  // This can be arbitrary. |  1266     const size_t kPayloadLengthBytes = 1;  // This can be arbitrary. | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
|  1273 }; |  1285 }; | 
|  1274  |  1286  | 
|  1275 TEST_F(NetEqImplTest120ms, AudioRepetition) { |  1287 TEST_F(NetEqImplTest120ms, AudioRepetition) { | 
|  1276   config_.playout_mode = kPlayoutFax; |  1288   config_.playout_mode = kPlayoutFax; | 
|  1277   CreateInstanceNoMocks(); |  1289   CreateInstanceNoMocks(); | 
|  1278   Register120msCodec(AudioDecoder::kSpeech); |  1290   Register120msCodec(AudioDecoder::kSpeech); | 
|  1279  |  1291  | 
|  1280   InsertPacket(first_timestamp()); |  1292   InsertPacket(first_timestamp()); | 
|  1281   GetFirstPacket(); |  1293   GetFirstPacket(); | 
|  1282  |  1294  | 
|  1283   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1295   bool muted; | 
 |  1296   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1284   EXPECT_EQ(kAudioRepetition, neteq_->last_operation_for_test()); |  1297   EXPECT_EQ(kAudioRepetition, neteq_->last_operation_for_test()); | 
|  1285 } |  1298 } | 
|  1286  |  1299  | 
|  1287 TEST_F(NetEqImplTest120ms, AlternativePlc) { |  1300 TEST_F(NetEqImplTest120ms, AlternativePlc) { | 
|  1288   config_.playout_mode = kPlayoutOff; |  1301   config_.playout_mode = kPlayoutOff; | 
|  1289   CreateInstanceNoMocks(); |  1302   CreateInstanceNoMocks(); | 
|  1290   Register120msCodec(AudioDecoder::kSpeech); |  1303   Register120msCodec(AudioDecoder::kSpeech); | 
|  1291  |  1304  | 
|  1292   InsertPacket(first_timestamp()); |  1305   InsertPacket(first_timestamp()); | 
|  1293   GetFirstPacket(); |  1306   GetFirstPacket(); | 
|  1294  |  1307  | 
|  1295   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1308   bool muted; | 
 |  1309   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1296   EXPECT_EQ(kAlternativePlc, neteq_->last_operation_for_test()); |  1310   EXPECT_EQ(kAlternativePlc, neteq_->last_operation_for_test()); | 
|  1297 } |  1311 } | 
|  1298  |  1312  | 
|  1299 TEST_F(NetEqImplTest120ms, CodecInternalCng) { |  1313 TEST_F(NetEqImplTest120ms, CodecInternalCng) { | 
|  1300   CreateInstanceNoMocks(); |  1314   CreateInstanceNoMocks(); | 
|  1301   Register120msCodec(AudioDecoder::kComfortNoise); |  1315   Register120msCodec(AudioDecoder::kComfortNoise); | 
|  1302  |  1316  | 
|  1303   InsertPacket(first_timestamp()); |  1317   InsertPacket(first_timestamp()); | 
|  1304   GetFirstPacket(); |  1318   GetFirstPacket(); | 
|  1305  |  1319  | 
|  1306   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1320   bool muted; | 
 |  1321   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1307   EXPECT_EQ(kCodecInternalCng, neteq_->last_operation_for_test()); |  1322   EXPECT_EQ(kCodecInternalCng, neteq_->last_operation_for_test()); | 
|  1308 } |  1323 } | 
|  1309  |  1324  | 
|  1310 TEST_F(NetEqImplTest120ms, Normal) { |  1325 TEST_F(NetEqImplTest120ms, Normal) { | 
|  1311   CreateInstanceNoMocks(); |  1326   CreateInstanceNoMocks(); | 
|  1312   Register120msCodec(AudioDecoder::kSpeech); |  1327   Register120msCodec(AudioDecoder::kSpeech); | 
|  1313  |  1328  | 
|  1314   InsertPacket(first_timestamp()); |  1329   InsertPacket(first_timestamp()); | 
|  1315   GetFirstPacket(); |  1330   GetFirstPacket(); | 
|  1316  |  1331  | 
|  1317   EXPECT_EQ(kNormal, neteq_->last_operation_for_test()); |  1332   EXPECT_EQ(kNormal, neteq_->last_operation_for_test()); | 
|  1318 } |  1333 } | 
|  1319  |  1334  | 
|  1320 TEST_F(NetEqImplTest120ms, Merge) { |  1335 TEST_F(NetEqImplTest120ms, Merge) { | 
|  1321   CreateInstanceWithDelayManagerMock(); |  1336   CreateInstanceWithDelayManagerMock(); | 
|  1322  |  1337  | 
|  1323   Register120msCodec(AudioDecoder::kSpeech); |  1338   Register120msCodec(AudioDecoder::kSpeech); | 
|  1324   InsertPacket(first_timestamp()); |  1339   InsertPacket(first_timestamp()); | 
|  1325  |  1340  | 
|  1326   GetFirstPacket(); |  1341   GetFirstPacket(); | 
|  1327   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1342   bool muted; | 
 |  1343   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1328  |  1344  | 
|  1329   InsertPacket(first_timestamp() + 2 * timestamp_diff_between_packets()); |  1345   InsertPacket(first_timestamp() + 2 * timestamp_diff_between_packets()); | 
|  1330  |  1346  | 
|  1331   // Delay manager reports a target level which should cause a Merge. |  1347   // Delay manager reports a target level which should cause a Merge. | 
|  1332   EXPECT_CALL(*mock_delay_manager_, TargetLevel()).WillOnce(Return(-10)); |  1348   EXPECT_CALL(*mock_delay_manager_, TargetLevel()).WillOnce(Return(-10)); | 
|  1333  |  1349  | 
|  1334   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1350   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1335   EXPECT_EQ(kMerge, neteq_->last_operation_for_test()); |  1351   EXPECT_EQ(kMerge, neteq_->last_operation_for_test()); | 
|  1336 } |  1352 } | 
|  1337  |  1353  | 
|  1338 TEST_F(NetEqImplTest120ms, Expand) { |  1354 TEST_F(NetEqImplTest120ms, Expand) { | 
|  1339   CreateInstanceNoMocks(); |  1355   CreateInstanceNoMocks(); | 
|  1340   Register120msCodec(AudioDecoder::kSpeech); |  1356   Register120msCodec(AudioDecoder::kSpeech); | 
|  1341  |  1357  | 
|  1342   InsertPacket(first_timestamp()); |  1358   InsertPacket(first_timestamp()); | 
|  1343   GetFirstPacket(); |  1359   GetFirstPacket(); | 
|  1344  |  1360  | 
|  1345   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1361   bool muted; | 
 |  1362   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1346   EXPECT_EQ(kExpand, neteq_->last_operation_for_test()); |  1363   EXPECT_EQ(kExpand, neteq_->last_operation_for_test()); | 
|  1347 } |  1364 } | 
|  1348  |  1365  | 
|  1349 TEST_F(NetEqImplTest120ms, FastAccelerate) { |  1366 TEST_F(NetEqImplTest120ms, FastAccelerate) { | 
|  1350   CreateInstanceWithDelayManagerMock(); |  1367   CreateInstanceWithDelayManagerMock(); | 
|  1351   Register120msCodec(AudioDecoder::kSpeech); |  1368   Register120msCodec(AudioDecoder::kSpeech); | 
|  1352  |  1369  | 
|  1353   InsertPacket(first_timestamp()); |  1370   InsertPacket(first_timestamp()); | 
|  1354   GetFirstPacket(); |  1371   GetFirstPacket(); | 
|  1355   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); |  1372   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); | 
|  1356  |  1373  | 
|  1357   // Delay manager report buffer limit which should cause a FastAccelerate. |  1374   // Delay manager report buffer limit which should cause a FastAccelerate. | 
|  1358   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) |  1375   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) | 
|  1359       .Times(1) |  1376       .Times(1) | 
|  1360       .WillOnce(DoAll(SetArgPointee<0>(0), SetArgPointee<1>(0))); |  1377       .WillOnce(DoAll(SetArgPointee<0>(0), SetArgPointee<1>(0))); | 
|  1361  |  1378  | 
|  1362   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1379   bool muted; | 
 |  1380   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1363   EXPECT_EQ(kFastAccelerate, neteq_->last_operation_for_test()); |  1381   EXPECT_EQ(kFastAccelerate, neteq_->last_operation_for_test()); | 
|  1364 } |  1382 } | 
|  1365  |  1383  | 
|  1366 TEST_F(NetEqImplTest120ms, PreemptiveExpand) { |  1384 TEST_F(NetEqImplTest120ms, PreemptiveExpand) { | 
|  1367   CreateInstanceWithDelayManagerMock(); |  1385   CreateInstanceWithDelayManagerMock(); | 
|  1368   Register120msCodec(AudioDecoder::kSpeech); |  1386   Register120msCodec(AudioDecoder::kSpeech); | 
|  1369  |  1387  | 
|  1370   InsertPacket(first_timestamp()); |  1388   InsertPacket(first_timestamp()); | 
|  1371   GetFirstPacket(); |  1389   GetFirstPacket(); | 
|  1372  |  1390  | 
|  1373   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); |  1391   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); | 
|  1374  |  1392  | 
|  1375   // Delay manager report buffer limit which should cause a PreemptiveExpand. |  1393   // Delay manager report buffer limit which should cause a PreemptiveExpand. | 
|  1376   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) |  1394   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) | 
|  1377       .Times(1) |  1395       .Times(1) | 
|  1378       .WillOnce(DoAll(SetArgPointee<0>(100), SetArgPointee<1>(100))); |  1396       .WillOnce(DoAll(SetArgPointee<0>(100), SetArgPointee<1>(100))); | 
|  1379  |  1397  | 
|  1380   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1398   bool muted; | 
 |  1399   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1381   EXPECT_EQ(kPreemptiveExpand, neteq_->last_operation_for_test()); |  1400   EXPECT_EQ(kPreemptiveExpand, neteq_->last_operation_for_test()); | 
|  1382 } |  1401 } | 
|  1383  |  1402  | 
|  1384 TEST_F(NetEqImplTest120ms, Accelerate) { |  1403 TEST_F(NetEqImplTest120ms, Accelerate) { | 
|  1385   CreateInstanceWithDelayManagerMock(); |  1404   CreateInstanceWithDelayManagerMock(); | 
|  1386   Register120msCodec(AudioDecoder::kSpeech); |  1405   Register120msCodec(AudioDecoder::kSpeech); | 
|  1387  |  1406  | 
|  1388   InsertPacket(first_timestamp()); |  1407   InsertPacket(first_timestamp()); | 
|  1389   GetFirstPacket(); |  1408   GetFirstPacket(); | 
|  1390  |  1409  | 
|  1391   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); |  1410   InsertPacket(first_timestamp() + timestamp_diff_between_packets()); | 
|  1392  |  1411  | 
|  1393   // Delay manager report buffer limit which should cause a Accelerate. |  1412   // Delay manager report buffer limit which should cause a Accelerate. | 
|  1394   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) |  1413   EXPECT_CALL(*mock_delay_manager_, BufferLimits(_, _)) | 
|  1395       .Times(1) |  1414       .Times(1) | 
|  1396       .WillOnce(DoAll(SetArgPointee<0>(1), SetArgPointee<1>(2))); |  1415       .WillOnce(DoAll(SetArgPointee<0>(1), SetArgPointee<1>(2))); | 
|  1397  |  1416  | 
|  1398   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_)); |  1417   bool muted; | 
 |  1418   EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output_, &muted)); | 
|  1399   EXPECT_EQ(kAccelerate, neteq_->last_operation_for_test()); |  1419   EXPECT_EQ(kAccelerate, neteq_->last_operation_for_test()); | 
|  1400 } |  1420 } | 
|  1401  |  1421  | 
|  1402 }// namespace webrtc |  1422 }// namespace webrtc | 
| OLD | NEW |