[Bug 756413] avidemux: Fix assertion error while combining flows
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Mon Oct 12 16:58:34 PDT 2015
https://bugzilla.gnome.org/show_bug.cgi?id=756413
--- Comment #3 from Vineeth <vineeth.tm at samsung.com> ---
I have a corrupted file, which gives the assertion error while discovering the
file
** (lt-gst-discoverer-1.0:25003): CRITICAL **:
gst_flow_combiner_update_pad_flow: assertion 'pad != NULL' failed
>From my analysis
in the function gst_avi_demux_loop_data()
there is this logic
/* skip streams without pads */
if (!stream->pad) {
GST_DEBUG_OBJECT (avi, "skipping entry from stream %d without pad",
stream_num);
goto next;
}
so when stream->pad is NULL, goto next is being called.
The logic in next is
next:
/* move to next item */
ret = gst_avi_demux_advance (avi, stream, ret);
/* combine flows */
ret = gst_avi_demux_combine_flows (avi, stream, ret);
In gst_avi_demux_advance()
/* EOS */
GST_DEBUG_OBJECT (avi, "forward reached stop %u", stream->stop_entry);
goto eos;
gets called, because of which stream won't be advanced. Since the stream won't
be advanced, the stream->pad will still be NULL.
So when gst_avi_demux_combine_flows, gets called
gst_flow_combiner_update_pad_flow throws an assertion error since pad is NULL.
So i was thinking, the combine_flows should be called only when the stream has
advanced. And whenever EOS is being called, stream will not advance and so i
added the check..
please guide if there is any alternate solution. another way i can think of is
calling gst_flow_combiner_update_pad_flow only when pad is available, else just
print a warning message and return.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list