Move some methods into piece.cc
authorCarl Hetherington <cth@carlh.net>
Mon, 22 Jun 2020 22:14:03 +0000 (00:14 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 22 Jun 2020 22:14:03 +0000 (00:14 +0200)
src/lib/piece.cc [new file with mode: 0644]
src/lib/piece.h
src/lib/wscript

diff --git a/src/lib/piece.cc b/src/lib/piece.cc
new file mode 100644 (file)
index 0000000..f3adc0a
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+    Copyright (C) 2013-2020 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "piece.h"
+
+
+using boost::shared_ptr;
+using namespace dcpomatic;
+
+
+DCPTime
+Piece::position () const
+{
+       return content->position ();
+}
+
+
+DCPTime
+Piece::end (shared_ptr<const Film> film) const
+{
+       return content->end (film);
+}
+
+
+DCPTime
+Piece::content_video_to_dcp (Frame f) const
+{
+       /* It might seem more logical here to convert s to a ContentTime (using the FrameRateChange)
+          then convert that ContentTime to frames at the content's rate.  However this fails for
+          situations like content at 29.9978733fps, DCP at 30fps.  The accuracy of the Time type is not
+          enough to distinguish between the two with low values of time (e.g. 3200 in Time units).
+
+          Instead we convert the DCPTime using the DCP video rate then account for any skip/repeat.
+          */
+       DCPTime const d = DCPTime::from_frames(f * frc.factor(), frc.dcp) - DCPTime(content->trim_start(), frc);
+       return d + position();
+}
+
+
+DCPTime
+Piece::content_time_to_dcp (ContentTime t) const
+{
+       return max (DCPTime(), DCPTime(t - content->trim_start(), frc) + position());
+}
+
+
+Crop
+Piece::video_crop () const
+{
+       return content->video->crop ();
+}
+
index 7fcf00dab05c4fbd97784bf5f7bd54033770464d..f6bf4b1b656f17eada5b3e092f6afcf621f93497 100644 (file)
@@ -40,35 +40,11 @@ public:
                , done (false)
        {}
 
-       dcpomatic::DCPTime position () const {
-               return content->position ();
-       }
-
-       dcpomatic::DCPTime end (boost::shared_ptr<const Film> film) const {
-               return content->end (film);
-       }
-
-       dcpomatic::DCPTime content_video_to_dcp (Frame f) const
-       {
-               /* It might seem more logical here to convert s to a ContentTime (using the FrameRateChange)
-                  then convert that ContentTime to frames at the content's rate.  However this fails for
-                  situations like content at 29.9978733fps, DCP at 30fps.  The accuracy of the Time type is not
-                  enough to distinguish between the two with low values of time (e.g. 3200 in Time units).
-
-                  Instead we convert the DCPTime using the DCP video rate then account for any skip/repeat.
-                  */
-               dcpomatic::DCPTime const d = dcpomatic::DCPTime::from_frames(f * frc.factor(), frc.dcp) - dcpomatic::DCPTime(content->trim_start(), frc);
-               return d + position();
-       }
-
-       dcpomatic::DCPTime content_time_to_dcp (dcpomatic::ContentTime t) const
-       {
-               return max (dcpomatic::DCPTime(), dcpomatic::DCPTime(t - content->trim_start(), frc) + position());
-       }
-
-       Crop video_crop () const {
-               return content->video->crop ();
-       }
+       dcpomatic::DCPTime position () const;
+       dcpomatic::DCPTime end (boost::shared_ptr<const Film> film) const;
+       dcpomatic::DCPTime content_video_to_dcp (Frame f) const;
+       dcpomatic::DCPTime content_time_to_dcp (dcpomatic::ContentTime t) const;
+       Crop video_crop () const;
 
        boost::shared_ptr<Content> content;
        boost::shared_ptr<Decoder> decoder;
index c2dfb55d87d32880dabaf5f1a8e36b66e923d88a..4efad9c3be4afc255cf664034844fa8a6743181d 100644 (file)
@@ -136,6 +136,7 @@ sources = """
           mid_side_decoder.cc
           monitor_checker.cc
           overlaps.cc
+          piece.cc
           player.cc
           player_text.cc
           player_video.cc