summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-02-18 23:36:10 +0100
committerCarl Hetherington <cth@carlh.net>2024-02-19 09:54:43 +0100
commit167ff6413dcc32680b2b778303f659656c2a51df (patch)
tree757df02b914e53d89d49ae3cd3300e8568942ff1 /src
parentd36b320c0a3d0ba0951eea486578275b3738a687 (diff)
Reset _next_video_time when deciding to emit black.
Otherwise if we inaccurately seek into an area with no video there will never be any content coming into ::video() which could reset _next_video_time. Then when a black frame is emitted using emit_video_until we will emit black frames from time 0 to the time of the inaccurate seek.
Diffstat (limited to 'src')
-rw-r--r--src/lib/player.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 6f9b70d0a..03935a46b 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -774,6 +774,12 @@ Player::pass ()
}
case BLACK:
LOG_DEBUG_PLAYER ("Emit black for gap at %1", to_string(_black.position()));
+ if (!_next_video_time) {
+ /* Deciding to emit black has the same effect as getting some video from the content
+ * when we are inaccurately seeking.
+ */
+ _next_video_time = _black.position();
+ }
if (film->three_d()) {
use_video(black_player_video_frame(Eyes::LEFT), _black.position(), _black.period_at_position().to);
use_video(black_player_video_frame(Eyes::RIGHT), _black.position(), _black.period_at_position().to);