|
|
|
@ -167,6 +167,16 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
print_guid(&g); |
|
|
|
|
printf(" size=0x%"PRIx64"\n", gsize); |
|
|
|
|
#endif |
|
|
|
|
if (!memcmp(&g, &data_header, sizeof(GUID))) { |
|
|
|
|
asf->data_object_offset = url_ftell(pb); |
|
|
|
|
// if not streaming, gsize is not unlimited (how?), and there is enough space in the file..
|
|
|
|
|
if (!(asf->hdr.flags & 0x01) && gsize >= 100) { |
|
|
|
|
asf->data_object_size = gsize - 24; |
|
|
|
|
} else { |
|
|
|
|
asf->data_object_size = (uint64_t)-1; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
if (gsize < 24) |
|
|
|
|
goto fail; |
|
|
|
|
if (!memcmp(&g, &file_header, sizeof(GUID))) { |
|
|
|
@ -327,15 +337,6 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) |
|
|
|
|
} |
|
|
|
|
pos2 = url_ftell(pb); |
|
|
|
|
url_fskip(pb, gsize - (pos2 - pos1 + 24)); |
|
|
|
|
} else if (!memcmp(&g, &data_header, sizeof(GUID))) { |
|
|
|
|
asf->data_object_offset = url_ftell(pb); |
|
|
|
|
// if not streaming, gsize is not unlimited (how?), and there is enough space in the file..
|
|
|
|
|
if (!(asf->hdr.flags & 0x01) && gsize != (uint64_t)-1 && gsize >= 24) { |
|
|
|
|
asf->data_object_size = gsize - 24; |
|
|
|
|
} else { |
|
|
|
|
asf->data_object_size = (uint64_t)-1; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
} else if (!memcmp(&g, &comment_header, sizeof(GUID))) { |
|
|
|
|
int len1, len2, len3, len4, len5; |
|
|
|
|
|
|
|
|
|