diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-10-12 15:05:09 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-10-12 15:05:09 +0100 |
| commit | f9068dcbfbb09082e29e2a779ef1a7a2f6ee849e (patch) | |
| tree | 40054a96c986c133b2edb00c7c9a127d8d36a1a2 /src/lib/writer.cc | |
| parent | bccc426dd0924bf6be63000835d7c86fd390ff59 (diff) | |
Rename split-by-video content slightly; fix referencing to multi-reel DCPs.
Diffstat (limited to 'src/lib/writer.cc')
| -rw-r--r-- | src/lib/writer.cc | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc index 53c4cc370..736dba78e 100644 --- a/src/lib/writer.cc +++ b/src/lib/writer.cc @@ -34,6 +34,7 @@ #include "version.h" #include "font.h" #include "util.h" +#include "referenced_reel_asset.h" #include <dcp/mono_picture_asset.h> #include <dcp/stereo_picture_asset.h> #include <dcp/sound_asset.h> @@ -602,11 +603,10 @@ Writer::finish () reel_picture_asset.reset (new dcp::ReelStereoPictureAsset (stereo, 0)); } } else { - /* We don't have a picture asset of our own; maybe we need to reference one */ - /* XXX: this is all a hack */ - BOOST_FOREACH (shared_ptr<dcp::ReelAsset> j, _reel_assets) { - shared_ptr<dcp::ReelPictureAsset> k = dynamic_pointer_cast<dcp::ReelPictureAsset> (j); - if (k) { + /* We don't have a picture asset of our own; hopefully we have one to reference */ + BOOST_FOREACH (ReferencedReelAsset j, _reel_assets) { + shared_ptr<dcp::ReelPictureAsset> k = dynamic_pointer_cast<dcp::ReelPictureAsset> (j.asset); + if (k && j.period == i.period) { reel_picture_asset = k; } } @@ -618,11 +618,11 @@ Writer::finish () /* We have made a sound asset of our own. Put it into the reel */ reel->add (shared_ptr<dcp::ReelSoundAsset> (new dcp::ReelSoundAsset (i.sound_asset, 0))); } else { - /* We don't have a sound asset of our own; maybe we need to reference one */ - /* XXX: this is all a hack */ - BOOST_FOREACH (shared_ptr<dcp::ReelAsset> j, _reel_assets) { - if (dynamic_pointer_cast<dcp::ReelSoundAsset> (j)) { - reel->add (j); + /* We don't have a sound asset of our own; hopefully we have one to reference */ + BOOST_FOREACH (ReferencedReelAsset j, _reel_assets) { + shared_ptr<dcp::ReelSoundAsset> k = dynamic_pointer_cast<dcp::ReelSoundAsset> (j.asset); + if (k && j.period == i.period) { + reel->add (k); } } } @@ -668,11 +668,11 @@ Writer::finish () ) )); } else { - /* We don't have a subtitle asset of our own; maybe we need to reference one */ - /* XXX: this is all a hack */ - BOOST_FOREACH (shared_ptr<dcp::ReelAsset> j, _reel_assets) { - if (dynamic_pointer_cast<dcp::ReelSubtitleAsset> (j)) { - reel->add (j); + /* We don't have a subtitle asset of our own; hopefully we have one to reference */ + BOOST_FOREACH (ReferencedReelAsset j, _reel_assets) { + shared_ptr<dcp::ReelSubtitleAsset> k = dynamic_pointer_cast<dcp::ReelSubtitleAsset> (j.asset); + if (k && j.period == i.period) { + reel->add (k); } } } @@ -911,7 +911,7 @@ Writer::read_frame_info (FILE* file, int frame, Eyes eyes) const } void -Writer::write (shared_ptr<dcp::ReelAsset> asset) +Writer::write (ReferencedReelAsset asset) { _reel_assets.push_back (asset); } |
