Fix call to Image::compare; it returns false if images are identical.
[dcpomatic.git] / test / test.cc
index 081a13a8cd93e07de09e5f25034dfa3c6e8c5ed5..0c2f324e05de99126375bba104bd508cb23091d9 100644 (file)
@@ -236,7 +236,11 @@ check_image (boost::filesystem::path ref, boost::filesystem::path check)
        ref_image.read (ref.string ());
        Magick::Image check_image;
        check_image.read (check.string ());
-       BOOST_CHECK_MESSAGE (ref_image.compare (check_image), ref << " differs from " << check);
+       BOOST_CHECK_MESSAGE (
+               !ref_image.compare(check_image),
+               ref << " differs from " << check << " "
+                   << ref_image.meanErrorPerPixel() << " " << ref_image.normalizedMaxError() << " " << ref_image.normalizedMeanError()
+               );
 }
 
 void
@@ -422,30 +426,11 @@ write_image (shared_ptr<const Image> image, boost::filesystem::path file, string
        m.write (file.string ());
 }
 
-static
-void
-check_ffmpeg_stream (boost::filesystem::path ref, boost::filesystem::path check, string stream)
-{
-       FILE* ref_file = popen(string("ffmpeg -loglevel error -i " + ref.string() + " -map 0:" + stream + " -f md5 -").c_str(), "r");
-       BOOST_REQUIRE (ref_file);
-       char ref_md5[64];
-       fscanf (ref_file, "%63s", ref_md5);
-       pclose (ref_file);
-
-       FILE* check_file = popen(string("ffmpeg -loglevel error -i " + check.string() + " -map 0:" + stream + " -f md5 -").c_str(), "r");
-       BOOST_REQUIRE (check_file);
-       char check_md5[64];
-       fscanf (check_file, "%63s", check_md5);
-       pclose (check_file);
-
-       BOOST_REQUIRE_EQUAL (strcmp(ref_md5, check_md5), 0);
-}
-
 void
 check_ffmpeg (boost::filesystem::path ref, boost::filesystem::path check)
 {
-       check_ffmpeg_stream (ref, check, "v");
-       check_ffmpeg_stream (ref, check, "a");
+       int const r = system (string("ffcmp " + ref.string() + " " + check.string()).c_str());
+       BOOST_REQUIRE_EQUAL (WEXITSTATUS(r), 0);
 }
 
 void