Description: Now mpg321 shows the right MPEG version.
Author: Nanakos Chrysostomos <nanakos@wired-net.gr>
Bug-Debian: http://bugs.debian.org/197726

--- mpg321-0.2.11.orig/mad.c
+++ mpg321-0.2.11/mad.c
@@ -160,6 +160,22 @@ char * modestring(enum mad_mode mode)
     }
 }
 
+char *versionstring(int flags)
+{
+	switch(flags&(MAD_FLAG_LSF_EXT | MAD_FLAG_MPEG_2_5_EXT))
+	{
+		case MAD_FLAG_LSF_EXT | MAD_FLAG_MPEG_2_5_EXT:
+			return "2.5";
+		case MAD_FLAG_LSF_EXT:
+			return "2.0";
+		case 0:
+			return "1.0";
+		default:
+			return "?";
+	}
+}
+
+
 char * modestringucase(enum mad_mode mode)
 {
     switch(mode)
@@ -246,7 +262,7 @@ enum mad_flow read_header(void *data, st
         file_change = 0;
         if (options.opt & MPG321_REMOTE_PLAY)
         {
-            printf("@S 1.0 %d %d %s %d %ld %d %d %d %d %ld %d\n", header->layer, header->samplerate,
+            printf("@S %s %d %d %s %d %ld %d %d %d %d %ld %d\n",versionstring(header->flags), header->layer, header->samplerate,
                 modestringucase(header->mode), header->mode_extension, 
                 (header->bitrate / 8 / 100) * mad_timer_count(header->duration, MAD_UNITS_CENTISECONDS),
                 MAD_NCHANNELS(header), header->flags & MAD_FLAG_COPYRIGHT ? 1 : 0, 
@@ -256,11 +272,11 @@ enum mad_flow read_header(void *data, st
 
         else if (options.opt & MPG321_VERBOSE_PLAY)/*zip it good*/
         {
-            fprintf(stderr, "MPEG 1.0, Layer: %s, Freq: %d, mode: %s, modext: %d, BPF : %ld\n"
+            fprintf(stderr, "MPEG %s, Layer: %s, Freq: %d, mode: %s, modext: %d, BPF : %ld\n"
                     "Channels: %d, copyright: %s, original: %s, CRC: %s, emphasis: %d.\n"
                     "Bitrate: %ld Kbits/s, Extension value: %d\n"
                     "Audio: 1:1 conversion, rate: %d, encoding: signed 16 bit, channels: %d\n",
-                    layerstring(header->layer), header->samplerate, modestringucase(header->mode), header->mode_extension, 
+                    versionstring(header->flags),layerstring(header->layer), header->samplerate, modestringucase(header->mode), header->mode_extension, 
                     (header->bitrate / 100) * mad_timer_count(header->duration, MAD_UNITS_CENTISECONDS),
                     MAD_NCHANNELS(header), header->flags & MAD_FLAG_COPYRIGHT ? "Yes" : "No",
                     header->flags & MAD_FLAG_ORIGINAL ? "Yes" : "No", header->flags & MAD_FLAG_PROTECTION ? "Yes" : "No",
@@ -270,8 +286,8 @@ enum mad_flow read_header(void *data, st
 
         else if (!(options.opt & MPG321_QUIET_PLAY))/*I love Joey*/
         {
-            fprintf(stderr, "MPEG 1.0 layer %s, %ld kbit/s, %d Hz %s\n",
-                layerstring(header->layer), header->bitrate/1000, header->samplerate, modestring(header->mode));
+            fprintf(stderr, "MPEG %s layer %s, %ld kbit/s, %d Hz %s\n",
+                versionstring(header->flags),layerstring(header->layer), header->bitrate/1000, header->samplerate, modestring(header->mode));
         }
     }
     
