summaryrefslogtreecommitdiffstats
path: root/libmpdemux/mp3_hdr.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-08-01 18:36:50 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-08-01 18:36:50 +0000
commit1da3dc91bde1a06a5cfc1fdc8a495098cd5122be (patch)
treec593b88206f478a4199ea9b0766dc948a1724fd0 /libmpdemux/mp3_hdr.c
parentfa38f52244327391383595ec27385e2e13775e36 (diff)
downloadmpv-1da3dc91bde1a06a5cfc1fdc8a495098cd5122be.tar.bz2
mpv-1da3dc91bde1a06a5cfc1fdc8a495098cd5122be.tar.xz
set i_bps in demux_audio for WAV and MP3 to avoid division by zero before
decoder sets it. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16163 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/mp3_hdr.c')
-rw-r--r--libmpdemux/mp3_hdr.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libmpdemux/mp3_hdr.c b/libmpdemux/mp3_hdr.c
index d139e99a0d..591e04d570 100644
--- a/libmpdemux/mp3_hdr.c
+++ b/libmpdemux/mp3_hdr.c
@@ -34,8 +34,9 @@ int mp_mp3_get_lsf(unsigned char* hbuf){
/*
* 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 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate, int* spf, int*
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 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate, int* spf, int*
}
if(mpa_layer) *mpa_layer = layer;
if(chans) *chans = stereo;
+ if(br) *br = bitrate;
return framesize;
}