summaryrefslogtreecommitdiff
path: root/src/dcp.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-08-22 12:32:52 +0100
committerCarl Hetherington <cth@carlh.net>2012-08-22 12:32:52 +0100
commitc70373ba74504ae39453c2a41ce1ab047fd441b4 (patch)
tree020b40133c93a797341b7a19c46c787f449cebe1 /src/dcp.cc
parentdbdef419973ea00817022a4352126925025857dd (diff)
Rough support for 3D.
Diffstat (limited to 'src/dcp.cc')
-rw-r--r--src/dcp.cc52
1 files changed, 38 insertions, 14 deletions
diff --git a/src/dcp.cc b/src/dcp.cc
index 3f04d904..767ab401 100644
--- a/src/dcp.cc
+++ b/src/dcp.cc
@@ -265,24 +265,49 @@ DCP::DCP (string directory)
_fps = 0;
for (list<shared_ptr<CPLReel> >::iterator i = cpl->reels.begin(); i != cpl->reels.end(); ++i) {
- assert (_fps == 0 || _fps == (*i)->asset_list->main_picture->frame_rate.numerator);
- _fps = (*i)->asset_list->main_picture->frame_rate.numerator;
- _length += (*i)->asset_list->main_picture->duration;
- string n = pkl->asset_from_id ((*i)->asset_list->main_picture->id)->original_file_name;
- if (n.empty ()) {
- n = (*i)->asset_list->main_picture->annotation_text;
+ shared_ptr<Picture> p;
+
+ if ((*i)->asset_list->main_picture) {
+ p = (*i)->asset_list->main_picture;
+ } else {
+ p = (*i)->asset_list->main_stereoscopic_picture;
}
- shared_ptr<PictureAsset> picture (new PictureAsset (
- _directory,
- n,
- _fps,
- (*i)->asset_list->main_picture->duration
- )
- );
+ assert (_fps == 0 || _fps == p->frame_rate.numerator);
+ _fps = p->frame_rate.numerator;
+ _length += p->duration;
+ string n = pkl->asset_from_id (p->id)->original_file_name;
+ if (n.empty ()) {
+ n = p->annotation_text;
+ }
+
+ shared_ptr<PictureAsset> picture;
shared_ptr<SoundAsset> sound;
+ shared_ptr<SubtitleAsset> subtitle;
+
+ if ((*i)->asset_list->main_picture) {
+
+ picture.reset (new MonoPictureAsset (
+ _directory,
+ n,
+ _fps,
+ (*i)->asset_list->main_picture->duration
+ )
+ );
+
+ } else if ((*i)->asset_list->main_stereoscopic_picture) {
+
+ picture.reset (new StereoPictureAsset (
+ _directory,
+ n,
+ _fps,
+ (*i)->asset_list->main_stereoscopic_picture->duration
+ )
+ );
+
+ }
if ((*i)->asset_list->main_sound) {
@@ -302,7 +327,6 @@ DCP::DCP (string directory)
assert (files.subtitles.size() < 2);
- shared_ptr<SubtitleAsset> subtitle;
if (!files.subtitles.empty ()) {
string const l = files.subtitles.front().substr (_directory.length ());
subtitle.reset (new SubtitleAsset (_directory, l));