summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-04-01 11:34:56 +0100
committerCarl Hetherington <cth@carlh.net>2014-04-01 11:34:56 +0100
commit931fa4ef2dbfb7c9f726c4dd41eea79621b49906 (patch)
tree94e65353b71ae784ed1698c3865aaecfb8f11033 /src/lib
parent07f3a8fccdf9127b2eaf4a6f3425185dba73a23f (diff)
Don't overlap simultaneous video content in the timeline. Fix keep-aligned for separate-eye sources.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc2
-rw-r--r--src/lib/player.h2
-rw-r--r--src/lib/playlist.cc19
3 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index d05597dd5..c4558f33f 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/src/lib/player.h b/src/lib/player.h
index 11cc99e77..f7896d7d9 100644
--- a/src/lib/player.h
+++ b/src/lib/player.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc
index 608323e3b..a2bec83bb 100644
--- a/src/lib/playlist.cc
+++ b/src/lib/playlist.cc
@@ -64,7 +64,7 @@ Playlist::~Playlist ()
void
Playlist::content_changed (weak_ptr<Content> content, int property, bool frequent)
{
- if (property == ContentProperty::LENGTH) {
+ if (property == ContentProperty::LENGTH || property == VideoContentProperty::VIDEO_FRAME_TYPE) {
maybe_sequence_video ();
}
@@ -81,14 +81,21 @@ Playlist::maybe_sequence_video ()
_sequencing_video = true;
ContentList cl = _content;
- Time next = 0;
+ Time next_left = 0;
+ Time next_right = 0;
for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i) {
- if (!dynamic_pointer_cast<VideoContent> (*i)) {
+ shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
+ if (!vc) {
continue;
}
-
- (*i)->set_position (next);
- next = (*i)->end() + 1;
+
+ if (vc->video_frame_type() == VIDEO_FRAME_TYPE_3D_RIGHT) {
+ vc->set_position (next_right);
+ next_right = vc->end() + 1;
+ } else {
+ vc->set_position (next_left);
+ next_left = vc->end() + 1;
+ }
}
/* This won't change order, so it does not need a sort */