Index: /libmpc/branches/r2d/include/mpc/streaminfo.h
===================================================================
--- /libmpc/branches/r2d/include/mpc/streaminfo.h	(revision 200)
+++ /libmpc/branches/r2d/include/mpc/streaminfo.h	(revision 201)
@@ -86,5 +86,5 @@
     char                 encoder[256];       ///< Encoder name
 	mpc_bool_t           pns;                ///< pns used
-	mpc_uint32_t         profile;            ///< Quality profile of stream
+	float                profile;            ///< Quality profile of stream
 	const char*          profile_name;       ///< Name of profile used by stream
 	//@}
Index: /libmpc/branches/r2d/libmpcdec/streaminfo.c
===================================================================
--- /libmpc/branches/r2d/libmpcdec/streaminfo.c	(revision 200)
+++ /libmpc/branches/r2d/libmpcdec/streaminfo.c	(revision 201)
@@ -54,7 +54,7 @@
 
 static const char *
-mpc_get_version_string(mpc_uint32_t profile) // profile is 0...15, where 7...13 is used
-{
-    return profile >= sizeof versionNames / sizeof *versionNames ? na : versionNames[profile];
+mpc_get_version_string(float profile) // profile is 0...15, where 7...13 is used
+{
+	return profile >= sizeof versionNames / sizeof *versionNames ? na : versionNames[(int)profile];
 }
 
@@ -109,5 +109,5 @@
 	si->max_band           = mpc_bits_read(r, 6);
 	si->profile            = mpc_bits_read(r, 4);
-    si->profile_name       = mpc_get_version_string(si->profile);
+	si->profile_name       = mpc_get_version_string(si->profile);
 	mpc_bits_read(r, 2); // Link ?
 	si->sample_freq        = samplefreqs[mpc_bits_read(r, 2)];
@@ -195,8 +195,7 @@
 	mpc_bits_reader r = *r_in;
 
-	si->profile            = mpc_bits_read(&r, 4);
+	si->profile            = mpc_bits_read(&r, 7) / 8.;
 	si->profile_name       = mpc_get_version_string(si->profile);
 	si->pns                = mpc_bits_read(&r, 1);
-	mpc_bits_read(&r, 3); // unused
 	si->encoder_version = mpc_bits_read(&r, 4) << 24; // major
 	si->encoder_version |= mpc_bits_read(&r, 8) << 16; // minor
Index: /libmpc/branches/r2d/libmpcenc/encode_sv7.c
===================================================================
--- /libmpc/branches/r2d/libmpcenc/encode_sv7.c	(revision 200)
+++ /libmpc/branches/r2d/libmpcenc/encode_sv7.c	(revision 201)
@@ -129,5 +129,5 @@
 // writes encoder signature
 void writeEncoderInfo ( mpc_encoder_t * e,
-						const int profile,
+						const float profile,
 						const int PNS_on,
 						const int version_major,
@@ -136,7 +136,6 @@
 						const int version_build )
 {
-	writeBits ( e, profile,  4 );
+	writeBits ( e, (mpc_uint32_t)(profile * 8 + .5),  7 );
 	writeBits ( e, PNS_on,  1 );
-	writeBits ( e, 0,  3 ); // unused
 	writeBits ( e, version_major,  4 );
 	writeBits ( e, version_minor,  8 );
@@ -145,5 +144,5 @@
 }
 
-// formatting and writing SV7-bitstream for one frame
+// formatting and writing SV8-bitstream for one frame
 void
 writeBitstream_SV8 ( mpc_encoder_t* e, int MaxBand, const SubbandQuantTyp*  Q )
Index: /libmpc/branches/r2d/libmpcpsy/libmpcpsy.h
===================================================================
--- /libmpc/branches/r2d/libmpcpsy/libmpcpsy.h	(revision 200)
+++ /libmpc/branches/r2d/libmpcpsy/libmpcpsy.h	(revision 201)
@@ -54,4 +54,5 @@
 	float         SampleFreq;
 	int MainQual;	// main profile quality
+	float FullQual;	// full profile quality
 
 	// profile params
Index: /libmpc/branches/r2d/libmpcpsy/profile.c
===================================================================
--- /libmpc/branches/r2d/libmpcpsy/profile.c	(revision 200)
+++ /libmpc/branches/r2d/libmpcpsy/profile.c	(revision 201)
@@ -120,4 +120,5 @@
 
 	m->MainQual       = i;
+	m->FullQual       = qual + PROFILE_PRE2_TELEPHONE;
 	m->ShortThr       = Profiles [i].ShortThr   * (1-mix) + Profiles [i+1].ShortThr   * mix;
 	m->MinValChoice   = Profiles [i].MinValChoice  ;
Index: /libmpc/branches/r2d/mpcenc/mpcenc.c
===================================================================
--- /libmpc/branches/r2d/mpcenc/mpcenc.c	(revision 200)
+++ /libmpc/branches/r2d/mpcenc/mpcenc.c	(revision 201)
@@ -1613,5 +1613,5 @@
 					   m.SampleFreq, Wave.Channels > 2 ? 2 : Wave.Channels);
 	writeBlock(&e, "SI", MPC_TRUE);
-	writeEncoderInfo(&e, m.MainQual, m.PNS > 0, MPPENC_MAJOR, MPPENC_MINOR,
+	writeEncoderInfo(&e, m.FullQual, m.PNS > 0, MPPENC_MAJOR, MPPENC_MINOR,
 					  MPPENC_IMPLEMENT, MPPENC_BUILD);
 	writeBlock(&e, "EI", MPC_FALSE);
@@ -1695,5 +1695,5 @@
 
         OldSilence      = Silence;
-        writeBitstream_SV8 ( &e, m.Max_Band, Q );                                                // write SV7-Bitstream
+        writeBitstream_SV8 ( &e, m.Max_Band, Q ); // write SV8-Bitstream
 
         if ( (int)(time (NULL) - T) >= 0 ) {                            // output
Index: /libmpc/branches/r2d/mpcenc/mpcenc.h
===================================================================
--- /libmpc/branches/r2d/mpcenc/mpcenc.h	(revision 200)
+++ /libmpc/branches/r2d/mpcenc/mpcenc.h	(revision 201)
@@ -273,5 +273,5 @@
 					   const unsigned int  ChannelCount);
 void writeEncoderInfo ( mpc_encoder_t * e,
-						const int profile,
+						const float profile,
 						const int PNS_on,
 						const int version_major,
