tell the user if compressed swf found
authorAlex Beregszaszi <alex@rtfs.hu>
Sat, 2 Jul 2005 21:59:33 +0000 (21:59 +0000)
committerAlex Beregszaszi <alex@rtfs.hu>
Sat, 2 Jul 2005 21:59:33 +0000 (21:59 +0000)
Originally committed as revision 4419 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavformat/swf.c

index 1a254b8..347c824 100644 (file)
@@ -713,6 +713,7 @@ static int get_swf_tag(ByteIOContext *pb, int *len_ptr)
     if (len == 0x3f) {
         len = get_le32(pb);
     }
     if (len == 0x3f) {
         len = get_le32(pb);
     }
+//    av_log(NULL, AV_LOG_DEBUG, "Tag: %d - Len: %d\n", tag, len);
     *len_ptr = len;
     return tag;
 }
     *len_ptr = len;
     return tag;
 }
@@ -723,7 +724,7 @@ static int swf_probe(AVProbeData *p)
     /* check file header */
     if (p->buf_size <= 16)
         return 0;
     /* check file header */
     if (p->buf_size <= 16)
         return 0;
-    if (p->buf[0] == 'F' && p->buf[1] == 'W' &&
+    if ((p->buf[0] == 'F' || p->buf[0] == 'C') && p->buf[1] == 'W' &&
         p->buf[2] == 'S')
         return AVPROBE_SCORE_MAX;
     else
         p->buf[2] == 'S')
         return AVPROBE_SCORE_MAX;
     else
@@ -744,7 +745,14 @@ static int swf_read_header(AVFormatContext *s, AVFormatParameters *ap)
         return -1;
     s->priv_data = swf;
 
         return -1;
     s->priv_data = swf;
 
-    if ((get_be32(pb) & 0xffffff00) != MKBETAG('F', 'W', 'S', 0))
+    tag = get_be32(pb) & 0xffffff00;
+
+    if (tag == MKBETAG('C', 'W', 'S', 0))
+    {
+       av_log(s, AV_LOG_ERROR, "Compressed SWF format not supported\n");
+        return AVERROR_IO;
+    }
+    if (tag != MKBETAG('F', 'W', 'S', 0))
         return AVERROR_IO;
     get_le32(pb);
     /* skip rectangle size */
         return AVERROR_IO;
     get_le32(pb);
     /* skip rectangle size */