[Ffmpeg-cvslog] r5546 - trunk/libavformat/mpeg.c
mru
subversion
Thu Jun 29 21:03:54 CEST 2006
Author: mru
Date: Thu Jun 29 21:03:53 2006
New Revision: 5546
Modified:
trunk/libavformat/mpeg.c
Log:
detect audio-only program streams and broken files made by VDR
Modified: trunk/libavformat/mpeg.c
==============================================================================
--- trunk/libavformat/mpeg.c (original)
+++ trunk/libavformat/mpeg.c Thu Jun 29 21:03:53 2006
@@ -1269,21 +1269,21 @@
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;
}
More information about the ffmpeg-cvslog
mailing list