guint position, size; /* position in the input buffer and size of the
input buffer in number of samples */
- GstBuffer *input_buffer;
-
guint64 output_offset; /* Sample offset in output segment relative to
srcpad.segment.start where the current position
of this input_buffer would be placed. */
GstAudioAggregatorPad *pad = (GstAudioAggregatorPad *) object;
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
G_OBJECT_CLASS (gst_audio_aggregator_pad_parent_class)->finalize (object);
}
gst_audio_info_init (&pad->info);
pad->priv->buffer = NULL;
- pad->priv->input_buffer = NULL;
pad->priv->position = 0;
pad->priv->size = 0;
pad->priv->output_offset = -1;
pad->priv->output_offset = pad->priv->next_offset = -1;
pad->priv->discont_time = GST_CLOCK_TIME_NONE;
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
GST_OBJECT_UNLOCK (aggpad);
return GST_FLOW_OK;
pad->priv->position = pad->priv->size;
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
return FALSE;
}
if (pad->priv->position == pad->priv->size) {
/* Buffer done, drop it */
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
GST_LOG_OBJECT (pad, "Finished mixing buffer, waiting for next");
return FALSE;
}
GstAudioAggregatorPad *pad = (GstAudioAggregatorPad *) iter->data;
GstAggregatorPad *aggpad = (GstAggregatorPad *) iter->data;
gboolean pad_eos = gst_aggregator_pad_is_eos (aggpad);
+ GstBuffer *input_buffer;
if (!pad_eos)
is_eos = FALSE;
- pad->priv->input_buffer = gst_aggregator_pad_peek_buffer (aggpad);
+ input_buffer = gst_aggregator_pad_peek_buffer (aggpad);
GST_OBJECT_LOCK (pad);
- if (!pad->priv->input_buffer) {
+ if (!input_buffer) {
if (timeout) {
if (pad->priv->output_offset < next_offset) {
gint64 diff = next_offset - pad->priv->output_offset;
if (GST_AUDIO_AGGREGATOR_PAD_GET_CLASS (pad)->convert_buffer)
pad->priv->buffer =
gst_audio_aggregator_convert_buffer
- (aagg, GST_PAD (pad), &pad->info, &srcpad->info,
- pad->priv->input_buffer);
+ (aagg, GST_PAD (pad), &pad->info, &srcpad->info, input_buffer);
else
- pad->priv->buffer = gst_buffer_ref (pad->priv->input_buffer);
+ pad->priv->buffer = gst_buffer_ref (input_buffer);
if (!gst_audio_aggregator_fill_buffer (aagg, pad)) {
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
- pad->priv->buffer = NULL;
+ gst_buffer_unref (input_buffer);
dropped = TRUE;
GST_OBJECT_UNLOCK (pad);
gst_aggregator_pad_drop_buffer (aggpad);
continue;
}
- } else {
- gst_buffer_unref (pad->priv->input_buffer);
}
+ gst_buffer_unref (input_buffer);
if (!pad->priv->buffer && !dropped && pad_eos) {
GST_DEBUG_OBJECT (aggpad, "Pad is in EOS state");
GST_AUDIO_INFO_RATE (&srcpad->info))), pad->priv->buffer);
/* Buffer done, drop it */
gst_buffer_replace (&pad->priv->buffer, NULL);
- gst_buffer_replace (&pad->priv->input_buffer, NULL);
dropped = TRUE;
GST_OBJECT_UNLOCK (pad);
gst_aggregator_pad_drop_buffer (aggpad);