Fix trimming of ATMOS MXFs.
[dcpomatic.git] / src / lib / player.cc
index d35292a56d9d362ac79fd8c2d68e5ecb0b8ce4cb..f7b75babcdc3d8f2750900a4925878b3e3f96fda 100644 (file)
@@ -1406,12 +1406,22 @@ Player::playlist () const
 
 
 void
-Player::atmos (weak_ptr<Piece>, ContentAtmos data)
+Player::atmos (weak_ptr<Piece> weak_piece, ContentAtmos data)
 {
        if (_suspended) {
                return;
        }
 
-       Atmos (data.data, DCPTime::from_frames(data.frame, _film->video_frame_rate()), data.metadata);
+       auto piece = weak_piece.lock ();
+       DCPOMATIC_ASSERT (piece);
+
+       auto const vfr = _film->video_frame_rate();
+
+       DCPTime const dcp_time = DCPTime::from_frames(data.frame, vfr) - DCPTime(piece->content->trim_start(), FrameRateChange(vfr, vfr));
+       if (dcp_time < piece->content->position() || dcp_time >= (piece->content->end(_film))) {
+               return;
+       }
+
+       Atmos (data.data, dcp_time, data.metadata);
 }