| Index: webrtc/voice_engine/voe_codec_unittest.cc
|
| diff --git a/webrtc/voice_engine/voe_codec_unittest.cc b/webrtc/voice_engine/voe_codec_unittest.cc
|
| index 73e576bf51db50c10cfb0d794142aa79f3bf90e9..c056ba07e36cf6fd63719dacbace569b033c50ea 100644
|
| --- a/webrtc/voice_engine/voe_codec_unittest.cc
|
| +++ b/webrtc/voice_engine/voe_codec_unittest.cc
|
| @@ -22,85 +22,6 @@ namespace webrtc {
|
| namespace voe {
|
| namespace {
|
|
|
| -class VoECodecTest : public ::testing::Test {
|
| - protected:
|
| - VoECodecTest()
|
| - : voe_(VoiceEngine::Create()),
|
| - base_(VoEBase::GetInterface(voe_)),
|
| - voe_codec_(VoECodec::GetInterface(voe_)),
|
| - channel_(-1),
|
| - adm_(new FakeAudioDeviceModule),
|
| - red_payload_type_(-1) {}
|
| -
|
| - ~VoECodecTest() {}
|
| -
|
| - void TearDown() {
|
| - base_->DeleteChannel(channel_);
|
| - base_->Terminate();
|
| - base_->Release();
|
| - voe_codec_->Release();
|
| - VoiceEngine::Delete(voe_);
|
| - }
|
| -
|
| - void SetUp() {
|
| - // Check if all components are valid.
|
| - ASSERT_TRUE(voe_ != NULL);
|
| - ASSERT_TRUE(base_ != NULL);
|
| - ASSERT_TRUE(voe_codec_ != NULL);
|
| - ASSERT_TRUE(adm_.get() != NULL);
|
| - ASSERT_EQ(0, base_->Init(adm_.get()));
|
| - channel_ = base_->CreateChannel();
|
| - ASSERT_NE(-1, channel_);
|
| -
|
| - CodecInst my_codec;
|
| -
|
| - bool primary_found = false;
|
| - bool valid_secondary_found = false;
|
| - bool invalid_secondary_found = false;
|
| -
|
| - // Find primary and secondary codecs.
|
| - int num_codecs = voe_codec_->NumOfCodecs();
|
| - int n = 0;
|
| - while (n < num_codecs &&
|
| - (!primary_found || !valid_secondary_found ||
|
| - !invalid_secondary_found || red_payload_type_ < 0)) {
|
| - EXPECT_EQ(0, voe_codec_->GetCodec(n, my_codec));
|
| - if (!STR_CASE_CMP(my_codec.plname, "isac") && my_codec.plfreq == 16000) {
|
| - memcpy(&valid_secondary_, &my_codec, sizeof(my_codec));
|
| - valid_secondary_found = true;
|
| - } else if (!STR_CASE_CMP(my_codec.plname, "isac") &&
|
| - my_codec.plfreq == 32000) {
|
| - memcpy(&invalid_secondary_, &my_codec, sizeof(my_codec));
|
| - invalid_secondary_found = true;
|
| - } else if (!STR_CASE_CMP(my_codec.plname, "L16") &&
|
| - my_codec.plfreq == 16000) {
|
| - memcpy(&primary_, &my_codec, sizeof(my_codec));
|
| - primary_found = true;
|
| - } else if (!STR_CASE_CMP(my_codec.plname, "RED")) {
|
| - red_payload_type_ = my_codec.pltype;
|
| - }
|
| - n++;
|
| - }
|
| -
|
| - EXPECT_TRUE(primary_found);
|
| - EXPECT_TRUE(valid_secondary_found);
|
| - EXPECT_TRUE(invalid_secondary_found);
|
| - EXPECT_NE(-1, red_payload_type_);
|
| - }
|
| -
|
| - VoiceEngine* voe_;
|
| - VoEBase* base_;
|
| - VoECodec* voe_codec_;
|
| - int channel_;
|
| - CodecInst primary_;
|
| - CodecInst valid_secondary_;
|
| - std::unique_ptr<FakeAudioDeviceModule> adm_;
|
| -
|
| - // A codec which is not valid to be registered as secondary codec.
|
| - CodecInst invalid_secondary_;
|
| - int red_payload_type_;
|
| -};
|
| -
|
| TEST(VoECodecInst, TestCompareCodecInstances) {
|
| CodecInst codec1, codec2;
|
| memset(&codec1, 0, sizeof(CodecInst));
|
| @@ -151,6 +72,36 @@ TEST(VoECodecInst, TestCompareCodecInstances) {
|
| EXPECT_FALSE(codec1 == codec2);
|
| }
|
|
|
| +// This is a regression test for
|
| +// https://bugs.chromium.org/p/webrtc/issues/detail?id=6020
|
| +// The Opus DTX setting was being forgotten after unrelated VoE calls.
|
| +TEST(VoECodecInst, RememberOpusDtxAfterSettingChange) {
|
| + VoiceEngine* voe(VoiceEngine::Create());
|
| + VoEBase* base(VoEBase::GetInterface(voe));
|
| + VoECodec* voe_codec(VoECodec::GetInterface(voe));
|
| + std::unique_ptr<FakeAudioDeviceModule> adm(new FakeAudioDeviceModule);
|
| +
|
| + base->Init(adm.get());
|
| +
|
| + CodecInst codec = {111, "opus", 48000, 960, 1, 32000};
|
| +
|
| + int channel = base->CreateChannel();
|
| +
|
| + bool DTX = false;
|
| +
|
| + EXPECT_EQ(0, voe_codec->SetSendCodec(channel, codec));
|
| + EXPECT_EQ(0, voe_codec->SetOpusDtx(channel, true));
|
| + EXPECT_EQ(0, voe_codec->SetFECStatus(channel, true));
|
| + EXPECT_EQ(0, voe_codec->GetOpusDtxStatus(channel, &DTX));
|
| + EXPECT_TRUE(DTX);
|
| +
|
| + base->DeleteChannel(channel);
|
| + base->Terminate();
|
| + base->Release();
|
| + voe_codec->Release();
|
| + VoiceEngine::Delete(voe);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace voe
|
| } // namespace webrtc
|
|
|