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.
This commit is contained in:
parent
0b67f872dc
commit
7863be66ed
@ -115,11 +115,14 @@ static GstStateChangeReturn gst_ass_render_change_state (GstElement * element,
|
|||||||
G_DEFINE_TYPE (GstAssRender, gst_ass_render, GST_TYPE_ELEMENT);
|
G_DEFINE_TYPE (GstAssRender, gst_ass_render, GST_TYPE_ELEMENT);
|
||||||
|
|
||||||
static GstCaps *gst_ass_render_get_videosink_caps (GstPad * pad,
|
static GstCaps *gst_ass_render_get_videosink_caps (GstPad * pad,
|
||||||
GstCaps * filter);
|
GstAssRender * render, GstCaps * filter);
|
||||||
static GstCaps *gst_ass_render_get_src_caps (GstPad * pad, 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_video (GstPad * pad,
|
||||||
static gboolean gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps);
|
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,
|
static GstFlowReturn gst_ass_render_chain_video (GstPad * pad,
|
||||||
GstObject * parent, GstBuffer * buf);
|
GstObject * parent, GstBuffer * buf);
|
||||||
@ -425,7 +428,7 @@ gst_ass_render_query_src (GstPad * pad, GstObject * parent, GstQuery * query)
|
|||||||
GstCaps *filter, *caps;
|
GstCaps *filter, *caps;
|
||||||
|
|
||||||
gst_query_parse_caps (query, &filter);
|
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_query_set_caps_result (query, caps);
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
res = TRUE;
|
res = TRUE;
|
||||||
@ -577,9 +580,9 @@ gst_ass_render_intersect_by_feature (GstCaps * caps,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
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;
|
GstPad *srcpad = render->srcpad;
|
||||||
GstCaps *peer_caps = NULL, *caps = NULL, *assrender_filter = NULL;
|
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_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
gst_object_unref (render);
|
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GstCaps *
|
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;
|
GstPad *sinkpad = render->video_sinkpad;
|
||||||
GstCaps *peer_caps = NULL, *caps = NULL, *assrender_filter = NULL;
|
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_DEBUG_OBJECT (render, "returning %" GST_PTR_FORMAT, caps);
|
||||||
|
|
||||||
gst_object_unref (render);
|
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -780,9 +779,9 @@ gst_ass_render_can_handle_caps (GstCaps * incaps)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
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;
|
GstQuery *query;
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
gint par_n = 1, par_d = 1;
|
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");
|
GST_DEBUG_OBJECT (render, "ass renderer setup complete");
|
||||||
|
|
||||||
out:
|
out:
|
||||||
gst_object_unref (render);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -920,9 +918,9 @@ unsupported_caps:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
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;
|
GstStructure *structure;
|
||||||
const GValue *value;
|
const GValue *value;
|
||||||
GstBuffer *priv;
|
GstBuffer *priv;
|
||||||
@ -964,8 +962,6 @@ gst_ass_render_setcaps_text (GstPad * pad, GstCaps * caps)
|
|||||||
}
|
}
|
||||||
g_mutex_unlock (&render->ass_mutex);
|
g_mutex_unlock (&render->ass_mutex);
|
||||||
|
|
||||||
gst_object_unref (render);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1507,7 +1503,7 @@ gst_ass_render_event_video (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
|
||||||
gst_event_parse_caps (event, &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);
|
gst_event_unref (event);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1591,7 +1587,9 @@ gst_ass_render_query_video (GstPad * pad, GstObject * parent, GstQuery * query)
|
|||||||
GstCaps *filter, *caps;
|
GstCaps *filter, *caps;
|
||||||
|
|
||||||
gst_query_parse_caps (query, &filter);
|
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_query_set_caps_result (query, caps);
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
res = TRUE;
|
res = TRUE;
|
||||||
@ -1620,7 +1618,7 @@ gst_ass_render_event_text (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||||||
GstCaps *caps;
|
GstCaps *caps;
|
||||||
|
|
||||||
gst_event_parse_caps (event, &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);
|
gst_event_unref (event);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user