gst_app_sink_signals[SIGNAL_NEW_PREROLL] =
g_signal_new ("new-preroll", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstAppSinkClass, new_preroll),
- NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE);
+ NULL, NULL, __gst_app_marshal_ENUM__VOID, GST_TYPE_FLOW_RETURN, 0,
+ G_TYPE_NONE);
/**
* GstAppSink::new-sample:
* @appsink: the appsink element that emited the signal
gst_app_sink_signals[SIGNAL_NEW_SAMPLE] =
g_signal_new ("new-sample", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GstAppSinkClass, new_sample),
- NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0, G_TYPE_NONE);
+ NULL, NULL, __gst_app_marshal_ENUM__VOID, GST_TYPE_FLOW_RETURN, 0,
+ G_TYPE_NONE);
/**
* GstAppSink::pull-preroll:
static GstFlowReturn
gst_app_sink_preroll (GstBaseSink * psink, GstBuffer * buffer)
{
- GstFlowReturn res = GST_FLOW_OK;
+ GstFlowReturn res;
GstAppSink *appsink = GST_APP_SINK_CAST (psink);
GstAppSinkPrivate *priv = appsink->priv;
gboolean emit;
emit = priv->emit_signals;
g_mutex_unlock (&priv->mutex);
- if (priv->callbacks.new_preroll)
+ if (priv->callbacks.new_preroll) {
res = priv->callbacks.new_preroll (appsink, priv->user_data);
- else if (emit)
- g_signal_emit (appsink, gst_app_sink_signals[SIGNAL_NEW_PREROLL], 0);
+ } else {
+ res = GST_FLOW_OK;
+ if (emit)
+ g_signal_emit (appsink, gst_app_sink_signals[SIGNAL_NEW_PREROLL], 0,
+ &res);
+ }
return res;
emit = priv->emit_signals;
g_mutex_unlock (&priv->mutex);
- if (priv->callbacks.new_sample)
- priv->callbacks.new_sample (appsink, priv->user_data);
- else if (emit)
- g_signal_emit (appsink, gst_app_sink_signals[SIGNAL_NEW_SAMPLE], 0);
-
- return GST_FLOW_OK;
+ if (priv->callbacks.new_sample) {
+ ret = priv->callbacks.new_sample (appsink, priv->user_data);
+ } else {
+ ret = GST_FLOW_OK;
+ if (emit)
+ g_signal_emit (appsink, gst_app_sink_signals[SIGNAL_NEW_SAMPLE], 0, &ret);
+ }
+ return ret;
flushing:
{
GstBaseSinkClass basesink_class;
/* signals */
- void (*eos) (GstAppSink *appsink);
- void (*new_preroll) (GstAppSink *appsink);
- void (*new_sample) (GstAppSink *appsink);
+ void (*eos) (GstAppSink *appsink);
+ GstFlowReturn (*new_preroll) (GstAppSink *appsink);
+ GstFlowReturn (*new_sample) (GstAppSink *appsink);
/* actions */
- GstSample * (*pull_preroll) (GstAppSink *appsink);
- GstSample * (*pull_sample) (GstAppSink *appsink);
+ GstSample * (*pull_preroll) (GstAppSink *appsink);
+ GstSample * (*pull_sample) (GstAppSink *appsink);
/*< private >*/
gpointer _gst_reserved[GST_PADDING];