mirror of
https://github.com/mpv-player/mpv
synced 2024-10-18 10:25:02 +02:00
added support for mpa layers 1 and 2
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15040 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
0a764d5367
commit
7affbd1748
@ -36,6 +36,7 @@ int mp_mp3_get_lsf(unsigned char* hbuf){
|
|||||||
*/
|
*/
|
||||||
int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate){
|
int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate){
|
||||||
int stereo,ssize,lsf,framesize,padding,bitrate_index,sampling_frequency;
|
int stereo,ssize,lsf,framesize,padding,bitrate_index,sampling_frequency;
|
||||||
|
int layer, mult[3] = { 12000, 144000, 144000 };
|
||||||
unsigned long newhead =
|
unsigned long newhead =
|
||||||
hbuf[0] << 24 |
|
hbuf[0] << 24 |
|
||||||
hbuf[1] << 16 |
|
hbuf[1] << 16 |
|
||||||
@ -52,8 +53,9 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if((4-((newhead>>17)&3))!=3){
|
layer = 4-((newhead>>17)&3);
|
||||||
mp_msg(MSGT_DEMUXER,MSGL_DBG2,"not layer-3\n");
|
if(layer==4){
|
||||||
|
mp_msg(MSGT_DEMUXER,MSGL_DBG2,"not layer-1/2/3\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,15 +99,20 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* srate){
|
|||||||
ssize = (stereo == 1) ? 17 : 32;
|
ssize = (stereo == 1) ? 17 : 32;
|
||||||
if(!((newhead>>16)&0x1)) ssize += 2; // CRC
|
if(!((newhead>>16)&0x1)) ssize += 2; // CRC
|
||||||
|
|
||||||
framesize = tabsel_123[lsf][2][bitrate_index] * 144000;
|
framesize = tabsel_123[lsf][layer-1][bitrate_index] * 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]);
|
||||||
if(!framesize){
|
if(!framesize){
|
||||||
mp_msg(MSGT_DEMUXER,MSGL_DBG2,"invalid framesize/bitrate_index\n");
|
mp_msg(MSGT_DEMUXER,MSGL_DBG2,"invalid framesize/bitrate_index\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
framesize /= freqs[sampling_frequency]<<lsf;
|
framesize /= freqs[sampling_frequency]<<lsf;
|
||||||
framesize += padding;
|
if(layer==1)
|
||||||
|
framesize = (framesize+padding)*4;
|
||||||
|
else
|
||||||
|
framesize += padding;
|
||||||
|
|
||||||
// if(framesize<=0 || framesize>MAXFRAMESIZE) return FALSE;
|
// if(framesize<=0 || framesize>MAXFRAMESIZE) return FALSE;
|
||||||
if(srate) *srate = freqs[sampling_frequency];
|
if(srate) *srate = freqs[sampling_frequency];
|
||||||
|
Loading…
Reference in New Issue
Block a user