summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-12-11 21:11:33 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-12-16 06:22:19 +0200
commit3474d7e1b571b6b1dbcccde5535d7187a1425e12 (patch)
treeadf857892a1a09f535faf0fa20fabbf68ddc6651
parent2b2929fc9317c24c78c44756a83153cb05861c64 (diff)
downloadmpv-3474d7e1b571b6b1dbcccde5535d7187a1425e12.tar.bz2
mpv-3474d7e1b571b6b1dbcccde5535d7187a1425e12.tar.xz
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
-rw-r--r--libmpdemux/mp3_hdr.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/libmpdemux/mp3_hdr.h b/libmpdemux/mp3_hdr.h
index dfe3122d67..a9b34ac12c 100644
--- a/libmpdemux/mp3_hdr.h
+++ b/libmpdemux/mp3_hdr.h
@@ -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)
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;
}