mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-19 05:55:07 +00:00
detect audio-only program streams and broken files made by VDR
Originally committed as revision 5546 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
344a18c3b8
commit
25c533a2c2
@ -1269,21 +1269,21 @@ static int mpegps_probe(AVProbeData *p)
|
||||
for(i=0; i<p->buf_size; i++){
|
||||
code = (code<<8) + p->buf[i];
|
||||
if ((code & 0xffffff00) == 0x100) {
|
||||
switch(code){
|
||||
case SYSTEM_HEADER_START_CODE: sys++; break;
|
||||
case PRIVATE_STREAM_1: priv1++; break;
|
||||
case PACK_START_CODE: pspack++; break;
|
||||
case (VIDEO_ID + 0x100): vid++; break;
|
||||
case (AUDIO_ID + 0x100): audio++; break;
|
||||
}
|
||||
if(code == SYSTEM_HEADER_START_CODE) sys++;
|
||||
else if(code == PRIVATE_STREAM_1) priv1++;
|
||||
else if(code == PACK_START_CODE) pspack++;
|
||||
else if((code & 0xf0) == VIDEO_ID) vid++;
|
||||
else if((code & 0xe0) == AUDIO_ID) audio++;
|
||||
}
|
||||
}
|
||||
if(sys && sys*9 <= pspack*10)
|
||||
return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
|
||||
if((priv1 || vid) && (priv1+vid)*9 <= pspack*10)
|
||||
if((priv1 || vid || audio) && (priv1+vid+audio)*9 <= pspack*10)
|
||||
return AVPROBE_SCORE_MAX/2+2; // +1 for .mpg
|
||||
if((!!vid ^ !!audio) && !sys && !pspack) /* PES stream */
|
||||
return AVPROBE_SCORE_MAX/2;
|
||||
return AVPROBE_SCORE_MAX/2+2;
|
||||
if(vid || audio) /* invalid VDR files */
|
||||
return AVPROBE_SCORE_MAX/2+2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user