I experience this bug too. (I hope we're talking about the same bug. The
current song is cut off <mixing buffer length> from the end, and the
next song starts instead. It happens with simple crossfade (which IIUTC
is just advanced crossfade with fadein=fadeout=-offset) as well.) I've
experimented with different settings, and to me it appears that the
problem only occurs when shuffle mode is on. I addition, seeking within
the current song or in some cases other fiddling around in certain other
ways causes the next crossfade to work as expected, but when the player
is left alone the problem occurs at almost every song change.

Typical debug output:

[crossfade] close:
[crossfade] close: songchange/eop
[crossfade] close: len=1764000 level=256 length=1764000
[crossfade] close: trailing gap size: 521/10000 ms
[crossfade] close: skipped 228 bytes to previous zero crossing
[crossfade] buffer_thread_f: timeout: end of playback
[crossfade] buffer_thread_f: timeout: undoing trailing gap (523 ms)
[crossfade] apply_fade_config: avail=16728 out=1000 in=0 offset=100 skip=0
[crossfade] buffer_thread_f: input restarted after 74 ms
[crossfade]
[crossfade] open_audio: XMMS-crossfade 0.3.10
[crossfade] open_audio: bname="Jonas Gardell - Mormor grĂ¥ter.mp3"
[crossfade] open_audio: fmt=FMT_S16_NE rate=44100 nch=1 dt=116 ms
[crossfade] open_audio: XFADE:
[crossfade] apply_fade_config: 16605 ms flushed
[crossfade] apply_fade_config: avail=0 out=0 in=100 offset=0 skip=0

Looks like the crossfader is impatient and thinks that the end of the
playlist has been reached when BMP takes too long to start decoding the
next song. The README says "* Songchange timeout: [obsoleted by new
songchange detection]" but apparently it can't distinguish between a
song change and end of playback (which can be seen as a songchange to
nothing). The net effect is that of a rapid Stop/Next/Play sequence.

Since manual stop can be detected reliably, there's no need for the
crossfader to assume eop after less than 50 ms. It can wait far longer
than that, as long as the mixing buffer is adequate. In fact, I thought
it should wait for the songchange timeout, which is fixed at 500 ms
according to the configuration dialog.

-- 
Magnus Holmgren
[EMAIL PROTECTED]

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to