X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Flib%2Freel_writer.cc;h=da79dfc048dc427478efa6145a9281030e296bfc;hb=0c4ec68f554996b4321cd0c0c6a80d9b6c9df321;hp=bf232579f1c2b960b92edfde9996e27a7d883374;hpb=83efe84020dc0ba2801c4b305448790720fe133f;p=dcpomatic.git diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index bf232579f..da79dfc04 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -345,9 +345,13 @@ 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; } @@ -357,6 +361,7 @@ ReelWriter::create_reel (list const & refs, listduration() == _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 */ @@ -364,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()); @@ -381,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; @@ -421,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()); @@ -443,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; } @@ -476,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