More test fixes.
[dcpomatic.git] / test / video_level_test.cc
index 95b69d2aa2a3cca6dcf8cff7699b16802d271fb3..22bec742a231ab91fc00494a4fc7b63e819b4d87 100644 (file)
@@ -56,6 +56,7 @@ using std::max;
 using std::pair;
 using std::string;
 using std::dynamic_pointer_cast;
+using std::make_shared;
 using boost::optional;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
@@ -67,7 +68,7 @@ static
 shared_ptr<Image>
 grey_image (dcp::Size size, uint8_t pixel)
 {
-       shared_ptr<Image> grey(new Image(AV_PIX_FMT_RGB24, size, true));
+       auto grey = make_shared<Image>(AV_PIX_FMT_RGB24, size, true);
        for (int y = 0; y < size.height; ++y) {
                uint8_t* p = grey->data()[0] + y * grey->stride()[0];
                for (int x = 0; x < size.width; ++x) {
@@ -89,7 +90,7 @@ BOOST_AUTO_TEST_CASE (ffmpeg_image_full_range_not_changed)
 
        write_image (grey_image(size, grey_pixel), file);
 
-       FFmpegImageProxy proxy (file, VIDEO_RANGE_FULL);
+       FFmpegImageProxy proxy (file, VideoRange::FULL);
        ImageProxy::Result result = proxy.image ();
        BOOST_REQUIRE (!result.error);
 
@@ -111,7 +112,7 @@ BOOST_AUTO_TEST_CASE (ffmpeg_image_video_range_expanded)
 
        write_image (grey_image(size, grey_pixel), file);
 
-       FFmpegImageProxy proxy (file, VIDEO_RANGE_VIDEO);
+       FFmpegImageProxy proxy (file, VideoRange::VIDEO);
        ImageProxy::Result result = proxy.image ();
        BOOST_REQUIRE (!result.error);
 
@@ -272,7 +273,7 @@ movie_V (string name)
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 15);
        BOOST_CHECK_EQUAL (range.second, 243);
 
@@ -289,9 +290,9 @@ movie_VoF (string name)
        BOOST_REQUIRE (content);
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
-       content->video->set_range (VIDEO_RANGE_FULL);
+       content->video->set_range (VideoRange::FULL);
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 15);
        BOOST_CHECK_EQUAL (range.second, 243);
 
@@ -309,7 +310,7 @@ movie_F (string name)
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 0);
        BOOST_CHECK_EQUAL (range.second, 1023);
 
@@ -326,9 +327,9 @@ movie_FoV (string name)
        BOOST_REQUIRE (content);
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
-       content->video->set_range (VIDEO_RANGE_VIDEO);
+       content->video->set_range (VideoRange::VIDEO);
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 0);
        BOOST_CHECK_EQUAL (range.second, 1023);
 
@@ -346,7 +347,7 @@ image_F (string name)
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 0);
        BOOST_CHECK_EQUAL (range.second, 255);
 
@@ -363,9 +364,9 @@ image_FoV (string name)
        BOOST_REQUIRE (content);
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
-       content->video->set_range (VIDEO_RANGE_VIDEO);
+       content->video->set_range (VideoRange::VIDEO);
 
-       pair<int, int> range = pixel_range (film, content);
+       auto range = pixel_range (film, content);
        BOOST_CHECK_EQUAL (range.first, 11);
        BOOST_CHECK_EQUAL (range.second, 250);
 
@@ -383,7 +384,7 @@ dcp_F (string name)
        film->examine_and_add_content (shared_ptr<DCPContent>(new DCPContent(dcp)));
        BOOST_REQUIRE (!wait_for_jobs());
 
-       pair<int, int> range = pixel_range (dcp);
+       auto range = pixel_range (dcp);
        BOOST_CHECK_EQUAL (range.first, 0);
        BOOST_CHECK_EQUAL (range.second, 4081);
 
@@ -400,8 +401,7 @@ static
 pair<int, int>
 dcp_range (shared_ptr<Film> film)
 {
-       film->make_dcp ();
-       BOOST_REQUIRE (!wait_for_jobs());
+       make_and_verify_dcp (film);
        return pixel_range (film->dir(film->dcp_name()));
 }
 
@@ -414,14 +414,14 @@ V_movie_range (shared_ptr<Film> film)
        shared_ptr<TranscodeJob> job (new TranscodeJob(film));
        job->set_encoder (
                shared_ptr<FFmpegEncoder>(
-                       new FFmpegEncoder (film, job, film->file("export.mov"), EXPORT_FORMAT_PRORES, true, false, false, 23)
+                       new FFmpegEncoder (film, job, film->file("export.mov"), ExportFormat::PRORES, true, false, false, 23)
                        )
                );
        JobManager::instance()->add (job);
        BOOST_REQUIRE (!wait_for_jobs());
 
        /* This is a bit of a hack; add the exported file into the project so we can decode it */
-       shared_ptr<FFmpegContent> content(new FFmpegContent(film->file("export.mov")));
+       auto content = make_shared<FFmpegContent>(film->file("export.mov"));
        film->examine_and_add_content (content);
        BOOST_REQUIRE (!wait_for_jobs());
 
