A return value of GST_FLOW_OK with a NULL buffer from get_output_buffer()
means the sub-class doesn't want to produce an output buffer, so
skip it.
If gst_videoaggregator_do_aggregate() generates an error, make sure
to propagate it - don't just ignore and discard the error by
over-writing it with the gst_pad_push() result.
gst_flow_get_name (ret));
return ret;
}
+ if (*outbuf == NULL) {
+ /* sub-class doesn't want to generate output right now */
+ return GST_FLOW_OK;
+ }
GST_BUFFER_TIMESTAMP (*outbuf) = output_start_time;
GST_BUFFER_DURATION (*outbuf) = output_end_time - output_start_time;
if (jitter <= 0) {
ret = gst_videoaggregator_do_aggregate (vagg, output_start_time,
output_end_time, &outbuf);
+ if (ret != GST_FLOW_OK)
+ goto done;
vagg->priv->qos_processed++;
} else {
GstMessage *msg;
goto done_unlocked;
done:
+ if (outbuf)
+ gst_buffer_unref (outbuf);
GST_VIDEO_AGGREGATOR_UNLOCK (vagg);
done_unlocked: