diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-05-04 23:37:27 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-05-07 09:29:59 +0200 |
| commit | e30651029c7d184ab7bbbd7a6f01d03c0c0ddf7f (patch) | |
| tree | 5509bb4bc2f1f700aca5b7fed2cbc2a59bbcc20d | |
| parent | 03ef908bc10616dc7f2b26108b87aa11bd482b5c (diff) | |
Move some checks from Player to Piece.
| -rw-r--r-- | src/lib/piece.cc | 23 | ||||
| -rw-r--r-- | src/lib/piece.h | 2 | ||||
| -rw-r--r-- | src/lib/player.cc | 14 |
3 files changed, 16 insertions, 23 deletions
diff --git a/src/lib/piece.cc b/src/lib/piece.cc index 65699a47b..7c360fbe8 100644 --- a/src/lib/piece.cc +++ b/src/lib/piece.cc @@ -86,7 +86,21 @@ Piece::Piece (weak_ptr<const Film> film, shared_ptr<Content> content, shared_ptr void Piece::video (shared_ptr<const ImageProxy> image, Frame frame, Eyes eyes, Part part) { - Video (PieceVideo(image, frame, content_video_to_dcp(frame), eyes, part)); + if (!use_video()) { + return; + } + + if (_frc.skip && (frame % 2) == 1) { + return; + } + + auto const time = content_video_to_dcp (frame); + + if (_ignore_video && _ignore_video->contains(time)) { + return; + } + + Video (PieceVideo(image, frame, time, eyes, part)); } @@ -389,13 +403,6 @@ Piece::fonts () const } -bool -Piece::ignore_video_at (DCPTime time) const -{ - return _ignore_video && _ignore_video->contains(time); -} - - DCPTimePeriod Piece::period () const { diff --git a/src/lib/piece.h b/src/lib/piece.h index 7abacbef7..e3e7ee5bb 100644 --- a/src/lib/piece.h +++ b/src/lib/piece.h @@ -84,8 +84,6 @@ public: _ignore_video = period; } - bool ignore_video_at (dcpomatic::DCPTime time) const; - boost::signals2::signal<void (PieceVideo)> Video; boost::signals2::signal<void (PieceAudio)> Audio; boost::signals2::signal<void (PieceBitmapTextStart)> BitmapTextStart; diff --git a/src/lib/player.cc b/src/lib/player.cc index 35a08629e..6261b200a 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -812,15 +812,6 @@ Player::video (weak_ptr<Piece> wp, PieceVideo video) return; } - if (!piece->use_video()) { - return; - } - - auto frc = piece->frame_rate_change(); - if (frc.skip && (video.frame % 2) == 1) { - return; - } - LOG_DEBUG_PLAYER("Received video frame %1 at %2", video.frame, to_string(video.time)); /* Discard if it's before the content's period or the last accurate seek. We can't discard @@ -831,10 +822,6 @@ Player::video (weak_ptr<Piece> wp, PieceVideo video) return; } - if (piece->ignore_video_at(video.time)) { - return; - } - /* Fill gaps that we discover now that we have some video which needs to be emitted. This is where we need to fill to. */ @@ -890,6 +877,7 @@ Player::video (weak_ptr<Piece> wp, PieceVideo video) _last_video[wp] = piece->player_video (video, _video_container_size); DCPTime t = video.time; + auto const frc = piece->frame_rate_change(); for (int i = 0; i < frc.repeat; ++i) { if (t < piece->end()) { emit_video (_last_video[wp], t); |
