reassign 197726 mpg321
tags 197726 + patch
kthxbye

On Fri, Dec 12, 2008 at 12:49:56AM +0100, Kurt Roeckx wrote:
The text might not have been very clear, so let's try and make it
more clear:
MPEG 1.0: Neither bit is set
MPEG 2.0: MAD_FLAG_LSF_EXT is set
MPEG 2.5: MAD_FLAG_LSF_EXT and MAD_FLAG_MPEG_2_5_EXT are set.

A patch implementing this behavior is attached.  I've tested it on
css_descramble.mp3, as well as an MPEG 1.0 MP3, and it reports the
correct MPEG version in both cases.  I have no MPEG 2.5 files on which
to test.

--
brian m. carlson / brian with sandals: Houston, Texas, US
+1 713 440 7475 | http://crustytoothpaste.ath.cx/~bmc | My opinion only
troff on top of XML: http://crustytoothpaste.ath.cx/~bmc/code/thwack
OpenPGP: RSA v4 4096b 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
--- mpg321.old/mad.c	2008-11-11 21:30:39.000000000 +0000
+++ mpg321-0.2.10.6/mad.c	2008-12-12 00:16:53.000000000 +0000
@@ -132,6 +132,21 @@
             return "?";
     }
 }
+
+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 * modestring(enum mad_mode mode)
 {
@@ -233,7 +248,7 @@
         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, 
@@ -243,11 +258,11 @@
 
         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",
@@ -257,8 +272,8 @@
 
         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));
         }
     }
     

Attachment: signature.asc
Description: Digital signature

Reply via email to