X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Freel_writer.cc;h=da79dfc048dc427478efa6145a9281030e296bfc;hb=0c4ec68f554996b4321cd0c0c6a80d9b6c9df321;hp=d742818ae08849bfe81e191c3f922deb01a3b6c0;hpb=80ce3f0bfcc13a403b22c888c28bcee10f125ece;p=dcpomatic.git diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index d742818ae..da79dfc04 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -88,6 +88,7 @@ ReelWriter::ReelWriter ( if (_film->encrypted ()) { _picture_asset->set_key (_film->key ()); + _picture_asset->set_context_id (_film->context_id ()); } _picture_asset->set_file ( @@ -130,7 +131,20 @@ ReelWriter::write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const { FILE* file = 0; boost::filesystem::path info_file = _film->info_file (_period); + bool const read = boost::filesystem::exists (info_file); + +#ifdef DCPOMATIC_WINDOWS + if (read) { + LOG_GENERAL ( + "Checked %1 (which exists) length is %2 perms are %3", + info_file, boost::filesystem::file_size (info_file), int(boost::filesystem::status(info_file).permissions()) + ); + } else { + LOG_GENERAL ("Checked %1 (which does not exist)", info_file); + } +#endif + if (read) { file = fopen_boost (info_file, "r+b"); } else { @@ -262,6 +276,7 @@ ReelWriter::finish () { if (!_picture_asset_writer->finalize ()) { /* Nothing was written to the picture asset */ + LOG_GENERAL ("Nothing was written to reel %1 of %2", _reel_index, _reel_count); _picture_asset.reset (); } @@ -330,16 +345,23 @@ ReelWriter::create_reel (list const & refs, list k = dynamic_pointer_cast (j.asset); + if (k) { + LOG_GENERAL ("candidate picture asset period is %1-%2", j.period.from.get(), j.period.to.get()); + } if (k && j.period == _period) { reel_picture_asset = k; } } } + LOG_GENERAL ("create_reel for %1-%2; %3 of %4", _period.from.get(), _period.to.get(), _reel_index, _reel_count); + DCPOMATIC_ASSERT (reel_picture_asset); + DCPOMATIC_ASSERT (reel_picture_asset->duration() == _period.duration().frames_round (_film->video_frame_rate ())); reel->add (reel_picture_asset); /* If we have a hash for this asset in the CPL, assume that it is correct */ @@ -347,15 +369,17 @@ ReelWriter::create_reel (list const & refs, listasset_ref()->set_hash (reel_picture_asset->hash().get()); } + shared_ptr reel_sound_asset; + if (_sound_asset) { /* We have made a sound asset of our own. Put it into the reel */ - reel->add (shared_ptr (new dcp::ReelSoundAsset (_sound_asset, 0))); + reel_sound_asset.reset (new dcp::ReelSoundAsset (_sound_asset, 0)); } else { /* We don't have a sound asset of our own; hopefully we have one to reference */ BOOST_FOREACH (ReferencedReelAsset j, refs) { shared_ptr k = dynamic_pointer_cast (j.asset); if (k && j.period == _period) { - reel->add (k); + reel_sound_asset = k; /* If we have a hash for this asset in the CPL, assume that it is correct */ if (k->hash()) { k->asset_ref()->set_hash (k->hash().get()); @@ -364,6 +388,12 @@ ReelWriter::create_reel (list const & refs, listduration() == _period.duration().frames_round (_film->video_frame_rate ())); + reel->add (reel_sound_asset); + + shared_ptr reel_subtitle_asset; + if (_subtitle_asset) { boost::filesystem::path liberation_normal; @@ -404,20 +434,20 @@ ReelWriter::create_reel (list const & refs, listadd (shared_ptr ( - new dcp::ReelSubtitleAsset ( - _subtitle_asset, - dcp::Fraction (_film->video_frame_rate(), 1), - reel_picture_asset->intrinsic_duration (), - 0 - ) - )); + reel_subtitle_asset.reset ( + new dcp::ReelSubtitleAsset ( + _subtitle_asset, + dcp::Fraction (_film->video_frame_rate(), 1), + reel_picture_asset->intrinsic_duration (), + 0 + ) + ); } else { /* We don't have a subtitle asset of our own; hopefully we have one to reference */ BOOST_FOREACH (ReferencedReelAsset j, refs) { shared_ptr k = dynamic_pointer_cast (j.asset); if (k && j.period == _period) { - reel->add (k); + reel_subtitle_asset = k; /* If we have a hash for this asset in the CPL, assume that it is correct */ if (k->hash()) { k->asset_ref()->set_hash (k->hash().get()); @@ -426,6 +456,11 @@ ReelWriter::create_reel (list const & refs, listduration() == _period.duration().frames_round (_film->video_frame_rate ())); + reel->add (reel_subtitle_asset); + } + return reel; } @@ -459,7 +494,7 @@ ReelWriter::write (shared_ptr audio) _sound_asset_writer->write (audio->data(), audio->frames()); } - ++_total_written_audio_frames; + _total_written_audio_frames += audio->frames (); } void