// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace Gst {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[GLib.GType (typeof (Gst.TaskStateGType))]
	public enum TaskState {

		Started = 0,
		Stopped = 1,
		Paused = 2,
	}

	internal class TaskStateGType {
		[DllImport ("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_task_state_get_type ();

		public static GLib.GType GType {
			get {
				return new GLib.GType (gst_task_state_get_type ());
			}
		}
	}
#endregion
}
