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


#include <gstreamermm/element.h>
#include <gstreamermm/preset.h>
_DEFS(gstreamermm,gst)

namespace Gst
{

_WRAP_ENUM(TheoraEncBorderMode,GstTheoraEncBorderMode)
_CONV_ENUM(Gst,TheoraEncBorderMode)

_WRAP_ENUM(TheoraEncMultipassMode,GstTheoraEncMultipassMode)
_CONV_ENUM(Gst,TheoraEncMultipassMode)

/** A Wrapper for the theoraenc plugin.
 * Please note that, though using the underlying GObject is fine, using its C
 * <B>type</B> is not guaranteed to be API stable across releases because it is
 * not guaranteed to always remain the same.  Also, 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 TheoraEnc
: public Gst::Element, public Gst::Preset
{
  _CLASS_GOBJECT(TheoraEnc, GstTheoraEnc, GST_THEORA_ENC_GSTREAMERMM, Gst::Element, GstElement)
  _IMPLEMENTS_INTERFACE(Gst::Preset)

  _IS_GSTREAMERMM_PLUGIN

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

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

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

  _WRAP_PROPERTY("center", bool)
  _WRAP_PROPERTY("border", Gst::TheoraEncBorderMode)
  _WRAP_PROPERTY("bitrate", int)
  _WRAP_PROPERTY("quality", int)
  _WRAP_PROPERTY("quick", bool)
  _WRAP_PROPERTY("keyframe-auto", bool)
  _WRAP_PROPERTY("keyframe-freq", int)
  _WRAP_PROPERTY("keyframe-force", int)
  _WRAP_PROPERTY("keyframe-threshold", int)
  _WRAP_PROPERTY("keyframe-mindistance", int)
  _WRAP_PROPERTY("noise-sensitivity", int)
  _WRAP_PROPERTY("sharpness", int)
  _WRAP_PROPERTY("speed-level", int)
  _WRAP_PROPERTY("vp3-compatible", bool)
  _WRAP_PROPERTY("drop-frames", bool)
  _WRAP_PROPERTY("cap-overflow", bool)
  _WRAP_PROPERTY("cap-underflow", bool)
  _WRAP_PROPERTY("rate-buffer", int)
  _WRAP_PROPERTY("multipass-cache-file", Glib::ustring)
  _WRAP_PROPERTY("multipass-mode", Gst::TheoraEncMultipassMode)
};

} // namespace Gst
