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

namespace Gst.Audio {

	using System;
	using System.Collections;
	using System.Collections.Generic;
	using System.Runtime.InteropServices;

#region Autogenerated code
	public partial class AudioRingBuffer : Gst.Object {

		protected AudioRingBuffer (IntPtr raw) : base(raw) {}

		protected AudioRingBuffer() : base(IntPtr.Zero)
		{
			CreateNativeObject (new string [0], new GLib.Value [0]);
		}

		public GLib.Cond Cond {
			get {
				unsafe {
					IntPtr* raw_ptr = (IntPtr*)(((byte*)Handle) + abi_info.GetFieldOffset("cond"));
					return new GLib.Cond((*raw_ptr));
				}
			}
		}

		public bool Open {
			get {
				unsafe {
					bool* raw_ptr = (bool*)(((byte*)Handle) + abi_info.GetFieldOffset("open"));
					return (*raw_ptr);
				}
			}
		}

		public bool Acquired {
			get {
				unsafe {
					bool* raw_ptr = (bool*)(((byte*)Handle) + abi_info.GetFieldOffset("acquired"));
					return (*raw_ptr);
				}
			}
		}

		public byte Memory {
			get {
				unsafe {
					byte* raw_ptr = (byte*)(((byte*)Handle) + abi_info.GetFieldOffset("memory"));
					return (*raw_ptr);
				}
			}
		}

		public ulong Size {
			get {
				unsafe {
					UIntPtr* raw_ptr = (UIntPtr*)(((byte*)Handle) + abi_info.GetFieldOffset("size"));
					return (ulong) (*raw_ptr);
				}
			}
		}

		public Gst.Audio.AudioRingBufferSpec Spec {
			get {
				unsafe {
					IntPtr* raw_ptr = (IntPtr*)(((byte*)Handle) + abi_info.GetFieldOffset("spec"));
					return (*raw_ptr) == IntPtr.Zero ? null : (Gst.Audio.AudioRingBufferSpec) GLib.Opaque.GetOpaque ((*raw_ptr), typeof (Gst.Audio.AudioRingBufferSpec), false);
				}
			}
		}

		public int SamplesPerSeg {
			get {
				unsafe {
					int* raw_ptr = (int*)(((byte*)Handle) + abi_info.GetFieldOffset("samples_per_seg"));
					return (*raw_ptr);
				}
			}
		}

		public byte EmptySeg {
			get {
				unsafe {
					byte* raw_ptr = (byte*)(((byte*)Handle) + abi_info.GetFieldOffset("empty_seg"));
					return (*raw_ptr);
				}
			}
		}

		public int State {
			get {
				unsafe {
					int* raw_ptr = (int*)(((byte*)Handle) + abi_info.GetFieldOffset("state"));
					return (*raw_ptr);
				}
			}
		}

