// Generated by generate_plugin_gmmproc_file. Don't edit this file.


#include <gstreamermm/basesink.h>
#include <gstreamermm/caps.h>
#include <gstreamermm/pad.h>
#include <gstreamermm/sample.h>
#include <gstreamermm/urihandler.h>
_DEFS(gstreamermm,gst)

// Plug-in C enums used in signals:
namespace Gst
{

/** A Wrapper for the appsink plugin.
 * Please note that not all plug-ins are available on all systems so care
 * must be taken that they exist before they are used otherwise there will
 * be errors and possibly a crash.
 *
 * @ingroup GstPlugins
 * @deprecated Plugins API is deprecated, and should not be used in a new code.
 */
class AppSink
: public Gst::BaseSink, public Gst::URIHandler
{
  _CLASS_GOBJECT(AppSink, GstAppSink, GST_APP_SINK_GSTREAMERMM, Gst::BaseSink, GstBaseSink)
  _IMPLEMENTS_INTERFACE(Gst::URIHandler)

  _IS_GSTREAMERMM_PLUGIN
protected:
  AppSink();
  explicit AppSink(const Glib::ustring& name);

public:
  /** Creates a new appsink plugin with a unique name.
   */
  _WRAP_CREATE()

  /** Creates a new appsink plugin with the given name.
   */
  _WRAP_CREATE(const Glib::ustring& name)

  /** This is a convenience method for the action signal
   * signal_pull_preroll().
   */
  Glib::RefPtr<Gst::Sample> pull_preroll();

  /** This is a convenience method for the action signal
   * signal_pull_sample().
   */
  Glib::RefPtr<Gst::Sample> pull_sample();


  _WRAP_PROPERTY("caps", Glib::RefPtr<Gst::Caps>)
  _WRAP_PROPERTY("eos", bool)
  _WRAP_PROPERTY("emit-signals", bool)
  _WRAP_PROPERTY("max-buffers", guint)
  _WRAP_PROPERTY("drop", bool)
  _WRAP_PROPERTY("wait-on-eos", bool)

  _WRAP_SIGNAL(void eos(), "eos", no_default_handler)
  _WRAP_SIGNAL(Gst::FlowReturn new_preroll(), "new-preroll", no_default_handler)
  _WRAP_SIGNAL(Gst::FlowReturn new_sample(), "new-sample", no_default_handler)

#m4 _CONVERSION(`Glib::RefPtr<Gst::Sample>', `GstSample*', `($3)->gobj_copy()')
#m4 _CONVERSION(`GstSample*', `Glib::RefPtr<Gst::Sample>', `Glib::wrap($3)')
  /** This is an action signal which is designed to be used as a method.  To 
   * do that, use its convenience method, pull_preroll().
   */
  _WRAP_SIGNAL(Glib::RefPtr<Gst::Sample> pull_preroll(), "pull-preroll", no_default_handler)


#m4 _CONVERSION(`Glib::RefPtr<Gst::Sample>', `GstSample*', `($3)->gobj_copy()')
#m4 _CONVERSION(`GstSample*', `Glib::RefPtr<Gst::Sample>', `Glib::wrap($3)')
  /** This is an action signal which is designed to be used as a method.  To 
   * do that, use its convenience method, pull_sample().
   */
  _WRAP_SIGNAL(Glib::RefPtr<Gst::Sample> pull_sample(), "pull-sample", no_default_handler)

};

} // namespace Gst
