- if (dynamic_pointer_cast<dcp::InteropSubtitleAsset> (_subtitle_asset)) {
- boost::filesystem::path directory = _film->dir (_film->dcp_name ()) / _subtitle_asset->id ();
- boost::filesystem::create_directories (directory);
- _subtitle_asset->write (directory / ("sub_" + _subtitle_asset->id() + ".xml"));
- } else {
- _subtitle_asset->write (
- _film->dir (_film->dcp_name ()) / ("sub_" + _subtitle_asset->id() + ".mxf")
- );
- }
-
- reel->add (shared_ptr<dcp::ReelSubtitleAsset> (
- new dcp::ReelSubtitleAsset (
- _subtitle_asset,
- dcp::Fraction (_film->video_frame_rate(), 1),
- _picture_asset->intrinsic_duration (),
- 0
- )
- ));
- }
-
- cpl->add (reel);
-
- shared_ptr<Job> job = _job.lock ();
- DCPOMATIC_ASSERT (job);
-
- job->sub (_("Computing image digest"));
- _picture_asset->hash (boost::bind (&Job::set_progress, job.get(), _1, false));
-
- if (_sound_asset) {
- job->sub (_("Computing audio digest"));
- _sound_asset->hash (boost::bind (&Job::set_progress, job.get(), _1, false));
- }
-
- dcp::XMLMetadata meta;
- meta.issuer = Config::instance()->dcp_issuer ();
- meta.creator = String::compose ("DCP-o-matic %1 %2", dcpomatic_version, dcpomatic_git_commit);
- meta.set_issue_date_now ();
-
- shared_ptr<const dcp::Signer> signer;
- if (_film->is_signed ()) {
- signer = Config::instance()->signer ();
- /* We did check earlier, but check again here to be on the safe side */
- if (!signer->valid ()) {
- throw InvalidSignerError ();
- }