static gboolean remove_elements_from_pipeline (KmsAlphaBlendingData * port_data) { KmsAlphaBlending *self = port_data->mixer; GstElement *videoconvert, *videoscale, *videorate, *capsfilter, *queue, *videobox; KMS_ALPHA_BLENDING_LOCK (self); videobox = port_data->videobox; gst_element_unlink (videobox, self->priv->videomixer); if (port_data->video_mixer_pad != NULL) { gst_element_release_request_pad (self->priv->videomixer, port_data->video_mixer_pad); g_object_unref (port_data->video_mixer_pad); port_data->video_mixer_pad = NULL; } videoconvert = g_object_ref (port_data->videoconvert); videorate = g_object_ref (port_data->videorate); queue = g_object_ref (port_data->queue); videoscale = g_object_ref (port_data->videoscale); capsfilter = g_object_ref (port_data->capsfilter); g_object_ref (videobox); g_object_unref (port_data->videoconvert_sink_pad); port_data->videoconvert_sink_pad = NULL; port_data->videoconvert = NULL; port_data->videorate = NULL; port_data->queue = NULL; port_data->videoscale = NULL; port_data->capsfilter = NULL; port_data->videobox = NULL; gst_bin_remove_many (GST_BIN (self), videoconvert, videoscale, capsfilter, videorate, queue, videobox, NULL); kms_base_hub_unlink_video_src (KMS_BASE_HUB (self), port_data->id); KMS_ALPHA_BLENDING_UNLOCK (self); gst_element_set_state (videoconvert, GST_STATE_NULL); gst_element_set_state (videoscale, GST_STATE_NULL); gst_element_set_state (videorate, GST_STATE_NULL); gst_element_set_state (capsfilter, GST_STATE_NULL); gst_element_set_state (queue, GST_STATE_NULL); gst_element_set_state (videobox, GST_STATE_NULL); g_object_unref (videoconvert); g_object_unref (videoscale); g_object_unref (videorate); g_object_unref (capsfilter); g_object_unref (queue); g_object_unref (videobox); return G_SOURCE_REMOVE; }
static gboolean remove_elements_from_pipeline (KmsCompositeMixerData * port_data) { KmsCompositeMixer *self = port_data->mixer; KMS_COMPOSITE_MIXER_LOCK (self); gst_element_unlink (port_data->capsfilter, self->priv->videomixer); if (port_data->video_mixer_pad != NULL) { gst_element_release_request_pad (self->priv->videomixer, port_data->video_mixer_pad); g_object_unref (port_data->video_mixer_pad); port_data->video_mixer_pad = NULL; } g_object_unref (port_data->videoconvert_sink_pad); gst_bin_remove_many (GST_BIN (self), g_object_ref (port_data->input_capsfilter), g_object_ref (port_data->videoconvert), g_object_ref (port_data->videoscale), g_object_ref (port_data->capsfilter), g_object_ref (port_data->videorate), g_object_ref (port_data->queue), NULL); kms_base_hub_unlink_video_src (KMS_BASE_HUB (self), port_data->id); KMS_COMPOSITE_MIXER_UNLOCK (self); gst_element_set_state (port_data->input_capsfilter, GST_STATE_NULL); gst_element_set_state (port_data->videoconvert, GST_STATE_NULL); gst_element_set_state (port_data->videoscale, GST_STATE_NULL); gst_element_set_state (port_data->videorate, GST_STATE_NULL); gst_element_set_state (port_data->capsfilter, GST_STATE_NULL); gst_element_set_state (port_data->queue, GST_STATE_NULL); g_object_unref (port_data->input_capsfilter); g_object_unref (port_data->videoconvert); g_object_unref (port_data->videoscale); g_object_unref (port_data->videorate); g_object_unref (port_data->capsfilter); g_object_unref (port_data->queue); port_data->videoconvert_sink_pad = NULL; port_data->input_capsfilter = NULL; port_data->videoconvert = NULL; port_data->videoscale = NULL; port_data->capsfilter = NULL; port_data->videorate = NULL; port_data->queue = NULL; return G_SOURCE_REMOVE; }
static gboolean remove_elements_from_pipeline (KmsCompositeMixerData * port_data) { KmsCompositeMixer *self = port_data->mixer; KMS_COMPOSITE_MIXER_LOCK (self); gst_element_unlink (port_data->capsfilter, self->priv->videomixer); if (port_data->latency_probe_id > 0) { gst_pad_remove_probe (port_data->video_mixer_pad, port_data->latency_probe_id); port_data->latency_probe_id = 0; } if (port_data->video_mixer_pad != NULL) { gst_element_release_request_pad (self->priv->videomixer, port_data->video_mixer_pad); g_object_unref (port_data->video_mixer_pad); port_data->video_mixer_pad = NULL; } gst_bin_remove_many (GST_BIN (self), g_object_ref (port_data->capsfilter), g_object_ref (port_data->tee), g_object_ref (port_data->fakesink), NULL); kms_base_hub_unlink_video_src (KMS_BASE_HUB (self), port_data->id); KMS_COMPOSITE_MIXER_UNLOCK (self); gst_element_set_state (port_data->capsfilter, GST_STATE_NULL); gst_element_set_state (port_data->tee, GST_STATE_NULL); gst_element_set_state (port_data->fakesink, GST_STATE_NULL); g_object_unref (port_data->capsfilter); g_object_unref (port_data->tee); g_object_unref (port_data->fakesink); g_object_unref (port_data->tee_sink_pad); port_data->tee_sink_pad = NULL; port_data->capsfilter = NULL; port_data->tee = NULL; port_data->fakesink = NULL; return G_SOURCE_REMOVE; }