Delete a chain of methods in ViE, VoE and ACM
The end goal is to remove AcmReceiver::SetInitialDelay. This change is in preparation for that goal. It turns out that AcmReceiver::SetInitialDelay was only invoked through the following call chain, where each method in the chain is never referenced from anywhere else (except from tests in some cases): ViEChannel::SetReceiverBufferingMode -> ViESyncModule::SetTargetBufferingDelay -> VoEVideoSync::SetInitialPlayoutDelay -> Channel::SetInitialPlayoutDelay -> AudioCodingModule::SetInitialPlayoutDelay -> AcmReceiver::SetInitialDelay The start of the chain, ViEChannel::SetReceiverBufferingMode was never referenced. This change deletes all the methods above except AcmReceiver::SetInitialDelay itself, which will be handled in a follow-up change. BUG=webrtc:3520 Review URL: https://codereview.webrtc.org/1421013006 Cr-Commit-Position: refs/heads/master@{#10471}
This commit is contained in:
committed by
Commit bot
parent
e502bbe138
commit
74f0f3551e
@ -33,7 +33,6 @@ DEFINE_int32(sample_rate_hz, 16000, "Sampling rate in Hertz.");
|
||||
DEFINE_int32(num_channels, 1, "Number of Channels.");
|
||||
DEFINE_string(input_file, "", "Input file, PCM16 32 kHz, optional.");
|
||||
DEFINE_int32(delay, 0, "Delay in millisecond.");
|
||||
DEFINE_int32(init_delay, 0, "Initial delay in millisecond.");
|
||||
DEFINE_bool(dtx, false, "Enable DTX at the sender side.");
|
||||
DEFINE_bool(packet_loss, false, "Apply packet loss, c.f. Channel{.cc, .h}.");
|
||||
DEFINE_bool(fec, false, "Use Forward Error Correction (FEC).");
|
||||
@ -89,10 +88,6 @@ class DelayTest {
|
||||
"Couldn't initialize receiver.\n";
|
||||
ASSERT_EQ(0, acm_b_->InitializeReceiver()) <<
|
||||
"Couldn't initialize receiver.\n";
|
||||
if (FLAGS_init_delay > 0) {
|
||||
ASSERT_EQ(0, acm_b_->SetInitialPlayoutDelay(FLAGS_init_delay)) <<
|
||||
"Failed to set initial delay.\n";
|
||||
}
|
||||
|
||||
if (FLAGS_delay > 0) {
|
||||
ASSERT_EQ(0, acm_b_->SetMinimumPlayoutDelay(FLAGS_delay)) <<
|
||||
@ -172,7 +167,7 @@ class DelayTest {
|
||||
void OpenOutFile(const char* output_id) {
|
||||
std::stringstream file_stream;
|
||||
file_stream << "delay_test_" << FLAGS_codec << "_" << FLAGS_sample_rate_hz
|
||||
<< "Hz" << "_" << FLAGS_init_delay << "ms_" << FLAGS_delay << "ms.pcm";
|
||||
<< "Hz" << "_" << FLAGS_delay << "ms.pcm";
|
||||
std::cout << "Output file: " << file_stream.str() << std::endl << std::endl;
|
||||
std::string file_name = webrtc::test::OutputPath() + file_stream.str();
|
||||
out_file_b_.Open(file_name.c_str(), 32000, "wb");
|
||||
|
||||
@ -1,175 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2013 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/modules/audio_coding/main/include/audio_coding_module.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "webrtc/base/scoped_ptr.h"
|
||||
#include "webrtc/common_types.h"
|
||||
#include "webrtc/engine_configurations.h"
|
||||
#include "webrtc/modules/audio_coding/main/include/audio_coding_module_typedefs.h"
|
||||
#include "webrtc/modules/audio_coding/main/test/Channel.h"
|
||||
#include "webrtc/modules/audio_coding/main/test/PCMFile.h"
|
||||
#include "webrtc/modules/audio_coding/main/test/utility.h"
|
||||
#include "webrtc/system_wrappers/include/event_wrapper.h"
|
||||
#include "webrtc/test/testsupport/fileutils.h"
|
||||
#include "webrtc/test/testsupport/gtest_disable.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
namespace {
|
||||
|
||||
double FrameRms(AudioFrame& frame) {
|
||||
size_t samples = frame.num_channels_ * frame.samples_per_channel_;
|
||||
double rms = 0;
|
||||
for (size_t n = 0; n < samples; ++n)
|
||||
rms += frame.data_[n] * frame.data_[n];
|
||||
rms /= samples;
|
||||
rms = sqrt(rms);
|
||||
return rms;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class InitialPlayoutDelayTest : public ::testing::Test {
|
||||
protected:
|
||||
InitialPlayoutDelayTest()
|
||||
: acm_a_(AudioCodingModule::Create(0)),
|
||||
acm_b_(AudioCodingModule::Create(1)),
|
||||
channel_a2b_(NULL) {}
|
||||
|
||||
~InitialPlayoutDelayTest() {
|
||||
if (channel_a2b_ != NULL) {
|
||||
delete channel_a2b_;
|
||||
channel_a2b_ = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void SetUp() {
|
||||
ASSERT_TRUE(acm_a_.get() != NULL);
|
||||
ASSERT_TRUE(acm_b_.get() != NULL);
|
||||
|
||||
EXPECT_EQ(0, acm_b_->InitializeReceiver());
|
||||
EXPECT_EQ(0, acm_a_->InitializeReceiver());
|
||||
|
||||
// Register all L16 codecs in receiver.
|
||||
CodecInst codec;
|
||||
const int kFsHz[3] = { 8000, 16000, 32000 };
|
||||
const int kChannels[2] = { 1, 2 };
|
||||
for (int n = 0; n < 3; ++n) {
|
||||
for (int k = 0; k < 2; ++k) {
|
||||
AudioCodingModule::Codec("L16", &codec, kFsHz[n], kChannels[k]);
|
||||
acm_b_->RegisterReceiveCodec(codec);
|
||||
}
|
||||
}
|
||||
|
||||
// Create and connect the channel
|
||||
channel_a2b_ = new Channel;
|
||||
acm_a_->RegisterTransportCallback(channel_a2b_);
|
||||
channel_a2b_->RegisterReceiverACM(acm_b_.get());
|
||||
}
|
||||
|
||||
void NbMono() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 8000, 1);
|
||||
codec.pacsize = codec.plfreq * 30 / 1000; // 30 ms packets.
|
||||
Run(codec, 1000);
|
||||
}
|
||||
|
||||
void WbMono() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 16000, 1);
|
||||
codec.pacsize = codec.plfreq * 30 / 1000; // 30 ms packets.
|
||||
Run(codec, 1000);
|
||||
}
|
||||
|
||||
void SwbMono() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 32000, 1);
|
||||
codec.pacsize = codec.plfreq * 10 / 1000; // 10 ms packets.
|
||||
Run(codec, 400); // Memory constraints limit the buffer at <500 ms.
|
||||
}
|
||||
|
||||
void NbStereo() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 8000, 2);
|
||||
codec.pacsize = codec.plfreq * 30 / 1000; // 30 ms packets.
|
||||
Run(codec, 1000);
|
||||
}
|
||||
|
||||
void WbStereo() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 16000, 2);
|
||||
codec.pacsize = codec.plfreq * 30 / 1000; // 30 ms packets.
|
||||
Run(codec, 1000);
|
||||
}
|
||||
|
||||
void SwbStereo() {
|
||||
CodecInst codec;
|
||||
AudioCodingModule::Codec("L16", &codec, 32000, 2);
|
||||
codec.pacsize = codec.plfreq * 10 / 1000; // 10 ms packets.
|
||||
Run(codec, 400); // Memory constraints limit the buffer at <500 ms.
|
||||
}
|
||||
|
||||
private:
|
||||
void Run(CodecInst codec, int initial_delay_ms) {
|
||||
AudioFrame in_audio_frame;
|
||||
AudioFrame out_audio_frame;
|
||||
int num_frames = 0;
|
||||
const int kAmp = 10000;
|
||||
in_audio_frame.sample_rate_hz_ = codec.plfreq;
|
||||
in_audio_frame.num_channels_ = codec.channels;
|
||||
in_audio_frame.samples_per_channel_ = codec.plfreq / 100; // 10 ms.
|
||||
size_t samples = in_audio_frame.num_channels_ *
|
||||
in_audio_frame.samples_per_channel_;
|
||||
for (size_t n = 0; n < samples; ++n) {
|
||||
in_audio_frame.data_[n] = kAmp;
|
||||
}
|
||||
|
||||
uint32_t timestamp = 0;
|
||||
double rms = 0;
|
||||
ASSERT_EQ(0, acm_a_->RegisterSendCodec(codec));
|
||||
acm_b_->SetInitialPlayoutDelay(initial_delay_ms);
|
||||
while (rms < kAmp / 2) {
|
||||
in_audio_frame.timestamp_ = timestamp;
|
||||
timestamp += static_cast<uint32_t>(in_audio_frame.samples_per_channel_);
|
||||
ASSERT_GE(acm_a_->Add10MsData(in_audio_frame), 0);
|
||||
ASSERT_EQ(0, acm_b_->PlayoutData10Ms(codec.plfreq, &out_audio_frame));
|
||||
rms = FrameRms(out_audio_frame);
|
||||
++num_frames;
|
||||
}
|
||||
|
||||
ASSERT_GE(num_frames * 10, initial_delay_ms);
|
||||
ASSERT_LE(num_frames * 10, initial_delay_ms + 100);
|
||||
}
|
||||
|
||||
rtc::scoped_ptr<AudioCodingModule> acm_a_;
|
||||
rtc::scoped_ptr<AudioCodingModule> acm_b_;
|
||||
Channel* channel_a2b_;
|
||||
};
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, NbMono) { NbMono(); }
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, WbMono) { WbMono(); }
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, SwbMono) { SwbMono(); }
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, NbStereo) { NbStereo(); }
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, WbStereo) { WbStereo(); }
|
||||
|
||||
TEST_F(InitialPlayoutDelayTest, SwbStereo) { SwbStereo(); }
|
||||
|
||||
} // namespace webrtc
|
||||
@ -42,7 +42,6 @@ DEFINE_string(receive_ts, "last_rec_timestamp", "Receive timestamp file");
|
||||
DEFINE_string(delay, "", "Log for delay.");
|
||||
|
||||
// Other setups
|
||||
DEFINE_int32(init_delay, 0, "Initial delay.");
|
||||
DEFINE_bool(verbose, false, "Verbosity.");
|
||||
DEFINE_double(loss_rate, 0, "Rate of packet loss < 1");
|
||||
|
||||
@ -122,9 +121,6 @@ class InsertPacketWithTiming {
|
||||
<< " Hz." << std::endl;
|
||||
|
||||
// Other setups
|
||||
if (FLAGS_init_delay > 0)
|
||||
EXPECT_EQ(0, receive_acm_->SetInitialPlayoutDelay(FLAGS_init_delay));
|
||||
|
||||
if (FLAGS_loss_rate > 0)
|
||||
loss_threshold_ = RAND_MAX * FLAGS_loss_rate;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user