demux_audio: improve WAV format detection

Make WAV format detection more restrictive so it does not incorrectly
grab qcp files.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@34343 b3059339-0415-0410-9bf9-f77b7e298cf2
Author: reimar
This commit is contained in:
mplayer-svn 2011-11-11 17:29:14 +00:00 committed by wm4
parent e687d1e51a
commit 6259df5313
1 changed files with 3 additions and 1 deletions

View File

@ -330,6 +330,7 @@ static int demux_audio_open(demuxer_t* demuxer) {
mp3_hdr_t *mp3_hdrs = NULL, *mp3_found = NULL; mp3_hdr_t *mp3_hdrs = NULL, *mp3_found = NULL;
da_priv_t* priv; da_priv_t* priv;
double duration; double duration;
int found_WAVE = 0;
s = demuxer->stream; s = demuxer->stream;
@ -359,7 +360,7 @@ static int demux_audio_open(demuxer_t* demuxer) {
len = (hdr[0]<<21) | (hdr[1]<<14) | (hdr[2]<<7) | hdr[3]; len = (hdr[0]<<21) | (hdr[1]<<14) | (hdr[2]<<7) | hdr[3];
stream_skip(s,len); stream_skip(s,len);
step = 4; step = 4;
} else if( hdr[0] == 'f' && hdr[1] == 'm' && hdr[2] == 't' && hdr[3] == ' ' ) { } else if( found_WAVE && hdr[0] == 'f' && hdr[1] == 'm' && hdr[2] == 't' && hdr[3] == ' ' ) {
frmt = WAV; frmt = WAV;
break; break;
} else if((mp3_flen = mp_get_mp3_header(hdr, &mp3_chans, &mp3_freq, } else if((mp3_flen = mp_get_mp3_header(hdr, &mp3_chans, &mp3_freq,
@ -375,6 +376,7 @@ static int demux_audio_open(demuxer_t* demuxer) {
if (!mp3_hdrs || mp3_hdrs->cons_hdrs < 3) if (!mp3_hdrs || mp3_hdrs->cons_hdrs < 3)
break; break;
} }
found_WAVE = hdr[0] == 'W' && hdr[1] == 'A' && hdr[2] == 'V' && hdr[3] == 'E';
// Add here some other audio format detection // Add here some other audio format detection
if(step < HDR_SIZE) if(step < HDR_SIZE)
memmove(hdr,&hdr[step],HDR_SIZE-step); memmove(hdr,&hdr[step],HDR_SIZE-step);