summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-05-31 01:35:49 +0200
committerCarl Hetherington <cth@carlh.net>2023-06-02 20:54:36 +0200
commit056e3a4a7b41d4f78b73d46bba1973c5f1ffa139 (patch)
tree7c8a120b1a052088dc4411f91b3786055f7cc779 /src
parent4c5192e71b1918b5ad821084876ae45dc89ff2c4 (diff)
Cleanup: replace a nasty try/catch.
Diffstat (limited to 'src')
-rw-r--r--src/verify.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/verify.cc b/src/verify.cc
index 2e2495be..1fc9e851 100644
--- a/src/verify.cc
+++ b/src/verify.cc
@@ -853,6 +853,7 @@ verify_closed_caption_asset (
static
void
verify_text_details (
+ dcp::Standard standard,
vector<shared_ptr<Reel>> reels,
int edit_rate,
vector<VerificationNote>& notes,
@@ -954,17 +955,19 @@ verify_text_details (
shared_ptr<cxml::Document> doc;
optional<int> tcr;
optional<Time> start_time;
- try {
+ switch (standard) {
+ case dcp::Standard::INTEROP:
+ doc = make_shared<cxml::Document>("DCSubtitle");
+ doc->read_string (*reel_xml);
+ break;
+ case dcp::Standard::SMPTE:
doc = make_shared<cxml::Document>("SubtitleReel");
doc->read_string (*reel_xml);
tcr = doc->number_child<int>("TimeCodeRate");
- auto start_time_string = doc->optional_string_child("StartTime");
- if (start_time_string) {
+ if (auto start_time_string = doc->optional_string_child("StartTime")) {
start_time = Time(*start_time_string, tcr);
}
- } catch (...) {
- doc = make_shared<cxml::Document>("DCSubtitle");
- doc->read_string (*reel_xml);
+ break;
}
parse (doc, tcr, start_time, edit_rate, i == 0);
auto end = reel_offset + duration(reels[i]);
@@ -1222,14 +1225,14 @@ verify_text_lines_and_characters (
static
void
-verify_text_details (vector<shared_ptr<Reel>> reels, vector<VerificationNote>& notes)
+verify_text_details(dcp::Standard standard, vector<shared_ptr<Reel>> reels, vector<VerificationNote>& notes)
{
if (reels.empty()) {
return;
}
if (reels[0]->main_subtitle()) {
- verify_text_details (reels, reels[0]->main_subtitle()->edit_rate().numerator, notes,
+ verify_text_details(standard, reels, reels[0]->main_subtitle()->edit_rate().numerator, notes,
[](shared_ptr<Reel> reel) {
return static_cast<bool>(reel->main_subtitle());
},
@@ -1243,7 +1246,7 @@ verify_text_details (vector<shared_ptr<Reel>> reels, vector<VerificationNote>& n
}
for (auto i = 0U; i < reels[0]->closed_captions().size(); ++i) {
- verify_text_details (reels, reels[0]->closed_captions()[i]->edit_rate().numerator, notes,
+ verify_text_details(standard, reels, reels[0]->closed_captions()[i]->edit_rate().numerator, notes,
[i](shared_ptr<Reel> reel) {
return i < reel->closed_captions().size();
},
@@ -1606,7 +1609,7 @@ verify_cpl(
);
}
- verify_text_details(cpl->reels(), notes);
+ verify_text_details(dcp->standard().get_value_or(dcp::Standard::SMPTE), cpl->reels(), notes);
if (dcp->standard() == Standard::SMPTE) {
if (auto msc = cpl->main_sound_configuration()) {