gboolean ret = TRUE;
GstPad *peer_pad = gst_pad_get_peer(pad);
+ if (!peer_pad) {
+ ms_error ("Fail to get peer pad");
+ return FALSE;
+ }
+
if (GST_IS_PROXY_PAD(peer_pad)) {
GstObject *ghost_object = gst_pad_get_parent(peer_pad);
GstPad *ghost_pad = GST_PAD(ghost_object);
GstPad *target_pad = gst_pad_get_peer(ghost_pad);
+ if (!target_pad) {
+ ms_error ("Fail to get peer pad");
+ MS_SAFE_UNREF(peer_pad);
+ return FALSE;
+ }
+
if (GST_IS_GHOST_PAD(target_pad)) {
ret = ret && gst_element_remove_pad(GST_ELEMENT(GST_PAD_PARENT(target_pad)), target_pad);
} else {
static GstElement *__ms_pad_get_peer_element(GstPad * pad)
{
if (!gst_pad_is_linked(pad)) {
- ms_info("Pad [%s] of element [%s] is not linked yet", GST_PAD_NAME(pad), GST_ELEMENT_NAME(gst_pad_get_parent_element(pad)));
+ ms_info("Pad [%s:%s] is not linked yet", GST_DEBUG_PAD_NAME(pad));
return NULL;
}
+
GstPad *peer_pad = gst_pad_get_peer(pad);
+ if (!peer_pad) {
+ ms_error ("Fail to get peer pad");
+ return NULL;
+ }
+
GstElement *ret = gst_pad_get_parent_element(peer_pad);
if (!ret) {
if (GST_IS_PROXY_PAD(peer_pad)) {
GstElement *found_element = gst_pad_get_parent_element(found_elem_sink_pad);
+ if (!found_element) {
+ ms_error ("Fail to get parent element");
+ return ret;
+ }
+
if (previous_elem) {
/* Previous element is set. */
if (prev_elem_src_pad) {
found_element = (GstElement *) g_value_get_object(&element_value);
const gchar *found_klass = gst_element_factory_get_klass(gst_element_get_factory(found_element));
+ if (!found_element) {
+ ms_error("Fail to get element from element value");
+ return NULL;
+ }
+
/* Check if found element is of appropriate needed plugin class */
if ((klass_name && g_strrstr(found_klass, klass_name)) && (bin_name == NULL || g_strrstr(GST_ELEMENT_NAME(found_element), bin_name))) {