diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-05-27 11:45:11 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-05-27 11:45:11 +0200 |
| commit | c1d32ccfc586d0292ca4ec35a03fb403c3c45a07 (patch) | |
| tree | cc9d6f45d6c6d8d76197486d1aa3eca7e72986c5 /src | |
| parent | 3e866abeee4de737a04719ff8ab6c6bf46bb4d74 (diff) | |
Read the bits we can from the MXF header even when it is encrypted.
Diffstat (limited to 'src')
| -rw-r--r-- | src/smpte_subtitle_asset.cc | 17 | ||||
| -rw-r--r-- | src/smpte_subtitle_asset.h | 5 |
2 files changed, 17 insertions, 5 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); } diff --git a/src/smpte_subtitle_asset.h b/src/smpte_subtitle_asset.h index 1ece2405..f63392c7 100644 --- a/src/smpte_subtitle_asset.h +++ b/src/smpte_subtitle_asset.h @@ -180,7 +180,7 @@ public: return _xml_id; } - /** @return ResourceID read from the MXF, if there was one */ + /** @return ResourceID read from any MXF that was read */ boost::optional<std::string> resource_id () const { return _resource_id; } @@ -204,7 +204,8 @@ private: void read_fonts (std::shared_ptr<ASDCP::TimedText::MXFReader>); void parse_xml (std::shared_ptr<cxml::Document> xml); - void read_mxf_descriptor (std::shared_ptr<ASDCP::TimedText::MXFReader> reader, std::shared_ptr<DecryptionContext> dec); + void read_mxf_descriptor (std::shared_ptr<ASDCP::TimedText::MXFReader> reader); + void read_mxf_resources (std::shared_ptr<ASDCP::TimedText::MXFReader> reader, std::shared_ptr<DecryptionContext> dec); /** The total length of this content in video frames. The amount of * content presented may be less than this. |
