// 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.AudioBaseSrcSlaveMethodGType))]
	public enum AudioBaseSrcSlaveMethod {

		Resample = 0,
		ReTimestamp = 1,
		Skew = 2,
		None = 3,
	}

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

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