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

Unified Diff: webrtc/modules/audio_processing/test/audio_processing_unittest.cc

Issue 1234463003: Integrate Intelligibility with APM (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added render stream conversion unittest Created 5 years, 4 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_processing/test/audio_processing_unittest.cc
diff --git a/webrtc/modules/audio_processing/test/audio_processing_unittest.cc b/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
index 3030182676a262ee03a3258829849c47cbe41c21..f059552f9c43b89708a2a6cc18cac49db6e79a0a 100644
--- a/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
+++ b/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
@@ -62,6 +62,8 @@ const int kProcessSampleRates[] = {8000, 16000, 32000, 48000};
const size_t kProcessSampleRatesSize = sizeof(kProcessSampleRates) /
sizeof(*kProcessSampleRates);
+enum StreamDirection { kFwd = 0, kRev };
aluebs-webrtc 2015/08/10 19:14:18 How about spelling these out: kForward and kRevers
ekm 2015/08/11 23:59:36 Done.
+
void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) {
ChannelBuffer<int16_t> cb_int(cb->num_frames(),
cb->num_channels());
@@ -252,13 +254,16 @@ std::map<std::string, std::string> temp_filenames;
std::string OutputFilePath(std::string name,
int input_rate,
int output_rate,
- int reverse_rate,
+ int reverse_input_rate,
+ int reverse_output_rate,
int num_input_channels,
int num_output_channels,
- int num_reverse_channels) {
+ int num_reverse_input_channels,
+ int num_reverse_output_channels,
+ StreamDirection file_direction) {
std::ostringstream ss;
- ss << name << "_i" << num_input_channels << "_" << input_rate / 1000
- << "_r" << num_reverse_channels << "_" << reverse_rate / 1000 << "_";
+ ss << name << "_i" << num_input_channels << "_" << input_rate / 1000 << "_ir"
+ << num_reverse_input_channels << "_" << reverse_input_rate / 1000 << "_";
if (num_output_channels == 1) {
ss << "mono";
} else if (num_output_channels == 2) {
@@ -266,7 +271,16 @@ std::string OutputFilePath(std::string name,
} else {
assert(false);
}
- ss << output_rate / 1000 << "_pcm";
+ ss << output_rate / 1000;
+ if (num_reverse_output_channels == 1) {
+ ss << "_rmono";
+ } else if (num_reverse_output_channels == 2) {
+ ss << "_rstereo";
+ } else {
+ assert(false);
+ }
+ ss << reverse_output_rate / 1000;
+ ss << "_d" << file_direction << "_pcm";
std::string filename = ss.str();
if (temp_filenames[filename].empty())
@@ -340,9 +354,9 @@ class ApmTest : public ::testing::Test {
void Init(int sample_rate_hz,
int output_sample_rate_hz,
int reverse_sample_rate_hz,
- int num_reverse_channels,
int num_input_channels,
int num_output_channels,
+ int num_reverse_channels,
bool open_output_file);
void Init(AudioProcessing* ap);
void EnableAllComponents();
@@ -458,6 +472,7 @@ void ApmTest::Init(AudioProcessing* ap) {
ap->Initialize(
{{{frame_->sample_rate_hz_, frame_->num_channels_},
{output_sample_rate_hz_, num_output_channels_},
+ {revframe_->sample_rate_hz_, revframe_->num_channels_},
{revframe_->sample_rate_hz_, revframe_->num_channels_}}}));
}
@@ -496,13 +511,10 @@ void ApmTest::Init(int sample_rate_hz,
if (out_file_) {
ASSERT_EQ(0, fclose(out_file_));
}
- filename = OutputFilePath("out",
- sample_rate_hz,
- output_sample_rate_hz,
- reverse_sample_rate_hz,
- num_input_channels,
- num_output_channels,
- num_reverse_channels);
+ filename = OutputFilePath("out", sample_rate_hz, output_sample_rate_hz,
+ reverse_sample_rate_hz, reverse_sample_rate_hz,
+ num_input_channels, num_output_channels,
+ num_reverse_channels, num_reverse_channels, kFwd);
out_file_ = fopen(filename.c_str(), "wb");
ASSERT_TRUE(out_file_ != NULL) << "Could not open file " <<
filename << "\n";
@@ -819,13 +831,16 @@ void ApmTest::TestChangingReverseChannels(
int num_rev_channels,
AudioProcessing::Error expected_return) {
const ProcessingConfig processing_config = {
- {{ frame_->sample_rate_hz_, apm_->num_input_channels() },
- { output_sample_rate_hz_, apm_->num_output_channels() },
- { frame_->sample_rate_hz_, num_rev_channels }}};
+ {{frame_->sample_rate_hz_, apm_->num_input_channels()},
+ {output_sample_rate_hz_, apm_->num_output_channels()},
+ {frame_->sample_rate_hz_, num_rev_channels},
+ {frame_->sample_rate_hz_, num_rev_channels}}};
- EXPECT_EQ(expected_return,
- apm_->AnalyzeReverseStream(float_cb_->channels(),
- processing_config.reverse_stream()));
+ EXPECT_EQ(
+ expected_return,
+ apm_->ProcessReverseStream(
+ float_cb_->channels(), processing_config.reverse_input_stream(),
+ processing_config.reverse_output_stream(), float_cb_->channels()));
}
TEST_F(ApmTest, ChannelsInt16Interface) {
@@ -1531,6 +1546,8 @@ TEST_F(ApmTest, NoProcessingWhenAllComponentsDisabled) {
for (int j = 0; j < 1000; j++) {
EXPECT_EQ(apm_->kNoError, apm_->ProcessStream(frame_));
EXPECT_TRUE(FrameDataAreEqual(*frame_, frame_copy));
+ EXPECT_EQ(apm_->kNoError, apm_->ProcessReverseStream(frame_));
+ EXPECT_TRUE(FrameDataAreEqual(*frame_, frame_copy));
}
}
}
@@ -1555,6 +1572,19 @@ TEST_F(ApmTest, NoProcessingWhenAllComponentsDisabledFloat) {
for (size_t i = 0; i < kSamples; ++i) {
EXPECT_EQ(src[i], dest[i]);
}
+
+ // Same for ProcessReverseStream.
+ float rev_dest[kSamples] = {};
+ auto rev_dest_channels = &rev_dest[0];
+
+ StreamConfig input_stream = {sample_rate, 1};
+ StreamConfig output_stream = {sample_rate, 1};
+ EXPECT_NOERR(apm_->ProcessReverseStream(&src_channels, input_stream,
+ output_stream, &rev_dest_channels));
+
+ for (size_t i = 0; i < kSamples; ++i) {
+ EXPECT_EQ(src[i], rev_dest[i]);
+ }
}
TEST_F(ApmTest, IdenticalInputChannelsResultInIdenticalOutputChannels) {
@@ -2299,15 +2329,18 @@ void UpdateBestSNR(const float* ref,
// Due to the resampling distortion, we don't expect identical results, but
// enforce SNR thresholds which vary depending on the format. 0 is a special
// case SNR which corresponds to inf, or zero error.
-typedef std::tr1::tuple<int, int, int, double> AudioProcessingTestData;
+typedef std::tr1::tuple<int, int, int, int, double, double>
+ AudioProcessingTestData;
class AudioProcessingTest
: public testing::TestWithParam<AudioProcessingTestData> {
public:
AudioProcessingTest()
: input_rate_(std::tr1::get<0>(GetParam())),
output_rate_(std::tr1::get<1>(GetParam())),
- reverse_rate_(std::tr1::get<2>(GetParam())),
- expected_snr_(std::tr1::get<3>(GetParam())) {}
+ reverse_input_rate_(std::tr1::get<2>(GetParam())),
+ reverse_output_rate_(std::tr1::get<3>(GetParam())),
+ expected_snr_(std::tr1::get<4>(GetParam())),
+ expected_reverse_snr_(std::tr1::get<5>(GetParam())) {}
virtual ~AudioProcessingTest() {}
@@ -2319,17 +2352,16 @@ class AudioProcessingTest
const int kNumChannels[] = {1, 2};
const size_t kNumChannelsSize =
sizeof(kNumChannels) / sizeof(*kNumChannels);
- for (size_t i = 0; i < kNativeRatesSize; ++i) {
- for (size_t j = 0; j < kNumChannelsSize; ++j) {
- for (size_t k = 0; k < kNumChannelsSize; ++k) {
+ for (auto file_direction : {kFwd, kRev}) {
+ for (size_t i = 0; i < kNativeRatesSize; ++i) {
+ for (size_t j = 0; j < kNumChannelsSize; ++j) {
+ for (size_t k = 0; k < kNumChannelsSize; ++k) {
// The reference files always have matching input and output channels.
- ProcessFormat(kNativeRates[i],
- kNativeRates[i],
- kNativeRates[i],
- kNumChannels[j],
- kNumChannels[j],
- kNumChannels[k],
- "ref");
+ ProcessFormat(kNativeRates[i], kNativeRates[i], kNativeRates[i],
+ kNativeRates[i], kNumChannels[j], kNumChannels[j],
+ kNumChannels[k], kNumChannels[k], "ref",
+ file_direction);
+ }
}
}
}
@@ -2338,59 +2370,68 @@ class AudioProcessingTest
static void TearDownTestCase() {
ClearTempFiles();
}
+
// Runs a process pass on files with the given parameters and dumps the output
- // to a file specified with |output_file_prefix|.
+ // to a file specified with |output_file_prefix|. |file_direction| indicates
+ // whether the forward or reverse output should be dumped.
static void ProcessFormat(int input_rate,
int output_rate,
- int reverse_rate,
+ int reverse_input_rate,
+ int reverse_output_rate,
int num_input_channels,
int num_output_channels,
- int num_reverse_channels,
- std::string output_file_prefix) {
+ int num_reverse_input_channels,
+ int num_reverse_output_channels,
+ std::string output_file_prefix,
+ StreamDirection file_direction) {
Config config;
config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
rtc::scoped_ptr<AudioProcessing> ap(AudioProcessing::Create(config));
EnableAllAPComponents(ap.get());
- ap->Initialize({{{input_rate, num_input_channels},
- {output_rate, num_output_channels},
- {reverse_rate, num_reverse_channels}}});
- FILE* far_file = fopen(ResourceFilePath("far", reverse_rate).c_str(), "rb");
+ ProcessingConfig processing_config = {
+ {{input_rate, num_input_channels},
+ {output_rate, num_output_channels},
+ {reverse_input_rate, num_reverse_input_channels},
+ {reverse_output_rate, num_reverse_output_channels}}};
+ ap->Initialize(processing_config);
+
+ FILE* far_file =
+ fopen(ResourceFilePath("far", reverse_input_rate).c_str(), "rb");
FILE* near_file = fopen(ResourceFilePath("near", input_rate).c_str(), "rb");
- FILE* out_file = fopen(OutputFilePath(output_file_prefix,
- input_rate,
- output_rate,
- reverse_rate,
- num_input_channels,
- num_output_channels,
- num_reverse_channels).c_str(), "wb");
+ FILE* out_file =
+ fopen(OutputFilePath(
+ output_file_prefix, input_rate, output_rate,
+ reverse_input_rate, reverse_output_rate, num_input_channels,
+ num_output_channels, num_reverse_input_channels,
+ num_reverse_output_channels, file_direction).c_str(),
+ "wb");
ASSERT_TRUE(far_file != NULL);
ASSERT_TRUE(near_file != NULL);
ASSERT_TRUE(out_file != NULL);
ChannelBuffer<float> fwd_cb(SamplesFromRate(input_rate),
num_input_channels);
- ChannelBuffer<float> rev_cb(SamplesFromRate(reverse_rate),
- num_reverse_channels);
+ ChannelBuffer<float> rev_cb(SamplesFromRate(reverse_input_rate),
+ num_reverse_input_channels);
ChannelBuffer<float> out_cb(SamplesFromRate(output_rate),
num_output_channels);
+ ChannelBuffer<float> rev_out_cb(SamplesFromRate(reverse_output_rate),
+ num_reverse_output_channels);
// Temporary buffers.
const int max_length =
- 2 * std::max(out_cb.num_frames(),
- std::max(fwd_cb.num_frames(),
- rev_cb.num_frames()));
+ 2 * std::max(std::max(out_cb.num_frames(), rev_out_cb.num_frames()),
+ std::max(fwd_cb.num_frames(), rev_cb.num_frames()));
rtc::scoped_ptr<float[]> float_data(new float[max_length]);
rtc::scoped_ptr<int16_t[]> int_data(new int16_t[max_length]);
int analog_level = 127;
while (ReadChunk(far_file, int_data.get(), float_data.get(), &rev_cb) &&
ReadChunk(near_file, int_data.get(), float_data.get(), &fwd_cb)) {
- EXPECT_NOERR(ap->AnalyzeReverseStream(
- rev_cb.channels(),
- rev_cb.num_frames(),
- reverse_rate,
- LayoutFromChannels(num_reverse_channels)));
+ EXPECT_NOERR(ap->ProcessReverseStream(
+ rev_cb.channels(), processing_config.reverse_input_stream(),
+ processing_config.reverse_output_stream(), rev_out_cb.channels()));
EXPECT_NOERR(ap->set_stream_delay_ms(0));
ap->echo_cancellation()->set_stream_drift_samples(0);
@@ -2405,12 +2446,12 @@ class AudioProcessingTest
LayoutFromChannels(num_output_channels),
out_cb.channels()));
- Interleave(out_cb.channels(),
- out_cb.num_frames(),
- out_cb.num_channels(),
- float_data.get());
+ ChannelBuffer<float>* cb_write = file_direction ? &rev_out_cb : &out_cb;
Andrew MacDonald 2015/08/10 19:24:05 nit: could make this a const reference.
ekm 2015/08/11 23:59:36 Removed.
+ Interleave(cb_write->channels(), cb_write->num_frames(),
+ cb_write->num_channels(), float_data.get());
+ int out_length = cb_write->num_channels() * cb_write->num_frames();
+
// Dump output to file.
- int out_length = out_cb.num_channels() * out_cb.num_frames();
ASSERT_EQ(static_cast<size_t>(out_length),
fwrite(float_data.get(), sizeof(float_data[0]),
out_length, out_file));
@@ -2425,35 +2466,52 @@ class AudioProcessingTest
protected:
int input_rate_;
int output_rate_;
- int reverse_rate_;
+ int reverse_input_rate_;
+ int reverse_output_rate_;
double expected_snr_;
+ double expected_reverse_snr_;
};
TEST_P(AudioProcessingTest, Formats) {
struct ChannelFormat {
int num_input;
int num_output;
- int num_reverse;
+ int num_reverse_input;
+ int num_reverse_output;
};
ChannelFormat cf[] = {
- {1, 1, 1},
- {1, 1, 2},
- {2, 1, 1},
- {2, 1, 2},
- {2, 2, 1},
- {2, 2, 2},
+ {1, 1, 1, 1},
+ {1, 1, 2, 1},
+ {2, 1, 1, 1},
+ {2, 1, 2, 1},
+ {2, 2, 1, 1},
+ {2, 2, 2, 2},
aluebs-webrtc 2015/08/10 19:14:18 If this is supposed to be an exhaustive list, you
Andrew MacDonald 2015/08/10 19:30:51 Right, I don't think there's a lot of value in mak
ekm 2015/08/11 23:59:36 Acknowledged.
};
size_t channel_format_size = sizeof(cf) / sizeof(*cf);
+ for (auto file_direction : {kFwd, kRev}) {
ekm 2015/08/07 06:06:00 The following 124 lines should be indented, but co
aluebs-webrtc 2015/08/10 19:14:18 Thanks :) Just remember to change it before landin
Andrew MacDonald 2015/08/10 19:24:05 Nice, thanks. This looks pretty good, but I see o
ekm 2015/08/11 23:59:36 Done. Yep, switched up ProcessFormat to write both
for (size_t i = 0; i < channel_format_size; ++i) {
- ProcessFormat(input_rate_,
- output_rate_,
- reverse_rate_,
- cf[i].num_input,
- cf[i].num_output,
- cf[i].num_reverse,
- "out");
- int min_ref_rate = std::min(input_rate_, output_rate_);
+ ProcessFormat(input_rate_, output_rate_, reverse_input_rate_,
+ reverse_output_rate_, cf[i].num_input, cf[i].num_output,
+ cf[i].num_reverse_input, cf[i].num_reverse_output, "out",
+ file_direction);
+ int in_rate, out_rate, in_num, out_num;
+ double expected_snr;
+ if (file_direction == kFwd) {
+ in_rate = input_rate_;
+ out_rate = output_rate_;
+ in_num = cf[i].num_input;
+ out_num = cf[i].num_output;
+ expected_snr = expected_snr_;
+ } else {
+ in_rate = reverse_input_rate_;
+ out_rate = reverse_output_rate_;
+ in_num = cf[i].num_reverse_input;
+ out_num = cf[i].num_reverse_output;
+ expected_snr = expected_reverse_snr_;
+ }
aluebs-webrtc 2015/08/10 19:14:18 I think it is clearer to declare and define each v
ekm 2015/08/11 23:59:36 Done.
+
+ int min_ref_rate = std::min(in_rate, out_rate);
int ref_rate;
if (min_ref_rate > 32000) {
@@ -2466,29 +2524,28 @@ TEST_P(AudioProcessingTest, Formats) {
ref_rate = 8000;
}
#ifdef WEBRTC_AUDIOPROC_FIXED_PROFILE
- ref_rate = std::min(ref_rate, 16000);
+ if (file_direction == kFwd) {
+ ref_rate = std::min(ref_rate, 16000);
+ }
#endif
-
- FILE* out_file = fopen(OutputFilePath("out",
- input_rate_,
- output_rate_,
- reverse_rate_,
- cf[i].num_input,
- cf[i].num_output,
- cf[i].num_reverse).c_str(), "rb");
+ FILE* out_file = fopen(
+ OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_,
+ reverse_output_rate_, cf[i].num_input,
+ cf[i].num_output, cf[i].num_reverse_input,
+ cf[i].num_reverse_output, file_direction).c_str(),
+ "rb");
// The reference files always have matching input and output channels.
- FILE* ref_file = fopen(OutputFilePath("ref",
- ref_rate,
- ref_rate,
- ref_rate,
- cf[i].num_output,
- cf[i].num_output,
- cf[i].num_reverse).c_str(), "rb");
+ FILE* ref_file = fopen(
+ OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate,
+ cf[i].num_output, cf[i].num_output,
+ cf[i].num_reverse_output, cf[i].num_reverse_output,
+ file_direction).c_str(),
+ "rb");
ASSERT_TRUE(out_file != NULL);
ASSERT_TRUE(ref_file != NULL);
- const int ref_length = SamplesFromRate(ref_rate) * cf[i].num_output;
- const int out_length = SamplesFromRate(output_rate_) * cf[i].num_output;
+ const int ref_length = SamplesFromRate(ref_rate) * out_num;
+ const int out_length = SamplesFromRate(out_rate) * out_num;
// Data from the reference file.
rtc::scoped_ptr<float[]> ref_data(new float[ref_length]);
// Data from the output file.
@@ -2498,181 +2555,181 @@ TEST_P(AudioProcessingTest, Formats) {
rtc::scoped_ptr<float[]> cmp_data(new float[ref_length]);
PushResampler<float> resampler;
- resampler.InitializeIfNeeded(output_rate_, ref_rate, cf[i].num_output);
+ resampler.InitializeIfNeeded(out_rate, ref_rate, out_num);
// Compute the resampling delay of the output relative to the reference,
// to find the region over which we should search for the best SNR.
float expected_delay_sec = 0;
- if (input_rate_ != ref_rate) {
+ if (in_rate != ref_rate) {
// Input resampling delay.
expected_delay_sec +=
- PushSincResampler::AlgorithmicDelaySeconds(input_rate_);
+ PushSincResampler::AlgorithmicDelaySeconds(in_rate);
}
- if (output_rate_ != ref_rate) {
+ if (out_rate != ref_rate) {
// Output resampling delay.
expected_delay_sec +=
PushSincResampler::AlgorithmicDelaySeconds(ref_rate);
- // Delay of converting the output back to its processing rate for testing.
+ // Delay of converting the output back to its processing rate for
+ // testing.
expected_delay_sec +=
- PushSincResampler::AlgorithmicDelaySeconds(output_rate_);
+ PushSincResampler::AlgorithmicDelaySeconds(out_rate);
}
- int expected_delay = floor(expected_delay_sec * ref_rate + 0.5f) *
- cf[i].num_output;
+ int expected_delay =
+ floor(expected_delay_sec * ref_rate + 0.5f) * out_num;
double variance = 0;
double sq_error = 0;
while (fread(out_data.get(), sizeof(out_data[0]), out_length, out_file) &&
fread(ref_data.get(), sizeof(ref_data[0]), ref_length, ref_file)) {
float* out_ptr = out_data.get();
- if (output_rate_ != ref_rate) {
- // Resample the output back to its internal processing rate if necssary.
- ASSERT_EQ(ref_length, resampler.Resample(out_ptr,
- out_length,
- cmp_data.get(),
- ref_length));
+ if (out_rate != ref_rate) {
+ // Resample the output back to its internal processing rate if
+ // necssary.
+ ASSERT_EQ(ref_length, resampler.Resample(out_ptr, out_length,
+ cmp_data.get(), ref_length));
out_ptr = cmp_data.get();
}
- // Update the |sq_error| and |variance| accumulators with the highest SNR
+ // Update the |sq_error| and |variance| accumulators with the highest
+ // SNR
// of reference vs output.
Andrew MacDonald 2015/08/10 19:24:05 Move to previous line.
ekm 2015/08/11 23:59:36 Done.
- UpdateBestSNR(ref_data.get(),
- out_ptr,
- ref_length,
- expected_delay,
- &variance,
- &sq_error);
+ UpdateBestSNR(ref_data.get(), out_ptr, ref_length, expected_delay,
+ &variance, &sq_error);
}
- std::cout << "(" << input_rate_ << ", "
- << output_rate_ << ", "
- << reverse_rate_ << ", "
- << cf[i].num_input << ", "
- << cf[i].num_output << ", "
- << cf[i].num_reverse << "): ";
+ std::cout << "(" << input_rate_ << ", " << output_rate_ << ", "
+ << reverse_input_rate_ << ", " << reverse_output_rate_ << ", "
+ << cf[i].num_input << ", " << cf[i].num_output << ", "
+ << cf[i].num_reverse_input << ", " << cf[i].num_reverse_output
+ << ", " << file_direction << "): ";
if (sq_error > 0) {
double snr = 10 * log10(variance / sq_error);
- EXPECT_GE(snr, expected_snr_);
- EXPECT_NE(0, expected_snr_);
+ EXPECT_GE(snr, expected_snr);
+ EXPECT_NE(0, expected_snr);
std::cout << "SNR=" << snr << " dB" << std::endl;
} else {
- EXPECT_EQ(expected_snr_, 0);
- std::cout << "SNR=" << "inf dB" << std::endl;
+ EXPECT_EQ(expected_snr, 0);
+ std::cout << "SNR="
+ << "inf dB" << std::endl;
}
- fclose(out_file);
- fclose(ref_file);
+ fclose(out_file);
+ fclose(ref_file);
+ }
}
}
#if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
INSTANTIATE_TEST_CASE_P(
- CommonFormats, AudioProcessingTest, testing::Values(
- std::tr1::make_tuple(48000, 48000, 48000, 0),
- std::tr1::make_tuple(48000, 48000, 32000, 40),
- std::tr1::make_tuple(48000, 48000, 16000, 40),
- std::tr1::make_tuple(48000, 44100, 48000, 20),
- std::tr1::make_tuple(48000, 44100, 32000, 20),
- std::tr1::make_tuple(48000, 44100, 16000, 20),
- std::tr1::make_tuple(48000, 32000, 48000, 30),
- std::tr1::make_tuple(48000, 32000, 32000, 30),
- std::tr1::make_tuple(48000, 32000, 16000, 30),
- std::tr1::make_tuple(48000, 16000, 48000, 25),
- std::tr1::make_tuple(48000, 16000, 32000, 25),
- std::tr1::make_tuple(48000, 16000, 16000, 25),
-
- std::tr1::make_tuple(44100, 48000, 48000, 30),
- std::tr1::make_tuple(44100, 48000, 32000, 30),
- std::tr1::make_tuple(44100, 48000, 16000, 30),
- std::tr1::make_tuple(44100, 44100, 48000, 20),
- std::tr1::make_tuple(44100, 44100, 32000, 20),
- std::tr1::make_tuple(44100, 44100, 16000, 20),
- std::tr1::make_tuple(44100, 32000, 48000, 30),
- std::tr1::make_tuple(44100, 32000, 32000, 30),
- std::tr1::make_tuple(44100, 32000, 16000, 30),
- std::tr1::make_tuple(44100, 16000, 48000, 25),
- std::tr1::make_tuple(44100, 16000, 32000, 25),
- std::tr1::make_tuple(44100, 16000, 16000, 25),
-
- std::tr1::make_tuple(32000, 48000, 48000, 30),
- std::tr1::make_tuple(32000, 48000, 32000, 35),
- std::tr1::make_tuple(32000, 48000, 16000, 30),
- std::tr1::make_tuple(32000, 44100, 48000, 20),
- std::tr1::make_tuple(32000, 44100, 32000, 20),
- std::tr1::make_tuple(32000, 44100, 16000, 20),
- std::tr1::make_tuple(32000, 32000, 48000, 40),
- std::tr1::make_tuple(32000, 32000, 32000, 0),
- std::tr1::make_tuple(32000, 32000, 16000, 40),
- std::tr1::make_tuple(32000, 16000, 48000, 25),
- std::tr1::make_tuple(32000, 16000, 32000, 25),
- std::tr1::make_tuple(32000, 16000, 16000, 25),
-
- std::tr1::make_tuple(16000, 48000, 48000, 25),
- std::tr1::make_tuple(16000, 48000, 32000, 25),
- std::tr1::make_tuple(16000, 48000, 16000, 25),
- std::tr1::make_tuple(16000, 44100, 48000, 15),
- std::tr1::make_tuple(16000, 44100, 32000, 15),
- std::tr1::make_tuple(16000, 44100, 16000, 15),
- std::tr1::make_tuple(16000, 32000, 48000, 25),
- std::tr1::make_tuple(16000, 32000, 32000, 25),
- std::tr1::make_tuple(16000, 32000, 16000, 25),
- std::tr1::make_tuple(16000, 16000, 48000, 40),
- std::tr1::make_tuple(16000, 16000, 32000, 50),
- std::tr1::make_tuple(16000, 16000, 16000, 0)));
+ CommonFormats,
+ AudioProcessingTest,
+ testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 0, 0),
+ std::tr1::make_tuple(48000, 48000, 32000, 48000, 40, 30),
+ std::tr1::make_tuple(48000, 48000, 16000, 48000, 40, 20),
+ std::tr1::make_tuple(48000, 44100, 48000, 44100, 20, 20),
+ std::tr1::make_tuple(48000, 44100, 32000, 44100, 20, 15),
+ std::tr1::make_tuple(48000, 44100, 16000, 44100, 20, 15),
+ std::tr1::make_tuple(48000, 32000, 48000, 32000, 30, 35),
+ std::tr1::make_tuple(48000, 32000, 32000, 32000, 30, 0),
+ std::tr1::make_tuple(48000, 32000, 16000, 32000, 30, 20),
+ std::tr1::make_tuple(48000, 16000, 48000, 16000, 25, 20),
+ std::tr1::make_tuple(48000, 16000, 32000, 16000, 25, 20),
+ std::tr1::make_tuple(48000, 16000, 16000, 16000, 25, 0),
+
+ std::tr1::make_tuple(44100, 48000, 48000, 48000, 30, 0),
+ std::tr1::make_tuple(44100, 48000, 32000, 48000, 30, 30),
+ std::tr1::make_tuple(44100, 48000, 16000, 48000, 30, 20),
+ std::tr1::make_tuple(44100, 44100, 48000, 44100, 20, 20),
+ std::tr1::make_tuple(44100, 44100, 32000, 44100, 20, 15),
+ std::tr1::make_tuple(44100, 44100, 16000, 44100, 20, 15),
+ std::tr1::make_tuple(44100, 32000, 48000, 32000, 30, 35),
+ std::tr1::make_tuple(44100, 32000, 32000, 32000, 30, 0),
+ std::tr1::make_tuple(44100, 32000, 16000, 32000, 30, 20),
+ std::tr1::make_tuple(44100, 16000, 48000, 16000, 25, 20),
+ std::tr1::make_tuple(44100, 16000, 32000, 16000, 25, 20),
+ std::tr1::make_tuple(44100, 16000, 16000, 16000, 25, 0),
+
+ std::tr1::make_tuple(32000, 48000, 48000, 48000, 30, 0),
+ std::tr1::make_tuple(32000, 48000, 32000, 48000, 35, 30),
+ std::tr1::make_tuple(32000, 48000, 16000, 48000, 30, 20),
+ std::tr1::make_tuple(32000, 44100, 48000, 44100, 20, 20),
+ std::tr1::make_tuple(32000, 44100, 32000, 44100, 20, 15),
+ std::tr1::make_tuple(32000, 44100, 16000, 44100, 20, 15),
+ std::tr1::make_tuple(32000, 32000, 48000, 32000, 40, 35),
+ std::tr1::make_tuple(32000, 32000, 32000, 32000, 0, 0),
+ std::tr1::make_tuple(32000, 32000, 16000, 32000, 40, 20),
+ std::tr1::make_tuple(32000, 16000, 48000, 16000, 25, 20),
+ std::tr1::make_tuple(32000, 16000, 32000, 16000, 25, 20),
+ std::tr1::make_tuple(32000, 16000, 16000, 16000, 25, 0),
+
+ std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0),
+ std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30),
+ std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20),
+ std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20),
+ std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15),
+ std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15),
+ std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35),
+ std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
+ std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
+ std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20),
+ std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20),
+ std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));
#elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
INSTANTIATE_TEST_CASE_P(
- CommonFormats, AudioProcessingTest, testing::Values(
- std::tr1::make_tuple(48000, 48000, 48000, 20),
- std::tr1::make_tuple(48000, 48000, 32000, 20),
- std::tr1::make_tuple(48000, 48000, 16000, 20),
- std::tr1::make_tuple(48000, 44100, 48000, 15),
- std::tr1::make_tuple(48000, 44100, 32000, 15),
- std::tr1::make_tuple(48000, 44100, 16000, 15),
- std::tr1::make_tuple(48000, 32000, 48000, 20),
- std::tr1::make_tuple(48000, 32000, 32000, 20),
- std::tr1::make_tuple(48000, 32000, 16000, 20),
- std::tr1::make_tuple(48000, 16000, 48000, 20),
- std::tr1::make_tuple(48000, 16000, 32000, 20),
- std::tr1::make_tuple(48000, 16000, 16000, 20),
-
- std::tr1::make_tuple(44100, 48000, 48000, 20),
- std::tr1::make_tuple(44100, 48000, 32000, 20),
- std::tr1::make_tuple(44100, 48000, 16000, 20),
- std::tr1::make_tuple(44100, 44100, 48000, 15),
- std::tr1::make_tuple(44100, 44100, 32000, 15),
- std::tr1::make_tuple(44100, 44100, 16000, 15),
- std::tr1::make_tuple(44100, 32000, 48000, 20),
- std::tr1::make_tuple(44100, 32000, 32000, 20),
- std::tr1::make_tuple(44100, 32000, 16000, 20),
- std::tr1::make_tuple(44100, 16000, 48000, 20),
- std::tr1::make_tuple(44100, 16000, 32000, 20),
- std::tr1::make_tuple(44100, 16000, 16000, 20),
-
- std::tr1::make_tuple(32000, 48000, 48000, 20),
- std::tr1::make_tuple(32000, 48000, 32000, 20),
- std::tr1::make_tuple(32000, 48000, 16000, 20),
- std::tr1::make_tuple(32000, 44100, 48000, 15),
- std::tr1::make_tuple(32000, 44100, 32000, 15),
- std::tr1::make_tuple(32000, 44100, 16000, 15),
- std::tr1::make_tuple(32000, 32000, 48000, 20),
- std::tr1::make_tuple(32000, 32000, 32000, 20),
- std::tr1::make_tuple(32000, 32000, 16000, 20),
- std::tr1::make_tuple(32000, 16000, 48000, 20),
- std::tr1::make_tuple(32000, 16000, 32000, 20),
- std::tr1::make_tuple(32000, 16000, 16000, 20),
-
- std::tr1::make_tuple(16000, 48000, 48000, 25),
- std::tr1::make_tuple(16000, 48000, 32000, 25),
- std::tr1::make_tuple(16000, 48000, 16000, 25),
- std::tr1::make_tuple(16000, 44100, 48000, 15),
- std::tr1::make_tuple(16000, 44100, 32000, 15),
- std::tr1::make_tuple(16000, 44100, 16000, 15),
- std::tr1::make_tuple(16000, 32000, 48000, 25),
- std::tr1::make_tuple(16000, 32000, 32000, 25),
- std::tr1::make_tuple(16000, 32000, 16000, 25),
- std::tr1::make_tuple(16000, 16000, 48000, 35),
- std::tr1::make_tuple(16000, 16000, 32000, 40),
- std::tr1::make_tuple(16000, 16000, 16000, 0)));
+ CommonFormats,
+ AudioProcessingTest,
+ testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 20, 0),
+ std::tr1::make_tuple(48000, 48000, 32000, 48000, 20, 30),
+ std::tr1::make_tuple(48000, 48000, 16000, 48000, 20, 20),
+ std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20),
+ std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15),
+ std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15),
+ std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35),
+ std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0),
+ std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20),
+ std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20),
+ std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20),
+ std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0),
+
+ std::tr1::make_tuple(44100, 48000, 48000, 48000, 20, 0),
+ std::tr1::make_tuple(44100, 48000, 32000, 48000, 20, 30),
+ std::tr1::make_tuple(44100, 48000, 16000, 48000, 20, 20),
+ std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20),
+ std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15),
+ std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15),
+ std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35),
+ std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0),
+ std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20),
+ std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20),
+ std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20),
+ std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0),
+
+ std::tr1::make_tuple(32000, 48000, 48000, 48000, 20, 0),
+ std::tr1::make_tuple(32000, 48000, 32000, 48000, 20, 30),
+ std::tr1::make_tuple(32000, 48000, 16000, 48000, 20, 20),
+ std::tr1::make_tuple(32000, 44100, 48000, 44100, 15, 20),
+ std::tr1::make_tuple(32000, 44100, 32000, 44100, 15, 15),
+ std::tr1::make_tuple(32000, 44100, 16000, 44100, 15, 15),
+ std::tr1::make_tuple(32000, 32000, 48000, 32000, 20, 35),
+ std::tr1::make_tuple(32000, 32000, 32000, 32000, 20, 0),
+ std::tr1::make_tuple(32000, 32000, 16000, 32000, 20, 20),
+ std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20),
+ std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20),
+ std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0),
+
+ std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0),
+ std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30),
+ std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20),
+ std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20),
+ std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15),
+ std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15),
+ std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35),
+ std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
+ std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
+ std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20),
+ std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20),
+ std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));
aluebs-webrtc 2015/08/10 19:14:18 Here I have the same question about making them ex
Andrew MacDonald 2015/08/10 19:30:51 Right, it's not supposed to be exhaustive. It look
ekm 2015/08/11 23:59:36 Acknowledged.
#endif
// TODO(henrike): re-implement functionality lost when removing the old main

Powered by Google App Engine
This is Rietveld 408576698