From fe960fc16385a6cd9616b823603679ef26b4c4a3 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Wed, 27 Aug 2008 12:33:21 +0200 Subject: AAC-Player fine tuning Move variables definitions outside the loop, define buffer as short int, as replaygain works with ints, not bytes. --- src/player.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/player.c') diff --git a/src/player.c b/src/player.c index 4d42b91..462a374 100644 --- a/src/player.c +++ b/src/player.c @@ -89,8 +89,10 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { player->bufferRead = 0; if (player->mode == PLAYER_RECV_DATA) { - char *aacDecoded; + short int *aacDecoded; NeAACDecFrameInfo frameInfo; + int tmpReplayBuf; + size_t i; while ((player->bufferFilled - player->bufferRead) > player->sampleSize[player->sampleSizeCurr]) { @@ -103,22 +105,19 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { NeAACDecGetErrorMessage (frameInfo.error)); break; } - short int *replayBuf = (short int *) aacDecoded; - int tmpReplayBuf; - size_t i; for (i = 0; i < frameInfo.samples; i++) { - tmpReplayBuf = (float) replayBuf[i] * player->scale; + tmpReplayBuf = (float) aacDecoded[i] * player->scale; /* avoid clipping */ if (tmpReplayBuf > INT16_MAX) { - replayBuf[i] = INT16_MAX; + aacDecoded[i] = INT16_MAX; } else if (tmpReplayBuf < INT16_MIN) { - replayBuf[i] = INT16_MIN; + aacDecoded[i] = INT16_MIN; } else { - replayBuf[i] = tmpReplayBuf; + aacDecoded[i] = tmpReplayBuf; } } /* ao_play needs bytes: 1 sample = 16 bits = 2 bytes */ - ao_play (player->audioOutDevice, aacDecoded, + ao_play (player->audioOutDevice, (char *) aacDecoded, frameInfo.samples * 16 / 8); player->bufferRead += frameInfo.bytesconsumed; player->sampleSizeCurr++; -- cgit v1.2.3