Parent of the pad (the queue) may be set to NULL while there is
a buffer alloc going on.
GstPad *otherpad;
GstCaps *result;
- queue = GST_QUEUE (GST_PAD_PARENT (pad));
+ queue = GST_QUEUE (gst_pad_get_parent (pad));
+ if (G_UNLIKELY (queue == NULL))
+ return gst_caps_new_any ();
otherpad = (pad == queue->srcpad ? queue->sinkpad : queue->srcpad);
result = gst_pad_peer_get_caps (otherpad);
if (result == NULL)
result = gst_caps_new_any ();
+ gst_object_unref (queue);
+
return result;
}
GstPad *otherpad;
GstCaps *result;
- queue = GST_QUEUE2 (GST_PAD_PARENT (pad));
+ queue = GST_QUEUE2 (gst_pad_get_parent (pad));
+ if (G_UNLIKELY (queue == NULL))
+ return gst_caps_new_any ();
otherpad = (pad == queue->srcpad ? queue->sinkpad : queue->srcpad);
result = gst_pad_peer_get_caps (otherpad);
if (result == NULL)
result = gst_caps_new_any ();
+ gst_object_unref (queue);
+
return result;
}