Consider the case where we switch to a different sound card when the
player GUI is showing frame 0.
At this point, the butler will be full up to some readahead, so the
player will also "think" it's at the readahead position.
If we create a new butler, the first get of video from the new buffer
would previously return a frame from the readahead position (because
that's where the player was).
Since the new butler would coincide with the audio stream position
being 0, the video thread would think it was ahead by the ring buffer
readahead and so would sleep for quite a long time.
Meanwhile audio arrives and is played, and when the video thread finally
wakes it is a long time behind the audio.
#endif
DCPOMATIC_ASSERT(_player);
+ _player->seek(_video_view->position(), true);
auto& audio = AudioBackend::instance()->rtaudio();