diff libmpdemux/mp3_hdr.c @ 16162:b5c2254d13f8

set i_bps in demux_audio for WAV and MP3 to avoid division by zero before decoder sets it.
author reimar
date Mon, 01 Aug 2005 18:36:50 +0000
parents c39173a67cbb
children 6ff3379a0862
line wrap: on
line diff
--- a/libmpdemux/mp3_hdr.c	Mon Aug 01 13:17:28 2005 +0000
+++ b/libmpdemux/mp3_hdr.c	Mon Aug 01 18:36:50 2005 +0000
@@ -34,8 +34,9 @@
 /*
  * 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 mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate, int* spf, int* mpa_layer, int* br){
     int stereo,ssize,lsf,framesize,padding,bitrate_index,sampling_frequency, divisor;
+    int bitrate;
     int layer, mult[3] = { 12000, 144000, 144000 };
     unsigned long newhead = 
       hbuf[0] << 24 |
@@ -99,7 +100,8 @@
       ssize = (stereo == 1) ? 17 : 32;
     if(!((newhead>>16)&0x1)) ssize += 2; // CRC
 
-    framesize = tabsel_123[lsf][layer-1][bitrate_index] * mult[layer-1];
+    bitrate = tabsel_123[lsf][layer-1][bitrate_index];
+    framesize = bitrate * mult[layer-1];
 
     mp_msg(MSGT_DEMUXER,MSGL_DBG2,"FRAMESIZE: %d, layer: %d, bitrate: %d, mult: %d\n", 
     	framesize, layer, tabsel_123[lsf][layer-1][bitrate_index], mult[layer-1]);
@@ -131,6 +133,7 @@
     }
     if(mpa_layer) *mpa_layer = layer;
     if(chans) *chans = stereo;
+    if(br) *br = bitrate;
 
     return framesize;
 }