summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-25 21:40:14 +0200
committerCarl Hetherington <cth@carlh.net>2021-05-07 09:29:59 +0200
commite1afd317dc2660feb121eb1b2ad298c3f3a5b06b (patch)
tree26b316b284ccb655d7d7f1b4d36abb982508ba01
parentb005364b093cb92d07f36df384dd9c663a549993 (diff)
Add Piece::period().
-rw-r--r--src/lib/piece.cc7
-rw-r--r--src/lib/piece.h1
-rw-r--r--src/lib/player.cc7
3 files changed, 10 insertions, 5 deletions
diff --git a/src/lib/piece.cc b/src/lib/piece.cc
index c0d60a89c..0dbb7173c 100644
--- a/src/lib/piece.cc
+++ b/src/lib/piece.cc
@@ -269,3 +269,10 @@ Piece::ignore_video_at (DCPTime time) const
return _ignore_video && _ignore_video->contains(time);
}
+
+DCPTimePeriod
+Piece::period (shared_ptr<const Film> film) const
+{
+ return DCPTimePeriod(position(), end(film));
+}
+
diff --git a/src/lib/piece.h b/src/lib/piece.h
index cac059b80..f242ad6bf 100644
--- a/src/lib/piece.h
+++ b/src/lib/piece.h
@@ -62,6 +62,7 @@ public:
dcpomatic::DCPTime position () const;
dcpomatic::DCPTime end (std::shared_ptr<const Film> film) const;
+ dcpomatic::DCPTimePeriod period (std::shared_ptr<const Film> film) const;
std::shared_ptr<PlayerVideo> player_video (ContentVideo video, std::shared_ptr<const Film> film, dcp::Size container_size) const;
diff --git a/src/lib/player.cc b/src/lib/player.cc
index acf0e0e61..934821449 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -261,12 +261,9 @@ Player::setup_pieces_unlocked ()
for (auto i = _pieces.begin(); i != _pieces.end(); ++i) {
if ((*i)->use_video() && (*i)->video_frame_type() != VideoFrameType::THREE_D_LEFT && (*i)->video_frame_type() != VideoFrameType::THREE_D_RIGHT) {
/* Look for content later in the content list with in-use video that overlaps this */
- auto period = DCPTimePeriod((*i)->position(), (*i)->end(_film));
- auto j = i;
- ++j;
- for (; j != _pieces.end(); ++j) {
+ for (auto j = std::next(i); j != _pieces.end(); ++j) {
if ((*j)->use_video()) {
- (*i)->set_ignore_video (DCPTimePeriod((*j)->position(), (*j)->end(_film)).overlap(period));
+ (*i)->set_ignore_video ((*j)->period(_film).overlap((*i)->period(_film)));
}
}
}