summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/gst/base/gstbasesink.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
index ca1135e99..fc0ea15d8 100644
--- a/libs/gst/base/gstbasesink.c
+++ b/libs/gst/base/gstbasesink.c
@@ -2509,13 +2509,17 @@ static GstFlowReturn
gst_base_sink_render_object (GstBaseSink * basesink, GstPad * pad,
GstMiniObject * obj)
{
- GstFlowReturn ret = GST_FLOW_OK;
+ GstFlowReturn ret;
GstBaseSinkClass *bclass;
- gboolean late = FALSE;
+ gboolean late;
+
GstBaseSinkPrivate *priv;
priv = basesink->priv;
+ late = FALSE;
+ ret = GST_FLOW_OK;
+
/* synchronize this object, non syncable objects return OK
* immediatly. */
ret = gst_base_sink_do_sync (basesink, pad, obj, &late);
@@ -3384,6 +3388,7 @@ gst_base_sink_perform_step (GstBaseSink * sink, GstPad * pad, GstEvent * event)
GstFormat format;
guint64 amount;
guint seqnum;
+ GstStepInfo *pending;
bclass = GST_BASE_SINK_GET_CLASS (sink);
priv = sink->priv;
@@ -3393,6 +3398,8 @@ gst_base_sink_perform_step (GstBaseSink * sink, GstPad * pad, GstEvent * event)
gst_event_parse_step (event, &format, &amount, &rate, &flush, &intermediate);
seqnum = gst_event_get_seqnum (event);
+ pending = &priv->pending_step;
+
if (flush) {
/* we need to call ::unlock before locking PREROLL_LOCK
* since we lock it before going into ::render */
@@ -3401,14 +3408,14 @@ gst_base_sink_perform_step (GstBaseSink * sink, GstPad * pad, GstEvent * event)
GST_PAD_PREROLL_LOCK (sink->sinkpad);
/* update the segment */
- priv->pending_step.seqnum = seqnum;
- priv->pending_step.format = format;
- priv->pending_step.amount = amount;
- priv->pending_step.position = 0;
- priv->pending_step.rate = rate;
- priv->pending_step.flush = flush;
- priv->pending_step.intermediate = intermediate;
- priv->pending_step.valid = TRUE;
+ pending->seqnum = seqnum;
+ pending->format = format;
+ pending->amount = amount;
+ pending->position = 0;
+ pending->rate = rate;
+ pending->flush = flush;
+ pending->intermediate = intermediate;
+ pending->valid = TRUE;
/* now that we have the PREROLL lock, clear our unlock request */
if (bclass->unlock_stop)