diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-12-21 21:01:16 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-12-21 21:01:16 +0100 |
| commit | 7f889df4cac6c0cf08400f0212a0e74909f6c29f (patch) | |
| tree | 7847734eb0cbf649da40de2764c5b0b2751648f7 /src/lib | |
| parent | 95ba4aff616a9e0c6ca85e7a3c86a5606afa2e45 (diff) | |
Fix trimming of ATMOS MXFs.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/player.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index d35292a56..f7b75babc 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -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); } |
