X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Faudio_merger_test.cc;h=31d055ab703b2961e5d447198e7758c5cc53075e;hb=087eb941421d0ced97c8f3bf72072f19562435df;hp=9c3fd3a30d9e249c7016240034dfcc44e6a4523f;hpb=65379c3a9d78ae627519c0820c0814db0083f8af;p=dcpomatic.git diff --git a/test/audio_merger_test.cc b/test/audio_merger_test.cc index 9c3fd3a30..31d055ab7 100644 --- a/test/audio_merger_test.cc +++ b/test/audio_merger_test.cc @@ -28,7 +28,6 @@ using boost::shared_ptr; using boost::bind; static shared_ptr last_audio; -static int last_time; static int pass_through (int x) @@ -36,27 +35,10 @@ pass_through (int x) return x; } -static void -process_audio (shared_ptr audio, int time) -{ - last_audio = audio; - last_time = time; -} - -static void -reset () -{ - last_audio.reset (); - last_time = 0; -} - BOOST_AUTO_TEST_CASE (audio_merger_test1) { AudioMerger merger (1, bind (&pass_through, _1), boost::bind (&pass_through, _1)); - merger.Audio.connect (bind (&process_audio, _1, _2)); - reset (); - /* Push 64 samples, 0 -> 63 at time 0 */ shared_ptr buffers (new AudioBuffers (1, 64)); for (int i = 0; i < 64; ++i) { @@ -64,29 +46,24 @@ BOOST_AUTO_TEST_CASE (audio_merger_test1) } merger.push (buffers, 0); - /* That should not have caused an emission */ - BOOST_CHECK_EQUAL (last_audio, shared_ptr ()); - BOOST_CHECK_EQUAL (last_time, 0); - /* Push 64 samples, 0 -> 63 at time 22 */ merger.push (buffers, 22); - /* That should have caused an emission of 22 samples at 0 */ - BOOST_CHECK (last_audio != shared_ptr ()); - BOOST_CHECK_EQUAL (last_audio->frames(), 22); - BOOST_CHECK_EQUAL (last_time, 0); + TimedAudioBuffers tb = merger.pull (22); + BOOST_CHECK (tb.audio != shared_ptr ()); + BOOST_CHECK_EQUAL (tb.audio->frames(), 22); + BOOST_CHECK_EQUAL (tb.time, 0); /* And they should be a staircase */ for (int i = 0; i < 22; ++i) { - BOOST_CHECK_EQUAL (last_audio->data()[0][i], i); + BOOST_CHECK_EQUAL (tb.audio->data()[0][i], i); } - reset (); - merger.flush (); + tb = merger.flush (); /* That flush should give us 64 samples at 22 */ - BOOST_CHECK_EQUAL (last_audio->frames(), 64); - BOOST_CHECK_EQUAL (last_time, 22); + BOOST_CHECK_EQUAL (tb.audio->frames(), 64); + BOOST_CHECK_EQUAL (tb.time, 22); /* Check the sample values */ for (int i = 0; i < 64; ++i) { @@ -94,17 +71,14 @@ BOOST_AUTO_TEST_CASE (audio_merger_test1) if (i < (64 - 22)) { correct += i + 22; } - BOOST_CHECK_EQUAL (last_audio->data()[0][i], correct); + BOOST_CHECK_EQUAL (tb.audio->data()[0][i], correct); } } BOOST_AUTO_TEST_CASE (audio_merger_test2) { AudioMerger merger (1, bind (&pass_through, _1), boost::bind (&pass_through, _1)); - merger.Audio.connect (bind (&process_audio, _1, _2)); - reset (); - /* Push 64 samples, 0 -> 63 at time 9 */ shared_ptr buffers (new AudioBuffers (1, 64)); for (int i = 0; i < 64; ++i) { @@ -112,23 +86,22 @@ BOOST_AUTO_TEST_CASE (audio_merger_test2) } merger.push (buffers, 9); - /* That flush should give us 9 samples at 0 */ - BOOST_CHECK_EQUAL (last_audio->frames(), 9); - BOOST_CHECK_EQUAL (last_time, 0); + TimedAudioBuffers tb = merger.pull (9); + BOOST_CHECK_EQUAL (tb.audio->frames(), 9); + BOOST_CHECK_EQUAL (tb.time, 0); for (int i = 0; i < 9; ++i) { - BOOST_CHECK_EQUAL (last_audio->data()[0][i], 0); + BOOST_CHECK_EQUAL (tb.audio->data()[0][i], 0); } - reset (); - merger.flush (); + tb = merger.flush (); /* That flush should give us 64 samples at 9 */ - BOOST_CHECK_EQUAL (last_audio->frames(), 64); - BOOST_CHECK_EQUAL (last_time, 9); + BOOST_CHECK_EQUAL (tb.audio->frames(), 64); + BOOST_CHECK_EQUAL (tb.time, 9); /* Check the sample values */ for (int i = 0; i < 64; ++i) { - BOOST_CHECK_EQUAL (last_audio->data()[0][i], i); + BOOST_CHECK_EQUAL (tb.audio->data()[0][i], i); } }