From b009b2a437bee5947f0fff109ad0ca632d01162f Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 12 Apr 2008 04:13:56 +0000 Subject: moved code to playChunk() Similar to the crossFade() patch: pass chunk objects to playChunk(), simplify decodeParent() by removing clutter. git-svn-id: https://svn.musicpd.org/mpd/trunk@7275 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/decode.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/decode.c b/src/decode.c index fb485a90a..a15778b64 100644 --- a/src/decode.c +++ b/src/decode.c @@ -374,6 +374,24 @@ static void crossFade(OutputBufferChunk * a, OutputBufferChunk * b, a->chunkSize = b->chunkSize; } +static int playChunk(PlayerControl * pc, OutputBufferChunk * chunk, + AudioFormat * format, double sizeToTime) +{ + pc->elapsedTime = chunk->times; + pc->bitRate = chunk->bitRate; + + pcm_volumeChange(chunk->data, chunk->chunkSize, + format, pc->softwareVolume); + + if (playAudio(chunk->data, + chunk->chunkSize) < 0) + return -1; + + pc->totalPlayTime += + sizeToTime * chunk->chunkSize; + return 0; +} + static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer * cb) { int pause = 0; @@ -546,17 +564,9 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer * } /* play the current chunk */ - pc->elapsedTime = beginChunk->times; - pc->bitRate = beginChunk->bitRate; - pcm_volumeChange(beginChunk->data, - beginChunk->chunkSize, - &(cb->audioFormat), - pc->softwareVolume); - if (playAudio(beginChunk->data, - beginChunk->chunkSize) < 0) + if (playChunk(pc, beginChunk, &(cb->audioFormat), + sizeToTime) < 0) break; - pc->totalPlayTime += - sizeToTime * beginChunk->chunkSize; outputBufferShift(cb); player_wakeup_decoder_nb(); } else if (!outputBufferEmpty(cb) && cb->begin == next) { -- cgit v1.2.3