Add Piece::period().
authorCarl Hetherington <cth@carlh.net>
Sun, 25 Apr 2021 19:40:14 +0000 (21:40 +0200)
committerCarl Hetherington <cth@carlh.net>
Fri, 7 May 2021 07:29:59 +0000 (09:29 +0200)
src/lib/piece.cc
src/lib/piece.h
src/lib/player.cc

index c0d60a89c35e9a43095b6f84579605a5464f6ad6..0dbb7173ca3cdb5546df4c740e58063ceb430622 100644 (file)
@@ -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));
+}
+
index cac059b80ee1397f38a2c7d9e0e86936a02ae463..f242ad6bf661e1139a6678144fc8d517ac12b666 100644 (file)
@@ -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;
 
index acf0e0e6156c35408a9fb772ae718a893e3a9d6b..9348214497ae4706950a329026c370f5e0760fd9 100644 (file)
@@ -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)));
                                }
                        }
                }