mirror of https://github.com/mpv-player/mpv
mp3_hdr.h: fix mp_check_mp3_header()
Fix mp_check_mp3_header: it checked for a byte-swapped MP3-header on little-endian, and on big-endian it would only accept a MP3-header that would be valid when read in both directions. The latter was the reason for bug 905, causing the PS demuxer to claim files far too agressively (the MP3 check avoiding misdetection as DV is not exactly a sane approach, but it mostly works). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32692 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
2b2929fc93
commit
3474d7e1b5
|
@ -26,9 +26,10 @@ int mp_get_mp3_header(unsigned char* hbuf,int* chans, int* freq, int* spf, int*
|
||||||
#define mp_decode_mp3_header(hbuf) mp_get_mp3_header(hbuf,NULL,NULL,NULL,NULL,NULL)
|
#define mp_decode_mp3_header(hbuf) mp_get_mp3_header(hbuf,NULL,NULL,NULL,NULL,NULL)
|
||||||
|
|
||||||
static inline int mp_check_mp3_header(unsigned int head){
|
static inline int mp_check_mp3_header(unsigned int head){
|
||||||
if( (head & 0x0000e0ff) != 0x0000e0ff ||
|
unsigned char tmp[4] = {head >> 24, head >> 16, head >> 8, head};
|
||||||
(head & 0x00fc0000) == 0x00fc0000) return 0;
|
if( (head & 0xffe00000) != 0xffe00000 ||
|
||||||
if(mp_decode_mp3_header((unsigned char*)(&head))<=0) return 0;
|
(head & 0x00000c00) == 0x00000c00) return 0;
|
||||||
|
if(mp_decode_mp3_header(tmp)<=0) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue