mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
ghostpad: Add guards against invalid parameters to the new, public functions
This commit is contained in:
parent
6807e536b0
commit
800b738715
1 changed files with 81 additions and 15 deletions
|
@ -90,12 +90,16 @@ static void on_src_target_notify (GstPad * target,
|
|||
|
||||
static GParamSpec *pspec_caps = NULL;
|
||||
|
||||
|
||||
const GstQueryType *
|
||||
gst_proxy_pad_query_type_default (GstPad * pad)
|
||||
{
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
const GstQueryType *res = NULL;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), NULL);
|
||||
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
res = gst_pad_get_query_types (target);
|
||||
gst_object_unref (target);
|
||||
|
@ -107,9 +111,13 @@ gboolean
|
|||
gst_proxy_pad_event_default (GstPad * pad, GstEvent * event)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstPad *internal =
|
||||
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
g_return_val_if_fail (GST_IS_EVENT (event), FALSE);
|
||||
|
||||
internal =
|
||||
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
|
||||
if (internal) {
|
||||
res = gst_pad_push_event (internal, event);
|
||||
gst_object_unref (internal);
|
||||
|
@ -122,8 +130,12 @@ gboolean
|
|||
gst_proxy_pad_query_default (GstPad * pad, GstQuery * query)
|
||||
{
|
||||
gboolean res = FALSE;
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
g_return_val_if_fail (GST_IS_QUERY (query), FALSE);
|
||||
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
res = gst_pad_query (target, query);
|
||||
gst_object_unref (target);
|
||||
|
@ -138,6 +150,8 @@ gst_proxy_pad_iterate_internal_links_default (GstPad * pad)
|
|||
GstIterator *res = NULL;
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), NULL);
|
||||
|
||||
internal =
|
||||
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
|
||||
|
||||
|
@ -156,9 +170,14 @@ gst_proxy_pad_bufferalloc_default (GstPad * pad, guint64 offset, guint size,
|
|||
GstCaps * caps, GstBuffer ** buf)
|
||||
{
|
||||
GstFlowReturn result = GST_FLOW_WRONG_STATE;
|
||||
GstPad *internal =
|
||||
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (caps == NULL || GST_IS_CAPS (caps), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (buf != NULL, GST_FLOW_ERROR);
|
||||
|
||||
internal =
|
||||
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD_CAST (pad)));
|
||||
if (internal) {
|
||||
result = gst_pad_alloc_buffer (internal, offset, size, caps, buf);
|
||||
gst_object_unref (internal);
|
||||
|
@ -171,8 +190,12 @@ GstFlowReturn
|
|||
gst_proxy_pad_chain_default (GstPad * pad, GstBuffer * buffer)
|
||||
{
|
||||
GstFlowReturn res;
|
||||
GstPad *internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (GST_IS_BUFFER (buffer), GST_FLOW_ERROR);
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
res = gst_pad_push (internal, buffer);
|
||||
|
||||
return res;
|
||||
|
@ -182,8 +205,12 @@ GstFlowReturn
|
|||
gst_proxy_pad_chain_list_default (GstPad * pad, GstBufferList * list)
|
||||
{
|
||||
GstFlowReturn res;
|
||||
GstPad *internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (GST_IS_BUFFER_LIST (list), GST_FLOW_ERROR);
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
res = gst_pad_push_list (internal, list);
|
||||
|
||||
return res;
|
||||
|
@ -194,8 +221,12 @@ gst_proxy_pad_getrange_default (GstPad * pad, guint64 offset, guint size,
|
|||
GstBuffer ** buffer)
|
||||
{
|
||||
GstFlowReturn res;
|
||||
GstPad *internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), GST_FLOW_ERROR);
|
||||
g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
res = gst_pad_pull_range (internal, offset, size, buffer);
|
||||
|
||||
return res;
|
||||
|
@ -205,8 +236,11 @@ gboolean
|
|||
gst_proxy_pad_checkgetrange_default (GstPad * pad)
|
||||
{
|
||||
gboolean result;
|
||||
GstPad *internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
result = gst_pad_check_pull_range (internal);
|
||||
|
||||
return result;
|
||||
|
@ -215,10 +249,14 @@ gst_proxy_pad_checkgetrange_default (GstPad * pad)
|
|||
GstCaps *
|
||||
gst_proxy_pad_getcaps_default (GstPad * pad)
|
||||
{
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
GstCaps *res;
|
||||
GstPadTemplate *templ = GST_PAD_PAD_TEMPLATE (pad);
|
||||
GstPadTemplate *templ;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), NULL);
|
||||
|
||||
templ = GST_PAD_PAD_TEMPLATE (pad);
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
/* if we have a real target, proxy the call */
|
||||
res = gst_pad_get_caps_reffed (target);
|
||||
|
@ -264,9 +302,13 @@ done:
|
|||
gboolean
|
||||
gst_proxy_pad_acceptcaps_default (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
gboolean res;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
g_return_val_if_fail (caps == NULL || GST_IS_CAPS (caps), FALSE);
|
||||
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
res = gst_pad_accept_caps (target, caps);
|
||||
gst_object_unref (target);
|
||||
|
@ -282,8 +324,12 @@ gst_proxy_pad_acceptcaps_default (GstPad * pad, GstCaps * caps)
|
|||
void
|
||||
gst_proxy_pad_fixatecaps_default (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
|
||||
g_return_if_fail (GST_IS_PROXY_PAD (pad));
|
||||
g_return_if_fail (GST_IS_CAPS (caps));
|
||||
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
gst_pad_fixate_caps (target, caps);
|
||||
gst_object_unref (target);
|
||||
|
@ -293,9 +339,13 @@ gst_proxy_pad_fixatecaps_default (GstPad * pad, GstCaps * caps)
|
|||
gboolean
|
||||
gst_proxy_pad_setcaps_default (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
GstPad *target = gst_proxy_pad_get_target (pad);
|
||||
GstPad *target;
|
||||
gboolean res;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
g_return_val_if_fail (caps == NULL || GST_IS_CAPS (caps), FALSE);
|
||||
|
||||
target = gst_proxy_pad_get_target (pad);
|
||||
if (target) {
|
||||
res = gst_pad_set_caps (target, caps);
|
||||
gst_object_unref (target);
|
||||
|
@ -584,6 +634,8 @@ gst_ghost_pad_internal_activate_push_default (GstPad * pad, gboolean active)
|
|||
gboolean ret;
|
||||
GstPad *other;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
|
||||
GST_LOG_OBJECT (pad, "%sactivate push on %s:%s, we're ok",
|
||||
(active ? "" : "de"), GST_DEBUG_PAD_NAME (pad));
|
||||
|
||||
|
@ -601,6 +653,8 @@ gst_ghost_pad_internal_activate_pull_default (GstPad * pad, gboolean active)
|
|||
gboolean ret;
|
||||
GstPad *other;
|
||||
|
||||
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
|
||||
|
||||
GST_LOG_OBJECT (pad, "%sactivate pull on %s:%s", (active ? "" : "de"),
|
||||
GST_DEBUG_PAD_NAME (pad));
|
||||
|
||||
|
@ -634,6 +688,8 @@ gst_ghost_pad_activate_push_default (GstPad * pad, gboolean active)
|
|||
gboolean ret;
|
||||
GstPad *other;
|
||||
|
||||
g_return_val_if_fail (GST_IS_GHOST_PAD (pad), FALSE);
|
||||
|
||||
GST_LOG_OBJECT (pad, "%sactivate push on %s:%s, proxy internal",
|
||||
(active ? "" : "de"), GST_DEBUG_PAD_NAME (pad));
|
||||
|
||||
|
@ -650,6 +706,8 @@ gst_ghost_pad_activate_pull_default (GstPad * pad, gboolean active)
|
|||
gboolean ret;
|
||||
GstPad *other;
|
||||
|
||||
g_return_val_if_fail (GST_IS_GHOST_PAD (pad), FALSE);
|
||||
|
||||
GST_LOG_OBJECT (pad, "%sactivate pull on %s:%s", (active ? "" : "de"),
|
||||
GST_DEBUG_PAD_NAME (pad));
|
||||
|
||||
|
@ -681,6 +739,9 @@ gst_ghost_pad_link_default (GstPad * pad, GstPad * peer)
|
|||
GstPadLinkReturn ret;
|
||||
GstPad *internal;
|
||||
|
||||
g_return_val_if_fail (GST_IS_GHOST_PAD (pad), GST_PAD_LINK_REFUSED);
|
||||
g_return_val_if_fail (GST_IS_PAD (peer), GST_PAD_LINK_REFUSED);
|
||||
|
||||
GST_DEBUG_OBJECT (pad, "linking ghostpad");
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
|
@ -719,6 +780,8 @@ gst_ghost_pad_unlink_default (GstPad * pad)
|
|||
{
|
||||
GstPad *internal;
|
||||
|
||||
g_return_if_fail (GST_IS_GHOST_PAD (pad));
|
||||
|
||||
internal = GST_PROXY_PAD_INTERNAL (pad);
|
||||
|
||||
GST_DEBUG_OBJECT (pad, "unlinking ghostpad");
|
||||
|
@ -814,6 +877,9 @@ done:
|
|||
gboolean
|
||||
gst_ghost_pad_setcaps_default (GstPad * pad, GstCaps * caps)
|
||||
{
|
||||
g_return_val_if_fail (GST_IS_GHOST_PAD (pad), FALSE);
|
||||
g_return_val_if_fail (caps == NULL || GST_IS_CAPS (caps), FALSE);
|
||||
|
||||
if (GST_PAD_DIRECTION (pad) == GST_PAD_SRC)
|
||||
return TRUE;
|
||||
|
||||
|
|
Loading…
Reference in a new issue