Index: /xmms-musepack/branches/r2d/src/libmpc.cpp
===================================================================
--- /xmms-musepack/branches/r2d/src/libmpc.cpp	(revision 360)
+++ /xmms-musepack/branches/r2d/src/libmpc.cpp	(revision 361)
@@ -850,5 +850,5 @@
 	if (info.bits == -1) return -1; // end of stream
 
-    copyBuffer(sampleBuffer, xmmsBuffer, info.samples);
+    copyBuffer(sampleBuffer, xmmsBuffer, info.samples * track.channels);
 
     if (pluginConfig.dynamicBitrate)
@@ -862,6 +862,6 @@
     }
 
-	MpcPlugin.add_vis_pcm(MpcPlugin.output->written_time(), FMT_S16_LE, track.channels, info.samples * 4, xmmsBuffer);
-	MpcPlugin.output->write_audio(xmmsBuffer, info.samples * 4);
+	MpcPlugin.add_vis_pcm(MpcPlugin.output->written_time(), FMT_S16_LE, track.channels, info.samples * 2 * track.channels, xmmsBuffer);
+	MpcPlugin.output->write_audio(xmmsBuffer, info.samples * 2 * track.channels);
 	return info.samples;
 }
Index: /xmms-musepack/branches/r2d/src/libmpc.h
===================================================================
--- /xmms-musepack/branches/r2d/src/libmpc.h	(revision 360)
+++ /xmms-musepack/branches/r2d/src/libmpc.h	(revision 361)
@@ -194,5 +194,5 @@
     int clipMax    = (1 << (pSize - 1)) - 1;
     int floatScale =  1 << (pSize - 1);
-    for (unsigned n = 0; n < 2 * pLength; n++)
+    for (unsigned n = 0; n < pLength; n++)
     {
         int val;
