diff options
Diffstat (limited to '')
-rw-r--r-- | TODO | 8 | ||||
-rw-r--r-- | src/inputPlugins/mpc_plugin.c | 16 |
2 files changed, 17 insertions, 7 deletions
@@ -40,12 +40,8 @@ *) Handle mp1 and mp2 files (including mp2's that are disguised as mp3's with a mp3 suffix) -*) choose id3v2 over id3v1 tags when both are present - *) add error codes for status->error -*) add support for mousepack/mpc files - *) add alsa audioOutput plugin *) add a method for closing the audio device immediatly w/o waiting for an @@ -53,6 +49,10 @@ *) add support for playing aac streams (gee, thanks icecast) +*) implement apev2 and id3v1 tag reader from xmms-musepack plugin + +*) only use libid3tag for id3v2 tags, use internal implementation for id3v1 tags + 0.13 ---- *) support for dynamically loading plugins diff --git a/src/inputPlugins/mpc_plugin.c b/src/inputPlugins/mpc_plugin.c index 5bccb3f3d..b0cf24ab3 100644 --- a/src/inputPlugins/mpc_plugin.c +++ b/src/inputPlugins/mpc_plugin.c @@ -132,6 +132,7 @@ int mpc_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream) mpc_uint32_t vbrUpdateBits; float time; int i; + ReplayGainInfo * replayGainInfo = NULL; data.inStream = inStream; data.dc = dc; @@ -174,11 +175,17 @@ int mpc_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream) dc->totalTime = mpc_streaminfo_get_length(&info); dc->audioFormat.bits = 16; - dc->audioFormat.channels = 2; + dc->audioFormat.channels = info.channels; dc->audioFormat.sampleRate = info.sample_freq; getOutputAudioFormat(&(dc->audioFormat), &(cb->audioFormat)); + replayGainInfo = newReplayGainInfo(); + replayGainInfo->albumGain = info.gain_album; + replayGainInfo->albumPeak = info.peak_album; + replayGainInfo->trackGain = info.gain_title; + replayGainInfo->trackPeak = info.peak_title; + dc->state = DECODE_STATE_DECODE; while(!eof) { @@ -224,7 +231,8 @@ int mpc_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream) chunk, chunkpos, time, bitRate, - NULL); + replayGainInfo); + chunkpos = 0; s16 = (mpd_sint16 *)chunk; if(dc->stop) { @@ -243,13 +251,15 @@ int mpc_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream) sendDataToOutputBuffer(cb, NULL, dc, inStream->seekable, chunk, chunkpos, time, bitRate, - NULL); + replayGainInfo); } closeInputStream(inStream); flushOutputBuffer(cb); + freeReplayGainInfo(replayGainInfo); + if(dc->stop) { dc->state = DECODE_STATE_STOP; dc->stop = 0; |