#include <boost/test/unit_test.hpp>
using boost::shared_ptr;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
+using namespace dcpomatic;
BOOST_AUTO_TEST_CASE (butler_test1)
{
film->set_name ("butler_test1");
film->set_container (Ratio::from_id ("185"));
- shared_ptr<Content> video = content_factory(film, "test/data/flat_red.png").front ();
+ shared_ptr<Content> video = content_factory("test/data/flat_red.png").front ();
film->examine_and_add_content (video);
- shared_ptr<Content> audio = content_factory(film, "test/data/staircase.wav").front ();
+ shared_ptr<Content> audio = content_factory("test/data/staircase.wav").front ();
film->examine_and_add_content (audio);
BOOST_REQUIRE (!wait_for_jobs ());
film->set_audio_channels (6);
+
+ /* This is the map of the player output (5.1) to the butler output (also 5.1) */
AudioMapping map = AudioMapping (6, 6);
+ for (int i = 0; i < 6; ++i) {
+ map.set (i, i, 1);
+ }
- Butler butler (film, shared_ptr<Player>(new Player(film, film->playlist())), map, 6);
+ Butler butler (shared_ptr<Player>(new Player(film)), map, 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VIDEO_RANGE_FULL, false, false);
- BOOST_CHECK (butler.get_video().second == DCPTime());
- BOOST_CHECK (butler.get_video().second == DCPTime::from_frames(1, 24));
- BOOST_CHECK (butler.get_video().second == DCPTime::from_frames(2, 24));
+ BOOST_CHECK (butler.get_video(true, 0).second == DCPTime());
+ BOOST_CHECK (butler.get_video(true, 0).second == DCPTime::from_frames(1, 24));
+ BOOST_CHECK (butler.get_video(true, 0).second == DCPTime::from_frames(2, 24));
+ /* XXX: check the frame contents */
float buffer[256 * 6];
- butler.get_audio(buffer, 256);
+ BOOST_REQUIRE (butler.get_audio (buffer, 256) == DCPTime());
+ for (int i = 0; i < 256; ++i) {
+ BOOST_REQUIRE_EQUAL (buffer[i * 6 + 0], 0);
+ BOOST_REQUIRE_EQUAL (buffer[i * 6 + 1], 0);
+ BOOST_REQUIRE_CLOSE (buffer[i * 6 + 2], i / 32768.0f, 0.1);
+ BOOST_REQUIRE_EQUAL (buffer[i * 6 + 3], 0);
+ BOOST_REQUIRE_EQUAL (buffer[i * 6 + 4], 0);
+ BOOST_REQUIRE_EQUAL (buffer[i * 6 + 5], 0);
+ }
}