On Thu, Nov 20, 2014 at 08:45:45AM +0100, Dmitrij D. Czarkoff wrote: > Anthony J. Bentley said: > > Not sure if this is related, but sound is very choppy for me, and: > > > > AV: 00:05:23 / 01:40:58 (5%) A-V: 0.020 > > [ao/sndio] Blocking until remaining audio is played... (sndio design bug). > > > > was added in this commit: > > https://github.com/mpv-player/mpv/commit/387d5f55e639425bfb6ee1efec4e21202e5642ad > > > > "ao_sndio: print a warning when draining audio > > > > "libsndio has absolutely no mechanism to discard already written audio > > (other than SIGKILLing the sound server). sio_stop() will always block > > until all audio is played. This is a legitimate design bug. > > > > "In theory, we could just not stop it at all, so if the player is e.g. > > paused, the remaining audio would be played. When resuming, we would > > have to do something to ensure get_delay() returns the right value. But > > I couldn't get it to work in all cases." > > > > I was previously using a crappy hand-rolled port of... 0.4.something? > > which wasn't nearly as slow. > > I rebuilt mpv with sdl audio backend, and I still have the same issue: > playback periodically pauses for a fraction of second. With sdl backend > audio also pauses, while with sndio backend it "cracks". The frequency > of pauses seeming depends on video resolution: 1280x720 videos pause > every several seconds, 480x360 video only a couple of times per minute, > while 360x270 plays smoothly. Switching of video backend changes > nothing (with notable exception of "opengl-hq" backend with fails to > start). > > Still, with sdl backend audio files play smoothly, while sndio backend > makes everything inaudible.
sorry, don't have the time to test & debug this right now, but a quick look at the ao_sndio.c suggest that blocking mode is used, while the device is opened in non-blocking mode: p->hdl = sio_open(p->dev, SIO_PLAY, 1); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could you replace 1 by 0, and see if it makes things better?