diff options
Diffstat (limited to 'test/test_pcm_channels.cxx')
-rw-r--r-- | test/test_pcm_channels.cxx | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/test_pcm_channels.cxx b/test/test_pcm_channels.cxx index d5dacbe43..39f03ab80 100644 --- a/test/test_pcm_channels.cxx +++ b/test/test_pcm_channels.cxx @@ -50,6 +50,21 @@ PcmChannelsTest::TestChannels16() CPPUNIT_ASSERT_EQUAL(src[i], dest[i * 2]); CPPUNIT_ASSERT_EQUAL(src[i], dest[i * 2 + 1]); } + + /* stereo to 5.1 */ + + dest = pcm_convert_channels_16(buffer, 6, 2, { src, N * 2 }); + CPPUNIT_ASSERT(!dest.IsNull()); + CPPUNIT_ASSERT_EQUAL(N * 6, dest.size); + constexpr int16_t silence = 0; + for (unsigned i = 0; i < N; ++i) { + CPPUNIT_ASSERT_EQUAL(src[i * 2], dest[i * 6]); + CPPUNIT_ASSERT_EQUAL(src[i * 2 + 1], dest[i * 6+ 1]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 2]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 3]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 4]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 5]); + } } void @@ -78,4 +93,19 @@ PcmChannelsTest::TestChannels32() CPPUNIT_ASSERT_EQUAL(src[i], dest[i * 2]); CPPUNIT_ASSERT_EQUAL(src[i], dest[i * 2 + 1]); } + + /* stereo to 5.1 */ + + dest = pcm_convert_channels_32(buffer, 6, 2, { src, N * 2 }); + CPPUNIT_ASSERT(!dest.IsNull()); + CPPUNIT_ASSERT_EQUAL(N * 6, dest.size); + constexpr int32_t silence = 0; + for (unsigned i = 0; i < N; ++i) { + CPPUNIT_ASSERT_EQUAL(src[i * 2], dest[i * 6]); + CPPUNIT_ASSERT_EQUAL(src[i * 2 + 1], dest[i * 6+ 1]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 2]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 3]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 4]); + CPPUNIT_ASSERT_EQUAL(silence, dest[i * 6 + 5]); + } } |