diff options
Diffstat (limited to 'src/inputPlugins/flac_plugin.c')
-rw-r--r-- | src/inputPlugins/flac_plugin.c | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/src/inputPlugins/flac_plugin.c b/src/inputPlugins/flac_plugin.c index b5c18af75..f171ee457 100644 --- a/src/inputPlugins/flac_plugin.c +++ b/src/inputPlugins/flac_plugin.c @@ -41,15 +41,14 @@ static flac_read_status flacRead(const flac_decoder * flacDec, while (1) { r = readFromInputStream(data->inStream, (void *)buf, 1, *bytes); - if (r == 0 && !inputStreamAtEOF(data->inStream) && - !data->dc->stop) + if (r == 0 && !inputStreamAtEOF(data->inStream) && !dc.stop) my_usleep(10000); else break; } *bytes = r; - if (r == 0 && !data->dc->stop) { + if (r == 0 && !dc.stop) { if (inputStreamAtEOF(data->inStream)) return flac_read_status_eof; else @@ -248,7 +247,7 @@ static FLAC__StreamDecoderWriteStatus flacWrite(const flac_decoder *dec, FLAC__uint32 samples = frame->header.blocksize; unsigned int c_samp; const unsigned int num_channels = frame->header.channels; - const unsigned int bytes_per_sample = (data->dc->audioFormat.bits / 8); + const unsigned int bytes_per_sample = (dc.audioFormat.bits / 8); const unsigned int bytes_per_channel = bytes_per_sample * frame->header.channels; const unsigned int max_samples = FLAC_CHUNK_SIZE / bytes_per_channel; @@ -256,7 +255,7 @@ static FLAC__StreamDecoderWriteStatus flacWrite(const flac_decoder *dec, float timeChange; FLAC__uint64 newPosition = 0; - assert(data->dc->audioFormat.bits > 0); + assert(dc.audioFormat.bits > 0); timeChange = ((float)samples) / frame->header.sample_rate; data->time += timeChange; @@ -292,7 +291,7 @@ static FLAC__StreamDecoderWriteStatus flacWrite(const flac_decoder *dec, FLAC__STREAM_DECODER_WRITE_STATUS_ABORT; } data->chunk_length = 0; - if (data->dc->seek) { + if (dc.seek) { return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE; } @@ -382,7 +381,7 @@ static MpdTag *flacTagDup(char *file) return ret; } -static int flac_decode_internal(OutputBuffer * cb, DecoderControl * dc, +static int flac_decode_internal(OutputBuffer * cb, InputStream * inStream, int is_ogg) { flac_decoder *flacDec; @@ -391,7 +390,7 @@ static int flac_decode_internal(OutputBuffer * cb, DecoderControl * dc, if (!(flacDec = flac_new())) return -1; - init_FlacData(&data, cb, dc, inStream); + init_FlacData(&data, cb, inStream); #if defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7 if(!FLAC__stream_decoder_set_metadata_respond(flacDec, FLAC__METADATA_TYPE_VORBIS_COMMENT)) @@ -421,33 +420,33 @@ static int flac_decode_internal(OutputBuffer * cb, DecoderControl * dc, } } - dc->state = DECODE_STATE_DECODE; + dc.state = DECODE_STATE_DECODE; while (1) { if (!flac_process_single(flacDec)) break; if (flac_get_state(flacDec) == flac_decoder_eof) break; - if (dc->seek) { - FLAC__uint64 sampleToSeek = dc->seekWhere * - dc->audioFormat.sampleRate + 0.5; + if (dc.seek) { + FLAC__uint64 sampleToSeek = dc.seekWhere * + dc.audioFormat.sampleRate + 0.5; if (flac_seek_absolute(flacDec, sampleToSeek)) { clearOutputBuffer(cb); data.time = ((float)sampleToSeek) / - dc->audioFormat.sampleRate; + dc.audioFormat.sampleRate; data.position = 0; } else - dc->seekError = 1; - dc->seek = 0; + dc.seekError = 1; + dc.seek = 0; decoder_wakeup_player(); } } - if (!dc->stop) { + if (!dc.stop) { flacPrintErroredState(flac_get_state(flacDec)); flac_finish(flacDec); } /* send last little bit */ - if (data.chunk_length > 0 && !dc->stop) { + if (data.chunk_length > 0 && !dc.stop) { flacSendChunk(&data); flushOutputBuffer(data.cb); } @@ -466,10 +465,9 @@ fail: return 0; } -static int flac_decode(OutputBuffer * cb, DecoderControl * dc, - InputStream * inStream) +static int flac_decode(OutputBuffer * cb, InputStream * inStream) { - return flac_decode_internal(cb, dc, inStream, 0); + return flac_decode_internal(cb, inStream, 0); } #if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7 @@ -508,10 +506,9 @@ out: return ret; } -static int oggflac_decode(OutputBuffer * cb, DecoderControl * dc, - InputStream * inStream) +static int oggflac_decode(OutputBuffer * cb, InputStream * inStream) { - return flac_decode_internal(cb, dc, inStream, 1); + return flac_decode_internal(cb, inStream, 1); } static unsigned int oggflac_try_decode(InputStream * inStream) |