summaryrefslogtreecommitdiff
path: root/cras/src/tests/mix_unittest.cc
diff options
context:
space:
mode:
authorDylan Reid <dgreid@chromium.org>2014-11-25 14:32:47 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-27 10:27:17 +0000
commit1efd30f3854ac69a6916bdeaa82dae3f01d18aca (patch)
treeae951d332748640f84b519220809aaf2af93d0f4 /cras/src/tests/mix_unittest.cc
parent8254c8ce58df32af465d6fccd0537d4b7ee60738 (diff)
downloadadhd-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.cc83
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" {