From a6373625f3595f373c49e77d4a6cfb449d3ebad2 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 21 Jan 2015 14:12:22 +0100 Subject: [PATCH] gstpad: Inline apply_pad_offset() Avoid doing a function call for something which will mostly be unused --- gst/gstpad.c | 53 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/gst/gstpad.c b/gst/gstpad.c index 3344dd8..6ad8756 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -606,39 +606,46 @@ restart: /* should be called with LOCK */ 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 */ - if (pad->offset != 0) { - gint64 offset; - - GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_TIME_FORMAT, - GST_TIME_ARGS (pad->offset)); + gint64 offset; - if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { - GstSegment segment; + GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_TIME_FORMAT, + GST_TIME_ARGS (pad->offset)); - g_assert (!upstream); + if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) { + GstSegment segment; - /* copy segment values */ - gst_event_copy_segment (event, &segment); - gst_event_unref (event); + g_assert (!upstream); - gst_segment_offset_running_time (&segment, segment.format, pad->offset); - event = gst_event_new_segment (&segment); - } + /* copy segment values */ + gst_event_copy_segment (event, &segment); + gst_event_unref (event); - 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); + gst_segment_offset_running_time (&segment, segment.format, pad->offset); + 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); + 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 */ static GstCaps * get_pad_caps (GstPad * pad) -- 2.7.4