+ * gst_app_sink_set_emit_signals:
+ * @appsink: a #GstAppSink
+ * @emit: the new state
+ *
+ * Make appsink emit the "new-preroll" and "new-buffer" signals. This option is
+ * by default disabled because signal emission is expensive and unneeded when
+ * the application prefers to operate in pull mode.
+ */
+void
+gst_app_sink_set_emit_signals (GstAppSink * appsink, gboolean emit)
+{
+ g_return_if_fail (GST_IS_APP_SINK (appsink));
+
+ g_mutex_lock (appsink->mutex);
+ appsink->emit_signals = emit;
+ g_mutex_unlock (appsink->mutex);
+}
+
+/**
+ * gst_app_sink_get_emit_signals:
+ * @appsink: a #GstAppSink
+ *
+ * Check if appsink will emit the "new-preroll" and "new-buffer" signals.
+ *
+ * Returns: %TRUE if @appsink is emiting the "new-preroll" and "new-buffer"
+ * signals.
+ */
+gboolean
+gst_app_sink_get_emit_signals (GstAppSink * appsink)
+{
+ gboolean result;
+
+ g_return_val_if_fail (GST_IS_APP_SINK (appsink), FALSE);
+
+ g_mutex_lock (appsink->mutex);
+ result = appsink->emit_signals;
+ g_mutex_unlock (appsink->mutex);
+
+ return result;
+}
+
+/**
+ * gst_app_sink_set_max_buffers:
+ * @appsink: a #GstAppSink
+ * @max: the maximum number of buffers to queue
+ *
+ * Set the maximum amount of buffers that can be queued in @appsink. After this
+ * amount of buffers are queued in appsink, any more buffers will block upstream
+ * elements until a buffer is pulled from @appsink.
+ */
+void
+gst_app_sink_set_max_buffers (GstAppSink * appsink, guint max)
+{
+ g_return_if_fail (GST_IS_APP_SINK (appsink));
+
+ g_mutex_lock (appsink->mutex);
+ if (max != appsink->max_buffers) {
+ appsink->max_buffers = max;
+ /* signal the change */
+ g_cond_signal (appsink->cond);
+ }
+ g_mutex_unlock (appsink->mutex);
+}
+
+/**
+ * gst_app_sink_get_max_buffers:
+ * @appsink: a #GstAppSink
+ *
+ * Get the maximum amount of buffers that can be queued in @appsink.
+ *
+ * Returns: The maximum amount of buffers that can be queued.
+ */
+guint
+gst_app_sink_get_max_buffers (GstAppSink * appsink)
+{
+ guint result;
+
+ g_return_val_if_fail (GST_IS_APP_SINK (appsink), 0);
+
+ g_mutex_lock (appsink->mutex);
+ result = appsink->max_buffers;
+ g_mutex_unlock (appsink->mutex);
+
+ return result;
+}
+
+/**