# HG changeset patch # User reimar # Date 1292101893 0 # Node ID 7b4f8ecdc33b5cd73c6b64bcec55154e009a7766 # Parent 3ba59e647e58a3ac808dd809d62ca3e712df66b1 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). diff -r 3ba59e647e58 -r 7b4f8ecdc33b libmpdemux/mp3_hdr.h --- 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; }