Commit 1e123ad4 authored by Warren Dukes's avatar Warren Dukes

minor optimization to flacWrite()

git-svn-id: https://svn.musicpd.org/mpd/trunk@2927 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent f134e268
...@@ -397,12 +397,11 @@ FLAC__StreamDecoderWriteStatus flacWrite(const FLAC__SeekableStreamDecoder *dec, ...@@ -397,12 +397,11 @@ FLAC__StreamDecoderWriteStatus flacWrite(const FLAC__SeekableStreamDecoder *dec,
{ {
FlacData * data = (FlacData *)vdata; FlacData * data = (FlacData *)vdata;
FLAC__uint32 samples = frame->header.blocksize; FLAC__uint32 samples = frame->header.blocksize;
FLAC__uint16 u16; int c_samp;
unsigned char * uc; int c_chan;
int c_samp, c_chan, d_samp;
int i;
float timeChange; float timeChange;
FLAC__uint64 newPosition = 0; FLAC__uint64 newPosition = 0;
int bytesPerSample = data->dc->audioFormat.bits/8;
timeChange = ((float)samples)/frame->header.sample_rate; timeChange = ((float)samples)/frame->header.sample_rate;
data->time+= timeChange; data->time+= timeChange;
...@@ -414,22 +413,20 @@ FLAC__StreamDecoderWriteStatus flacWrite(const FLAC__SeekableStreamDecoder *dec, ...@@ -414,22 +413,20 @@ FLAC__StreamDecoderWriteStatus flacWrite(const FLAC__SeekableStreamDecoder *dec,
} }
data->position = newPosition; data->position = newPosition;
for(c_samp = d_samp = 0; c_samp < frame->header.blocksize; c_samp++) { for(c_samp = 0; c_samp < frame->header.blocksize; c_samp++) {
for(c_chan = 0; c_chan < frame->header.channels; for(c_chan = 0; c_chan < frame->header.channels; c_chan++) {
c_chan++, d_samp++) { memcpy(data->chunk+data->chunk_length,
u16 = buf[c_chan][c_samp]; &buf[c_chan][c_samp], bytesPerSample);
uc = (unsigned char *)&u16; data->chunk_length++;
for(i=0;i<(data->dc->audioFormat.bits/8);i++) { if(FLAC_CHUNK_SIZE-data->chunk_length < bytesPerSample)
if(data->chunk_length>=FLAC_CHUNK_SIZE) { {
if(flacSendChunk(data)<0) { if(flacSendChunk(data)<0) {
return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
} }
data->chunk_length = 0; data->chunk_length = 0;
if(data->dc->seek) { if(data->dc->seek) {
return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
}
} }
data->chunk[data->chunk_length++] = *(uc++);
} }
} }
} }
......
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