[MPlayer-cvslog] r32692 - trunk/libmpdemux/mp3_hdr.h

reimar subversion at mplayerhq.hu
Sat Dec 11 22:11:34 CET 2010


Author: reimar
Date: Sat Dec 11 22:11:33 2010
New Revision: 32692

Log:
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).

Modified:
   trunk/libmpdemux/mp3_hdr.h

Modified: trunk/libmpdemux/mp3_hdr.h
==============================================================================
--- trunk/libmpdemux/mp3_hdr.h	Sat Dec 11 20:32:23 2010	(r32691)
+++ trunk/libmpdemux/mp3_hdr.h	Sat Dec 11 22:11:33 2010	(r32692)
@@ -26,9 +26,10 @@ int mp_get_mp3_header(unsigned char* hbu
 #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;
 }
 


More information about the MPlayer-cvslog mailing list