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

namespace Gst.Audio {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[GLib.GType (typeof (Gst.Audio.AudioChannelPositionGType))]
	public enum AudioChannelPosition {

		None = -3,
		Mono = -2,
		Invalid = -1,
		FrontLeft = 0,
		FrontRight = 1,
		FrontCenter = 2,
		Lfe1 = 3,
		RearLeft = 4,
		RearRight = 5,
		FrontLeftOfCenter = 6,
		FrontRightOfCenter = 7,
		RearCenter = 8,
		Lfe2 = 9,
		SideLeft = 10,
		SideRight = 11,
		TopFrontLeft = 12,
		TopFrontRight = 13,
		TopFrontCenter = 14,
		TopCenter = 15,
		TopRearLeft = 16,
		TopRearRight = 17,
		TopSideLeft = 18,
		TopSideRight = 19,
		TopRearCenter = 20,
		BottomFrontCenter = 21,
		BottomFrontLeft = 22,
		BottomFrontRight = 23,
		WideLeft = 24,
		WideRight = 25,
		SurroundLeft = 26,
		SurroundRight = 27,
	}

	internal class AudioChannelPositionGType {
		[DllImport ("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_audio_channel_position_get_type ();

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