Commit 4e60343e authored by Max Kellermann's avatar Max Kellermann Committed by Eric Wong

added outputBufferRelative()

The cross-fade check is still very complicated whenever it uses OutputBuffer internals. Greatly simplify another check by introducing outputBufferRelative(). git-svn-id: https://svn.musicpd.org/mpd/trunk@7264 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent 50dc380f
......@@ -496,12 +496,8 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer *
else if (!outputBufferEmpty(cb) && cb->begin != next) {
unsigned int fadePosition;
if (doCrossFade == 1 && next >= 0 &&
((next > cb->begin &&
(fadePosition = next - cb->begin)
<= crossFadeChunks) ||
(cb->begin > next &&
(fadePosition = next - cb->begin +
buffered_chunks) <= crossFadeChunks))) {
(fadePosition = outputBufferRelative(cb, next))
<= crossFadeChunks) {
/* perform cross fade */
if (nextChunk < 0) {
/* beginning of the cross fade
......
......@@ -62,12 +62,17 @@ int outputBufferEmpty(const OutputBuffer * cb)
return cb->begin == cb->end;
}
unsigned availableOutputBuffer(const OutputBuffer * cb)
unsigned int outputBufferRelative(const OutputBuffer * cb, unsigned i)
{
if (cb->end >= cb->begin)
return cb->end - cb->begin;
if (i >= cb->begin)
return i - cb->begin;
else
return cb->end + buffered_chunks - cb->begin;
return i + buffered_chunks - cb->begin;
}
unsigned availableOutputBuffer(const OutputBuffer * cb)
{
return outputBufferRelative(cb, cb->end);
}
int outputBufferAbsolute(const OutputBuffer * cb, unsigned relative)
......
......@@ -58,6 +58,12 @@ void flushOutputBuffer(OutputBuffer * cb);
/** is the buffer empty? */
int outputBufferEmpty(const OutputBuffer * cb);
/**
* what is the position of the specified chunk number, relative to
* the first chunk in use?
*/
unsigned int outputBufferRelative(const OutputBuffer * cb, unsigned i);
/** determine the number of decoded chunks */
unsigned availableOutputBuffer(const OutputBuffer * cb);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment