You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.5 KiB
29 lines
1.5 KiB
Index: libmpdemux/demux_real.c
|
|
===================================================================
|
|
--- libmpdemux/demux_real.c (revision 27674)
|
|
+++ libmpdemux/demux_real.c (revision 27675)
|
|
@@ -947,6 +947,7 @@
|
|
// last fragment!
|
|
if(dp_hdr->len!=vpkg_length-vpkg_offset)
|
|
mp_msg(MSGT_DEMUX,MSGL_V,"warning! assembled.len=%d frag.len=%d total.len=%d \n",dp->len,vpkg_offset,vpkg_length-vpkg_offset);
|
|
+ if (vpkg_offset > dp->len - sizeof(dp_hdr_t) - dp_hdr->len) vpkg_offset = dp->len - sizeof(dp_hdr_t) - dp_hdr->len;
|
|
stream_read(demuxer->stream, dp_data+dp_hdr->len, vpkg_offset);
|
|
if((dp_data[dp_hdr->len]&0x20) && (sh_video->format==0x30335652)) --dp_hdr->chunks; else
|
|
dp_hdr->len+=vpkg_offset;
|
|
@@ -970,6 +971,7 @@
|
|
// non-last fragment:
|
|
if(dp_hdr->len!=vpkg_offset)
|
|
mp_msg(MSGT_DEMUX,MSGL_V,"warning! assembled.len=%d offset=%d frag.len=%d total.len=%d \n",dp->len,vpkg_offset,len,vpkg_length);
|
|
+ if (len > dp->len - sizeof(dp_hdr_t) - dp_hdr->len) len = dp->len - sizeof(dp_hdr_t) - dp_hdr->len;
|
|
stream_read(demuxer->stream, dp_data+dp_hdr->len, len);
|
|
if((dp_data[dp_hdr->len]&0x20) && (sh_video->format==0x30335652)) --dp_hdr->chunks; else
|
|
dp_hdr->len+=len;
|
|
@@ -992,6 +994,7 @@
|
|
extra[0]=1; extra[1]=0; // offset of the first chunk
|
|
if(0x00==(vpkg_header&0xc0)){
|
|
// first fragment:
|
|
+ if (len > dp->len - sizeof(dp_hdr_t)) len = dp->len - sizeof(dp_hdr_t);
|
|
dp_hdr->len=len;
|
|
stream_read(demuxer->stream, dp_data, len);
|
|
ds->asf_packet=dp;
|