diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-04-05 02:41:40 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-04-05 02:41:40 +0100 |
| commit | 4775971005de645dd539c7c940a699758d535c46 (patch) | |
| tree | cbd7804693f1082ad76ad46e0b440d9128428452 | |
| parent | bb733a578dd3ca906d6a268805babf40b0a67a48 (diff) | |
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.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | src/lib/shuffler.cc | 5 |
2 files changed, 7 insertions, 2 deletions
@@ -1,3 +1,7 @@ +2018-04-05 Carl Hetherington <cth@carlh.net> + + * Fix assertion failures with 3D content in some cases. + 2018-03-28 Carl Hetherington <cth@carlh.net> * Disable audio mapping control when analysing audio (#1250). 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<Piece> weak_piece, ContentVideo video) shared_ptr<Piece> 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<Piece> 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) || |
