Revert "Replace _floor with _round in dcp_to_content_video. _floor breaks
authorCarl Hetherington <cth@carlh.net>
Wed, 26 Aug 2015 00:32:22 +0000 (01:32 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 26 Aug 2015 00:32:22 +0000 (01:32 +0100)
        playback on Win XP 32 as the player keeps requesting the same
        frame from the decoder rather than the next one."

This reverts commit e386b94425586760374d8e1cb16be99af09cf07f.

The actual cause of the Win XP 32 bug appears to be -ffast-math.

src/lib/player.cc

index a40c65cd54027e7a553ea416098793302f490533..d2ef1a5fffa6a6d61a6b47e187bd743a291a4f7a 100644 (file)
@@ -524,7 +524,10 @@ Player::dcp_to_content_video (shared_ptr<const Piece> piece, DCPTime t) const
        shared_ptr<const VideoContent> vc = dynamic_pointer_cast<const VideoContent> (piece->content);
        DCPTime s = t - piece->content->position ();
        s = min (piece->content->length_after_trim(), s);
-       return max (ContentTime (), ContentTime (s, piece->frc) + piece->content->trim_start ()).frames_round (vc->video_frame_rate ());
+       /* We're returning a frame index here so we need to floor() the conversion since we want to know the frame
+          that contains t, I think
+       */
+       return max (ContentTime (), ContentTime (s, piece->frc) + piece->content->trim_start ()).frames_floor (vc->video_frame_rate ());
 }
 
 DCPTime