Mercurial > mplayer.hg
changeset 32605:7b4f8ecdc33b
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).
author | reimar |
---|---|
date | Sat, 11 Dec 2010 21:11:33 +0000 |
parents | 3ba59e647e58 |
children | c3a24e046795 |
files | libmpdemux/mp3_hdr.h |
diffstat | 1 files changed, 4 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/mp3_hdr.h Sat Dec 11 19:32:23 2010 +0000 +++ b/libmpdemux/mp3_hdr.h Sat Dec 11 21:11:33 2010 +0000 @@ -26,9 +26,10 @@ #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){ - if( (head & 0x0000e0ff) != 0x0000e0ff || - (head & 0x00fc0000) == 0x00fc0000) return 0; - if(mp_decode_mp3_header((unsigned char*)(&head))<=0) return 0; + unsigned char tmp[4] = {head >> 24, head >> 16, head >> 8, head}; + if( (head & 0xffe00000) != 0xffe00000 || + (head & 0x00000c00) == 0x00000c00) return 0; + if(mp_decode_mp3_header(tmp)<=0) return 0; return 1; }