minor optimization to flacWrite()
git-svn-id: https://svn.musicpd.org/mpd/trunk@2927 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
f134e2686a
commit
1e123ad4b7
@ -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,
|
|||||||
}
|
}
|
||||||
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++);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user