diff options
author | nicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-04-24 08:41:45 +0000 |
---|---|---|
committer | nicodvb <nicodvb@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-04-24 08:41:45 +0000 |
commit | 867eedfa931aec507910733b2148bcb93cf8e24e (patch) | |
tree | 3be697f89880fc245691eb2165a3287adad25c3b /libmpdemux/mp3_hdr.c | |
parent | 00e49dd038bcfa290463ab72215e9516a4518600 (diff) | |
download | mpv-867eedfa931aec507910733b2148bcb93cf8e24e.tar.bz2 mpv-867eedfa931aec507910733b2148bcb93cf8e24e.tar.xz |
wrong framesize calculation for layers 1 and 2 with lsf set
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15252 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/mp3_hdr.c')
-rw-r--r-- | libmpdemux/mp3_hdr.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libmpdemux/mp3_hdr.c b/libmpdemux/mp3_hdr.c index 4171bc4979..d139e99a0d 100644 --- a/libmpdemux/mp3_hdr.c +++ b/libmpdemux/mp3_hdr.c @@ -35,7 +35,7 @@ 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 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 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate, int* spf, int* 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 |