| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2011 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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 ASSERT_EQ(true, | 146 ASSERT_EQ(true, |
| 147 neteq->RegisterPayloadType(98, SdpAudioFormat("cn", 16000, 1))); | 147 neteq->RegisterPayloadType(98, SdpAudioFormat("cn", 16000, 1))); |
| 148 } | 148 } |
| 149 } // namespace | 149 } // namespace |
| 150 | 150 |
| 151 class ResultSink { | 151 class ResultSink { |
| 152 public: | 152 public: |
| 153 explicit ResultSink(const std::string& output_file); | 153 explicit ResultSink(const std::string& output_file); |
| 154 ~ResultSink(); | 154 ~ResultSink(); |
| 155 | 155 |
| 156 template<typename T, size_t n> void AddResult( | 156 template<typename T> void AddResult(const T* test_results, size_t length); |
| 157 const T (&test_results)[n], | |
| 158 size_t length); | |
| 159 | 157 |
| 160 void AddResult(const NetEqNetworkStatistics& stats); | 158 void AddResult(const NetEqNetworkStatistics& stats); |
| 161 void AddResult(const RtcpStatistics& stats); | 159 void AddResult(const RtcpStatistics& stats); |
| 162 | 160 |
| 163 void VerifyChecksum(const std::string& ref_check_sum); | 161 void VerifyChecksum(const std::string& ref_check_sum); |
| 164 | 162 |
| 165 private: | 163 private: |
| 166 FILE* output_fp_; | 164 FILE* output_fp_; |
| 167 std::unique_ptr<rtc::MessageDigest> digest_; | 165 std::unique_ptr<rtc::MessageDigest> digest_; |
| 168 }; | 166 }; |
| 169 | 167 |
| 170 ResultSink::ResultSink(const std::string &output_file) | 168 ResultSink::ResultSink(const std::string &output_file) |
| 171 : output_fp_(nullptr), | 169 : output_fp_(nullptr), |
| 172 digest_(new rtc::Sha1Digest()) { | 170 digest_(new rtc::Sha1Digest()) { |
| 173 if (!output_file.empty()) { | 171 if (!output_file.empty()) { |
| 174 output_fp_ = fopen(output_file.c_str(), "wb"); | 172 output_fp_ = fopen(output_file.c_str(), "wb"); |
| 175 EXPECT_TRUE(output_fp_ != NULL); | 173 EXPECT_TRUE(output_fp_ != NULL); |
| 176 } | 174 } |
| 177 } | 175 } |
| 178 | 176 |
| 179 ResultSink::~ResultSink() { | 177 ResultSink::~ResultSink() { |
| 180 if (output_fp_) | 178 if (output_fp_) |
| 181 fclose(output_fp_); | 179 fclose(output_fp_); |
| 182 } | 180 } |
| 183 | 181 |
| 184 template<typename T, size_t n> | 182 template<typename T> |
| 185 void ResultSink::AddResult(const T (&test_results)[n], size_t length) { | 183 void ResultSink::AddResult(const T* test_results, size_t length) { |
| 186 if (output_fp_) { | 184 if (output_fp_) { |
| 187 ASSERT_EQ(length, fwrite(&test_results, sizeof(T), length, output_fp_)); | 185 ASSERT_EQ(length, fwrite(test_results, sizeof(T), length, output_fp_)); |
| 188 } | 186 } |
| 189 digest_->Update(&test_results, sizeof(T) * length); | 187 digest_->Update(test_results, sizeof(T) * length); |
| 190 } | 188 } |
| 191 | 189 |
| 192 void ResultSink::AddResult(const NetEqNetworkStatistics& stats_raw) { | 190 void ResultSink::AddResult(const NetEqNetworkStatistics& stats_raw) { |
| 193 #ifdef WEBRTC_NETEQ_UNITTEST_BITEXACT | 191 #ifdef WEBRTC_NETEQ_UNITTEST_BITEXACT |
| 194 neteq_unittest::NetEqNetworkStatistics stats; | 192 neteq_unittest::NetEqNetworkStatistics stats; |
| 195 Convert(stats_raw, &stats); | 193 Convert(stats_raw, &stats); |
| 196 | 194 |
| 197 std::string stats_string; | 195 std::string stats_string; |
| 198 ASSERT_TRUE(stats.SerializeToString(&stats_string)); | 196 ASSERT_TRUE(stats.SerializeToString(&stats_string)); |
| 199 AddMessage(output_fp_, digest_.get(), stats_string); | 197 AddMessage(output_fp_, digest_.get(), stats_string); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 ResultSink rtcp_stats(rtcp_out_file); | 368 ResultSink rtcp_stats(rtcp_out_file); |
| 371 | 369 |
| 372 packet_ = rtp_source_->NextPacket(); | 370 packet_ = rtp_source_->NextPacket(); |
| 373 int i = 0; | 371 int i = 0; |
| 374 while (packet_) { | 372 while (packet_) { |
| 375 std::ostringstream ss; | 373 std::ostringstream ss; |
| 376 ss << "Lap number " << i++ << " in DecodeAndCompare while loop"; | 374 ss << "Lap number " << i++ << " in DecodeAndCompare while loop"; |
| 377 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. | 375 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. |
| 378 ASSERT_NO_FATAL_FAILURE(Process()); | 376 ASSERT_NO_FATAL_FAILURE(Process()); |
| 379 ASSERT_NO_FATAL_FAILURE(output.AddResult( | 377 ASSERT_NO_FATAL_FAILURE(output.AddResult( |
| 380 out_frame_.data_, out_frame_.samples_per_channel_)); | 378 out_frame_.data(), out_frame_.samples_per_channel_)); |
| 381 | 379 |
| 382 // Query the network statistics API once per second | 380 // Query the network statistics API once per second |
| 383 if (sim_clock_ % 1000 == 0) { | 381 if (sim_clock_ % 1000 == 0) { |
| 384 // Process NetworkStatistics. | 382 // Process NetworkStatistics. |
| 385 NetEqNetworkStatistics current_network_stats; | 383 NetEqNetworkStatistics current_network_stats; |
| 386 ASSERT_EQ(0, neteq_->NetworkStatistics(¤t_network_stats)); | 384 ASSERT_EQ(0, neteq_->NetworkStatistics(¤t_network_stats)); |
| 387 ASSERT_NO_FATAL_FAILURE(network_stats.AddResult(current_network_stats)); | 385 ASSERT_NO_FATAL_FAILURE(network_stats.AddResult(current_network_stats)); |
| 388 | 386 |
| 389 // Compare with CurrentDelay, which should be identical. | 387 // Compare with CurrentDelay, which should be identical. |
| 390 EXPECT_EQ(current_network_stats.current_buffer_size_ms, | 388 EXPECT_EQ(current_network_stats.current_buffer_size_ms, |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 | 841 |
| 844 TEST_F(NetEqDecodingTest, MAYBE_DecoderError) { | 842 TEST_F(NetEqDecodingTest, MAYBE_DecoderError) { |
| 845 const size_t kPayloadBytes = 100; | 843 const size_t kPayloadBytes = 100; |
| 846 uint8_t payload[kPayloadBytes] = {0}; | 844 uint8_t payload[kPayloadBytes] = {0}; |
| 847 WebRtcRTPHeader rtp_info; | 845 WebRtcRTPHeader rtp_info; |
| 848 PopulateRtpInfo(0, 0, &rtp_info); | 846 PopulateRtpInfo(0, 0, &rtp_info); |
| 849 rtp_info.header.payloadType = 103; // iSAC, but the payload is invalid. | 847 rtp_info.header.payloadType = 103; // iSAC, but the payload is invalid. |
| 850 EXPECT_EQ(0, neteq_->InsertPacket(rtp_info, payload, 0)); | 848 EXPECT_EQ(0, neteq_->InsertPacket(rtp_info, payload, 0)); |
| 851 // Set all of |out_data_| to 1, and verify that it was set to 0 by the call | 849 // Set all of |out_data_| to 1, and verify that it was set to 0 by the call |
| 852 // to GetAudio. | 850 // to GetAudio. |
| 851 int16_t* out_frame_data = out_frame_.mutable_data(); |
| 853 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; ++i) { | 852 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; ++i) { |
| 854 out_frame_.data_[i] = 1; | 853 out_frame_data[i] = 1; |
| 855 } | 854 } |
| 856 bool muted; | 855 bool muted; |
| 857 EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&out_frame_, &muted)); | 856 EXPECT_EQ(NetEq::kFail, neteq_->GetAudio(&out_frame_, &muted)); |
| 858 ASSERT_FALSE(muted); | 857 ASSERT_FALSE(muted); |
| 859 // Verify that there is a decoder error to check. | 858 // Verify that there is a decoder error to check. |
| 860 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); | 859 EXPECT_EQ(NetEq::kDecoderErrorCode, neteq_->LastError()); |
| 861 | 860 |
| 862 enum NetEqDecoderError { | 861 enum NetEqDecoderError { |
| 863 ISAC_LENGTH_MISMATCH = 6730, | 862 ISAC_LENGTH_MISMATCH = 6730, |
| 864 ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH = 6640 | 863 ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH = 6640 |
| 865 }; | 864 }; |
| 866 #if defined(WEBRTC_CODEC_ISAC) | 865 #if defined(WEBRTC_CODEC_ISAC) |
| 867 EXPECT_EQ(ISAC_LENGTH_MISMATCH, neteq_->LastDecoderError()); | 866 EXPECT_EQ(ISAC_LENGTH_MISMATCH, neteq_->LastDecoderError()); |
| 868 #elif defined(WEBRTC_CODEC_ISACFX) | 867 #elif defined(WEBRTC_CODEC_ISACFX) |
| 869 EXPECT_EQ(ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH, neteq_->LastDecoderError()); | 868 EXPECT_EQ(ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH, neteq_->LastDecoderError()); |
| 870 #endif | 869 #endif |
| 871 // Verify that the first 160 samples are set to 0, and that the remaining | 870 // Verify that the first 160 samples are set to 0. |
| 872 // samples are left unmodified. | |
| 873 static const int kExpectedOutputLength = 160; // 10 ms at 16 kHz sample rate. | 871 static const int kExpectedOutputLength = 160; // 10 ms at 16 kHz sample rate. |
| 872 const int16_t* const_out_frame_data = out_frame_.data(); |
| 874 for (int i = 0; i < kExpectedOutputLength; ++i) { | 873 for (int i = 0; i < kExpectedOutputLength; ++i) { |
| 875 std::ostringstream ss; | 874 std::ostringstream ss; |
| 876 ss << "i = " << i; | 875 ss << "i = " << i; |
| 877 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. | 876 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. |
| 878 EXPECT_EQ(0, out_frame_.data_[i]); | 877 EXPECT_EQ(0, const_out_frame_data[i]); |
| 879 } | |
| 880 for (size_t i = kExpectedOutputLength; i < AudioFrame::kMaxDataSizeSamples; | |
| 881 ++i) { | |
| 882 std::ostringstream ss; | |
| 883 ss << "i = " << i; | |
| 884 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. | |
| 885 EXPECT_EQ(1, out_frame_.data_[i]); | |
| 886 } | 878 } |
| 887 } | 879 } |
| 888 | 880 |
| 889 TEST_F(NetEqDecodingTest, GetAudioBeforeInsertPacket) { | 881 TEST_F(NetEqDecodingTest, GetAudioBeforeInsertPacket) { |
| 890 // Set all of |out_data_| to 1, and verify that it was set to 0 by the call | 882 // Set all of |out_data_| to 1, and verify that it was set to 0 by the call |
| 891 // to GetAudio. | 883 // to GetAudio. |
| 884 int16_t* out_frame_data = out_frame_.mutable_data(); |
| 892 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; ++i) { | 885 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; ++i) { |
| 893 out_frame_.data_[i] = 1; | 886 out_frame_data[i] = 1; |
| 894 } | 887 } |
| 895 bool muted; | 888 bool muted; |
| 896 EXPECT_EQ(0, neteq_->GetAudio(&out_frame_, &muted)); | 889 EXPECT_EQ(0, neteq_->GetAudio(&out_frame_, &muted)); |
| 897 ASSERT_FALSE(muted); | 890 ASSERT_FALSE(muted); |
| 898 // Verify that the first block of samples is set to 0. | 891 // Verify that the first block of samples is set to 0. |
| 899 static const int kExpectedOutputLength = | 892 static const int kExpectedOutputLength = |
| 900 kInitSampleRateHz / 100; // 10 ms at initial sample rate. | 893 kInitSampleRateHz / 100; // 10 ms at initial sample rate. |
| 894 const int16_t* const_out_frame_data = out_frame_.data(); |
| 901 for (int i = 0; i < kExpectedOutputLength; ++i) { | 895 for (int i = 0; i < kExpectedOutputLength; ++i) { |
| 902 std::ostringstream ss; | 896 std::ostringstream ss; |
| 903 ss << "i = " << i; | 897 ss << "i = " << i; |
| 904 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. | 898 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. |
| 905 EXPECT_EQ(0, out_frame_.data_[i]); | 899 EXPECT_EQ(0, const_out_frame_data[i]); |
| 906 } | 900 } |
| 907 // Verify that the sample rate did not change from the initial configuration. | 901 // Verify that the sample rate did not change from the initial configuration. |
| 908 EXPECT_EQ(config_.sample_rate_hz, neteq_->last_output_sample_rate_hz()); | 902 EXPECT_EQ(config_.sample_rate_hz, neteq_->last_output_sample_rate_hz()); |
| 909 } | 903 } |
| 910 | 904 |
| 911 class NetEqBgnTest : public NetEqDecodingTest { | 905 class NetEqBgnTest : public NetEqDecodingTest { |
| 912 protected: | 906 protected: |
| 913 virtual void TestCondition(double sum_squared_noise, | 907 virtual void TestCondition(double sum_squared_noise, |
| 914 bool should_be_faded) = 0; | 908 bool should_be_faded) = 0; |
| 915 | 909 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 981 // To be able to test the fading of background noise we need at lease to | 975 // To be able to test the fading of background noise we need at lease to |
| 982 // pull 611 frames. | 976 // pull 611 frames. |
| 983 const int kFadingThreshold = 611; | 977 const int kFadingThreshold = 611; |
| 984 | 978 |
| 985 // Test several CNG-to-PLC packet for the expected behavior. The number 20 | 979 // Test several CNG-to-PLC packet for the expected behavior. The number 20 |
| 986 // is arbitrary, but sufficiently large to test enough number of frames. | 980 // is arbitrary, but sufficiently large to test enough number of frames. |
| 987 const int kNumPlcToCngTestFrames = 20; | 981 const int kNumPlcToCngTestFrames = 20; |
| 988 bool plc_to_cng = false; | 982 bool plc_to_cng = false; |
| 989 for (int n = 0; n < kFadingThreshold + kNumPlcToCngTestFrames; ++n) { | 983 for (int n = 0; n < kFadingThreshold + kNumPlcToCngTestFrames; ++n) { |
| 990 output.Reset(); | 984 output.Reset(); |
| 991 memset(output.data_, 1, sizeof(output.data_)); // Set to non-zero. | 985 // Set to non-zero. |
| 986 memset(output.mutable_data(), 1, AudioFrame::kMaxDataSizeBytes); |
| 992 ASSERT_EQ(0, neteq_->GetAudio(&output, &muted)); | 987 ASSERT_EQ(0, neteq_->GetAudio(&output, &muted)); |
| 993 ASSERT_FALSE(muted); | 988 ASSERT_FALSE(muted); |
| 994 ASSERT_EQ(1u, output.num_channels_); | 989 ASSERT_EQ(1u, output.num_channels_); |
| 995 ASSERT_EQ(expected_samples_per_channel, output.samples_per_channel_); | 990 ASSERT_EQ(expected_samples_per_channel, output.samples_per_channel_); |
| 996 if (output.speech_type_ == AudioFrame::kPLCCNG) { | 991 if (output.speech_type_ == AudioFrame::kPLCCNG) { |
| 997 plc_to_cng = true; | 992 plc_to_cng = true; |
| 998 double sum_squared = 0; | 993 double sum_squared = 0; |
| 994 const int16_t* output_data = output.data(); |
| 999 for (size_t k = 0; | 995 for (size_t k = 0; |
| 1000 k < output.num_channels_ * output.samples_per_channel_; ++k) | 996 k < output.num_channels_ * output.samples_per_channel_; ++k) |
| 1001 sum_squared += output.data_[k] * output.data_[k]; | 997 sum_squared += output_data[k] * output_data[k]; |
| 1002 TestCondition(sum_squared, n > kFadingThreshold); | 998 TestCondition(sum_squared, n > kFadingThreshold); |
| 1003 } else { | 999 } else { |
| 1004 EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); | 1000 EXPECT_EQ(AudioFrame::kPLC, output.speech_type_); |
| 1005 } | 1001 } |
| 1006 } | 1002 } |
| 1007 EXPECT_TRUE(plc_to_cng); // Just to be sure that PLC-to-CNG has occurred. | 1003 EXPECT_TRUE(plc_to_cng); // Just to be sure that PLC-to-CNG has occurred. |
| 1008 } | 1004 } |
| 1009 }; | 1005 }; |
| 1010 | 1006 |
| 1011 class NetEqBgnTestOn : public NetEqBgnTest { | 1007 class NetEqBgnTestOn : public NetEqBgnTest { |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1350 // Insert one speech packet. | 1346 // Insert one speech packet. |
| 1351 InsertPacket(0); | 1347 InsertPacket(0); |
| 1352 // Pull out audio once and expect it not to be muted. | 1348 // Pull out audio once and expect it not to be muted. |
| 1353 EXPECT_FALSE(GetAudioReturnMuted()); | 1349 EXPECT_FALSE(GetAudioReturnMuted()); |
| 1354 // Pull data until faded out. | 1350 // Pull data until faded out. |
| 1355 GetAudioUntilMuted(); | 1351 GetAudioUntilMuted(); |
| 1356 | 1352 |
| 1357 // Verify that output audio is not written during muted mode. Other parameters | 1353 // Verify that output audio is not written during muted mode. Other parameters |
| 1358 // should be correct, though. | 1354 // should be correct, though. |
| 1359 AudioFrame new_frame; | 1355 AudioFrame new_frame; |
| 1360 for (auto& d : new_frame.data_) { | 1356 int16_t* frame_data = new_frame.mutable_data(); |
| 1361 d = 17; | 1357 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; i++) { |
| 1358 frame_data[i] = 17; |
| 1362 } | 1359 } |
| 1363 bool muted; | 1360 bool muted; |
| 1364 EXPECT_EQ(0, neteq_->GetAudio(&new_frame, &muted)); | 1361 EXPECT_EQ(0, neteq_->GetAudio(&new_frame, &muted)); |
| 1365 EXPECT_TRUE(muted); | 1362 EXPECT_TRUE(muted); |
| 1366 for (auto d : new_frame.data_) { | 1363 for (size_t i = 0; i < AudioFrame::kMaxDataSizeSamples; i++) { |
| 1367 EXPECT_EQ(17, d); | 1364 EXPECT_EQ(17, frame_data[i]); |
| 1368 } | 1365 } |
| 1369 EXPECT_EQ(out_frame_.timestamp_ + out_frame_.samples_per_channel_, | 1366 EXPECT_EQ(out_frame_.timestamp_ + out_frame_.samples_per_channel_, |
| 1370 new_frame.timestamp_); | 1367 new_frame.timestamp_); |
| 1371 EXPECT_EQ(out_frame_.samples_per_channel_, new_frame.samples_per_channel_); | 1368 EXPECT_EQ(out_frame_.samples_per_channel_, new_frame.samples_per_channel_); |
| 1372 EXPECT_EQ(out_frame_.sample_rate_hz_, new_frame.sample_rate_hz_); | 1369 EXPECT_EQ(out_frame_.sample_rate_hz_, new_frame.sample_rate_hz_); |
| 1373 EXPECT_EQ(out_frame_.num_channels_, new_frame.num_channels_); | 1370 EXPECT_EQ(out_frame_.num_channels_, new_frame.num_channels_); |
| 1374 EXPECT_EQ(out_frame_.speech_type_, new_frame.speech_type_); | 1371 EXPECT_EQ(out_frame_.speech_type_, new_frame.speech_type_); |
| 1375 EXPECT_EQ(out_frame_.vad_activity_, new_frame.vad_activity_); | 1372 EXPECT_EQ(out_frame_.vad_activity_, new_frame.vad_activity_); |
| 1376 | 1373 |
| 1377 // Insert new data. Timestamp is corrected for the time elapsed since the last | 1374 // Insert new data. Timestamp is corrected for the time elapsed since the last |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1516 << " != " << b.vad_activity_ << ")"; | 1513 << " != " << b.vad_activity_ << ")"; |
| 1517 return ::testing::AssertionSuccess(); | 1514 return ::testing::AssertionSuccess(); |
| 1518 } | 1515 } |
| 1519 | 1516 |
| 1520 ::testing::AssertionResult AudioFramesEqual(const AudioFrame& a, | 1517 ::testing::AssertionResult AudioFramesEqual(const AudioFrame& a, |
| 1521 const AudioFrame& b) { | 1518 const AudioFrame& b) { |
| 1522 ::testing::AssertionResult res = AudioFramesEqualExceptData(a, b); | 1519 ::testing::AssertionResult res = AudioFramesEqualExceptData(a, b); |
| 1523 if (!res) | 1520 if (!res) |
| 1524 return res; | 1521 return res; |
| 1525 if (memcmp( | 1522 if (memcmp( |
| 1526 a.data_, b.data_, | 1523 a.data(), b.data(), |
| 1527 a.samples_per_channel_ * a.num_channels_ * sizeof(a.data_[0])) != 0) { | 1524 a.samples_per_channel_ * a.num_channels_ * sizeof(*a.data())) != 0) { |
| 1528 return ::testing::AssertionFailure() << "data_ diff"; | 1525 return ::testing::AssertionFailure() << "data_ diff"; |
| 1529 } | 1526 } |
| 1530 return ::testing::AssertionSuccess(); | 1527 return ::testing::AssertionSuccess(); |
| 1531 } | 1528 } |
| 1532 | 1529 |
| 1533 } // namespace | 1530 } // namespace |
| 1534 | 1531 |
| 1535 TEST_F(NetEqDecodingTestTwoInstances, CompareMutedStateOnOff) { | 1532 TEST_F(NetEqDecodingTestTwoInstances, CompareMutedStateOnOff) { |
| 1536 ASSERT_FALSE(config_.enable_muted_state); | 1533 ASSERT_FALSE(config_.enable_muted_state); |
| 1537 config2_.enable_muted_state = true; | 1534 config2_.enable_muted_state = true; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1581 if (muted) { | 1578 if (muted) { |
| 1582 EXPECT_TRUE(AudioFramesEqualExceptData(out_frame1, out_frame2)); | 1579 EXPECT_TRUE(AudioFramesEqualExceptData(out_frame1, out_frame2)); |
| 1583 } else { | 1580 } else { |
| 1584 EXPECT_TRUE(AudioFramesEqual(out_frame1, out_frame2)); | 1581 EXPECT_TRUE(AudioFramesEqual(out_frame1, out_frame2)); |
| 1585 } | 1582 } |
| 1586 } | 1583 } |
| 1587 EXPECT_FALSE(muted); | 1584 EXPECT_FALSE(muted); |
| 1588 } | 1585 } |
| 1589 | 1586 |
| 1590 } // namespace webrtc | 1587 } // namespace webrtc |
| OLD | NEW |