From 4647b6190f0c6c3f048df4b4c44101f6eaef489b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 5 Jan 2015 14:14:43 +0000 Subject: Fix incorrect use of FrameRateChange::factor(); if we are skipping, for example, factor will be 0.5 and so to convert some frames in the DCP to frames in the content we must divide by factor (i.e. multiply by 2) to get the content frame. --- src/lib/player.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/lib') diff --git a/src/lib/player.cc b/src/lib/player.cc index 36b13d105..4c9042743 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -321,7 +321,7 @@ Player::get_video (DCPTime time, bool accurate) if (!_have_valid_pieces) { setup_pieces (); } - + list > ov = overlaps ( time, time + DCPTime::from_frames (1, _film->video_frame_rate ()) @@ -488,13 +488,13 @@ Player::dcp_to_content_video (shared_ptr piece, DCPTime t) const s = DCPTime (min (piece->content->length_after_trim().get(), s.get())); /* Convert this to the content frame */ - return DCPTime (s + piece->content->trim_start()).frames (_film->video_frame_rate()) * piece->frc.factor (); + return DCPTime (s + piece->content->trim_start()).frames (_film->video_frame_rate()) / piece->frc.factor (); } DCPTime Player::content_video_to_dcp (shared_ptr piece, VideoFrame f) const { - DCPTime t = DCPTime::from_frames (f / piece->frc.factor (), _film->video_frame_rate()) - piece->content->trim_start () + piece->content->position (); + DCPTime t = DCPTime::from_frames (f * piece->frc.factor (), _film->video_frame_rate()) - piece->content->trim_start () + piece->content->position (); if (t < DCPTime ()) { t = DCPTime (); } -- cgit v1.2.3