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

