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)); } }
signature.asc
Description: Digital signature