Add Piece::use_video().
authorCarl Hetherington <cth@carlh.net>
Fri, 23 Apr 2021 20:42:19 +0000 (22:42 +0200)
committerCarl Hetherington <cth@carlh.net>
Fri, 7 May 2021 07:29:58 +0000 (09:29 +0200)
src/lib/piece.cc
src/lib/piece.h
src/lib/player.cc

index 3656cfe1a5daf9cdd4bb103a39f0b5c4b4eb75a4..877ba6e8b269ac63360646876ddd3394bd7218ad 100644 (file)
@@ -23,6 +23,7 @@
 #include "content.h"
 #include "film.h"
 #include "piece.h"
+#include "video_content.h"
 
 
 using std::shared_ptr;
@@ -103,3 +104,11 @@ Piece::content_time_to_dcp (ContentTime t) const
 {
        return max (DCPTime(), DCPTime(t - content->trim_start(), frc) + content->position());
 }
+
+
+bool
+Piece::use_video () const
+{
+       return content->video && content->video->use();
+}
+
index 7d04b8c2119a12ab0aa703da7819e637eaa9a333..b9a43500c0f7e4889ceba7ce7be3079086d76423 100644 (file)
@@ -47,6 +47,8 @@ public:
        dcpomatic::ContentTime dcp_to_content_time (dcpomatic::DCPTime t, std::shared_ptr<const Film> film) const;
        dcpomatic::DCPTime content_time_to_dcp (dcpomatic::ContentTime t) const;
 
+       bool use_video () const;
+
        std::shared_ptr<Content> content;
        std::shared_ptr<Decoder> decoder;
        boost::optional<dcpomatic::DCPTimePeriod> ignore_video;
index 1f7d1ac1d14070aced19a470749c9d8a56cd8ecd..646f7d5825d66ea861de4c99b25e9213440d10d3 100644 (file)
@@ -258,16 +258,14 @@ Player::setup_pieces_unlocked ()
        }
 
        for (auto i = _pieces.begin(); i != _pieces.end(); ++i) {
-               if (auto video = (*i)->content->video) {
-                       if (video->use() && video->frame_type() != VideoFrameType::THREE_D_LEFT && 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)->content->position(), (*i)->content->end(_film));
-                               auto j = i;
-                               ++j;
-                               for (; j != _pieces.end(); ++j) {
-                                       if ((*j)->content->video && (*j)->content->video->use()) {
-                                               (*i)->ignore_video = DCPTimePeriod((*j)->content->position(), (*j)->content->end(_film)).overlap(period);
-                                       }
+               if ((*i)->use_video() && (*i)->content->video->frame_type() != VideoFrameType::THREE_D_LEFT && (*i)->content->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)->content->position(), (*i)->content->end(_film));
+                       auto j = i;
+                       ++j;
+                       for (; j != _pieces.end(); ++j) {
+                               if ((*j)->use_video()) {
+                                       (*i)->ignore_video = DCPTimePeriod((*j)->content->position(), (*j)->content->end(_film)).overlap(period);
                                }
                        }
                }
@@ -772,7 +770,7 @@ Player::video (weak_ptr<Piece> wp, ContentVideo video)
                return;
        }
 
-       if (!piece->content->video->use()) {
+       if (!piece->use_video()) {
                return;
        }