| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "webrtc/voice_engine/channel_proxy.h" |
| #include "webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.h" |
| #include "webrtc/voice_engine/voice_engine_impl.h" |
| |
| class CodecBeforeStreamingTest : public AfterInitializationFixture { |
| protected: |
| void SetUp() { |
| memset(&codec_instance_, 0, sizeof(codec_instance_)); |
| codec_instance_.channels = 1; |
| codec_instance_.plfreq = 16000; |
| codec_instance_.pacsize = 480; |
| |
| channel_ = voe_base_->CreateChannel(); |
| static_cast<webrtc::VoiceEngineImpl*>(voice_engine_) |
| ->GetChannelProxy(channel_) |
| ->RegisterLegacyReceiveCodecs(); |
| } |
| |
| void TearDown() { |
| voe_base_->DeleteChannel(channel_); |
| } |
| |
| webrtc::CodecInst codec_instance_; |
| int channel_; |
| }; |
| |
| // TODO(phoglund): add test which verifies default pltypes for various codecs. |
| |
| TEST_F(CodecBeforeStreamingTest, GetRecPayloadTypeFailsForInvalidCodecName) { |
| strcpy(codec_instance_.plname, "SomeInvalidCodecName"); |
| |
| // Should fail since the codec name is invalid. |
| EXPECT_NE(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| } |
| |
| TEST_F(CodecBeforeStreamingTest, GetRecPayloadTypeRecognizesISAC) { |
| strcpy(codec_instance_.plname, "iSAC"); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| strcpy(codec_instance_.plname, "ISAC"); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| } |
| |
| TEST_F(CodecBeforeStreamingTest, SetRecPayloadTypeCanChangeISACPayloadType) { |
| strcpy(codec_instance_.plname, "ISAC"); |
| codec_instance_.rate = 32000; |
| |
| codec_instance_.pltype = 123; |
| EXPECT_EQ(0, voe_codec_->SetRecPayloadType(channel_, codec_instance_)); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| EXPECT_EQ(123, codec_instance_.pltype); |
| |
| codec_instance_.pltype = 104; |
| EXPECT_EQ(0, voe_codec_->SetRecPayloadType(channel_, codec_instance_)); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| |
| EXPECT_EQ(104, codec_instance_.pltype); |
| } |
| |
| TEST_F(CodecBeforeStreamingTest, SetRecPayloadTypeCanChangeILBCPayloadType) { |
| strcpy(codec_instance_.plname, "iLBC"); |
| codec_instance_.plfreq = 8000; |
| codec_instance_.pacsize = 240; |
| codec_instance_.rate = 13300; |
| |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| int original_pltype = codec_instance_.pltype; |
| codec_instance_.pltype = 123; |
| EXPECT_EQ(0, voe_codec_->SetRecPayloadType(channel_, codec_instance_)); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| |
| EXPECT_EQ(123, codec_instance_.pltype); |
| |
| codec_instance_.pltype = original_pltype; |
| EXPECT_EQ(0, voe_codec_->SetRecPayloadType(channel_, codec_instance_)); |
| EXPECT_EQ(0, voe_codec_->GetRecPayloadType(channel_, codec_instance_)); |
| |
| EXPECT_EQ(original_pltype, codec_instance_.pltype); |
| } |