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

namespace Gst.Rtp {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[Flags]
	[GLib.GType (typeof (Gst.Rtp.RTPHeaderExtensionDirectionGType))]
	public enum RTPHeaderExtensionDirection : uint {

		Inactive = 0,
		Sendonly = 1,
		Recvonly = 2,
		Sendrecv = 3,
		Inherited = 4,
	}

	internal class RTPHeaderExtensionDirectionGType {
		[DllImport ("gstrtp-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_rtp_header_extension_direction_get_type ();

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