		public int Waiting {
			get {
				unsafe {
					int* raw_ptr = (int*)(((byte*)Handle) + abi_info.GetFieldOffset("waiting"));
					return (*raw_ptr);
				}
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_flushing(IntPtr raw, bool flushing);

		public bool Flushing {
			set  {
				gst_audio_ring_buffer_set_flushing(Handle, value);
			}
		}

		static OpenDeviceNativeDelegate OpenDevice_cb_delegate;
		static OpenDeviceNativeDelegate OpenDeviceVMCallback {
			get {
				if (OpenDevice_cb_delegate == null)
					OpenDevice_cb_delegate = new OpenDeviceNativeDelegate (OpenDevice_cb);
				return OpenDevice_cb_delegate;
			}
		}

		static void OverrideOpenDevice (GLib.GType gtype)
		{
			OverrideOpenDevice (gtype, OpenDeviceVMCallback);
		}

		static void OverrideOpenDevice (GLib.GType gtype, OpenDeviceNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("open_device"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool OpenDeviceNativeDelegate (IntPtr inst);

		static bool OpenDevice_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnOpenDevice ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideOpenDevice")]
		protected virtual bool OnOpenDevice ()
		{
			return InternalOpenDevice ();
		}

		private bool InternalOpenDevice ()
		{
			OpenDeviceNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("open_device"));
				unmanaged = (OpenDeviceNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(OpenDeviceNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static AcquireNativeDelegate Acquire_cb_delegate;
		static AcquireNativeDelegate AcquireVMCallback {
			get {
				if (Acquire_cb_delegate == null)
					Acquire_cb_delegate = new AcquireNativeDelegate (Acquire_cb);
				return Acquire_cb_delegate;
			}
		}

		static void OverrideAcquire (GLib.GType gtype)
		{
			OverrideAcquire (gtype, AcquireVMCallback);
		}

		static void OverrideAcquire (GLib.GType gtype, AcquireNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("acquire"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool AcquireNativeDelegate (IntPtr inst, IntPtr spec);

		static bool Acquire_cb (IntPtr inst, IntPtr spec)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnAcquire (spec == IntPtr.Zero ? null : (Gst.Audio.AudioRingBufferSpec) GLib.Opaque.GetOpaque (spec, typeof (Gst.Audio.AudioRingBufferSpec), false));
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideAcquire")]
		protected virtual bool OnAcquire (Gst.Audio.AudioRingBufferSpec spec)
		{
			return InternalAcquire (spec);
		}

		private bool InternalAcquire (Gst.Audio.AudioRingBufferSpec spec)
		{
			AcquireNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("acquire"));
				unmanaged = (AcquireNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(AcquireNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle, spec == null ? IntPtr.Zero : spec.Handle);
			return __result;
		}

		static ReleaseNativeDelegate Release_cb_delegate;
		static ReleaseNativeDelegate ReleaseVMCallback {
			get {
				if (Release_cb_delegate == null)
					Release_cb_delegate = new ReleaseNativeDelegate (Release_cb);
				return Release_cb_delegate;
			}
		}

		static void OverrideRelease (GLib.GType gtype)
		{
			OverrideRelease (gtype, ReleaseVMCallback);
		}

		static void OverrideRelease (GLib.GType gtype, ReleaseNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("release"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool ReleaseNativeDelegate (IntPtr inst);

		static bool Release_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnRelease ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideRelease")]
		protected virtual bool OnRelease ()
		{
			return InternalRelease ();
		}

		private bool InternalRelease ()
		{
			ReleaseNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("release"));
				unmanaged = (ReleaseNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(ReleaseNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static CloseDeviceNativeDelegate CloseDevice_cb_delegate;
		static CloseDeviceNativeDelegate CloseDeviceVMCallback {
			get {
				if (CloseDevice_cb_delegate == null)
					CloseDevice_cb_delegate = new CloseDeviceNativeDelegate (CloseDevice_cb);
				return CloseDevice_cb_delegate;
			}
		}

		static void OverrideCloseDevice (GLib.GType gtype)
		{
			OverrideCloseDevice (gtype, CloseDeviceVMCallback);
		}

		static void OverrideCloseDevice (GLib.GType gtype, CloseDeviceNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("close_device"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool CloseDeviceNativeDelegate (IntPtr inst);

		static bool CloseDevice_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnCloseDevice ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideCloseDevice")]
		protected virtual bool OnCloseDevice ()
		{
			return InternalCloseDevice ();
		}

		private bool InternalCloseDevice ()
		{
			CloseDeviceNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("close_device"));
				unmanaged = (CloseDeviceNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(CloseDeviceNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static StartNativeDelegate Start_cb_delegate;
		static StartNativeDelegate StartVMCallback {
			get {
				if (Start_cb_delegate == null)
					Start_cb_delegate = new StartNativeDelegate (Start_cb);
				return Start_cb_delegate;
			}
		}

		static void OverrideStart (GLib.GType gtype)
		{
			OverrideStart (gtype, StartVMCallback);
		}

		static void OverrideStart (GLib.GType gtype, StartNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("start"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool StartNativeDelegate (IntPtr inst);

		static bool Start_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnStart ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideStart")]
		protected virtual bool OnStart ()
		{
			return InternalStart ();
		}

		private bool InternalStart ()
		{
			StartNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("start"));
				unmanaged = (StartNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(StartNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static PauseNativeDelegate Pause_cb_delegate;
		static PauseNativeDelegate PauseVMCallback {
			get {
				if (Pause_cb_delegate == null)
					Pause_cb_delegate = new PauseNativeDelegate (Pause_cb);
				return Pause_cb_delegate;
			}
		}

		static void OverridePause (GLib.GType gtype)
		{
			OverridePause (gtype, PauseVMCallback);
		}

		static void OverridePause (GLib.GType gtype, PauseNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("pause"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool PauseNativeDelegate (IntPtr inst);

		static bool Pause_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnPause ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverridePause")]
		protected virtual bool OnPause ()
		{
			return InternalPause ();
		}

		private bool InternalPause ()
		{
			PauseNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("pause"));
				unmanaged = (PauseNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(PauseNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static ResumeNativeDelegate Resume_cb_delegate;
		static ResumeNativeDelegate ResumeVMCallback {
			get {
				if (Resume_cb_delegate == null)
					Resume_cb_delegate = new ResumeNativeDelegate (Resume_cb);
				return Resume_cb_delegate;
			}
		}

		static void OverrideResume (GLib.GType gtype)
		{
			OverrideResume (gtype, ResumeVMCallback);
		}

		static void OverrideResume (GLib.GType gtype, ResumeNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("resume"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool ResumeNativeDelegate (IntPtr inst);

		static bool Resume_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnResume ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideResume")]
		protected virtual bool OnResume ()
		{
			return InternalResume ();
		}

		private bool InternalResume ()
		{
			ResumeNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("resume"));
				unmanaged = (ResumeNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(ResumeNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static StopNativeDelegate Stop_cb_delegate;
		static StopNativeDelegate StopVMCallback {
			get {
				if (Stop_cb_delegate == null)
					Stop_cb_delegate = new StopNativeDelegate (Stop_cb);
				return Stop_cb_delegate;
			}
		}

		static void OverrideStop (GLib.GType gtype)
		{
			OverrideStop (gtype, StopVMCallback);
		}

		static void OverrideStop (GLib.GType gtype, StopNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("stop"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool StopNativeDelegate (IntPtr inst);

		static bool Stop_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnStop ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideStop")]
		protected virtual bool OnStop ()
		{
			return InternalStop ();
		}

		private bool InternalStop ()
		{
			StopNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("stop"));
				unmanaged = (StopNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(StopNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle);
			return __result;
		}

		static DelayNativeDelegate Delay_cb_delegate;
		static DelayNativeDelegate DelayVMCallback {
			get {
				if (Delay_cb_delegate == null)
					Delay_cb_delegate = new DelayNativeDelegate (Delay_cb);
				return Delay_cb_delegate;
			}
		}

		static void OverrideDelay (GLib.GType gtype)
		{
			OverrideDelay (gtype, DelayVMCallback);
		}

		static void OverrideDelay (GLib.GType gtype, DelayNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("delay"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate uint DelayNativeDelegate (IntPtr inst);

		static uint Delay_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				uint __result;
				__result = __obj.OnDelay ();
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideDelay")]
		protected virtual uint OnDelay ()
		{
			return InternalDelay ();
		}

		private uint InternalDelay ()
		{
			DelayNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("delay"));
				unmanaged = (DelayNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(DelayNativeDelegate));
			}
			if (unmanaged == null) return 0;

			uint __result = unmanaged (this.Handle);
			return __result;
		}

		static ActivateNativeDelegate Activate_cb_delegate;
		static ActivateNativeDelegate ActivateVMCallback {
			get {
				if (Activate_cb_delegate == null)
					Activate_cb_delegate = new ActivateNativeDelegate (Activate_cb);
				return Activate_cb_delegate;
			}
		}

		static void OverrideActivate (GLib.GType gtype)
		{
			OverrideActivate (gtype, ActivateVMCallback);
		}

		static void OverrideActivate (GLib.GType gtype, ActivateNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("activate"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool ActivateNativeDelegate (IntPtr inst, bool active);

		static bool Activate_cb (IntPtr inst, bool active)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				bool __result;
				__result = __obj.OnActivate (active);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideActivate")]
		protected virtual bool OnActivate (bool active)
		{
			return InternalActivate (active);
		}

		private bool InternalActivate (bool active)
		{
			ActivateNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("activate"));
				unmanaged = (ActivateNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(ActivateNativeDelegate));
			}
			if (unmanaged == null) return false;

			bool __result = unmanaged (this.Handle, active);
			return __result;
		}

		static CommitNativeDelegate Commit_cb_delegate;
		static CommitNativeDelegate CommitVMCallback {
			get {
				if (Commit_cb_delegate == null)
					Commit_cb_delegate = new CommitNativeDelegate (Commit_cb);
				return Commit_cb_delegate;
			}
		}

		static void OverrideCommit (GLib.GType gtype)
		{
			OverrideCommit (gtype, CommitVMCallback);
		}

		static void OverrideCommit (GLib.GType gtype, CommitNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("commit"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate uint CommitNativeDelegate (IntPtr inst, ref ulong sample, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)]byte[] data, int in_samples, int out_samples, ref int accum);

		static uint Commit_cb (IntPtr inst, ref ulong sample, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)]byte[] data, int in_samples, int out_samples, ref int accum)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				uint __result;
				__result = __obj.OnCommit (ref sample, data, out_samples, ref accum);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw e;
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideCommit")]
		protected virtual uint OnCommit (ref ulong sample, byte[] data, int out_samples, ref int accum)
		{
			return InternalCommit (ref sample, data, out_samples, ref accum);
		}

		private uint InternalCommit (ref ulong sample, byte[] data, int out_samples, ref int accum)
		{
			CommitNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("commit"));
				unmanaged = (CommitNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(CommitNativeDelegate));
			}
			if (unmanaged == null) return 0;

			int in_samples = (data == null ? 0 : data.Length);
			uint __result = unmanaged (this.Handle, ref sample, data, in_samples, out_samples, ref accum);
			return __result;
		}

		static ClearAllNativeDelegate ClearAll_cb_delegate;
		static ClearAllNativeDelegate ClearAllVMCallback {
			get {
				if (ClearAll_cb_delegate == null)
					ClearAll_cb_delegate = new ClearAllNativeDelegate (ClearAll_cb);
				return ClearAll_cb_delegate;
			}
		}

		static void OverrideClearAll (GLib.GType gtype)
		{
			OverrideClearAll (gtype, ClearAllVMCallback);
		}

		static void OverrideClearAll (GLib.GType gtype, ClearAllNativeDelegate callback)
		{
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) gtype.GetClassPtr()) + (long) class_abi.GetFieldOffset("clear_all"));
				*raw_ptr = Marshal.GetFunctionPointerForDelegate((Delegate) callback);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void ClearAllNativeDelegate (IntPtr inst);

		static void ClearAll_cb (IntPtr inst)
		{
			try {
				AudioRingBuffer __obj = GLib.Object.GetObject (inst, false) as AudioRingBuffer;
				__obj.OnClearAll ();
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[GLib.DefaultSignalHandler(Type=typeof(Gst.Audio.AudioRingBuffer), ConnectionMethod="OverrideClearAll")]
		protected virtual void OnClearAll ()
		{
			InternalClearAll ();
		}

		private void InternalClearAll ()
		{
			ClearAllNativeDelegate unmanaged = null;
			unsafe {
				IntPtr* raw_ptr = (IntPtr*)(((long) this.LookupGType().GetThresholdType().GetClassPtr()) + (long) class_abi.GetFieldOffset("clear_all"));
				unmanaged = (ClearAllNativeDelegate) Marshal.GetDelegateForFunctionPointer(*raw_ptr, typeof(ClearAllNativeDelegate));
			}
			if (unmanaged == null) return;

			unmanaged (this.Handle);
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _class_abi = null;
		static public new GLib.AbiStruct class_abi {
			get {
				if (_class_abi == null)
					_class_abi = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("open_device"
							, Gst.Object.class_abi.Fields
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // open_device
							, null
							, "acquire"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("acquire"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // acquire
							, "open_device"
							, "release"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("release"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // release
							, "acquire"
							, "close_device"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("close_device"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // close_device
							, "release"
							, "start"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("start"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // start
							, "close_device"
							, "pause"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("pause"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // pause
							, "start"
							, "resume"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("resume"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // resume
							, "pause"
							, "stop"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("stop"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // stop
							, "resume"
							, "delay"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("delay"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // delay
							, "stop"
							, "activate"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("activate"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // activate
							, "delay"
							, "commit"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("commit"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // commit
							, "activate"
							, "clear_all"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("clear_all"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // clear_all
							, "commit"
							, "_gst_reserved"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("_gst_reserved"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) * 4 // _gst_reserved
							, "clear_all"
							, null
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
					});

				return _class_abi;
			}
		}


		// End of the ABI representation.

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_audio_ring_buffer_get_type();

		public static new GLib.GType GType { 
			get {
				IntPtr raw_ret = gst_audio_ring_buffer_get_type();
				GLib.GType ret = new GLib.GType(raw_ret);
				return ret;
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_debug_spec_buff(IntPtr spec);

		public static void DebugSpecBuff(Gst.Audio.AudioRingBufferSpec spec) {
			gst_audio_ring_buffer_debug_spec_buff(spec == null ? IntPtr.Zero : spec.Handle);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_debug_spec_caps(IntPtr spec);

		public static void DebugSpecCaps(Gst.Audio.AudioRingBufferSpec spec) {
			gst_audio_ring_buffer_debug_spec_caps(spec == null ? IntPtr.Zero : spec.Handle);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_parse_caps(IntPtr spec, IntPtr caps);

		public static bool ParseCaps(Gst.Audio.AudioRingBufferSpec spec, Gst.Caps caps) {
			bool raw_ret = gst_audio_ring_buffer_parse_caps(spec == null ? IntPtr.Zero : spec.Handle, caps == null ? IntPtr.Zero : caps.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_acquire(IntPtr raw, IntPtr spec);

		public bool Acquire(Gst.Audio.AudioRingBufferSpec spec) {
			bool raw_ret = gst_audio_ring_buffer_acquire(Handle, spec == null ? IntPtr.Zero : spec.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_activate(IntPtr raw, bool active);

		public bool Activate(bool active) {
			bool raw_ret = gst_audio_ring_buffer_activate(Handle, active);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_advance(IntPtr raw, uint advance);

		public void Advance(uint advance) {
			gst_audio_ring_buffer_advance(Handle, advance);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_clear(IntPtr raw, int segment);

		public void Clear(int segment) {
			gst_audio_ring_buffer_clear(Handle, segment);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_clear_all(IntPtr raw);

		public void ClearAll() {
			gst_audio_ring_buffer_clear_all(Handle);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_close_device(IntPtr raw);

		public bool CloseDevice() {
			bool raw_ret = gst_audio_ring_buffer_close_device(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_audio_ring_buffer_commit(IntPtr raw, ref ulong sample, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)]byte[] data, int in_samples, int out_samples, ref int accum);

		public uint Commit(ref ulong sample, byte[] data, int out_samples, ref int accum) {
			int in_samples = (data == null ? 0 : data.Length);
			uint raw_ret = gst_audio_ring_buffer_commit(Handle, ref sample, data, in_samples, out_samples, ref accum);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_convert(IntPtr raw, int src_fmt, long src_val, int dest_fmt, out long dest_val);

		public bool Convert(Gst.Format src_fmt, long src_val, Gst.Format dest_fmt, out long dest_val) {
			bool raw_ret = gst_audio_ring_buffer_convert(Handle, (int) src_fmt, src_val, (int) dest_fmt, out dest_val);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_audio_ring_buffer_delay(IntPtr raw);

		public uint Delay() {
			uint raw_ret = gst_audio_ring_buffer_delay(Handle);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_device_is_open(IntPtr raw);

		public bool DeviceIsOpen() {
			bool raw_ret = gst_audio_ring_buffer_device_is_open(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern ulong gst_audio_ring_buffer_get_segbase(IntPtr raw);

		public ulong Segbase { 
			get {
				ulong raw_ret = gst_audio_ring_buffer_get_segbase(Handle);
				ulong ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern ulong gst_audio_ring_buffer_get_segdone(IntPtr raw);

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_segdone(IntPtr raw, ulong segdone);

		public ulong Segdone { 
			get {
				ulong raw_ret = gst_audio_ring_buffer_get_segdone(Handle);
				ulong ret = raw_ret;
				return ret;
			}
			set {
				gst_audio_ring_buffer_set_segdone(Handle, value);
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_is_acquired(IntPtr raw);

		public bool IsAcquired { 
			get {
				bool raw_ret = gst_audio_ring_buffer_is_acquired(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_is_active(IntPtr raw);

		public bool IsActive { 
			get {
				bool raw_ret = gst_audio_ring_buffer_is_active(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_is_flushing(IntPtr raw);

		public bool IsFlushing { 
			get {
				bool raw_ret = gst_audio_ring_buffer_is_flushing(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_may_start(IntPtr raw, bool allowed);

		public void MayStart(bool allowed) {
			gst_audio_ring_buffer_may_start(Handle, allowed);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_open_device(IntPtr raw);

		public bool OpenDevice() {
			bool raw_ret = gst_audio_ring_buffer_open_device(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_pause(IntPtr raw);

		public bool Pause() {
			bool raw_ret = gst_audio_ring_buffer_pause(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_audio_ring_buffer_read(IntPtr raw, ulong sample, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)]byte[] data, uint len, out ulong timestamp);

		public uint Read(ulong sample, byte[] data, out ulong timestamp) {
			uint len = (uint)(data == null ? 0 : data.Length);
			uint raw_ret = gst_audio_ring_buffer_read(Handle, sample, data, len, out timestamp);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_release(IntPtr raw);

		public bool Release() {
			bool raw_ret = gst_audio_ring_buffer_release(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern ulong gst_audio_ring_buffer_samples_done(IntPtr raw);

		public ulong SamplesDone() {
			ulong raw_ret = gst_audio_ring_buffer_samples_done(Handle);
			ulong ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_callback_full(IntPtr raw, Gst.AudioSharp.AudioRingBufferCallbackNative cb, IntPtr user_data, GLib.DestroyNotify notify);

		public Gst.Audio.AudioRingBufferCallback CallbackFull { 
			set {
				Gst.AudioSharp.AudioRingBufferCallbackWrapper value_wrapper = new Gst.AudioSharp.AudioRingBufferCallbackWrapper (value);
				IntPtr user_data;
				GLib.DestroyNotify notify;
				if (value == null) {
					user_data = IntPtr.Zero;
					notify = null;
				} else {
					user_data = (IntPtr) GCHandle.Alloc (value_wrapper);
					notify = GLib.DestroyHelper.NotifyHandler;
				}
				gst_audio_ring_buffer_set_callback_full(Handle, value_wrapper.NativeDelegate, user_data, notify);
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_channel_positions(IntPtr raw, int[] position);

		public Gst.Audio.AudioChannelPosition[] ChannelPositions { 
			set {
				int cnt_value = value == null ? 0 : value.Length;
				int[] native_value = new int [cnt_value];
				for (int i = 0; i < cnt_value; i++)
					native_value [i] = (int) value[i];
				gst_audio_ring_buffer_set_channel_positions(Handle, native_value);
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_errored(IntPtr raw);

		public void SetErrored() {
			gst_audio_ring_buffer_set_errored(Handle);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_sample(IntPtr raw, ulong sample);

		public ulong Sample { 
			set {
				gst_audio_ring_buffer_set_sample(Handle, value);
			}
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_audio_ring_buffer_set_timestamp(IntPtr raw, int readseg, ulong timestamp);

		public void SetTimestamp(int readseg, ulong timestamp) {
			gst_audio_ring_buffer_set_timestamp(Handle, readseg, timestamp);
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_start(IntPtr raw);

		public bool Start() {
			bool raw_ret = gst_audio_ring_buffer_start(Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstaudio-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_audio_ring_buffer_stop(IntPtr raw);

		public bool Stop() {
			bool raw_ret = gst_audio_ring_buffer_stop(Handle);
			bool ret = raw_ret;
			return ret;
		}


		static AudioRingBuffer ()
		{
			GtkSharp.GstreamerSharp.ObjectManager.Initialize ();
		}

		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _abi_info = null;
		static public new GLib.AbiStruct abi_info {
			get {
				if (_abi_info == null)
					_abi_info = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("cond"
							, Gst.Object.abi_info.Fields
							, (uint) Marshal.SizeOf(typeof(GLib.Cond.ABI)) // cond
							, null
							, "open"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_condAlign), "cond")
							, 0
							),
						new GLib.AbiField("open"
							, -1
							, (uint) Marshal.SizeOf(typeof(bool)) // open
							, "cond"
							, "acquired"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_openAlign), "open")
							, 0
							),
						new GLib.AbiField("acquired"
							, -1
							, (uint) Marshal.SizeOf(typeof(bool)) // acquired
							, "open"
							, "memory"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_acquiredAlign), "acquired")
							, 0
							),
						new GLib.AbiField("memory"
							, -1
							, (uint) Marshal.SizeOf(typeof(byte)) // memory
							, "acquired"
							, "size"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_memoryAlign), "memory")
							, 0
							),
						new GLib.AbiField("size"
							, -1
							, (uint) Marshal.SizeOf(typeof(ulong)) // size
							, "memory"
							, "timestamps"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_sizeAlign), "size")
							, 0
							),
						new GLib.AbiField("timestamps"
							, -1
							, (uint) Marshal.SizeOf(typeof(ulong)) // timestamps
							, "size"
							, "spec"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_timestampsAlign), "timestamps")
							, 0
							),
						new GLib.AbiField("spec"
							, -1
							, Gst.Audio.AudioRingBufferSpec.abi_info.Size // spec
							, "timestamps"
							, "samples_per_seg"
							, Gst.Audio.AudioRingBufferSpec.abi_info.Align
							, 0
							),
						new GLib.AbiField("samples_per_seg"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // samples_per_seg
							, "spec"
							, "empty_seg"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_samples_per_segAlign), "samples_per_seg")
							, 0
							),
						new GLib.AbiField("empty_seg"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // empty_seg
							, "samples_per_seg"
							, "state"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("state"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // state
							, "empty_seg"
							, "segdone"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_stateAlign), "state")
							, 0
							),
						new GLib.AbiField("segdone"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // segdone
							, "state"
							, "segbase"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_segdoneAlign), "segdone")
							, 0
							),
						new GLib.AbiField("segbase"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // segbase
							, "segdone"
							, "waiting"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_segbaseAlign), "segbase")
							, 0
							),
						new GLib.AbiField("waiting"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // waiting
							, "segbase"
							, "callback"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_waitingAlign), "waiting")
							, 0
							),
						new GLib.AbiField("callback"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // callback
							, "waiting"
							, "cb_data"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("cb_data"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // cb_data
							, "callback"
							, "need_reorder"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("need_reorder"
							, -1
							, (uint) Marshal.SizeOf(typeof(bool)) // need_reorder
							, "cb_data"
							, "channel_reorder_map"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_need_reorderAlign), "need_reorder")
							, 0
							),
						new GLib.AbiField("channel_reorder_map"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) * 64 // channel_reorder_map
							, "need_reorder"
							, "flushing"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_channel_reorder_mapAlign), "channel_reorder_map")
							, 0
							),
						new GLib.AbiField("flushing"
							, -1
							, (uint) Marshal.SizeOf(typeof(bool)) // flushing
							, "channel_reorder_map"
							, "may_start"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_flushingAlign), "flushing")
							, 0
							),
						new GLib.AbiField("may_start"
							, -1
							, (uint) Marshal.SizeOf(typeof(int)) // may_start
							, "flushing"
							, "active"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_may_startAlign), "may_start")
							, 0
							),
						new GLib.AbiField("active"
							, -1
							, (uint) Marshal.SizeOf(typeof(bool)) // active
							, "may_start"
							, "cb_data_notify"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_activeAlign), "active")
							, 0
							),
						new GLib.AbiField("cb_data_notify"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // cb_data_notify
							, "active"
							, "priv"
							, (long) Marshal.OffsetOf(typeof(GstAudioRingBuffer_cb_data_notifyAlign), "cb_data_notify")
							, 0
							),
						new GLib.AbiField("priv"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) // priv
							, "cb_data_notify"
							, "_gst_reserved"
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
						new GLib.AbiField("_gst_reserved"
							, -1
							, (uint) Marshal.SizeOf(typeof(IntPtr)) * 2 // _gst_reserved
							, "priv"
							, null
							, (uint) Marshal.SizeOf(typeof(IntPtr))
							, 0
							),
					});

				return _abi_info;
			}
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_condAlign
		{
			sbyte f1;
			private GLib.Cond.ABI cond;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_openAlign
		{
			sbyte f1;
			private bool open;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_acquiredAlign
		{
			sbyte f1;
			private bool acquired;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_memoryAlign
		{
			sbyte f1;
			private byte memory;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_sizeAlign
		{
			sbyte f1;
			private UIntPtr size;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_timestampsAlign
		{
			sbyte f1;
			private ulong timestamps;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_samples_per_segAlign
		{
			sbyte f1;
			private int samples_per_seg;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_stateAlign
		{
			sbyte f1;
			private int state;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_segdoneAlign
		{
			sbyte f1;
			private int segdone;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_segbaseAlign
		{
			sbyte f1;
			private int segbase;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_waitingAlign
		{
			sbyte f1;
			private int waiting;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_need_reorderAlign
		{
			sbyte f1;
			private bool need_reorder;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_channel_reorder_mapAlign
		{
			sbyte f1;
			[MarshalAs (UnmanagedType.ByValArray, SizeConst=64)]
			private int[] channel_reorder_map;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_flushingAlign
		{
			sbyte f1;
			private bool flushing;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_may_startAlign
		{
			sbyte f1;
			private int may_start;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_activeAlign
		{
			sbyte f1;
			private bool active;
		}

		[StructLayout(LayoutKind.Sequential)]
		public struct GstAudioRingBuffer_cb_data_notifyAlign
		{
			sbyte f1;
			private GLib.DestroyNotify cb_data_notify;
		}


		// End of the ABI representation.

#endregion
	}
}
