asfdec: do not align Data Object when Broadcast Flag is set
authorAlexandra Hájková <alexandra.khirnova@gmail.com>
Thu, 23 Jul 2015 10:33:37 +0000 (12:33 +0200)
committerAnton Khirnov <anton@khirnov.net>
Mon, 27 Jul 2015 16:09:30 +0000 (18:09 +0200)
its size is invalid in this case

Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavformat/asfdec.c

index 9c746af..37d91e0 100644 (file)
@@ -928,7 +928,7 @@ static int asf_read_data(AVFormatContext *s, const GUIDParseTable *g)
                size, asf->nb_packets);
     avio_skip(pb, 2); // skip reserved field
     asf->first_packet_offset = avio_tell(pb);
-    if (pb->seekable)
+    if (pb->seekable && !(asf->b_flags & ASF_FLAG_BROADCAST))
         align_position(pb, asf->offset, asf->data_size);
 
     return 0;
@@ -1676,7 +1676,7 @@ static int asf_read_header(AVFormatContext *s)
             size = avio_rl64(pb);
             align_position(pb, asf->offset, size);
         }
-        if (asf->data_reached && !pb->seekable)
+        if (asf->data_reached && (!pb->seekable || (asf->b_flags & ASF_FLAG_BROADCAST)))
             break;
     }