Move time calculation methods.
authorCarl Hetherington <cth@carlh.net>
Tue, 23 Jun 2020 20:48:29 +0000 (22:48 +0200)
committerCarl Hetherington <cth@carlh.net>
Tue, 1 Dec 2020 15:38:52 +0000 (16:38 +0100)
src/lib/piece.h
src/lib/player.cc
src/lib/player.h

index 0adc8fb32454894ea2e7758f6a0dccea1d106cdb..deeecfa2f82ce7f77f5ecc7efc77634a48d03f98 100644 (file)
@@ -40,6 +40,11 @@ public:
        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 resampled_audio_to_dcp (boost::shared_ptr<const Film> film, Frame f) const;
+       dcpomatic::ContentTime dcp_to_content_time (boost::shared_ptr<const Film> film, dcpomatic::DCPTime t) const;
+       dcpomatic::DCPTime content_time_to_dcp (dcpomatic::ContentTime t) const;
+
 private:
        std::vector<boost::shared_ptr<Content> > _content;
        std::vector<boost::shared_ptr<Decoder> > _decoder;
index 5e04271e271ede17bb8adf54ab5a4a4c4ceec2e4..2aa23bc1588f66599d07482d7f64a4009589e6fe 100644 (file)
@@ -387,44 +387,6 @@ Player::black_player_video_frame (Eyes eyes) const
 }
 
 
-DCPTime
-Player::content_video_to_dcp (shared_ptr<const Piece> piece, 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 * piece->frc.factor(), piece->frc.dcp) - DCPTime(piece->content->trim_start(), piece->frc);
-       return d + piece->position();
-}
-
-
-DCPTime
-Player::resampled_audio_to_dcp (shared_ptr<const Piece> piece, Frame f) const
-{
-       /* See comment in dcp_to_content_video */
-       return DCPTime::from_frames (f, _film->audio_frame_rate())
-               - DCPTime (piece->content->trim_start(), piece->frc)
-               + piece->position();
-}
-
-ContentTime
-Player::dcp_to_content_time (shared_ptr<const Piece> piece, DCPTime t) const
-{
-       DCPTime s = t - piece->position ();
-       s = min (piece->content->length_after_trim(_film), s);
-       return max (ContentTime (), ContentTime (s, piece->frc) + piece->content->trim_start());
-}
-
-DCPTime
-Player::content_time_to_dcp (shared_ptr<const Piece> piece, ContentTime t) const
-{
-       return max (DCPTime (), DCPTime (t - piece->content->trim_start(), piece->frc) + piece->position());
-}
-
 list<shared_ptr<Font> >
 Player::get_subtitle_fonts ()
 {
index eb1f34f5988a04d939b844697a9a70c2cf7c4d0c..eb1b4ea3607b199ead73e0cbbf9b775e96ca7700 100644 (file)
@@ -126,10 +126,6 @@ private:
        void film_change (ChangeType, Film::Property);
        void playlist_change (ChangeType);
        void playlist_content_change (ChangeType, int, bool);
-       dcpomatic::DCPTime content_video_to_dcp (boost::shared_ptr<const Piece> piece, Frame f) const;
-       dcpomatic::DCPTime resampled_audio_to_dcp (boost::shared_ptr<const Piece> piece, Frame f) const;
-       dcpomatic::ContentTime dcp_to_content_time (boost::shared_ptr<const Piece> piece, dcpomatic::DCPTime t) const;
-       dcpomatic::DCPTime content_time_to_dcp (boost::shared_ptr<const Piece> piece, dcpomatic::ContentTime t) const;
        boost::shared_ptr<PlayerVideo> black_player_video_frame (Eyes eyes) const;
 
        void video (boost::weak_ptr<Piece>, ContentVideo);