summaryrefslogtreecommitdiff
path: root/ext/assrender/gstassrender.c
diff options
context:
space:
mode:
authorThiago Santos <thiagoss@osg.samsung.com>2014-08-11 12:32:04 -0300
committerThiago Santos <thiagoss@osg.samsung.com>2014-08-11 12:32:04 -0300
commit7863be66edafdc130f4f812b7d5162846406946d (patch)
treec77df31d0de62217a3109ad292ebe82974f81d1a /ext/assrender/gstassrender.c
parent0b67f872dc8c7b312edb03430915166129096a59 (diff)
downloadgstreamer-plugins-bad-7863be66edafdc130f4f812b7d5162846406946d.tar.gz
assrender: save a few ref/unref pairs
The event/query functions already have a reference to the element, avoid ref/unref in the functions handling caps queries and events.
Diffstat (limited to 'ext/assrender/gstassrender.c')
-rw-r--r--ext/assrender/gstassrender.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index 7e8327b36..b9884901b 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -115,11 +115,14 @@ static GstStateChangeReturn gst_ass_render_change_state (GstElement * element,
G_DEFINE_TYPE (GstAssRender, gst_ass_render, GST_TYPE_ELEMENT);
static GstCaps *gst_ass_render_get_videosink_caps (GstPad * pad,
- GstCaps * filter);
-static GstCaps *gst_ass_render_get_src_caps (GstPad * pad, GstCaps * filter);
+ GstAssRender * render, GstCaps * filter);
+static GstCaps *gst_ass_render_get_src_caps (GstPad * pad,
+ GstAssRender * render, GstCaps * filter);
-static gboolean gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps);
-static gboolean gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps);
+static gboolean gst_ass_render_setcaps_video (GstPad * pad,
+ GstAssRender * render, GstCaps * caps);
+static gboolean gst_ass_render_setcaps_text (GstPad * pad,
+ GstAssRender * render, GstCaps * caps);
static GstFlowReturn gst_ass_render_chain_video (GstPad * pad,
GstObject * parent, GstBuffer * buf);
@@ -425,7 +428,7 @@ gst_ass_render_query_src (GstPad * pad, GstObject * parent, GstQuery * query)
GstCaps *filter, *caps;
gst_query_parse_caps (query, &filter);
- caps = gst_ass_render_get_src_caps (pad, filter);
+ caps = gst_ass_render_get_src_caps (pad, (GstAssRender *) parent, filter);
gst_query_set_caps_result (query, caps);
gst_caps_unref (caps);
res = TRUE;
@@ -577,9 +580,9 @@ gst_ass_render_intersect_by_feature (GstCaps * caps,
}
static GstCaps *
-gst_ass_render_get_videosink_caps (GstPad * pad, GstCaps * filter)
+gst_ass_render_get_videosink_caps (GstPad * pad, GstAssRender * render,
+ GstCaps * filter)
{
- GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
GstPad *srcpad = render->srcpad;
GstCaps *peer_caps = NULL, *caps = NULL, *assrender_filter = NULL;
@@ -634,15 +637,13 @@ gst_ass_render_get_videosink_caps (GstPad * pad, GstCaps * filter)
GST_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps);
- gst_object_unref (render);
-
return caps;
}
static GstCaps *
-gst_ass_render_get_src_caps (GstPad * pad, GstCaps * filter)
+gst_ass_render_get_src_caps (GstPad * pad, GstAssRender * render,
+ GstCaps * filter)
{
- GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
GstPad *sinkpad = render->video_sinkpad;
GstCaps *peer_caps = NULL, *caps = NULL, *assrender_filter = NULL;
@@ -699,8 +700,6 @@ gst_ass_render_get_src_caps (GstPad * pad, GstCaps * filter)
GST_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps);
- gst_object_unref (render);
-
return caps;
}
@@ -780,9 +779,9 @@ gst_ass_render_can_handle_caps (GstCaps * incaps)
}
static gboolean
-gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps)
+gst_ass_render_setcaps_video (GstPad * pad, GstAssRender * render,
+ GstCaps * caps)
{
- GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
GstQuery *query;
gboolean ret = FALSE;
gint par_n = 1, par_d = 1;
@@ -900,7 +899,6 @@ gst_ass_render_setcaps_video (GstPad * pad, GstCaps * caps)
GST_DEBUG_OBJECT (render, "ass renderer setup complete");
out:
- gst_object_unref (render);
return ret;
@@ -920,9 +918,9 @@ unsupported_caps:
}
static gboolean
-gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps)
+gst_ass_render_setcaps_text (GstPad * pad, GstAssRender * render,
+ GstCaps * caps)
{
- GstAssRender *render = GST_ASS_RENDER (gst_pad_get_parent (pad));
GstStructure *structure;
const GValue *value;
GstBuffer *priv;
@@ -964,8 +962,6 @@ gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps)
}
g_mutex_unlock (&render->ass_mutex);
- gst_object_unref (render);
-
return ret;
}
@@ -1507,7 +1503,7 @@ gst_ass_render_event_video (GstPad * pad, GstObject * parent, GstEvent * event)
GstCaps *caps;
gst_event_parse_caps (event, &caps);
- ret = gst_ass_render_setcaps_video (pad, caps);
+ ret = gst_ass_render_setcaps_video (pad, render, caps);
gst_event_unref (event);
break;
}
@@ -1591,7 +1587,9 @@ gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query)
GstCaps *filter, *caps;
gst_query_parse_caps (query, &filter);
- caps = gst_ass_render_get_videosink_caps (pad, filter);
+ caps =
+ gst_ass_render_get_videosink_caps (pad, (GstAssRender *) parent,
+ filter);
gst_query_set_caps_result (query, caps);
gst_caps_unref (caps);
res = TRUE;
@@ -1620,7 +1618,7 @@ gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
GstCaps *caps;
gst_event_parse_caps (event, &caps);
- ret = gst_ass_render_setcaps_text (pad, caps);
+ ret = gst_ass_render_setcaps_text (pad, render, caps);
gst_event_unref (event);
break;
}