In general the player assumes that it won't receive out of order video.
authorCarl Hetherington <cth@carlh.net>
Tue, 16 Jan 2018 21:01:30 +0000 (21:01 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 16 Jan 2018 21:01:30 +0000 (21:01 +0000)
commit1aad2c33896ce6222f3c929c7af7fe4ff5fda0f2
treeb766282ac0b735b6e4450b91939607affdaa351d
parent598483f71fabde104250296ab4bfe4ec70d82d66
In general the player assumes that it won't receive out of order video.

This clearly can happen with separate L/R sources.  A pass in L might
emit two frames which means the arrivals can't possibly be in order.

This commit fixes this by introducing a Shuffler which all alternate-3D
sources send their video to.  The Shuffler re-orders things before they
arrive at the player.

It also fixes the code which inserts video frames before one that arrives
after a gap.  This didn't cope with 3D right before.

The audio code solves a similar (perhaps the same?) problem with the
AudioMerger; perhaps we should have a similar thing for video and make
the player emit complete 3D frames.

Should help with #976.
src/lib/piece.h
src/lib/player.cc
src/lib/player.h
src/lib/shuffler.cc [new file with mode: 0644]
src/lib/shuffler.h [new file with mode: 0644]
src/lib/util.cc
src/lib/util.h
src/lib/wscript
test/shuffler_test.cc [new file with mode: 0644]
test/wscript