Index: libmpc/branches/r2d/mpc2sv8/mpc2sv8.c
===================================================================
--- libmpc/branches/r2d/mpc2sv8/mpc2sv8.c	(revision 212)
+++ libmpc/branches/r2d/mpc2sv8/mpc2sv8.c	(revision 220)
@@ -123,14 +123,15 @@
 	writeMagic(&e);
 	writeStreamInfo( &e, si.max_band, si.ms > 0, si.samples, si.sample_freq,
-					  si.channels, si.gain_title, si.gain_album, si.peak_title,
-					  si.peak_album);
-	si_size = writeBlock(&e, "SI", MPC_TRUE, 0);
+					  si.channels);
+	si_size = writeBlock(&e, "SH", MPC_TRUE, 0);
+	writeGainInfo(&e, si.gain_title, si.gain_album, si.peak_title, si.peak_album);
+	si_size = writeBlock(&e, "RG", MPC_FALSE, 0);
 	writeEncoderInfo(&e, si.profile, si.pns, si.encoder_version / 100,
-					  si.encoder_version % 100, 0, 0);
+					  si.encoder_version % 100, 0);
 	writeBlock(&e, "EI", MPC_FALSE, 0);
 	e.seek_ptr = ftell(e.outputFile);
 	writeBits (&e, 0, 8);
 	writeBits (&e, 0, 32); // jump 40 bits for seek table pointer
-	writeBlock(&e, "SP", MPC_FALSE, 0); // reserve space for seek pointer
+	writeBlock(&e, "SO", MPC_FALSE, 0); // reserve space for seek offset
 	while(MPC_TRUE)
 	{
@@ -152,5 +153,5 @@
 		}
 		e.block_cnt++;
-		writeBlock(&e, "AD", MPC_FALSE, 0);
+		writeBlock(&e, "AP", MPC_FALSE, 0);
 	}
 	writeSeekTable(&e);
@@ -160,7 +161,6 @@
 		fseek(e.outputFile, e.seek_ref + 4, SEEK_SET);
 		writeStreamInfo( &e, si.max_band, si.ms > 0, demux->d->samples,
-						  si.sample_freq, si.channels, si.gain_title,
-						  si.gain_album, si.peak_title, si.peak_album);
-		writeBlock(&e, "SI", MPC_TRUE, si_size);
+						  si.sample_freq, si.channels);
+		writeBlock(&e, "SH", MPC_TRUE, si_size);
 		fseek(e.outputFile, 0, SEEK_END);
 	}
