From a613eb6bff33b62fef0589b2e4e587380ae23411 Mon Sep 17 00:00:00 2001 From: minyue Date: Tue, 14 Mar 2017 14:33:30 -0700 Subject: [PATCH] Fixing a few tests for the upcoming Opus 1.2-alpha. BUG=b/35415318 NOTRY=True Review-Url: https://codereview.webrtc.org/2746763005 Cr-Commit-Position: refs/heads/master@{#17234} --- .../acm2/audio_coding_module_unittest.cc | 52 ++++++++++++++++--- .../audio_coding/codecs/opus/opus_unittest.cc | 18 +++++-- .../audio_coding/neteq/neteq_unittest.cc | 3 +- 3 files changed, 61 insertions(+), 12 deletions(-) diff --git a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest.cc index 73cc8a3a1d..9d119b45c8 100644 --- a/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest.cc +++ b/webrtc/modules/audio_coding/acm2/audio_coding_module_unittest.cc @@ -1457,7 +1457,12 @@ TEST_F(AcmSenderBitExactnessOldApi, MAYBE_G722_stereo_20ms) { } #endif -TEST_F(AcmSenderBitExactnessOldApi, Opus_stereo_20ms) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_stereo_20ms DISABLED_Opus_stereo_20ms +#else +#define MAYBE_Opus_stereo_20ms Opus_stereo_20ms +#endif +TEST_F(AcmSenderBitExactnessOldApi, MAYBE_Opus_stereo_20ms) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 2, 120, 960, 960)); Run(AcmReceiverBitExactnessOldApi::PlatformChecksum( "855041f2490b887302bce9d544731849", @@ -1472,7 +1477,12 @@ TEST_F(AcmSenderBitExactnessOldApi, Opus_stereo_20ms) { 50, test::AcmReceiveTestOldApi::kStereoOutput); } -TEST_F(AcmSenderBitExactnessOldApi, Opus_stereo_20ms_voip) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_stereo_20ms_voip DISABLED_Opus_stereo_20ms_voip +#else +#define MAYBE_Opus_stereo_20ms_voip Opus_stereo_20ms_voip +#endif +TEST_F(AcmSenderBitExactnessOldApi, MAYBE_Opus_stereo_20ms_voip) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 2, 120, 960, 960)); // If not set, default will be kAudio in case of stereo. EXPECT_EQ(0, send_test_->acm()->SetOpusApplication(kVoip)); @@ -1550,7 +1560,12 @@ class AcmSetBitRateOldApi : public ::testing::Test { std::unique_ptr audio_source_; }; -TEST_F(AcmSetBitRateOldApi, Opus_48khz_20ms_10kbps) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_48khz_20ms_10kbps DISABLED_Opus_48khz_20ms_10kbps +#else +#define MAYBE_Opus_48khz_20ms_10kbps Opus_48khz_20ms_10kbps +#endif +TEST_F(AcmSetBitRateOldApi, MAYBE_Opus_48khz_20ms_10kbps) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 1, 107, 960, 960)); #if defined(WEBRTC_ANDROID) Run(10000, 9288); @@ -1559,7 +1574,12 @@ TEST_F(AcmSetBitRateOldApi, Opus_48khz_20ms_10kbps) { #endif // WEBRTC_ANDROID } -TEST_F(AcmSetBitRateOldApi, Opus_48khz_20ms_50kbps) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_48khz_20ms_50kbps DISABLED_Opus_48khz_20ms_50kbps +#else +#define MAYBE_Opus_48khz_20ms_50kbps Opus_48khz_20ms_50kbps +#endif +TEST_F(AcmSetBitRateOldApi, MAYBE_Opus_48khz_20ms_50kbps) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 1, 107, 960, 960)); #if defined(WEBRTC_ANDROID) Run(50000, 47960); @@ -1570,7 +1590,7 @@ TEST_F(AcmSetBitRateOldApi, Opus_48khz_20ms_50kbps) { // The result on the Android platforms is inconsistent for this test case. // On android_rel the result is different from android and android arm64 rel. -#if defined(WEBRTC_ANDROID) +#if defined(WEBRTC_ANDROID) || WEBRTC_OPUS_SUPPORT_120MS_PTIME #define MAYBE_Opus_48khz_20ms_100kbps DISABLED_Opus_48khz_20ms_100kbps #else #define MAYBE_Opus_48khz_20ms_100kbps Opus_48khz_20ms_100kbps @@ -1641,7 +1661,12 @@ class AcmChangeBitRateOldApi : public AcmSetBitRateOldApi { uint32_t frame_size_samples_; }; -TEST_F(AcmChangeBitRateOldApi, Opus_48khz_20ms_10kbps) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_48khz_20ms_10kbps_2 DISABLED_Opus_48khz_20ms_10kbps +#else +#define MAYBE_Opus_48khz_20ms_10kbps_2 Opus_48khz_20ms_10kbps +#endif +TEST_F(AcmChangeBitRateOldApi, MAYBE_Opus_48khz_20ms_10kbps_2) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 1, 107, 960, 960)); #if defined(WEBRTC_ANDROID) Run(10000, 32200, 5176); @@ -1650,7 +1675,12 @@ TEST_F(AcmChangeBitRateOldApi, Opus_48khz_20ms_10kbps) { #endif // WEBRTC_ANDROID } -TEST_F(AcmChangeBitRateOldApi, Opus_48khz_20ms_50kbps) { +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_48khz_20ms_50kbps_2 DISABLED_Opus_48khz_20ms_50kbps +#else +#define MAYBE_Opus_48khz_20ms_50kbps_2 Opus_48khz_20ms_50kbps +#endif +TEST_F(AcmChangeBitRateOldApi, MAYBE_Opus_48khz_20ms_50kbps_2) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 1, 107, 960, 960)); #if defined(WEBRTC_ANDROID) Run(50000, 32200, 24768); @@ -1659,7 +1689,13 @@ TEST_F(AcmChangeBitRateOldApi, Opus_48khz_20ms_50kbps) { #endif // WEBRTC_ANDROID } -TEST_F(AcmChangeBitRateOldApi, Opus_48khz_20ms_100kbps) { + +#if WEBRTC_OPUS_SUPPORT_120MS_PTIME +#define MAYBE_Opus_48khz_20ms_100kbps_2 DISABLED_Opus_48khz_20ms_100kbps +#else +#define MAYBE_Opus_48khz_20ms_100kbps_2 Opus_48khz_20ms_100kbps +#endif +TEST_F(AcmChangeBitRateOldApi, MAYBE_Opus_48khz_20ms_100kbps_2) { ASSERT_NO_FATAL_FAILURE(SetUpTest("opus", 48000, 1, 107, 960, 960)); #if defined(WEBRTC_ANDROID) #if defined(WEBRTC_ARCH_ARM64) diff --git a/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc b/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc index febea2f869..6b51bf9b67 100644 --- a/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc +++ b/webrtc/modules/audio_coding/codecs/opus/opus_unittest.cc @@ -644,7 +644,7 @@ TEST_P(OpusTest, OpusDurationEstimation) { } TEST_P(OpusTest, OpusDecodeRepacketized) { - const int kPackets = 6; + constexpr size_t kPackets = 6; PrepareSpeechData(channels_, 20, 20 * kPackets); @@ -668,14 +668,26 @@ TEST_P(OpusTest, OpusDecodeRepacketized) { new int16_t[kPackets * kOpus20msFrameSamples * channels_]); OpusRepacketizer* rp = opus_repacketizer_create(); - for (int idx = 0; idx < kPackets; idx++) { + size_t num_packets = 0; + constexpr size_t kMaxCycles = 100; + for (size_t idx = 0; idx < kMaxCycles; ++idx) { auto speech_block = speech_data_.GetNextBlock(); encoded_bytes_ = WebRtcOpus_Encode(opus_encoder_, speech_block.data(), rtc::CheckedDivExact(speech_block.size(), channels_), kMaxBytes, bitstream_); - EXPECT_EQ(OPUS_OK, opus_repacketizer_cat(rp, bitstream_, encoded_bytes_)); + if (opus_repacketizer_cat(rp, bitstream_, encoded_bytes_) == OPUS_OK) { + ++num_packets; + if (num_packets == kPackets) { + break; + } + } else { + // Opus repacketizer cannot guarantee a success. We try again if it fails. + opus_repacketizer_init(rp); + num_packets = 0; + } } + EXPECT_EQ(kPackets, num_packets); encoded_bytes_ = opus_repacketizer_out(rp, bitstream_, kMaxBytes); diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc index 82529f7dfb..c52f2d6aa5 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc @@ -468,7 +468,8 @@ TEST_F(NetEqDecodingTest, MAYBE_TestBitExactness) { #if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID) && \ defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \ - defined(WEBRTC_CODEC_OPUS) + defined(WEBRTC_CODEC_OPUS) && \ + !WEBRTC_OPUS_SUPPORT_120MS_PTIME #define MAYBE_TestOpusBitExactness TestOpusBitExactness #else #define MAYBE_TestOpusBitExactness DISABLED_TestOpusBitExactness