diff --git a/test/unitTest/media/audio/test_resampler.cpp b/test/unitTest/media/audio/test_resampler.cpp index e5ae3adbc5a57b6cb81f858953605748dd788fc7..d9403e21449799d354942e1f5bd089d1023e8c11 100644 --- a/test/unitTest/media/audio/test_resampler.cpp +++ b/test/unitTest/media/audio/test_resampler.cpp @@ -23,6 +23,7 @@ #include <cppunit/extensions/HelperMacros.h> #include "dring.h" +#include "videomanager_interface.h" #include "libav_deps.h" #include "audio/resampler.h" @@ -38,10 +39,12 @@ public: void tearDown(); private: - void testResample(); + void testAudioBuffer(); + void testAudioFrame(); CPPUNIT_TEST_SUITE(ResamplerTest); - CPPUNIT_TEST(testResample); + CPPUNIT_TEST(testAudioBuffer); + CPPUNIT_TEST(testAudioFrame); CPPUNIT_TEST_SUITE_END(); std::unique_ptr<Resampler> resampler_; @@ -53,7 +56,6 @@ void ResamplerTest::setUp() { DRing::init(DRing::InitFlag(DRing::DRING_FLAG_DEBUG | DRing::DRING_FLAG_CONSOLE_LOG)); - libav_utils::ring_avcodec_init(); } void @@ -63,9 +65,8 @@ ResamplerTest::tearDown() } void -ResamplerTest::testResample() +ResamplerTest::testAudioBuffer() { - const constexpr AudioFormat none(0, 0); const constexpr AudioFormat infmt(44100, 1); const constexpr AudioFormat outfmt(48000, 2); @@ -79,6 +80,30 @@ ResamplerTest::testResample() CPPUNIT_ASSERT(outbuf.getFormat().nb_channels == 2); } +void +ResamplerTest::testAudioFrame() +{ + const constexpr AudioFormat infmt(44100, 1); + + resampler_.reset(new Resampler); + + AudioBuffer inbuf(1024, infmt); + auto input = inbuf.toAVFrame(); + CPPUNIT_ASSERT(input->data && input->data[0]); + CPPUNIT_ASSERT(input->data[0][0] == 0); + + DRing::AudioFrame out; + auto output = out.pointer(); + output->format = AV_SAMPLE_FMT_FLT; + output->sample_rate = 48000; + output->channel_layout = AV_CH_LAYOUT_STEREO; + + int ret = resampler_->resample(input, output); + CPPUNIT_ASSERT_MESSAGE(libav_utils::getError(ret).c_str(), ret >= 0); + CPPUNIT_ASSERT(output->data && output->data[0]); + CPPUNIT_ASSERT(output->data[0][0] == 0); +} + }} // namespace ring::test RING_TEST_RUNNER(ring::test::ResamplerTest::name());