blob: abcb2a60a908ead9adfe495b91e012ed3994fd54 [file] [log] [blame]
/*
* Copyright (c) 2014 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/test/auto_test/fixtures/before_streaming_fixture.h"
BeforeStreamingFixture::BeforeStreamingFixture()
: channel_(voe_base_->CreateChannel()),
transport_(NULL) {
EXPECT_GE(channel_, 0);
fake_microphone_input_file_ = resource_manager_.long_audio_file_path();
EXPECT_FALSE(fake_microphone_input_file_.empty());
SetUpLocalPlayback();
RestartFakeMicrophone();
}
BeforeStreamingFixture::~BeforeStreamingFixture() {
voe_file_->StopPlayingFileAsMicrophone(channel_);
PausePlaying();
EXPECT_EQ(0, voe_network_->DeRegisterExternalTransport(channel_));
voe_base_->DeleteChannel(channel_);
delete transport_;
}
void BeforeStreamingFixture::SwitchToManualMicrophone() {
EXPECT_EQ(0, voe_file_->StopPlayingFileAsMicrophone(channel_));
TEST_LOG("You need to speak manually into the microphone for this test.\n");
TEST_LOG("Please start speaking now.\n");
Sleep(1000);
}
void BeforeStreamingFixture::RestartFakeMicrophone() {
EXPECT_EQ(0, voe_file_->StartPlayingFileAsMicrophone(
channel_, fake_microphone_input_file_.c_str(), true, true));
}
void BeforeStreamingFixture::PausePlaying() {
EXPECT_EQ(0, voe_base_->StopSend(channel_));
EXPECT_EQ(0, voe_base_->StopPlayout(channel_));
EXPECT_EQ(0, voe_base_->StopReceive(channel_));
}
void BeforeStreamingFixture::ResumePlaying() {
EXPECT_EQ(0, voe_base_->StartReceive(channel_));
EXPECT_EQ(0, voe_base_->StartPlayout(channel_));
EXPECT_EQ(0, voe_base_->StartSend(channel_));
}
void BeforeStreamingFixture::WaitForTransmittedPackets(int32_t packet_count) {
transport_->WaitForTransmittedPackets(packet_count);
}
void BeforeStreamingFixture::SetUpLocalPlayback() {
transport_ = new LoopBackTransport(voe_network_, channel_);
EXPECT_EQ(0, voe_network_->RegisterExternalTransport(channel_, *transport_));
webrtc::CodecInst codec;
codec.channels = 1;
codec.pacsize = 160;
codec.plfreq = 8000;
codec.pltype = 0;
codec.rate = 64000;
#if defined(_MSC_VER) && defined(_WIN32)
_snprintf(codec.plname, RTP_PAYLOAD_NAME_SIZE - 1, "PCMU");
#else
snprintf(codec.plname, RTP_PAYLOAD_NAME_SIZE, "PCMU");
#endif
voe_codec_->SetSendCodec(channel_, codec);
}