@@ -434,61 +434,55 @@ V_movie_range (shared_ptr<Film> film)
 
 BOOST_AUTO_TEST_CASE (movie_V_to_dcp)
 {
-       pair<int, int> range = dcp_range (movie_V("movie_V_to_dcp"));
+       auto range = dcp_range (movie_V("movie_V_to_dcp"));
        /* Video range has been correctly expanded to full for the DCP */
-       BOOST_CHECK_EQUAL (range.first, 0);
-       BOOST_CHECK_EQUAL (range.second, 4082);
+       check_int_close (range, {0, 4083}, 2);
 }
 
 
 BOOST_AUTO_TEST_CASE (movie_VoF_to_dcp)
 {
-       pair<int, int> range = dcp_range (movie_VoF("movie_VoF_to_dcp"));
+       auto range = dcp_range (movie_VoF("movie_VoF_to_dcp"));
        /* We said that video range data was really full range, so here we are in the DCP
         * with video-range data.
         */
-       BOOST_CHECK_EQUAL (range.first, 350);
-       BOOST_CHECK_EQUAL (range.second, 3832);
+       check_int_close (range, {350, 3832}, 2);
 }
 
 
 BOOST_AUTO_TEST_CASE (movie_F_to_dcp)
 {
-       pair<int, int> range = dcp_range (movie_F("movie_F_to_dcp"));
+       auto range = dcp_range (movie_F("movie_F_to_dcp"));
        /* The nearly-full-range of the input has been preserved */
-       BOOST_CHECK_EQUAL (range.first, 0);
-       BOOST_CHECK_EQUAL (range.second, 4082);
+       check_int_close (range, {0, 4083}, 2);
 }
 
 
 BOOST_AUTO_TEST_CASE (video_FoV_to_dcp)
 {
-       pair<int, int> range = dcp_range (movie_FoV("video_FoV_to_dcp"));
+       auto range = dcp_range (movie_FoV("video_FoV_to_dcp"));
        /* The nearly-full-range of the input has become even more full, and clipped */
-       BOOST_CHECK_EQUAL (range.first, 0);
-       BOOST_CHECK_EQUAL (range.second, 4095);
+       check_int_close (range, {0, 4095}, 2);
 }
 
 
 BOOST_AUTO_TEST_CASE (image_F_to_dcp)
 {
-       pair<int, int> range = dcp_range (image_F("image_F_to_dcp"));
-       BOOST_CHECK_EQUAL (range.first, 0);
-       BOOST_CHECK_EQUAL (range.second, 4081);
+       auto range = dcp_range (image_F("image_F_to_dcp"));
+       check_int_close (range, {0, 4083}, 3);
 }
 
 
 BOOST_AUTO_TEST_CASE (image_FoV_to_dcp)
 {
-       pair<int, int> range = dcp_range (image_FoV("image_FoV_to_dcp"));
-       BOOST_CHECK_EQUAL (range.first, 431);
-       BOOST_CHECK_EQUAL (range.second, 4012);
+       auto range = dcp_range (image_FoV("image_FoV_to_dcp"));
+       check_int_close (range, {430, 4012}, 2);
 }
 
 
 BOOST_AUTO_TEST_CASE (movie_V_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (movie_V("movie_V_to_V_movie"));
+       auto range = V_movie_range (movie_V("movie_V_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 60);
        BOOST_CHECK_EQUAL (range.second, 998);
 }
@@ -496,7 +490,7 @@ BOOST_AUTO_TEST_CASE (movie_V_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (movie_VoF_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (movie_VoF("movie_VoF_to_V_movie"));
+       auto range = V_movie_range (movie_VoF("movie_VoF_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 116);
        BOOST_CHECK_EQUAL (range.second, 939);
 }
@@ -504,7 +498,7 @@ BOOST_AUTO_TEST_CASE (movie_VoF_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (movie_F_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (movie_F("movie_F_to_V_movie"));
+       auto range = V_movie_range (movie_F("movie_F_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 4);
        BOOST_CHECK_EQUAL (range.second, 1019);
 }
@@ -512,7 +506,7 @@ BOOST_AUTO_TEST_CASE (movie_F_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (movie_FoV_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (movie_FoV("movie_FoV_to_V_movie"));
+       auto range = V_movie_range (movie_FoV("movie_FoV_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 4);
        BOOST_CHECK_EQUAL (range.second, 1019);
 }
@@ -520,7 +514,7 @@ BOOST_AUTO_TEST_CASE (movie_FoV_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (image_F_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (image_F("image_F_to_V_movie"));
+       auto range = V_movie_range (image_F("image_F_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 64);
        BOOST_CHECK_EQUAL (range.second, 960);
 }
@@ -528,7 +522,7 @@ BOOST_AUTO_TEST_CASE (image_F_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (image_FoV_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (image_FoV("image_FoV_to_V_movie"));
+       auto range = V_movie_range (image_FoV("image_FoV_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 102);
        BOOST_CHECK_EQUAL (range.second, 923);
 }
@@ -536,7 +530,7 @@ BOOST_AUTO_TEST_CASE (image_FoV_to_V_movie)
 
 BOOST_AUTO_TEST_CASE (dcp_F_to_V_movie)
 {
-       pair<int, int> range = V_movie_range (dcp_F("dcp_F_to_V_movie"));
+       auto range = V_movie_range (dcp_F("dcp_F_to_V_movie"));
        BOOST_CHECK_EQUAL (range.first, 64);
        BOOST_CHECK_EQUAL (range.second, 944);
 }