Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc

Issue 1184313002: Add AudioEncoder::GetTargetBitrate (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Getting rid of erroneous code Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
diff --git a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
index 1850807783a9852e0b4b0aa538e95b7441b26ca4..3761c5f714c85bec00e68a6a01e58522330dc448 100644
--- a/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -485,6 +485,19 @@ TEST_F(AudioDecoderPcmUTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+namespace {
+void TestPcmSetTargetBitrates(AudioEncoder* audio_encoder, int fixed_rate) {
+ EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(32000));
+ EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate - 1));
+ EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate));
+ EXPECT_EQ(fixed_rate, audio_encoder->SetTargetBitrate(fixed_rate + 1));
+}
+} // namespace
+
+TEST_F(AudioDecoderPcmUTest, SetTargetBitrate) {
+ TestPcmSetTargetBitrates(audio_encoder_.get(), 64000);
+}
+
TEST_F(AudioDecoderPcmATest, EncodeDecode) {
int tolerance = 308;
double mse = 1931.0;
@@ -494,6 +507,10 @@ TEST_F(AudioDecoderPcmATest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderPcmATest, SetTargetBitrate) {
+ TestPcmSetTargetBitrates(audio_encoder_.get(), 64000);
+}
+
TEST_F(AudioDecoderPcm16BTest, EncodeDecode) {
int tolerance = 0;
double mse = 0.0;
@@ -506,6 +523,10 @@ TEST_F(AudioDecoderPcm16BTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderPcm16BTest, SetTargetBitrate) {
+ TestPcmSetTargetBitrates(audio_encoder_.get(), codec_input_rate_hz_ * 16);
+}
+
TEST_F(AudioDecoderIlbcTest, EncodeDecode) {
int tolerance = 6808;
double mse = 2.13e6;
@@ -517,6 +538,12 @@ TEST_F(AudioDecoderIlbcTest, EncodeDecode) {
DecodePlcTest();
}
+TEST_F(AudioDecoderIlbcTest, SetTargetBitrate) {
+ EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(10000));
+ EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(13333));
+ EXPECT_EQ(13333, audio_encoder_->SetTargetBitrate(20000));
+}
+
TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) {
int tolerance = 3399;
double mse = 434951.0;
@@ -527,6 +554,25 @@ TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+namespace {
+void TestIsacSetTargetBitrates(AudioEncoder* audio_encoder, bool swb) {
+ const int max_rate_bps = (swb ? 56000 : 32000);
+ EXPECT_EQ(10000, audio_encoder->SetTargetBitrate(9000));
+ EXPECT_EQ(10000, audio_encoder->SetTargetBitrate(10000));
+ EXPECT_EQ(32000, audio_encoder->SetTargetBitrate(32000));
+ EXPECT_EQ(std::min(max_rate_bps, 33000),
+ audio_encoder->SetTargetBitrate(33000));
+ EXPECT_EQ(std::min(max_rate_bps, 56000),
+ audio_encoder->SetTargetBitrate(56000));
+ EXPECT_EQ(std::min(max_rate_bps, 56000),
+ audio_encoder->SetTargetBitrate(57000));
+}
+} // namespace
+
+TEST_F(AudioDecoderIsacFloatTest, SetTargetBitrate) {
+ TestIsacSetTargetBitrates(audio_encoder_.get(), false /* swb */);
+}
+
TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) {
int tolerance = 19757;
double mse = 8.18e6;
@@ -537,6 +583,10 @@ TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderIsacSwbTest, SetTargetBitrate) {
+ TestIsacSetTargetBitrates(audio_encoder_.get(), true /* swb */);
+}
+
// Fails Android ARM64. https://code.google.com/p/webrtc/issues/detail?id=4198
#if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM64)
#define MAYBE_EncodeDecode DISABLED_EncodeDecode
@@ -558,6 +608,10 @@ TEST_F(AudioDecoderIsacFixTest, MAYBE_EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderIsacFixTest, SetTargetBitrate) {
+ TestIsacSetTargetBitrates(audio_encoder_.get(), false /* swb */);
+}
+
TEST_F(AudioDecoderG722Test, EncodeDecode) {
int tolerance = 6176;
double mse = 238630.0;
@@ -568,6 +622,21 @@ TEST_F(AudioDecoderG722Test, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+namespace {
+void TestG722SetTargetBitrates(AudioEncoder* audio_encoder, bool stereo) {
+ const int fixed_rate_bps = (stereo ? 128000 : 64000);
+ EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(32000));
+ EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(64000));
+ EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(65000));
+ EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(128000));
+ EXPECT_EQ(fixed_rate_bps, audio_encoder->SetTargetBitrate(129000));
+}
+} // namespace
+
+TEST_F(AudioDecoderG722Test, SetTargetBitrate) {
+ TestG722SetTargetBitrates(audio_encoder_.get(), false /* stereo */);
+}
+
TEST_F(AudioDecoderG722StereoTest, CreateAndDestroy) {
EXPECT_TRUE(CodecSupported(kDecoderG722_2ch));
}
@@ -583,6 +652,10 @@ TEST_F(AudioDecoderG722StereoTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderG722StereoTest, SetTargetBitrate) {
+ TestG722SetTargetBitrates(audio_encoder_.get(), true /* stereo */);
+}
+
TEST_F(AudioDecoderOpusTest, EncodeDecode) {
int tolerance = 6176;
double mse = 238630.0;
@@ -593,6 +666,20 @@ TEST_F(AudioDecoderOpusTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+namespace {
+void TestOpusSetTargetBitrates(AudioEncoder* audio_encoder) {
+ EXPECT_EQ(500, audio_encoder->SetTargetBitrate(499));
+ EXPECT_EQ(500, audio_encoder->SetTargetBitrate(500));
+ EXPECT_EQ(32000, audio_encoder->SetTargetBitrate(32000));
+ EXPECT_EQ(512000, audio_encoder->SetTargetBitrate(512000));
+ EXPECT_EQ(512000, audio_encoder->SetTargetBitrate(513000));
+}
+} // namespace
+
+TEST_F(AudioDecoderOpusTest, SetTargetBitrate) {
+ TestOpusSetTargetBitrates(audio_encoder_.get());
+}
+
TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) {
int tolerance = 6176;
int channel_diff_tolerance = 0;
@@ -604,6 +691,10 @@ TEST_F(AudioDecoderOpusStereoTest, EncodeDecode) {
EXPECT_FALSE(decoder_->HasDecodePlc());
}
+TEST_F(AudioDecoderOpusStereoTest, SetTargetBitrate) {
+ TestOpusSetTargetBitrates(audio_encoder_.get());
+}
+
TEST(AudioDecoder, CodecSampleRateHz) {
EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMu));
EXPECT_EQ(8000, CodecSampleRateHz(kDecoderPCMa));

Powered by Google App Engine
This is Rietveld 408576698