gstpad: Inline apply_pad_offset()

Avoid doing a function call for something which will mostly be unused
This commit is contained in:
Edward Hervey 2015-01-21 14:12:22 +01:00
parent 64b451c170
commit a6373625f3

View file

@ -606,39 +606,46 @@ restart:
/* should be called with LOCK */ /* should be called with LOCK */
static GstEvent * static GstEvent *
apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream) _apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream)
{ {
/* check if we need to adjust the segment */ gint64 offset;
if (pad->offset != 0) {
gint64 offset;
GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_TIME_FORMAT, GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_TIME_FORMAT,
GST_TIME_ARGS (pad->offset)); GST_TIME_ARGS (pad->offset));
if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
GstSegment segment; GstSegment segment;
g_assert (!upstream); g_assert (!upstream);
/* copy segment values */ /* copy segment values */
gst_event_copy_segment (event, &segment); gst_event_copy_segment (event, &segment);
gst_event_unref (event); gst_event_unref (event);
gst_segment_offset_running_time (&segment, segment.format, pad->offset); gst_segment_offset_running_time (&segment, segment.format, pad->offset);
event = gst_event_new_segment (&segment); event = gst_event_new_segment (&segment);
}
event = gst_event_make_writable (event);
offset = gst_event_get_running_time_offset (event);
if (upstream)
offset -= pad->offset;
else
offset += pad->offset;
gst_event_set_running_time_offset (event, offset);
} }
event = gst_event_make_writable (event);
offset = gst_event_get_running_time_offset (event);
if (upstream)
offset -= pad->offset;
else
offset += pad->offset;
gst_event_set_running_time_offset (event, offset);
return event; return event;
} }
static inline GstEvent *
apply_pad_offset (GstPad * pad, GstEvent * event, gboolean upstream)
{
if (G_UNLIKELY (pad->offset != 0))
return _apply_pad_offset (pad, event, upstream);
return event;
}
/* should be called with the OBJECT_LOCK */ /* should be called with the OBJECT_LOCK */
static GstCaps * static GstCaps *
get_pad_caps (GstPad * pad) get_pad_caps (GstPad * pad)