[FFmpeg-cvslog] r14167 - trunk/libavformat/psxstr.c

michael subversion
Fri Jul 11 17:10:58 CEST 2008


Author: michael
Date: Fri Jul 11 17:10:58 2008
New Revision: 14167

Log:
slightly better detection


Modified:
   trunk/libavformat/psxstr.c

Modified: trunk/libavformat/psxstr.c
==============================================================================
--- trunk/libavformat/psxstr.c	(original)
+++ trunk/libavformat/psxstr.c	Fri Jul 11 17:10:58 2008
@@ -67,9 +67,9 @@ static const char sync_header[12] = {0x0
 static int str_probe(AVProbeData *p)
 {
     int start;
+    uint8_t *sector;
 
-    /* need at least 0x38 bytes to validate */
-    if (p->buf_size < 0x38)
+    if (p->buf_size < RAW_CD_SECTOR_SIZE)
         return 0;
 
     if ((AV_RL32(&p->buf[0]) == RIFF_TAG) &&
@@ -80,10 +80,19 @@ static int str_probe(AVProbeData *p)
     } else
         start = 0;
 
+    sector= p->buf + start;
+
     /* look for CD sync header (00, 0xFF x 10, 00) */
     if (memcmp(p->buf+start,sync_header,sizeof(sync_header)))
         return 0;
 
+    if(sector[0x11] >= 32)
+        return 0;
+    if(   (sector[0x12] & CDXA_TYPE_MASK) != CDXA_TYPE_VIDEO
+       && (sector[0x12] & CDXA_TYPE_MASK) != CDXA_TYPE_AUDIO
+       && (sector[0x12] & CDXA_TYPE_MASK) != CDXA_TYPE_DATA)
+        return 0;
+
     /* MPEG files (like those ripped from VCDs) can also look like this;
      * only return half certainty */
     return 50;




More information about the ffmpeg-cvslog mailing list