diff options
author | Dylan Reid <dgreid@chromium.org> | 2014-11-25 14:32:47 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-11-27 10:27:17 +0000 |
commit | 1efd30f3854ac69a6916bdeaa82dae3f01d18aca (patch) | |
tree | ae951d332748640f84b519220809aaf2af93d0f4 /cras/src/tests/mix_unittest.cc | |
parent | 8254c8ce58df32af465d6fccd0537d4b7ee60738 (diff) | |
download | adhd-1efd30f3854ac69a6916bdeaa82dae3f01d18aca.tar.gz |
CRAS: mix - reorder exported functions
This will make it clearer when the scale and mix_add functions expand
to support formats other than s16le.
Change-Id: I28c6403e2c35d93164b8c6ea6dc758994bac1e81
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/232083
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
Diffstat (limited to 'cras/src/tests/mix_unittest.cc')
-rw-r--r-- | cras/src/tests/mix_unittest.cc | 83 |
1 files changed, 60 insertions, 23 deletions
diff --git a/cras/src/tests/mix_unittest.cc b/cras/src/tests/mix_unittest.cc index 58a64c2d..37277a15 100644 --- a/cras/src/tests/mix_unittest.cc +++ b/cras/src/tests/mix_unittest.cc @@ -18,9 +18,10 @@ static const size_t kBufferFrames = 8192; static const size_t kNumChannels = 2; static const size_t kNumSamples = kBufferFrames * kNumChannels; -class MixTestSuite : public testing::Test{ +class MixTestSuiteS16_LE : public testing::Test{ protected: virtual void SetUp() { + fmt_ = SND_PCM_FORMAT_S16_LE; mix_buffer_ = (int16_t *)malloc(kBufferFrames * 4); src_buffer_ = static_cast<int16_t *>( calloc(1, kBufferFrames * 4 + sizeof(cras_audio_shm_area))); @@ -42,63 +43,99 @@ class MixTestSuite : public testing::Test{ int16_t *mix_buffer_; int16_t *src_buffer_; int16_t *compare_buffer_; + snd_pcm_format_t fmt_; }; -TEST_F(MixTestSuite, MixFirst) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 0, 1.0); +TEST_F(MixTestSuiteS16_LE, MixFirst) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 1.0); EXPECT_EQ(0, memcmp(mix_buffer_, src_buffer_, kBufferFrames*4)); } -TEST_F(MixTestSuite, MixTwo) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 0, 1.0); - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 1, 0, 1.0); +TEST_F(MixTestSuiteS16_LE, MixTwo) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 1.0); + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 1, 0, 1.0); for (size_t i = 0; i < kBufferFrames * 2; i++) compare_buffer_[i] = src_buffer_[i] * 2; EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); } -TEST_F(MixTestSuite, MixFirstMuted) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 1, 1.0); +TEST_F(MixTestSuiteS16_LE, MixTwoClip) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 1.0); + for (size_t i = 0; i < kBufferFrames * 2; i++) + src_buffer_[i] = INT16_MAX; + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 1, 0, 1.0); + + for (size_t i = 0; i < kBufferFrames * 2; i++) + compare_buffer_[i] = INT16_MAX; + EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); +} + +TEST_F(MixTestSuiteS16_LE, MixFirstMuted) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 1, 1.0); for (size_t i = 0; i < kBufferFrames * 2; i++) compare_buffer_[i] = 0; EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); } -TEST_F(MixTestSuite, MixFirstZeroVolume) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 0, 0.0); +TEST_F(MixTestSuiteS16_LE, MixFirstZeroVolume) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 0.0); for (size_t i = 0; i < kBufferFrames * 2; i++) compare_buffer_[i] = 0; EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); } -TEST_F(MixTestSuite, MixFirstHalfVolume) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 0, 0.5); +TEST_F(MixTestSuiteS16_LE, MixFirstHalfVolume) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 0.5); for (size_t i = 0; i < kBufferFrames * 2; i++) compare_buffer_[i] = src_buffer_[i] * 0.5; EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); } -TEST_F(MixTestSuite, MixTwoSecondHalfVolume) { - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 0, 0, 1.0); - cras_mix_add( - mix_buffer_, src_buffer_, kNumSamples, 1, 0, 0.5); +TEST_F(MixTestSuiteS16_LE, MixTwoSecondHalfVolume) { + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 0, 0, 1.0); + cras_mix_add(fmt_, (uint8_t *)mix_buffer_, (uint8_t *)src_buffer_, + kNumSamples, 1, 0, 0.5); for (size_t i = 0; i < kBufferFrames * 2; i++) compare_buffer_[i] = src_buffer_[i] + (int16_t)(src_buffer_[i] * 0.5); EXPECT_EQ(0, memcmp(mix_buffer_, compare_buffer_, kBufferFrames*4)); } +TEST_F(MixTestSuiteS16_LE, ScaleFullVolume) { + memcpy(compare_buffer_, src_buffer_, kBufferFrames * 4); + cras_scale_buffer(fmt_, (uint8_t *)mix_buffer_, kNumSamples, 0.999999999); + + EXPECT_EQ(0, memcmp(compare_buffer_, src_buffer_, kBufferFrames * 4)); +} + +TEST_F(MixTestSuiteS16_LE, ScaleMinVolume) { + memset(compare_buffer_, 0, kBufferFrames * 4); + cras_scale_buffer(fmt_, (uint8_t *)src_buffer_, kNumSamples, 0.0000000001); + + EXPECT_EQ(0, memcmp(compare_buffer_, src_buffer_, kBufferFrames * 4)); +} + +TEST_F(MixTestSuiteS16_LE, ScaleHalfVolume) { + for (size_t i = 0; i < kBufferFrames * 2; i++) + compare_buffer_[i] = src_buffer_[i] * 0.5; + cras_scale_buffer(fmt_, (uint8_t *)src_buffer_, kNumSamples, 0.5); + + EXPECT_EQ(0, memcmp(compare_buffer_, src_buffer_, kBufferFrames * 4)); +} + /* Stubs */ extern "C" { |