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


_PINCLUDE(gstreamermm/private/basesrc_p.h)

extern "C"
{

static GType gst_app_stream_type_get_type()
{
  static GType const type = g_type_from_name("GstAppStreamType");
  return type;
}

GType gst_app_src_gstreamermm_get_type()
{
  static GType type = 0;
  GstElementFactory* factory = 0;
  GstPluginFeature* feature = 0;

  if(!type)
  {
    factory = gst_element_factory_find("appsrc");
    // Make sure that the feature is actually loaded:
    if(factory)
    {
      feature =
        gst_plugin_feature_load(GST_PLUGIN_FEATURE(factory));

      g_object_unref(factory);
      factory = GST_ELEMENT_FACTORY(feature);
      type = gst_element_factory_get_element_type(factory);
      g_object_unref(factory);
    }
  }

  return type;
}

} // extern "C"

namespace Gst
{

AppSrc::AppSrc()
: _CONSTRUCT("name", static_cast<char*>(0))
{}

AppSrc::AppSrc(const Glib::ustring& name)
: _CONSTRUCT("name", name.c_str())
{}

Gst::FlowReturn AppSrc::push_buffer(const Glib::RefPtr<Gst::Buffer>& arg0)
{
  GstFlowReturn result;
  g_signal_emit_by_name(gobj(), "push-buffer", _CONVERT(`const Glib::RefPtr<Gst::Buffer>&', `GstBuffer*', `arg0'), &result, static_cast<void*>(0));
  return _CONVERT(`GstFlowReturn', `Gst::FlowReturn', `result');
}

Gst::FlowReturn AppSrc::push_sample(const Glib::RefPtr<Gst::Sample>& arg0)
{
  GstFlowReturn result;
  g_signal_emit_by_name(gobj(), "push-sample", _CONVERT(`const Glib::RefPtr<Gst::Sample>&', `GstSample*', `arg0'), &result, static_cast<void*>(0));
  return _CONVERT(`GstFlowReturn', `Gst::FlowReturn', `result');
}

Gst::FlowReturn AppSrc::end_of_stream()
{
  GstFlowReturn result;
  g_signal_emit_by_name(gobj(), "end-of-stream", &result, static_cast<void*>(0));
  return _CONVERT(`GstFlowReturn', `Gst::FlowReturn', `result');
}

}
