summaryrefslogtreecommitdiff
path: root/src/lib/butler.cc
AgeCommit message (Collapse)Author
2018-08-22Await video in get_video() if we are suspended.Carl Hetherington
Fix player_change to summon the butler if _suspended is changed, and ensure that the butler's Player::Change handler is the first to be called so that suspension is sorted out before any other Player::Change handlers might call get_video(). This is to prevent the sequence 1. player change-pending emitted 2. hence butler suspended -> 1 3. player change-done emitted 4. first handler is something which calls get_video() 5. get_video() awaits video which will never arrive because the butler is suspended. Here there is a pending change-done signal to butler. Ensuring this arrives before the handler which calls get_video() sorts it out.
2018-08-20Allow nested butler suspensions.Carl Hetherington
2018-08-19Replace May/Done/NotDone signal sets with one signal and extendCarl Hetherington
this treatment to anything that caused Player::setup_pieces. This should fix out-of-sequence Player emissions caused by setup_pieces being called by one thread while the butler is calling pass().
2018-08-19Suspend butler on player may-change as otherwise there's a windowCarl Hetherington
between Player::_suspended being set to false and the the butler requesting a seek, during which the butler may call pass().
2018-08-14More fixes for errors / crashes / misbehaviour with content changesCarl Hetherington
and the butler. Here we signal both before and after a change in content. Before, the player disables itself so that any pass()/seek() will be no-ops. After, the player rebuilds its pieces and the butler re-seeks to get back to where it was before the change.
2018-08-12Don't seek during timeline drags.Carl Hetherington
2018-08-09Remove duplicated stuff from seek_unlocked(); tweak some ordering.Carl Hetherington
2018-08-05Get closed caption view data from the butler, rather than the player.Carl Hetherington
You can't introduce the butler (so that the player is ahead of time) and then ask the player what should be in the frame that is being displayed "now"; the player will already have moved on.
2018-08-04Remove unused parameter.Carl Hetherington
2018-08-04Timestamp audio emissions from butler and hence discard very lateCarl Hetherington
audio in FilmViewer. This should help with the case where lots of video frames are rapidly discarded when they are late but the corresponding audio is not, hence audio buffers get overfilled.
2018-08-02A variety of changes to improve (but not entirely fix) behaviourCarl Hetherington
when moving content (or otherwise changing the playlist) while playing. This commit refills the butler when things change in certain ways, and improves locking to cope with Player methods being called from the GUI and butler threads at the same time.
2018-07-27Remove debug code.Carl Hetherington
2018-07-26Protect the public API of Player with a mutex, sinceCarl Hetherington
seek() and pass() may be called from the Butler thread ad the same time as other Player methods are called from the GUI thread (by FilmViewer and ClosedCaptionViewDialog).
2018-06-22Add some timing logs for playback.Carl Hetherington
2018-06-11Throw exceptions when things in the butler get really out of hand.v2.13.31Carl Hetherington
2018-02-18Hold lock for the whole of Butler::video(). Fixes jumpy nudge-seekCarl Hetherington
when playing DCPs. Before, the lock was only held to check _pending_seek_position. With that arrangement, this sequence was possible: 1. video arrives, check _pending_seek_position, decide it's ok, release lock 2. Butler::seek called, sets _pending_seek_position, clears _video 3. video that arrived in #1 is put into _video by ::video() 4. that video is given to an awaiting get_video() call. This clearly subverts the attempts not to accept new video data while a seek is pending.
2018-02-16Name threads on Linux.Carl Hetherington
2018-02-12Tone some debug messages down slightly.Carl Hetherington
2018-02-07Slightly better log message.Carl Hetherington
2017-12-29Add basic memory-used stuff for butler and reduce minimum audioCarl Hetherington
readahead quite a bit. This in turn reduces the maximum butler memory usage as it will keep getting audio (and hence video) until the minimum audio readahead is hit.
2017-12-29Reduce the maximum video readahead.Carl Hetherington
2017-12-13Attempt to prevent a deadlock if audio is full and video empty (or vice versa).Carl Hetherington
2017-08-14Remove believed-unnecessary player-changed handler in butler.Carl Hetherington
2017-08-14Missing conditional wakeup.Carl Hetherington
2017-08-14I think Butler should just clear itself out when the player changes.Carl Hetherington
Other layers will seek as appropriate, we shouldn't fight them I don't think.
2017-08-14Remove Film dependency from Butler.Carl Hetherington
2017-07-26Fix warning.Carl Hetherington
2017-07-26Multi-threaded decode of DCP when previewing.Carl Hetherington
2017-07-12Report underruns from Butler::get_audio.Carl Hetherington
2017-06-11Catch butler runaway when no audio is provided by the player.Carl Hetherington
2017-06-01Re-add missing audio mapping in butler for preview.Carl Hetherington
2017-05-22Remove some unused code.Carl Hetherington
2017-05-08Set _finished to false when requesting a seek so that the nextCarl Hetherington
get_video() calls pass() enough times to get some data.
2017-05-05Clear _video/_audio when the seek is request, not when it's performed.Carl Hetherington
Otherwise between the seek request and action there can be a get_video() call which returns "stale" data.
2017-04-26Nicer fix for previous commit.Carl Hetherington
2017-04-26Fix video flickering when seeking near the end of the film.Carl Hetherington
2017-04-23Cope better with the butler thread throwing an exception; give upCarl Hetherington
on doing anything else with it. Fix thread running waiting for audio when it is disabled.
2017-04-21Throw exceptions raised while waiting for the butler to deliver video.Carl Hetherington
2017-04-19Config option to disable preview audio.Carl Hetherington
2017-04-19No-op; white space.Carl Hetherington
2017-04-19Should clear audio too when seeking.Carl Hetherington
2017-04-19Tidy up slightly.Carl Hetherington
2017-04-19Don't return 'no video' from get_video() until the player has finished and ↵Carl Hetherington
we have exhausted our store.
2017-04-19Clear out ring buffers when the player's output changes.Carl Hetherington
2017-04-19Handle butler thread exceptions properly.Carl Hetherington
2017-04-19Remove redundant cast.Carl Hetherington
2017-04-19More audio readahead.Carl Hetherington
2017-04-19Several fixes to audio.Carl Hetherington
2017-04-19Try to stop Butler deadlocking on quit.Carl Hetherington
2017-04-19First bits of audio support.Carl Hetherington