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];

Reply via email to