Mercurial > mplayer.hg
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; }