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


#include <gstreamermm/audiofilter.h>
#include <gstreamermm/interface.h>
#include <gstreamermm/mixer.h>
#include <gstreamermm/streamvolume.h>
_DEFS(gstreamermm,gst)

namespace Gst
{

/** A Wrapper for the volume 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
 */
class Volume
: public Gst::AudioFilter, public Gst::Interface, public Gst::Mixer, public Gst::StreamVolume
{
  _CLASS_GOBJECT(Volume, GstVolume, GST_VOLUME_GSTREAMERMM, Gst::AudioFilter, GstAudioFilter)
  _IMPLEMENTS_INTERFACE(Gst::Interface)
  _IMPLEMENTS_INTERFACE(Gst::Mixer)
  _IMPLEMENTS_INTERFACE(Gst::StreamVolume)

  _IS_GSTREAMERMM_PLUGIN
  _NO_WRAP_INIT_REGISTRATION
  _CUSTOM_WRAP_FUNCTION

protected:
  Volume();
  explicit Volume(const Glib::ustring& name);

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

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

  _WRAP_PROPERTY("mute", bool)
  _WRAP_PROPERTY("volume", double)
};

} // namespace Gst
