From c1d32ccfc586d0292ca4ec35a03fb403c3c45a07 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 27 May 2021 11:45:11 +0200 Subject: [PATCH] Read the bits we can from the MXF header even when it is encrypted. --- src/smpte_subtitle_asset.cc | 17 ++++++++++++++--- 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(optional(), Standard::SMPTE)); + read_mxf_descriptor (reader); + read_mxf_resources (reader, make_shared(optional(), Standard::SMPTE)); + } else { + read_mxf_descriptor (reader); } } else { /* Plain XML */ @@ -202,7 +205,7 @@ SMPTESubtitleAsset::parse_xml (shared_ptr xml) void -SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr reader, shared_ptr dec) +SMPTESubtitleAsset::read_mxf_resources (shared_ptr reader, shared_ptr dec) { ASDCP::TimedText::TimedTextDescriptor descriptor; reader->FillTimedTextDescriptor (descriptor); @@ -253,6 +256,14 @@ SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr break; } } +} + + +void +SMPTESubtitleAsset::read_mxf_descriptor (shared_ptr 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("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 resource_id () const { return _resource_id; } @@ -204,7 +204,8 @@ private: void read_fonts (std::shared_ptr); void parse_xml (std::shared_ptr xml); - void read_mxf_descriptor (std::shared_ptr reader, std::shared_ptr dec); + void read_mxf_descriptor (std::shared_ptr reader); + void read_mxf_resources (std::shared_ptr reader, std::shared_ptr dec); /** The total length of this content in video frames. The amount of * content presented may be less than this. -- 2.30.2