diff libmpdemux/mp3_hdr.c @ 15251:c39173a67cbb

wrong framesize calculation for layers 1 and 2 with lsf set
author nicodvb
date Sun, 24 Apr 2005 08:41:45 +0000
parents 980910eb6f0c
children b5c2254d13f8
line wrap: on
line diff
--- a/libmpdemux/mp3_hdr.c	Sun Apr 24 08:37:48 2005 +0000
+++ b/libmpdemux/mp3_hdr.c	Sun Apr 24 08:41:45 2005 +0000
@@ -35,7 +35,7 @@
  * return frame size or -1 (bad frame)
  */
 int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate, int* spf, int* mpa_layer){
-    int stereo,ssize,lsf,framesize,padding,bitrate_index,sampling_frequency;
+    int stereo,ssize,lsf,framesize,padding,bitrate_index,sampling_frequency, divisor;
     int layer, mult[3] = { 12000, 144000, 144000 };
     unsigned long newhead = 
       hbuf[0] << 24 |
@@ -108,7 +108,8 @@
 	return -1;
     }
 
-    framesize /= freqs[sampling_frequency]<<lsf;
+    divisor = (layer == 3 ? (freqs[sampling_frequency] << lsf) : freqs[sampling_frequency]); 
+    framesize /= divisor;
     if(layer==1)
       framesize = (framesize+padding)*4;
     else