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


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

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

_WRAP_ENUM(AppStreamType,GstAppStreamType)
_CONV_ENUM(Gst,AppStreamType)

/** A Wrapper for the appsrc 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 AppSrc
: public Gst::BaseSrc, public Gst::URIHandler
{
  _CLASS_GOBJECT(AppSrc, GstAppSrc, GST_APP_SRC_GSTREAMERMM, Gst::BaseSrc, GstBaseSrc)
  _IMPLEMENTS_INTERFACE(Gst::URIHandler)

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

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

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

  /** This is a convenience method for the action signal
   * signal_push_buffer().
   */
  Gst::FlowReturn push_buffer(const Glib::RefPtr<Gst::Buffer>& arg0);

  /** This is a convenience method for the action signal
   * signal_push_sample().
   */
  Gst::FlowReturn push_sample(const Glib::RefPtr<Gst::Sample>& arg0);

  /** This is a convenience method for the action signal
   * signal_end_of_stream().
   */
  Gst::FlowReturn end_of_stream();


  _WRAP_PROPERTY("caps", Glib::RefPtr<Gst::Caps>)
  _WRAP_PROPERTY("size", gint64)
  _WRAP_PROPERTY("stream-type", Gst::AppStreamType)
  _WRAP_PROPERTY("max-bytes", guint64)
  _WRAP_PROPERTY("format", Gst::Format)
  _WRAP_PROPERTY("block", bool)
  _WRAP_PROPERTY("is-live", bool)
  _WRAP_PROPERTY("min-latency", gint64)
  _WRAP_PROPERTY("max-latency", gint64)
  _WRAP_PROPERTY("emit-signals", bool)
  _WRAP_PROPERTY("min-percent", guint)
  _WRAP_PROPERTY("current-level-bytes", guint64)

  _WRAP_SIGNAL(void need_data(guint arg0), "need-data", no_default_handler)
  _WRAP_SIGNAL(void enough_data(), "enough-data", no_default_handler)
  _WRAP_SIGNAL(bool seek_data(guint64 arg0), "seek-data", no_default_handler)

#m4 _CONVERSION(`GstBuffer*', `const Glib::RefPtr<Gst::Buffer>&', `Glib::wrap($3, true)')
  /** This is an action signal which is designed to be used as a method.  To 
   * do that, use its convenience method, push_buffer().
   */
  _WRAP_SIGNAL(Gst::FlowReturn push_buffer(const Glib::RefPtr<Gst::Buffer>& arg0), "push-buffer", no_default_handler)


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


  /** This is an action signal which is designed to be used as a method.  To 
   * do that, use its convenience method, end_of_stream().
   */
  _WRAP_SIGNAL(Gst::FlowReturn end_of_stream(), "end-of-stream", no_default_handler)

};

} // namespace Gst
