From 7863be66edafdc130f4f812b7d5162846406946d Mon Sep 17 00:00:00 2001 From: Thiago Santos Date: Mon, 11 Aug 2014 12:32:04 -0300 Subject: [PATCH] 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. --- ext/assrender/gstassrender.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c index 7e8327b..b988490 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; } -- 2.7.4