diff options
| -rw-r--r-- | tools/common.cc | 30 | ||||
| -rw-r--r-- | tools/common.h | 6 | ||||
| -rw-r--r-- | tools/dcpdiff.cc | 3 | ||||
| -rw-r--r-- | tools/dcpinfo.cc | 3 | ||||
| -rw-r--r-- | tools/dcpverify.cc | 5 |
5 files changed, 27 insertions, 20 deletions
diff --git a/tools/common.cc b/tools/common.cc index 030a2ce7..64a1eaf7 100644 --- a/tools/common.cc +++ b/tools/common.cc @@ -40,20 +40,28 @@ using std::shared_ptr; using std::vector; -void -dcp::filter_notes (vector<dcp::VerificationNote>& notes, bool ignore_missing_assets) +vector<dcp::VerificationNote> +dcp::filter_notes(vector<dcp::VerificationNote> const& notes, bool ignore_missing_assets, bool ignore_bv21_smpte) { - if (!ignore_missing_assets) { - return; - } - vector<dcp::VerificationNote> filtered; - std::copy_if (notes.begin(), notes.end(), std::back_inserter(filtered), [](dcp::VerificationNote const& i) { - return i.code() != dcp::VerificationNote::Code::MISSING_ASSET && - i.code() != dcp::VerificationNote::Code::EXTERNAL_ASSET && - i.code() != dcp::VerificationNote::Code::MISSING_FONT; + std::copy_if(notes.begin(), notes.end(), std::back_inserter(filtered), [ignore_missing_assets, ignore_bv21_smpte](dcp::VerificationNote const& i) { + bool const missing = ( + i.code() == dcp::VerificationNote::Code::MISSING_ASSET || + i.code() == dcp::VerificationNote::Code::EXTERNAL_ASSET || + i.code() == dcp::VerificationNote::Code::MISSING_FONT + ); + + if (ignore_missing_assets && missing) { + return false; + } + + if (ignore_bv21_smpte && i.code() == dcp::VerificationNote::Code::INVALID_STANDARD) { + return false; + } + + return true; }); - notes = filtered; + return filtered; } diff --git a/tools/common.h b/tools/common.h index dc8d115c..153b1fed 100644 --- a/tools/common.h +++ b/tools/common.h @@ -21,6 +21,10 @@ namespace dcp { -extern void filter_notes (std::vector<dcp::VerificationNote>& notes, bool ignore_missing_assets); +extern std::vector<dcp::VerificationNote> filter_notes( + std::vector<dcp::VerificationNote> const& notes, + bool ignore_missing_assets, + bool ignore_bv21_smpte + ); } diff --git a/tools/dcpdiff.cc b/tools/dcpdiff.cc index bce87393..b170e9d0 100644 --- a/tools/dcpdiff.cc +++ b/tools/dcpdiff.cc @@ -102,8 +102,7 @@ load_dcp (boost::filesystem::path path, bool ignore_missing_assets, optional<str dcp = new DCP (path); vector<dcp::VerificationNote> notes; dcp->read (¬es); - filter_notes (notes, ignore_missing_assets); - for (auto i: notes) { + for (auto i: dcp::filter_notes(notes, ignore_missing_assets, false)) { cerr << dcp::note_to_string(i) << "\n"; } diff --git a/tools/dcpinfo.cc b/tools/dcpinfo.cc index 8a7f738e..61782c14 100644 --- a/tools/dcpinfo.cc +++ b/tools/dcpinfo.cc @@ -386,8 +386,7 @@ main (int argc, char* argv[]) OUTPUT_DCP_PATH("DCP: %1\n", boost::filesystem::path(argv[optind]).string()); - dcp::filter_notes (notes, ignore_missing_assets); - for (auto i: notes) { + for (auto i: dcp::filter_notes(notes, ignore_missing_assets, false)) { cerr << "Error: " << note_to_string(i) << "\n"; } diff --git a/tools/dcpverify.cc b/tools/dcpverify.cc index 232b8ea4..59727895 100644 --- a/tools/dcpverify.cc +++ b/tools/dcpverify.cc @@ -185,7 +185,7 @@ main (int argc, char* argv[]) vector<boost::filesystem::path> directories; directories.push_back (argv[optind]); auto result = dcp::verify(directories, {}, stage, progress, verification_options); - dcp::filter_notes(result.notes, ignore_missing_assets); + result.notes = dcp::filter_notes(result.notes, ignore_missing_assets, ignore_bv21_smpte); if (!quiet) { cout << "\n"; @@ -195,9 +195,6 @@ main (int argc, char* argv[]) bool bv21_failed = false; bool warned = false; for (auto i: result.notes) { - if (ignore_bv21_smpte && i.code() == dcp::VerificationNote::Code::INVALID_STANDARD) { - continue; - } switch (i.type()) { case dcp::VerificationNote::Type::OK: break; |
