mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
encodebin: Fix stream_group_free when creating it went bad
Avoiding trying to use NULL pointers
This commit is contained in:
parent
28f4e7db12
commit
fe0e51914a
1 changed files with 21 additions and 17 deletions
|
@ -2032,23 +2032,24 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
if (sgroup->restriction_sid != 0)
|
if (sgroup->restriction_sid != 0)
|
||||||
g_signal_handler_disconnect (sgroup->profile, sgroup->restriction_sid);
|
g_signal_handler_disconnect (sgroup->profile, sgroup->restriction_sid);
|
||||||
|
|
||||||
if (ebin->muxer) {
|
if (sgroup->outqueue) {
|
||||||
/* outqueue - Muxer */
|
if (ebin->muxer) {
|
||||||
tmppad = gst_element_get_static_pad (sgroup->outqueue, "src");
|
/* outqueue - Muxer */
|
||||||
pad = gst_pad_get_peer (tmppad);
|
tmppad = gst_element_get_static_pad (sgroup->outqueue, "src");
|
||||||
|
pad = gst_pad_get_peer (tmppad);
|
||||||
|
|
||||||
if (pad) {
|
if (pad) {
|
||||||
/* Remove muxer request sink pad */
|
/* Remove muxer request sink pad */
|
||||||
gst_pad_unlink (tmppad, pad);
|
gst_pad_unlink (tmppad, pad);
|
||||||
if (GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (pad)) ==
|
if (GST_PAD_TEMPLATE_PRESENCE (GST_PAD_PAD_TEMPLATE (pad)) ==
|
||||||
GST_PAD_REQUEST)
|
GST_PAD_REQUEST)
|
||||||
gst_element_release_request_pad (ebin->muxer, pad);
|
gst_element_release_request_pad (ebin->muxer, pad);
|
||||||
gst_object_unref (pad);
|
gst_object_unref (pad);
|
||||||
|
}
|
||||||
|
gst_object_unref (tmppad);
|
||||||
}
|
}
|
||||||
gst_object_unref (tmppad);
|
|
||||||
}
|
|
||||||
if (sgroup->outqueue)
|
|
||||||
gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
|
gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (sgroup->formatter) {
|
if (sgroup->formatter) {
|
||||||
/* capsfilter - formatter - outqueue */
|
/* capsfilter - formatter - outqueue */
|
||||||
|
@ -2056,13 +2057,16 @@ stream_group_free (GstEncodeBin * ebin, StreamGroup * sgroup)
|
||||||
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
||||||
gst_element_unlink (sgroup->formatter, sgroup->outqueue);
|
gst_element_unlink (sgroup->formatter, sgroup->outqueue);
|
||||||
gst_element_unlink (sgroup->outfilter, sgroup->formatter);
|
gst_element_unlink (sgroup->outfilter, sgroup->formatter);
|
||||||
} else {
|
} else if (sgroup->outfilter) {
|
||||||
/* Capsfilter - outqueue */
|
/* Capsfilter - outqueue */
|
||||||
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
gst_element_set_state (sgroup->outfilter, GST_STATE_NULL);
|
||||||
gst_element_unlink (sgroup->outfilter, sgroup->outqueue);
|
gst_element_unlink (sgroup->outfilter, sgroup->outqueue);
|
||||||
}
|
}
|
||||||
gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
|
|
||||||
gst_bin_remove (GST_BIN (ebin), sgroup->outqueue);
|
if (sgroup->outqueue) {
|
||||||
|
gst_element_set_state (sgroup->outqueue, GST_STATE_NULL);
|
||||||
|
gst_bin_remove (GST_BIN (ebin), sgroup->outqueue);
|
||||||
|
}
|
||||||
|
|
||||||
/* streamcombiner - parser - capsfilter */
|
/* streamcombiner - parser - capsfilter */
|
||||||
if (sgroup->parser) {
|
if (sgroup->parser) {
|
||||||
|
|
Loading…
Reference in a new issue