I use the audio playback position to determine when a frame should be displayed. Running a little test exposes how reliable this timer is.
Graphing some of the output makes it pretty clear why Linux playback is choppy.
Since that isn’t going to work, my next test will involve registering a listener for start and stop events, and track playback time manually. Though I’m worried my time and the playback time are going to get out of sync.