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

namespace Gst.Video {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[GLib.GType (typeof (Gst.Video.NavigationCommandGType))]
	public enum NavigationCommand {

		Invalid = 0,
		Menu1 = 1,
		Menu2 = 2,
		Menu3 = 3,
		Menu4 = 4,
		Menu5 = 5,
		Menu6 = 6,
		Menu7 = 7,
		Left = 20,
		Right = 21,
		Up = 22,
		Down = 23,
		Activate = 24,
		PrevAngle = 30,
		NextAngle = 31,
	}

	internal class NavigationCommandGType {
		[DllImport ("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_navigation_command_get_type ();

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