X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Fwriter.cc;h=fbe2d248d5c952c3112f1e5f9f7184ae3b4073c3;hb=befbada161a66a16f8ced89773ad11c0ac5c91e5;hp=8863816e868b9b92a9e2b19be5fc65e6dfa7412c;hpb=db4fde2e8983eaa0b76c49a189e059d6c9f5720d;p=dcpomatic.git 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 #include #include +#include #include +#include #include #include #include @@ -930,6 +932,22 @@ void Writer::write (ReferencedReelAsset asset) { _reel_assets.push_back (asset); + + if (dynamic_pointer_cast(asset.asset)) { + _have_subtitles = true; + } else if (auto ccap = dynamic_pointer_cast(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); + } + } }