aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--TODO8
-rw-r--r--src/inputPlugins/mpc_plugin.c16
2 files changed, 17 insertions, 7 deletions
diff --git a/TODO b/TODO
index 70114d1ff..3fcc08d4a 100644
--- a/TODO
+++ b/TODO
@@ -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;