Package: gjay
Followup-For: Bug #361046
Attached patch, which merges changes from newer mp3info, should fix the
free format frame errors.
-- System Information:
Debian Release: 4.0
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-2-686
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Versions of packages gjay depends on:
ii libatk1.0-0 1.12.3-1 The ATK accessibility toolkit
ii libc6 2.3.6.ds1-8 GNU C Library: Shared libraries
ii libcairo2 1.2.6-1 The Cairo 2D vector graphics libra
ii libfontconfig1 2.4.1-2 generic font configuration library
ii libglib2.0-0 2.12.4-2 The GLib library of C routines
ii libgsl0 1.8-2 GNU Scientific Library (GSL) -- li
ii libgtk2.0-0 2.8.20-3 The GTK+ graphical user interface
ii libpango1.0-0 1.14.8-2 Layout and rendering of internatio
ii libx11-6 2:1.0.3-4 X11 client-side library
ii libxcursor1 1.1.7-4 X cursor management library
ii libxext6 1:1.0.1-2 X11 miscellaneous extension librar
ii libxfixes3 1:4.0.1-4 X11 miscellaneous 'fixes' extensio
ii libxi6 1:1.0.1-3 X11 Input extension library
ii libxinerama1 1:1.0.1-4.1 X11 Xinerama extension library
ii libxrandr2 2:1.1.0.2-4 X11 RandR extension library
ii libxrender1 1:0.9.1-3 X Rendering Extension client libra
ii mp3info 0.8.4-9.1 An MP3 technical info viewer and I
ii mpg123-alsa [mpg123] 0.61-4 MPEG layer 1/2/3 audio player with
ii mpg321 [mpg123] 0.2.10.3 A Free command-line mp3 player, co
ii xmms 1:1.2.10+20061101-1 Versatile X audio player
gjay recommends no packages.
-- no debconf information
diff -u gjay-0.2.8.3/debian/changelog gjay-0.2.8.3/debian/changelog
--- gjay-0.2.8.3/debian/changelog
+++ gjay-0.2.8.3/debian/changelog
@@ -1,3 +1,10 @@
+gjay (0.2.8.3-5.1) unstable; urgency=low
+
+ * Merge changes from mp3info 0.8.5 for free-form bitrate handling.
+ (Closes: #361046)
+
+ -- Erich Schubert <[EMAIL PROTECTED]> Fri, 24 Nov 2006 12:53:54 +0100
+
gjay (0.2.8.3-5) unstable; urgency=low
* Acknowledge NMU by Nathanael Nerode. Also thanks to Andreas Jochens for
only in patch2:
unchanged:
--- gjay-0.2.8.3.orig/mp3.c
+++ gjay-0.2.8.3/mp3.c
@@ -80,17 +80,18 @@
{11025,12000,8000,50000} /* MPEG 2.5 */
};
-int bitrate[2][3][14] = {
+int bitrate[2][3][15] = {
{ /* MPEG 2.0 */
- {32,48,56,64,80,96,112,128,144,160,176,192,224,256}, /* layer 1 */
- {8,16,24,32,40,48,56,64,80,96,112,128,144,160}, /* layer 2 */
- {8,16,24,32,40,48,56,64,80,96,112,128,144,160} /* layer 3 */
+ {0,32,48,56,64,80,96,112,128,144,160,176,192,224,256}, /* layer 1 */
+ {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160}, /* layer 2 */
+ {0,8,16,24,32,40,48,56,64,80,96,112,128,144,160} /* layer 3 */
+
},
{ /* MPEG 1.0 */
- {32,64,96,128,160,192,224,256,288,320,352,384,416,448}, /* layer 1 */
- {32,48,56,64,80,96,112,128,160,192,224,256,320,384}, /* layer 2 */
- {32,40,48,56,64,80,96,112,128,160,192,224,256,320} /* layer 3 */
+ {0,32,64,96,128,160,192,224,256,288,320,352,384,416,448}, /* layer 1 */
+ {0,32,48,56,64,80,96,112,128,160,192,224,256,320,384}, /* layer 2 */
+ {0,32,40,48,56,64,80,96,112,128,160,192,224,256,320} /* layer 3 */
}
};
@@ -269,12 +270,12 @@
if(buffer[1] & 0x10) header->version=(buffer[1] >> 3) & 1;
else header->version=2;
header->layer=(buffer[1] >> 1) & 3;
- if((header->sync != 0xFFE) || (header->layer != 1)) {
+ header->bitrate=(buffer[2] >> 4) & 0x0F;
+ if((header->sync != 0xFFE) || (header->layer != 1) || (header->bitrate == 0xF)) {
header->sync=0;
return 0;
}
header->crc=buffer[1] & 1;
- header->bitrate=(buffer[2] >> 4) & 0x0F;
header->freq=(buffer[2] >> 2) & 0x3;
header->padding=(buffer[2] >>1) & 0x1;
header->extension=(buffer[2]) & 0x1;
@@ -284,6 +285,11 @@
header->original=(buffer[3] >> 2) & 0x1;
header->emphasis=(buffer[3]) & 0x3;
+ /* Final sanity checks: bitrate 1111b and frequency 11b are reserved (invalid) */
+ if (header->bitrate == 0x0F || header->freq == 0x3) {
+ return 0;
+ }
+
return ((fl=frame_length(header)) >= MIN_FRAME_SIZE ? fl : 0);
}
@@ -297,7 +303,7 @@
int header_layer(mp3header *h) {return layer_tab[h->layer];}
int header_bitrate(mp3header *h) {
- return bitrate[h->version & 1][3-h->layer][h->bitrate-1];
+ return bitrate[h->version & 1][3-h->layer][h->bitrate];
}
int header_frequency(mp3header *h) {
@@ -409,7 +415,7 @@
strncat(buf,mp3->id3.year,INT_FIELD_LEN);
pad(mp3->id3.comment,TEXT_FIELD_LEN);
strncat(buf,mp3->id3.comment,TEXT_FIELD_LEN);
- strncat(buf,mp3->id3.genre,1);
+ strncat(buf,(char *)&(mp3->id3.genre),1);
if (mp3->id3.track[0] != '\0') {
buf[125]='\0';
buf[126]=mp3->id3.track[0];