diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-01-04 00:40:03 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-01-04 23:36:08 +0100 |
| commit | 23b0ff9c475265fb5309d20fe4094f5a96818d22 (patch) | |
| tree | fb0fcec9c1eb6c75048046e6e5240ea980060db7 | |
| parent | f5c2b918ebfe18252605a0a2ed9a26d49db3a5f5 (diff) | |
Add dummy subtitle and closed caption reels even when referencing
other DCPs (in a VF) that themselves might have missing subtitles
for some reels.
| -rw-r--r-- | src/lib/writer.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 8863816e8..fbe2d248d 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -41,7 +41,9 @@ #include <dcp/cpl.h> #include <dcp/locale_convert.h> #include <dcp/raw_convert.h> +#include <dcp/reel_closed_caption_asset.h> #include <dcp/reel_file_asset.h> +#include <dcp/reel_subtitle_asset.h> #include <cerrno> #include <cfloat> #include <set> @@ -930,6 +932,22 @@ void Writer::write (ReferencedReelAsset asset) { _reel_assets.push_back (asset); + + if (dynamic_pointer_cast<dcp::ReelSubtitleAsset>(asset.asset)) { + _have_subtitles = true; + } else if (auto ccap = dynamic_pointer_cast<dcp::ReelClosedCaptionAsset>(asset.asset)) { + /* This feels quite fragile. We have a referenced reel and want to know if it's + * part of a given closed-caption track so that we can fill if it has any + * missing reels. I guess for that purpose almost any DCPTextTrack values are + * fine so long as they are consistent. + */ + DCPTextTrack track; + track.name = ccap->annotation_text().get_value_or(""); + track.language = dcp::LanguageTag(ccap->language().get_value_or("en-US")); + if (_have_closed_captions.find(track) == _have_closed_captions.end()) { + _have_closed_captions.insert(track); + } + } } |
