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

namespace Gst {

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

#region Autogenerated code
	public partial class Global {

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_buffer_get_max_memory();

		public static uint BufferGetMaxMemory() {
			uint raw_ret = gst_buffer_get_max_memory();
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_buffer_list_replace(ref IntPtr old_list, IntPtr new_list);

		public static bool BufferListReplace(ref Gst.BufferList old_list, Gst.BufferList new_list) {
			IntPtr native_old_list = old_list == null ? IntPtr.Zero : old_list.Handle ;
			bool raw_ret = gst_buffer_list_replace(ref native_old_list, new_list == null ? IntPtr.Zero : new_list.Handle);
			bool ret = raw_ret;
			old_list = native_old_list == IntPtr.Zero ? null : (Gst.BufferList) GLib.Opaque.GetOpaque (native_old_list, typeof (Gst.BufferList), true);
			return ret;
		}

		public static bool BufferListReplace(ref Gst.BufferList old_list) {
			return BufferListReplace (ref old_list, null);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_buffer_list_take(ref IntPtr old_list, IntPtr new_list);

		public static bool BufferListTake(ref Gst.BufferList old_list, Gst.BufferList new_list) {
			IntPtr native_old_list = old_list == null ? IntPtr.Zero : old_list.Handle ;
			new_list.Owned = false;
			bool raw_ret = gst_buffer_list_take(ref native_old_list, new_list == null ? IntPtr.Zero : new_list.Handle);
			bool ret = raw_ret;
			old_list = native_old_list == IntPtr.Zero ? null : (Gst.BufferList) GLib.Opaque.GetOpaque (native_old_list, typeof (Gst.BufferList), true);
			return ret;
		}

		public static bool BufferListTake(ref Gst.BufferList old_list) {
			return BufferListTake (ref old_list, null);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_caps_features_from_string(IntPtr features);

		public static Gst.CapsFeatures CapsFeaturesFromString(string features) {
			IntPtr native_features = GLib.Marshaller.StringToPtrGStrdup (features);
			IntPtr raw_ret = gst_caps_features_from_string(native_features);
			Gst.CapsFeatures ret = Gst.CapsFeatures.New (raw_ret);
			GLib.Marshaller.Free (native_features);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_caps_from_string(IntPtr str1ng);

		public static Gst.Caps CapsFromString(string str1ng) {
			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
			IntPtr raw_ret = gst_caps_from_string(native_str1ng);
			Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
			GLib.Marshaller.Free (native_str1ng);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_context_replace(IntPtr old_context, IntPtr new_context);

		public static bool ContextReplace(ref Gst.Context old_context, Gst.Context new_context) {
			IntPtr native_old_context = GLib.Marshaller.StructureToPtrAlloc (old_context);
			IntPtr native_new_context = GLib.Marshaller.StructureToPtrAlloc (new_context);
			bool raw_ret = gst_context_replace(native_old_context, native_new_context);
			bool ret = raw_ret;
			old_context = Gst.Context.New (native_old_context);
			Marshal.FreeHGlobal (native_old_context);
			Marshal.FreeHGlobal (native_new_context);
			return ret;
		}

		public static bool ContextReplace(ref Gst.Context old_context) {
			return ContextReplace (ref old_context, Gst.Context.Zero);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_core_error_quark();

		public static uint CoreErrorQuark() {
			uint raw_ret = gst_core_error_quark();
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_deinit();

		public static void Deinit() {
			gst_deinit();
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_dynamic_type_register(IntPtr plugin, IntPtr type);

		public static bool DynamicTypeRegister(Gst.Plugin plugin, GLib.GType type) {
			bool raw_ret = gst_dynamic_type_register(plugin == null ? IntPtr.Zero : plugin.Handle, type.Val);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_error_get_message(uint domain, int code);

		public static string ErrorGetMessage(uint domain, int code) {
			IntPtr raw_ret = gst_error_get_message(domain, code);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_event_type_get_flags(int type);

		public static Gst.EventTypeFlags EventTypeGetFlags(Gst.EventType type) {
			int raw_ret = gst_event_type_get_flags((int) type);
			Gst.EventTypeFlags ret = (Gst.EventTypeFlags) raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_event_type_get_name(int type);

		public static string EventTypeGetName(Gst.EventType type) {
			IntPtr raw_ret = gst_event_type_get_name((int) type);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_event_type_to_quark(int type);

		public static uint EventTypeToQuark(Gst.EventType type) {
			uint raw_ret = gst_event_type_to_quark((int) type);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_event_type_to_sticky_ordering(int type);

		public static uint EventTypeToStickyOrdering(Gst.EventType type) {
			uint raw_ret = gst_event_type_to_sticky_ordering((int) type);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_flow_get_name(int _ret);

		public static string FlowGetName(Gst.FlowReturn _ret) {
			IntPtr raw_ret = gst_flow_get_name((int) _ret);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_flow_to_quark(int _ret);

		public static uint FlowToQuark(Gst.FlowReturn _ret) {
			uint raw_ret = gst_flow_to_quark((int) _ret);
			uint ret = raw_ret;
			return ret;
		}

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

		public static string MainExecutablePath { 
			get {
				IntPtr raw_ret = gst_get_main_executable_path();
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_is_caps_features(IntPtr obj);

		public static bool IsCapsFeatures(IntPtr obj) {
			bool raw_ret = gst_is_caps_features(obj);
			bool ret = raw_ret;
			return ret;
		}

		public static bool IsCapsFeatures() {
			return IsCapsFeatures (IntPtr.Zero);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_is_initialized();

		public static bool IsInitialized { 
			get {
				bool raw_ret = gst_is_initialized();
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_library_error_quark();

		public static uint LibraryErrorQuark() {
			uint raw_ret = gst_library_error_quark();
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_message_take(ref IntPtr old_message, IntPtr new_message);

		public static bool MessageTake(ref Gst.Message old_message, Gst.Message new_message) {
			IntPtr native_old_message = old_message == null ? IntPtr.Zero : old_message.Handle ;
			new_message.Owned = false;
			bool raw_ret = gst_message_take(ref native_old_message, new_message == null ? IntPtr.Zero : new_message.Handle);
			bool ret = raw_ret;
			old_message = native_old_message == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (native_old_message, typeof (Gst.Message), true);
			return ret;
		}

		public static bool MessageTake(ref Gst.Message old_message) {
			return MessageTake (ref old_message, null);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_message_type_get_name(int type);

		public static string MessageTypeGetName(Gst.MessageType type) {
			IntPtr raw_ret = gst_message_type_get_name((int) type);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_message_type_to_quark(int type);

		public static uint MessageTypeToQuark(Gst.MessageType type) {
			uint raw_ret = gst_message_type_to_quark((int) type);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_meta_api_type_has_tag(IntPtr api, uint tag);

		public static bool MetaApiTypeHasTag(GLib.GType api, uint tag) {
			bool raw_ret = gst_meta_api_type_has_tag(api.Val, tag);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_meta_api_type_register(IntPtr api, IntPtr tags);

		public static GLib.GType MetaApiTypeRegister(string api, string[] tags) {
			IntPtr native_api = GLib.Marshaller.StringToPtrGStrdup (api);
			IntPtr native_tags = GLib.Marshaller.StringArrayToStrvPtr(tags, true);
			IntPtr raw_ret = gst_meta_api_type_register(native_api, native_tags);
			GLib.GType ret = new GLib.GType(raw_ret);
			GLib.Marshaller.Free (native_api);
			GLib.Marshaller.StrFreeV (native_tags);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_meta_get_info(IntPtr impl);

		public static Gst.MetaInfo MetaGetInfo(string impl) {
			IntPtr native_impl = GLib.Marshaller.StringToPtrGStrdup (impl);
			IntPtr raw_ret = gst_meta_get_info(native_impl);
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			GLib.Marshaller.Free (native_impl);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_meta_register(IntPtr api, IntPtr impl, UIntPtr size, GstSharp.MetaInitFunctionNative init_func, GstSharp.MetaFreeFunctionNative free_func, GstSharp.MetaTransformFunctionNative transform_func);

		public static Gst.MetaInfo MetaRegister(GLib.GType api, string impl, ulong size, Gst.MetaInitFunction init_func, Gst.MetaFreeFunction free_func, Gst.MetaTransformFunction transform_func) {
			IntPtr native_impl = GLib.Marshaller.StringToPtrGStrdup (impl);
			GstSharp.MetaInitFunctionWrapper init_func_wrapper = new GstSharp.MetaInitFunctionWrapper (init_func);
			init_func_wrapper.PersistUntilCalled ();
			GstSharp.MetaFreeFunctionWrapper free_func_wrapper = new GstSharp.MetaFreeFunctionWrapper (free_func);
			free_func_wrapper.PersistUntilCalled ();
			GstSharp.MetaTransformFunctionWrapper transform_func_wrapper = new GstSharp.MetaTransformFunctionWrapper (transform_func);
			transform_func_wrapper.PersistUntilCalled ();
			IntPtr raw_ret = gst_meta_register(api.Val, native_impl, new UIntPtr (size), init_func_wrapper.NativeDelegate, free_func_wrapper.NativeDelegate, transform_func_wrapper.NativeDelegate);
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			GLib.Marshaller.Free (native_impl);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_meta_register_custom(IntPtr name, IntPtr tags, GstSharp.CustomMetaTransformFunctionNative transform_func, IntPtr user_data, GLib.DestroyNotify destroy_data);

		public static Gst.MetaInfo MetaRegisterCustom(string name, string[] tags, Gst.CustomMetaTransformFunction transform_func) {
			IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
			IntPtr native_tags = GLib.Marshaller.StringArrayToStrvPtr(tags, true);
			GstSharp.CustomMetaTransformFunctionWrapper transform_func_wrapper = new GstSharp.CustomMetaTransformFunctionWrapper (transform_func);
			IntPtr user_data;
			GLib.DestroyNotify destroy_data;
			if (transform_func == null) {
				user_data = IntPtr.Zero;
				destroy_data = null;
			} else {
				user_data = (IntPtr) GCHandle.Alloc (transform_func_wrapper);
				destroy_data = GLib.DestroyHelper.NotifyHandler;
			}
			IntPtr raw_ret = gst_meta_register_custom(native_name, native_tags, transform_func_wrapper.NativeDelegate, user_data, destroy_data);
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			GLib.Marshaller.Free (native_name);
			GLib.Marshaller.StrFreeV (native_tags);
			return ret;
		}

		public static Gst.MetaInfo MetaRegisterCustom(string name, string[] tags) {
			return MetaRegisterCustom (name, tags, null);
		}

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

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

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

		public static Gst.MetaInfo ParentBufferMetaGetInfo() {
			IntPtr raw_ret = gst_parent_buffer_meta_get_info();
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_plugin_error_quark();

		public static uint PluginErrorQuark() {
			uint raw_ret = gst_plugin_error_quark();
			uint ret = raw_ret;
			return ret;
		}

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

		public static string PresetGetAppDir() {
			IntPtr raw_ret = gst_preset_get_app_dir();
			string ret = GLib.Marshaller.FilenamePtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_preset_set_app_dir(IntPtr app_dir);

		public static bool PresetSetAppDir(string app_dir) {
			IntPtr native_app_dir = GLib.Marshaller.StringToFilenamePtr (app_dir);
			bool raw_ret = gst_preset_set_app_dir(native_app_dir);
			bool ret = raw_ret;
			GLib.Marshaller.Free (native_app_dir);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_protection_filter_systems_by_available_decryptors(IntPtr system_identifiers);

		public static string[] ProtectionFilterSystemsByAvailableDecryptors(string[] system_identifiers) {
			IntPtr native_system_identifiers = GLib.Marshaller.StringArrayToStrvPtr(system_identifiers, true);
			IntPtr raw_ret = gst_protection_filter_systems_by_available_decryptors(native_system_identifiers);
			string[] ret = GLib.Marshaller.NullTermPtrToStringArray (raw_ret, true);
			GLib.Marshaller.StrFreeV (native_system_identifiers);
			return ret;
		}

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

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

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

		public static Gst.MetaInfo ProtectionMetaGetInfo() {
			IntPtr raw_ret = gst_protection_meta_get_info();
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_protection_select_system(IntPtr system_identifiers);

		public static string ProtectionSelectSystem(string[] system_identifiers) {
			IntPtr native_system_identifiers = GLib.Marshaller.StringArrayToStrvPtr(system_identifiers, true);
			IntPtr raw_ret = gst_protection_select_system(native_system_identifiers);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			GLib.Marshaller.StrFreeV (native_system_identifiers);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_query_take(ref IntPtr old_query, IntPtr new_query);

		public static bool QueryTake(ref Gst.Query old_query, Gst.Query new_query) {
			IntPtr native_old_query = old_query == null ? IntPtr.Zero : old_query.Handle ;
			new_query.Owned = false;
			bool raw_ret = gst_query_take(ref native_old_query, new_query == null ? IntPtr.Zero : new_query.Handle);
			bool ret = raw_ret;
			old_query = native_old_query == IntPtr.Zero ? null : (Gst.Query) GLib.Opaque.GetOpaque (native_old_query, typeof (Gst.Query), true);
			return ret;
		}

		public static bool QueryTake(ref Gst.Query old_query) {
			return QueryTake (ref old_query, null);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_query_type_get_flags(int type);

		public static Gst.QueryTypeFlags QueryTypeGetFlags(Gst.QueryType type) {
			int raw_ret = gst_query_type_get_flags((int) type);
			Gst.QueryTypeFlags ret = (Gst.QueryTypeFlags) raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_query_type_get_name(int type);

		public static string QueryTypeGetName(Gst.QueryType type) {
			IntPtr raw_ret = gst_query_type_get_name((int) type);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_query_type_to_quark(int type);

		public static uint QueryTypeToQuark(Gst.QueryType type) {
			uint raw_ret = gst_query_type_to_quark((int) type);
			uint ret = raw_ret;
			return ret;
		}

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

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

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

		public static Gst.MetaInfo ReferenceTimestampMetaGetInfo() {
			IntPtr raw_ret = gst_reference_timestamp_meta_get_info();
			Gst.MetaInfo ret = Gst.MetaInfo.New (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_resource_error_quark();

		public static uint ResourceErrorQuark() {
			uint raw_ret = gst_resource_error_quark();
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_segtrap_is_enabled();

		public static bool SegtrapIsEnabled() {
			bool raw_ret = gst_segtrap_is_enabled();
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_segtrap_set_enabled(bool enabled);

		public static void SegtrapSetEnabled(bool enabled) {
			gst_segtrap_set_enabled(enabled);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_state_change_get_name(int transition);

		public static string StateChangeGetName(Gst.StateChange transition) {
			IntPtr raw_ret = gst_state_change_get_name((int) transition);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

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

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

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

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

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_stream_error_quark();

		public static uint StreamErrorQuark() {
			uint raw_ret = gst_stream_error_quark();
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_stream_type_get_name(int stype);

		public static string StreamTypeGetName(Gst.StreamType stype) {
			IntPtr raw_ret = gst_stream_type_get_name((int) stype);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_toc_entry_type_get_nick(int type);

		public static string TocEntryTypeGetNick(Gst.TocEntryType type) {
			IntPtr raw_ret = gst_toc_entry_type_get_nick((int) type);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

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

		public static Gst.Tracer[] TracingGetActiveTracers() {
			IntPtr raw_ret = gst_tracing_get_active_tracers();
			Gst.Tracer[] ret = (Gst.Tracer[]) GLib.Marshaller.ListPtrToArray (raw_ret, typeof(GLib.List), true, true, typeof(Gst.Tracer));
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_tracing_register_hook(IntPtr tracer, IntPtr detail, IntPtr func);

		public static void TracingRegisterHook(Gst.Tracer tracer, string detail, IntPtr func) {
			IntPtr native_detail = GLib.Marshaller.StringToPtrGStrdup (detail);
			gst_tracing_register_hook(tracer == null ? IntPtr.Zero : tracer.Handle, native_detail, func);
			GLib.Marshaller.Free (native_detail);
		}

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

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

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_type_find_register(IntPtr plugin, IntPtr name, uint rank, GstSharp.TypeFindFunctionNative func, IntPtr extensions, IntPtr possible_caps, IntPtr data, GLib.DestroyNotify data_notify);

		public static bool TypeFindRegister(Gst.Plugin plugin, string name, uint rank, Gst.TypeFindFunction func, string extensions, Gst.Caps possible_caps) {
			IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
			GstSharp.TypeFindFunctionWrapper func_wrapper = new GstSharp.TypeFindFunctionWrapper (func);
			IntPtr data;
			GLib.DestroyNotify data_notify;
			if (func == null) {
				data = IntPtr.Zero;
				data_notify = null;
			} else {
				data = (IntPtr) GCHandle.Alloc (func_wrapper);
				data_notify = GLib.DestroyHelper.NotifyHandler;
			}
			IntPtr native_extensions = GLib.Marshaller.StringToPtrGStrdup (extensions);
			bool raw_ret = gst_type_find_register(plugin == null ? IntPtr.Zero : plugin.Handle, native_name, rank, func_wrapper.NativeDelegate, native_extensions, possible_caps == null ? IntPtr.Zero : possible_caps.Handle, IntPtr.Zero, data_notify);
			bool ret = raw_ret;
			GLib.Marshaller.Free (native_name);
			GLib.Marshaller.Free (native_extensions);
			return ret;
		}

		public static bool TypeFindRegister(string name, uint rank, Gst.TypeFindFunction func) {
			return TypeFindRegister (null, name, rank, func, null, null);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_type_is_plugin_api(IntPtr type, out int flags);

		public static bool TypeIsPluginApi(GLib.GType type, out Gst.PluginAPIFlags flags) {
			int native_flags;
			bool raw_ret = gst_type_is_plugin_api(type.Val, out native_flags);
			bool ret = raw_ret;
			flags = (Gst.PluginAPIFlags) native_flags;
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_type_mark_as_plugin_api(IntPtr type, int flags);

		public static void TypeMarkAsPluginApi(GLib.GType type, Gst.PluginAPIFlags flags) {
			gst_type_mark_as_plugin_api(type.Val, (int) flags);
		}

#endregion
	}
}
