Fill test disk partitions with random noise to expose more bugs.
[dcpomatic.git] / test / dcp_playback_test.cc
index 17318e0ff8328f178db64806d850e24407092ead..62c72cc84e85fd25e86ee605643e27fe4811a78c 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
-#include "lib/film.h"
+
 #include "lib/butler.h"
-#include "lib/player.h"
 #include "lib/dcp_content.h"
+#include "lib/film.h"
+#include "lib/player.h"
 #include "test.h"
 #include <boost/test/unit_test.hpp>
 
-using std::pair;
-using boost::shared_ptr;
-using boost::optional;
+
+using std::make_shared;
+using std::make_shared;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
+using namespace dcpomatic;
+
 
 /** Simulate the work that the player does, for profiling */
 BOOST_AUTO_TEST_CASE (dcp_playback_test)
 {
-       shared_ptr<Film> film = new_test_film ("dcp_playback_test");
-       shared_ptr<DCPContent> content (new DCPContent(film, private_data / "JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV"));
+       auto film = new_test_film ("dcp_playback_test");
+       auto content = make_shared<DCPContent>(TestPaths::private_data() / "JourneyToJah_TLR-1_F_EN-DE-FR_CH_51_2K_LOK_20140225_DGL_SMPTE_OV");
        film->examine_and_add_content (content);
-       wait_for_jobs ();
+       BOOST_REQUIRE (!wait_for_jobs());
+
+       auto butler = std::make_shared<Butler>(
+               film,
+               make_shared<Player>(film, Image::Alignment::PADDED),
+               AudioMapping(6, 6),
+               6,
+               boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+               VideoRange::FULL,
+               Image::Alignment::PADDED,
+               true,
+               false,
+               Butler::Audio::ENABLED
+               );
 
-       shared_ptr<Butler> butler (new Butler(shared_ptr<Player>(new Player(film, film->playlist())), shared_ptr<Log>(), AudioMapping(6, 6), 6));
-       float* audio_buffer = new float[2000*6];
+       std::vector<float> audio_buffer(2000 * 6);
        while (true) {
-               pair<shared_ptr<PlayerVideo>, DCPTime> p = butler->get_video ();
+               auto p = butler->get_video (Butler::Behaviour::BLOCKING, 0);
                if (!p.first) {
                        break;
                }
                /* assuming DCP is 24fps/48kHz */
-               butler->get_audio (audio_buffer, 2000);
-               p.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true);
+               butler->get_audio (Butler::Behaviour::BLOCKING, audio_buffer.data(), 2000);
+               p.first->image(boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24), VideoRange::FULL, true);
        }
-       delete[] audio_buffer;
 }