summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/common.cc30
-rw-r--r--tools/common.h6
-rw-r--r--tools/dcpdiff.cc3
-rw-r--r--tools/dcpinfo.cc3
-rw-r--r--tools/dcpverify.cc5
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 (&notes);
- 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;