diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-12-01 14:55:54 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-12-01 14:55:54 +0000 |
| commit | 6e9b1b0ca5e839bda7b567b609cebb92a1cb95a7 (patch) | |
| tree | bf4dc5244f62e754dfbe84d45a508917f477d0e7 | |
| parent | 1a4b0d2c7978f45b415db2e9a0f1840aa114bcc9 (diff) | |
Check every picture frame when -k is passed to dcpdiff.
| -rw-r--r-- | src/mono_picture_asset.cc | 9 | ||||
| -rw-r--r-- | src/stereo_picture_asset.cc | 14 | ||||
| -rw-r--r-- | src/types.h | 2 | ||||
| -rw-r--r-- | tools/dcpdiff.cc | 8 |
4 files changed, 24 insertions, 9 deletions
diff --git a/src/mono_picture_asset.cc b/src/mono_picture_asset.cc index 91ab0d8a..f14e50c2 100644 --- a/src/mono_picture_asset.cc +++ b/src/mono_picture_asset.cc @@ -103,6 +103,8 @@ MonoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, No shared_ptr<const MonoPictureAsset> other_picture = dynamic_pointer_cast<const MonoPictureAsset> (other); DCP_ASSERT (other_picture); + bool result = true; + for (int i = 0; i < _intrinsic_duration; ++i) { if (i >= other_picture->intrinsic_duration()) { return false; @@ -117,11 +119,14 @@ MonoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, No frame_A->j2k_data(), frame_A->j2k_size(), frame_B->j2k_data(), frame_B->j2k_size() )) { - return false; + result = false; + if (!opt.keep_going) { + return result; + } } } - return true; + return result; } shared_ptr<PictureAssetWriter> diff --git a/src/stereo_picture_asset.cc b/src/stereo_picture_asset.cc index 76c353f1..e2494be6 100644 --- a/src/stereo_picture_asset.cc +++ b/src/stereo_picture_asset.cc @@ -105,6 +105,8 @@ StereoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, shared_ptr<const StereoPictureAsset> other_picture = dynamic_pointer_cast<const StereoPictureAsset> (other); DCP_ASSERT (other_picture); + bool result = true; + for (int i = 0; i < _intrinsic_duration; ++i) { shared_ptr<const StereoPictureFrame> frame_A; shared_ptr<const StereoPictureFrame> frame_B; @@ -124,7 +126,10 @@ StereoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, frame_A->left_j2k_data(), frame_A->left_j2k_size(), frame_B->left_j2k_data(), frame_B->left_j2k_size() )) { - return false; + result = false; + if (!opt.keep_going) { + return result; + } } if (!frame_buffer_equals ( @@ -132,9 +137,12 @@ StereoPictureAsset::equals (shared_ptr<const Asset> other, EqualityOptions opt, frame_A->right_j2k_data(), frame_A->right_j2k_size(), frame_B->right_j2k_data(), frame_B->right_j2k_size() )) { - return false; + result = false; + if (!opt.keep_going) { + return result; + } } } - return true; + return result; } diff --git a/src/types.h b/src/types.h index 1cd116c9..16000daa 100644 --- a/src/types.h +++ b/src/types.h @@ -166,6 +166,7 @@ struct EqualityOptions , reel_annotation_texts_can_differ (false) , reel_hashes_can_differ (false) , issue_dates_can_differ (false) + , keep_going (false) {} /** The maximum allowable mean difference in pixel value between two images */ @@ -182,6 +183,7 @@ struct EqualityOptions bool reel_hashes_can_differ; /** true if IssueDate nodes can differ */ bool issue_dates_can_differ; + bool keep_going; }; /* I've been unable to make mingw happy with ERROR as a symbol, so diff --git a/tools/dcpdiff.cc b/tools/dcpdiff.cc index a820463f..473efa45 100644 --- a/tools/dcpdiff.cc +++ b/tools/dcpdiff.cc @@ -106,7 +106,7 @@ main (int argc, char* argv[]) options.max_std_dev_pixel_error = 5; options.reel_hashes_can_differ = true; options.reel_annotation_texts_can_differ = false; - bool keep_going = false; + options.keep_going = false; bool ignore_missing_assets = false; optional<string> key; @@ -150,7 +150,7 @@ main (int argc, char* argv[]) options.max_std_dev_pixel_error = atof (optarg); break; case 'k': - keep_going = true; + options.keep_going = true; break; case 'A': ignore_missing_assets = true; @@ -183,8 +183,8 @@ main (int argc, char* argv[]) exit (EXIT_FAILURE); } - DCP* a = load_dcp (argv[optind], keep_going, ignore_missing_assets, key); - DCP* b = load_dcp (argv[optind + 1], keep_going, ignore_missing_assets, key); + DCP* a = load_dcp (argv[optind], options.keep_going, ignore_missing_assets, key); + DCP* b = load_dcp (argv[optind + 1], options.keep_going, ignore_missing_assets, key); /* 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; |
