summaryrefslogtreecommitdiff
path: root/src/smpte_subtitle_asset.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-05-27 11:45:11 +0200
committerCarl Hetherington <cth@carlh.net>2021-05-27 11:45:11 +0200
commitc1d32ccfc586d0292ca4ec35a03fb403c3c45a07 (patch)
treecc9d6f45d6c6d8d76197486d1aa3eca7e72986c5 /src/smpte_subtitle_asset.cc
parent3e866abeee4de737a04719ff8ab6c6bf46bb4d74 (diff)
Read the bits we can from the MXF header even when it is encrypted.
Diffstat (limited to 'src/smpte_subtitle_asset.cc')
-rw-r--r--src/smpte_subtitle_asset.cc17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/smpte_subtitle_asset.cc b/src/smpte_subtitle_asset.cc
index 0fa315b9..dc8acf51 100644
--- a/src/smpte_subtitle_asset.cc
+++ b/src/smpte_subtitle_asset.cc
@@ -106,7 +106,10 @@ SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file)
reader->ReadTimedTextResource (_raw_xml);
xml->read_string (_raw_xml);
parse_xml (xml);
- read_mxf_descriptor (reader, make_shared<DecryptionContext>(optional<Key>(), Standard::SMPTE));
+ read_mxf_descriptor (reader);
+ read_mxf_resources (reader, make_shared<DecryptionContext>(optional<Key>(), Standard::SMPTE));
+ } else {
+ read_mxf_descriptor (reader);
}
} else {
/* Plain XML */
@@ -202,7 +205,7 @@ SMPTESubtitleAsset::parse_xml (shared_ptr<cxml::Document> xml)
void
-SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr<ASDCP::TimedText::MXFReader> reader, shared_ptr<DecryptionContext> dec)
+SMPTESubtitleAsset::read_mxf_resources (shared_ptr<ASDCP::TimedText::MXFReader> reader, shared_ptr<DecryptionContext> dec)
{
ASDCP::TimedText::TimedTextDescriptor descriptor;
reader->FillTimedTextDescriptor (descriptor);
@@ -253,6 +256,14 @@ SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr<ASDCP::TimedText::MXFReader>
break;
}
}
+}
+
+
+void
+SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr<ASDCP::TimedText::MXFReader> reader)
+{
+ ASDCP::TimedText::TimedTextDescriptor descriptor;
+ reader->FillTimedTextDescriptor (descriptor);
_intrinsic_duration = descriptor.ContainerDuration;
/* The thing which is called AssetID in the descriptor is also known as the
@@ -300,7 +311,7 @@ SMPTESubtitleAsset::set_key (Key key)
auto xml = make_shared<cxml::Document>("SubtitleReel");
xml->read_string (_raw_xml);
parse_xml (xml);
- read_mxf_descriptor (reader, dec);
+ read_mxf_resources (reader, dec);
}