From 4775971005de645dd539c7c940a699758d535c46 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 5 Apr 2018 02:41:40 +0100 Subject: Wait for in-order input to shuffler before emitting anything, otherwise we emit a crucial frame and then fail to carry on because we miss it. --- src/lib/shuffler.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/lib/shuffler.cc') diff --git a/src/lib/shuffler.cc b/src/lib/shuffler.cc index 889d81c71..9e90f180d 100644 --- a/src/lib/shuffler.cc +++ b/src/lib/shuffler.cc @@ -50,8 +50,8 @@ Shuffler::video (weak_ptr weak_piece, ContentVideo video) shared_ptr piece = weak_piece.lock (); DCPOMATIC_ASSERT (piece); - if (!_last) { - /* We haven't seen anything since the last clear() so assume everything is OK */ + if (!_last && video.eyes == EYES_LEFT) { + /* We haven't seen anything since the last clear() and we have some eyes-left so assume everything is OK */ Video (weak_piece, video); _last = video; return; @@ -62,6 +62,7 @@ Shuffler::video (weak_ptr weak_piece, ContentVideo video) while ( !_store.empty() && + _last && ( (_store.front().second.frame == _last->frame && _store.front().second.eyes == EYES_RIGHT && _last->eyes == EYES_LEFT) || (_store.front().second.frame == (_last->frame + 1) && _store.front().second.eyes == EYES_LEFT && _last->eyes == EYES_RIGHT) || -- cgit v1.2.3