summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-05-03 16:12:50 +0100
committerCarl Hetherington <cth@carlh.net>2013-05-03 16:12:50 +0100
commit8c7829cd20778082a7a5ea612639c313f3006faa (patch)
tree8ed057f8ee4d110ad2b3c81b1a701db597de59f0
parent568d433830710baa7b0c64a5b7491758beb95b1c (diff)
A few tweaks to dcpdiff.
-rw-r--r--src/picture_asset.cc13
-rw-r--r--tools/dcpdiff.cc24
2 files changed, 26 insertions, 11 deletions
diff --git a/src/picture_asset.cc b/src/picture_asset.cc
index f2982b47..a505dc63 100644
--- a/src/picture_asset.cc
+++ b/src/picture_asset.cc
@@ -364,13 +364,18 @@ PictureAsset::frame_buffer_equals (
double const std_dev = sqrt (double (total_squared_deviation) / abs_diffs.size());
- if (mean > opt.max_mean_pixel_error || std_dev > opt.max_std_dev_pixel_error) {
- note (ERROR, "mean or standard deviation out of range for " + lexical_cast<string>(frame));
+ note (NOTE, "mean difference " + lexical_cast<string> (mean) + ", deviation " + lexical_cast<string> (std_dev));
+
+ if (mean > opt.max_mean_pixel_error) {
+ note (ERROR, "mean " + lexical_cast<string>(mean) + " out of range " + lexical_cast<string>(opt.max_mean_pixel_error) + " in frame " + lexical_cast<string>(frame));
+ return false;
+ }
+
+ if (std_dev > opt.max_std_dev_pixel_error) {
+ note (ERROR, "standard deviation " + lexical_cast<string>(std_dev) + " out of range " + lexical_cast<string>(opt.max_std_dev_pixel_error) + " in frame " + lexical_cast<string>(frame));
return false;
}
- note (NOTE, "mean difference " + lexical_cast<string> (mean) + ", deviation " + lexical_cast<string> (std_dev));
-
opj_image_destroy (image_A);
opj_image_destroy (image_B);
diff --git a/tools/dcpdiff.cc b/tools/dcpdiff.cc
index 490059aa..b361b93a 100644
--- a/tools/dcpdiff.cc
+++ b/tools/dcpdiff.cc
@@ -14,10 +14,12 @@ static void
help (string n)
{
cerr << "Syntax: " << n << " [OPTION] <DCP> <DCP>\n"
- << " -V, --version show libdcp version\n"
- << " -h, --help show this help\n"
- << " -v, --verbose be verbose\n"
- << " -n, --names allow differing MXF names\n"
+ << " -V, --version show libdcp version\n"
+ << " -h, --help show this help\n"
+ << " -v, --verbose be verbose\n"
+ << " -n, --names allow differing MXF names\n"
+ << " -m, --mean-pixel maximum allowed mean pixel error (default 5)\n"
+ << " -s, --std-dev-pixel maximum allowed standard deviation of pixel error (default 5)\n"
<< "\n"
<< "The <DCP>s are the DCP directories to compare.\n"
<< "Comparison is of metadata and content, ignoring timestamps\n"
@@ -36,6 +38,8 @@ int
main (int argc, char* argv[])
{
EqualityOptions options;
+ options.max_mean_pixel_error = 5;
+ options.max_std_dev_pixel_error = 5;
int option_index = 0;
while (1) {
@@ -44,10 +48,12 @@ main (int argc, char* argv[])
{ "help", no_argument, 0, 'h'},
{ "verbose", no_argument, 0, 'v'},
{ "names", no_argument, 0, 'n'},
+ { "mean-pixel", required_argument, 0, 'm'},
+ { "std-dev-pixel", required_argument, 0, 's'},
{ 0, 0, 0, 0 }
};
- int c = getopt_long (argc, argv, "Vhvn", long_options, &option_index);
+ int c = getopt_long (argc, argv, "Vhvnm:s:", long_options, &option_index);
if (c == -1) {
break;
@@ -66,6 +72,12 @@ main (int argc, char* argv[])
case 'n':
options.mxf_names_can_differ = true;
break;
+ case 'm':
+ options.max_mean_pixel_error = atof (optarg);
+ break;
+ case 's':
+ options.max_std_dev_pixel_error = atof (optarg);
+ break;
}
}
@@ -102,8 +114,6 @@ main (int argc, char* argv[])
exit (EXIT_FAILURE);
}
- options.max_mean_pixel_error = 5;
- options.max_std_dev_pixel_error = 5;
/* I think this is just below the LSB at 16-bits (ie the 8th most significant bit at 24-bit) */
options.max_audio_sample_error = 255;