Random pausing during playback for buffering
While using Rhythmbox for quite some time (currently version 3.4.4) I noticed weird playback sound drops (you play a song and randomly very small part of the song is skipped). Recently I tried to identify in which circumstances this happens. This is what I discovered:
- This problem occurs only when listening to the music on DAAP server (playing the very same song directly from the filesystem does not exhibit the problem)
- I tried to use different DAAP server implementations (Synology daap, mt-daapd, forked-daapd and spydaap) with Rhythmbox. All of them were running on the same LAN and ran into the very same problem.
- When running
rhythmbox --debug
I see the following in the logs when sound drop occurs:
(10:16:09) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 84584512471:260000000000(0)]
(10:16:09) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 84785011337:260000000000(0)]
(10:16:09) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 84985668934:260000000000(0)]
(10:16:09) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 85186258503:260000000000(0)]
(10:16:09) [0x55fc3cf20f60] [bus_cb] rb-player-gst.c:610: buffering - temporarily pausing playback
(10:16:09) [0x55fc3cf20f60] [bus_cb] rb-player-gst.c:603: buffering done, setting pipeline back to PLAYING
(10:16:09) [0x55fc3cf20f60] [bus_cb] rb-player-gst.c:564: playbin reached state PAUSED
(10:16:09) [0x55fc3cf20f60] [bus_cb] rb-player-gst.c:564: playbin reached state PLAYING
(10:16:10) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 85563673469:260000000000(0)]
(10:16:10) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 85764081632:260000000000(0)]
(10:16:10) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 85964671201:260000000000(0)]
(10:16:10) [0x55fc3cf20f60] [tick_cb] rb-shell-player.c:2575: tick: [daap://192.168.1.10:3689/databases/1/items/296777.mp3?session-id=46, 86165260770:260000000000(0)]
- Enabling
Crossfade between tracks
works around the problem (Rhythmbox restart is required to take an effect). I suspect it's because different code path is used (rb-player-gst-xfade.c
vsrb-player-gst.c
) and different buffering algorithm is used.