diff options
author | HyeJin Choi <meeshel@meeshel78@hotmail.com> | 2013-10-22 16:02:04 +0900 |
---|---|---|
committer | Thiago Santos <ts.santos@partner.samsung.com> | 2013-10-29 12:05:56 -0300 |
commit | 1e74f611ee8d1c6d65d0e7963ef5dc276a07e092 (patch) | |
tree | 420bfa5313ddfbd5974ccce615c550b078cbc7e8 /gst | |
parent | 3de558d96bb9230ada7297074ded1ebda6c4a026 (diff) |
asfdemux: mo_size check bug fix. mo_size is not mandatory field.
So, don't need to check previous payload's mo_size and current
payload's mo_size when merging it.
https://bugzilla.gnome.org/show_bug.cgi?id=710609
Diffstat (limited to 'gst')
-rwxr-xr-x[-rw-r--r--] | gst/asfdemux/asfpacket.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c index ecf1e056..7379d861 100644..100755 --- a/gst/asfdemux/asfpacket.c +++ b/gst/asfdemux/asfpacket.c @@ -374,6 +374,8 @@ gst_asf_demux_parse_payload (GstASFDemux * demux, AsfPacket * packet, GST_TIME_ARGS (payload.ts)); GST_LOG_OBJECT (demux, "media object dur : %" GST_TIME_FORMAT, GST_TIME_ARGS (payload.duration)); + } else if (payload.rep_data_len == 0) { + payload.mo_size = 0; } else if (payload.rep_data_len != 0) { GST_WARNING_OBJECT (demux, "invalid replicated data length, very bad"); *p_data += payload_len; @@ -407,9 +409,10 @@ gst_asf_demux_parse_payload (GstASFDemux * demux, AsfPacket * packet, AsfPayload *prev; if ((prev = asf_payload_find_previous_fragment (&payload, stream))) { - if (prev->buf == NULL || payload.mo_size != prev->mo_size || - payload.mo_offset >= gst_buffer_get_size (prev->buf) || - payload.mo_offset + payload_len > + if (prev->buf == NULL || (payload.mo_size > 0 + && payload.mo_size != prev->mo_size) + || payload.mo_offset >= gst_buffer_get_size (prev->buf) + || payload.mo_offset + payload_len > gst_buffer_get_size (prev->buf)) { GST_WARNING_OBJECT (demux, "Offset doesn't match previous data?!"); } else { |