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

namespace Gst.PbUtils {

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

#region Autogenerated code
	public partial class Global {

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_codec_utils_aac_caps_set_level_and_profile(IntPtr caps, byte[] audio_config, uint len);

		public static bool CodecUtilsAacCapsSetLevelAndProfile(Gst.Caps caps, byte[] audio_config, uint len) {
			bool raw_ret = gst_codec_utils_aac_caps_set_level_and_profile(caps == null ? IntPtr.Zero : caps.Handle, audio_config, len);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_codec_utils_aac_get_channels(byte[] audio_config, uint len);

		public static uint CodecUtilsAacGetChannels(byte[] audio_config, uint len) {
			uint raw_ret = gst_codec_utils_aac_get_channels(audio_config, len);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_codec_utils_aac_get_index_from_sample_rate(uint rate);

		public static int CodecUtilsAacGetIndexFromSampleRate(uint rate) {
			int raw_ret = gst_codec_utils_aac_get_index_from_sample_rate(rate);
			int ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_aac_get_level(byte[] audio_config, uint len);

		public static string CodecUtilsAacGetLevel(byte[] audio_config, uint len) {
			IntPtr raw_ret = gst_codec_utils_aac_get_level(audio_config, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_aac_get_profile(byte[] audio_config, uint len);

		public static string CodecUtilsAacGetProfile(byte[] audio_config, uint len) {
			IntPtr raw_ret = gst_codec_utils_aac_get_profile(audio_config, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_codec_utils_aac_get_sample_rate(byte[] audio_config, uint len);

		public static uint CodecUtilsAacGetSampleRate(byte[] audio_config, uint len) {
			uint raw_ret = gst_codec_utils_aac_get_sample_rate(audio_config, len);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_codec_utils_aac_get_sample_rate_from_index(uint sr_idx);

		public static uint CodecUtilsAacGetSampleRateFromIndex(uint sr_idx) {
			uint raw_ret = gst_codec_utils_aac_get_sample_rate_from_index(sr_idx);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_codec_utils_h264_caps_set_level_and_profile(IntPtr caps, byte[] sps, uint len);

		public static bool CodecUtilsH264CapsSetLevelAndProfile(Gst.Caps caps, byte[] sps, uint len) {
			bool raw_ret = gst_codec_utils_h264_caps_set_level_and_profile(caps == null ? IntPtr.Zero : caps.Handle, sps, len);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_h264_get_level(byte[] sps, uint len);

		public static string CodecUtilsH264GetLevel(byte[] sps, uint len) {
			IntPtr raw_ret = gst_codec_utils_h264_get_level(sps, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern byte gst_codec_utils_h264_get_level_idc(IntPtr level);

		public static byte CodecUtilsH264GetLevelIdc(string level) {
			IntPtr native_level = GLib.Marshaller.StringToPtrGStrdup (level);
			byte raw_ret = gst_codec_utils_h264_get_level_idc(native_level);
			byte ret = raw_ret;
			GLib.Marshaller.Free (native_level);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_h264_get_profile(byte[] sps, uint len);

		public static string CodecUtilsH264GetProfile(byte[] sps, uint len) {
			IntPtr raw_ret = gst_codec_utils_h264_get_profile(sps, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_codec_utils_h265_caps_set_level_tier_and_profile(IntPtr caps, byte[] profile_tier_level, uint len);

		public static bool CodecUtilsH265CapsSetLevelTierAndProfile(Gst.Caps caps, byte[] profile_tier_level, uint len) {
			bool raw_ret = gst_codec_utils_h265_caps_set_level_tier_and_profile(caps == null ? IntPtr.Zero : caps.Handle, profile_tier_level, len);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_h265_get_level(byte[] profile_tier_level, uint len);

		public static string CodecUtilsH265GetLevel(byte[] profile_tier_level, uint len) {
			IntPtr raw_ret = gst_codec_utils_h265_get_level(profile_tier_level, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern byte gst_codec_utils_h265_get_level_idc(IntPtr level);

		public static byte CodecUtilsH265GetLevelIdc(string level) {
			IntPtr native_level = GLib.Marshaller.StringToPtrGStrdup (level);
			byte raw_ret = gst_codec_utils_h265_get_level_idc(native_level);
			byte ret = raw_ret;
			GLib.Marshaller.Free (native_level);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_h265_get_profile(byte[] profile_tier_level, uint len);

		public static string CodecUtilsH265GetProfile(byte[] profile_tier_level, uint len) {
			IntPtr raw_ret = gst_codec_utils_h265_get_profile(profile_tier_level, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_h265_get_tier(byte[] profile_tier_level, uint len);

		public static string CodecUtilsH265GetTier(byte[] profile_tier_level, uint len) {
			IntPtr raw_ret = gst_codec_utils_h265_get_tier(profile_tier_level, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_codec_utils_mpeg4video_caps_set_level_and_profile(IntPtr caps, byte[] vis_obj_seq, uint len);

		public static bool CodecUtilsMpeg4videoCapsSetLevelAndProfile(Gst.Caps caps, byte[] vis_obj_seq, uint len) {
			bool raw_ret = gst_codec_utils_mpeg4video_caps_set_level_and_profile(caps == null ? IntPtr.Zero : caps.Handle, vis_obj_seq, len);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_mpeg4video_get_level(byte[] vis_obj_seq, uint len);

		public static string CodecUtilsMpeg4videoGetLevel(byte[] vis_obj_seq, uint len) {
			IntPtr raw_ret = gst_codec_utils_mpeg4video_get_level(vis_obj_seq, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_mpeg4video_get_profile(byte[] vis_obj_seq, uint len);

		public static string CodecUtilsMpeg4videoGetProfile(byte[] vis_obj_seq, uint len) {
			IntPtr raw_ret = gst_codec_utils_mpeg4video_get_profile(vis_obj_seq, len);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_opus_create_caps(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count, byte[] channel_mapping);

		public static Gst.Caps CodecUtilsOpusCreateCaps(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count, byte[] channel_mapping) {
			IntPtr raw_ret = gst_codec_utils_opus_create_caps(rate, channels, channel_mapping_family, stream_count, coupled_count, channel_mapping);
			Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
			return ret;
		}

		public static Gst.Caps CodecUtilsOpusCreateCaps(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count) {
			return CodecUtilsOpusCreateCaps (rate, channels, channel_mapping_family, stream_count, coupled_count, null);
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_opus_create_caps_from_header(IntPtr header, IntPtr comments);

		public static Gst.Caps CodecUtilsOpusCreateCapsFromHeader(Gst.Buffer header, Gst.Buffer comments) {
			IntPtr raw_ret = gst_codec_utils_opus_create_caps_from_header(header == null ? IntPtr.Zero : header.Handle, comments == null ? IntPtr.Zero : comments.Handle);
			Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
			return ret;
		}

		public static Gst.Caps CodecUtilsOpusCreateCapsFromHeader(Gst.Buffer header) {
			return CodecUtilsOpusCreateCapsFromHeader (header, null);
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_codec_utils_opus_create_header(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count, byte[] channel_mapping, ushort pre_skip, short output_gain);

		public static Gst.Buffer CodecUtilsOpusCreateHeader(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count, byte[] channel_mapping, ushort pre_skip, short output_gain) {
			IntPtr raw_ret = gst_codec_utils_opus_create_header(rate, channels, channel_mapping_family, stream_count, coupled_count, channel_mapping, pre_skip, output_gain);
			Gst.Buffer ret = raw_ret == IntPtr.Zero ? null : (Gst.Buffer) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Buffer), true);
			return ret;
		}

		public static Gst.Buffer CodecUtilsOpusCreateHeader(uint rate, byte channels, byte channel_mapping_family, byte stream_count, byte coupled_count, ushort pre_skip, short output_gain) {
			return CodecUtilsOpusCreateHeader (rate, channels, channel_mapping_family, stream_count, coupled_count, null, pre_skip, output_gain);
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_encoding_list_all_targets(IntPtr categoryname);

		public static Gst.PbUtils.EncodingTarget[] EncodingListAllTargets(string categoryname) {
			IntPtr native_categoryname = GLib.Marshaller.StringToPtrGStrdup (categoryname);
			IntPtr raw_ret = gst_encoding_list_all_targets(native_categoryname);
			Gst.PbUtils.EncodingTarget[] ret = (Gst.PbUtils.EncodingTarget[]) GLib.Marshaller.ListPtrToArray (raw_ret, typeof(GLib.List), true, true, typeof(Gst.PbUtils.EncodingTarget));
			GLib.Marshaller.Free (native_categoryname);
			return ret;
		}

		public static Gst.PbUtils.EncodingTarget[] EncodingListAllTargets() {
			return EncodingListAllTargets (null);
		}

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

		public static string[] EncodingListAvailableCategories() {
			IntPtr raw_ret = gst_encoding_list_available_categories();
			string[] ret = (string[]) GLib.Marshaller.ListPtrToArray (raw_ret, typeof(GLib.List), true, true, typeof(string));
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_install_plugins_async(IntPtr[] details, IntPtr ctx, Gst.PbUtilsSharp.InstallPluginsResultFuncNative func, IntPtr user_data);

		public static Gst.PbUtils.InstallPluginsReturn InstallPluginsAsync(string[] details, Gst.PbUtils.InstallPluginsContext ctx, Gst.PbUtils.InstallPluginsResultFunc func) {
			int cnt_details = details == null ? 0 : details.Length;
			IntPtr[] native_details = new IntPtr [cnt_details + 1];
			for (int i = 0; i < cnt_details; i++)
				native_details [i] = GLib.Marshaller.StringToPtrGStrdup (details[i]);
			native_details [cnt_details] = IntPtr.Zero;
			IntPtr native_ctx = GLib.Marshaller.StructureToPtrAlloc (ctx);
			Gst.PbUtilsSharp.InstallPluginsResultFuncWrapper func_wrapper = new Gst.PbUtilsSharp.InstallPluginsResultFuncWrapper (func);
			func_wrapper.PersistUntilCalled ();
			int raw_ret = gst_install_plugins_async(native_details, native_ctx, func_wrapper.NativeDelegate, IntPtr.Zero);
			Gst.PbUtils.InstallPluginsReturn ret = (Gst.PbUtils.InstallPluginsReturn) raw_ret;
			for (int i = 0; i < native_details.Length - 1; i++) {
				details [i] = GLib.Marshaller.Utf8PtrToString (native_details[i]);
				GLib.Marshaller.Free (native_details[i]);
			}
			Marshal.FreeHGlobal (native_ctx);
			return ret;
		}

		public static Gst.PbUtils.InstallPluginsReturn InstallPluginsAsync(string[] details, Gst.PbUtils.InstallPluginsResultFunc func) {
			return InstallPluginsAsync (details, Gst.PbUtils.InstallPluginsContext.Zero, func);
		}

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

		public static bool InstallPluginsInstallationInProgress() {
			bool raw_ret = gst_install_plugins_installation_in_progress();
			bool ret = raw_ret;
			return ret;
		}

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

		public static string InstallPluginsReturnGetName(Gst.PbUtils.InstallPluginsReturn _ret) {
			IntPtr raw_ret = gst_install_plugins_return_get_name((int) _ret);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

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

		public static bool InstallPluginsSupported() {
			bool raw_ret = gst_install_plugins_supported();
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_install_plugins_sync(IntPtr[] details, IntPtr ctx);

		public static Gst.PbUtils.InstallPluginsReturn InstallPluginsSync(string[] details, Gst.PbUtils.InstallPluginsContext ctx) {
			int cnt_details = details == null ? 0 : details.Length;
			IntPtr[] native_details = new IntPtr [cnt_details + 1];
			for (int i = 0; i < cnt_details; i++)
				native_details [i] = GLib.Marshaller.StringToPtrGStrdup (details[i]);
			native_details [cnt_details] = IntPtr.Zero;
			IntPtr native_ctx = GLib.Marshaller.StructureToPtrAlloc (ctx);
			int raw_ret = gst_install_plugins_sync(native_details, native_ctx);
			Gst.PbUtils.InstallPluginsReturn ret = (Gst.PbUtils.InstallPluginsReturn) raw_ret;
			for (int i = 0; i < native_details.Length - 1; i++) {
				details [i] = GLib.Marshaller.Utf8PtrToString (native_details[i]);
				GLib.Marshaller.Free (native_details[i]);
			}
			Marshal.FreeHGlobal (native_ctx);
			return ret;
		}

		public static Gst.PbUtils.InstallPluginsReturn InstallPluginsSync(string[] details) {
			return InstallPluginsSync (details, Gst.PbUtils.InstallPluginsContext.Zero);
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_is_missing_plugin_message(IntPtr msg);

		public static bool IsMissingPluginMessage(Gst.Message msg) {
			bool raw_ret = gst_is_missing_plugin_message(msg == null ? IntPtr.Zero : msg.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_decoder_installer_detail_new(IntPtr decode_caps);

		public static string MissingDecoderInstallerDetailNew(Gst.Caps decode_caps) {
			IntPtr raw_ret = gst_missing_decoder_installer_detail_new(decode_caps == null ? IntPtr.Zero : decode_caps.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_decoder_message_new(IntPtr element, IntPtr decode_caps);

		public static Gst.Message MissingDecoderMessageNew(Gst.Element element, Gst.Caps decode_caps) {
			IntPtr raw_ret = gst_missing_decoder_message_new(element == null ? IntPtr.Zero : element.Handle, decode_caps == null ? IntPtr.Zero : decode_caps.Handle);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_element_installer_detail_new(IntPtr factory_name);

		public static string MissingElementInstallerDetailNew(string factory_name) {
			IntPtr native_factory_name = GLib.Marshaller.StringToPtrGStrdup (factory_name);
			IntPtr raw_ret = gst_missing_element_installer_detail_new(native_factory_name);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_factory_name);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_element_message_new(IntPtr element, IntPtr factory_name);

		public static Gst.Message MissingElementMessageNew(Gst.Element element, string factory_name) {
			IntPtr native_factory_name = GLib.Marshaller.StringToPtrGStrdup (factory_name);
			IntPtr raw_ret = gst_missing_element_message_new(element == null ? IntPtr.Zero : element.Handle, native_factory_name);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			GLib.Marshaller.Free (native_factory_name);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_encoder_installer_detail_new(IntPtr encode_caps);

		public static string MissingEncoderInstallerDetailNew(Gst.Caps encode_caps) {
			IntPtr raw_ret = gst_missing_encoder_installer_detail_new(encode_caps == null ? IntPtr.Zero : encode_caps.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_encoder_message_new(IntPtr element, IntPtr encode_caps);

		public static Gst.Message MissingEncoderMessageNew(Gst.Element element, Gst.Caps encode_caps) {
			IntPtr raw_ret = gst_missing_encoder_message_new(element == null ? IntPtr.Zero : element.Handle, encode_caps == null ? IntPtr.Zero : encode_caps.Handle);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_plugin_message_get_description(IntPtr msg);

		public static string MissingPluginMessageGetDescription(Gst.Message msg) {
			IntPtr raw_ret = gst_missing_plugin_message_get_description(msg == null ? IntPtr.Zero : msg.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_plugin_message_get_installer_detail(IntPtr msg);

		public static string MissingPluginMessageGetInstallerDetail(Gst.Message msg) {
			IntPtr raw_ret = gst_missing_plugin_message_get_installer_detail(msg == null ? IntPtr.Zero : msg.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_uri_sink_installer_detail_new(IntPtr protocol);

		public static string MissingUriSinkInstallerDetailNew(string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_missing_uri_sink_installer_detail_new(native_protocol);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_uri_sink_message_new(IntPtr element, IntPtr protocol);

		public static Gst.Message MissingUriSinkMessageNew(Gst.Element element, string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_missing_uri_sink_message_new(element == null ? IntPtr.Zero : element.Handle, native_protocol);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_uri_source_installer_detail_new(IntPtr protocol);

		public static string MissingUriSourceInstallerDetailNew(string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_missing_uri_source_installer_detail_new(native_protocol);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_missing_uri_source_message_new(IntPtr element, IntPtr protocol);

		public static Gst.Message MissingUriSourceMessageNew(Gst.Element element, string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_missing_uri_source_message_new(element == null ? IntPtr.Zero : element.Handle, native_protocol);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_pb_utils_add_codec_description_to_tag_list(IntPtr taglist, IntPtr codec_tag, IntPtr caps);

		public static bool PbUtilsAddCodecDescriptionToTagList(Gst.TagList taglist, string codec_tag, Gst.Caps caps) {
			IntPtr native_codec_tag = GLib.Marshaller.StringToPtrGStrdup (codec_tag);
			bool raw_ret = gst_pb_utils_add_codec_description_to_tag_list(taglist == null ? IntPtr.Zero : taglist.Handle, native_codec_tag, caps == null ? IntPtr.Zero : caps.Handle);
			bool ret = raw_ret;
			GLib.Marshaller.Free (native_codec_tag);
			return ret;
		}

		public static bool PbUtilsAddCodecDescriptionToTagList(Gst.TagList taglist, Gst.Caps caps) {
			return PbUtilsAddCodecDescriptionToTagList (taglist, null, caps);
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_codec_description(IntPtr caps);

		public static string PbUtilsGetCodecDescription(Gst.Caps caps) {
			IntPtr raw_ret = gst_pb_utils_get_codec_description(caps == null ? IntPtr.Zero : caps.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_decoder_description(IntPtr caps);

		public static string PbUtilsGetDecoderDescription(Gst.Caps caps) {
			IntPtr raw_ret = gst_pb_utils_get_decoder_description(caps == null ? IntPtr.Zero : caps.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_element_description(IntPtr factory_name);

		public static string PbUtilsGetElementDescription(string factory_name) {
			IntPtr native_factory_name = GLib.Marshaller.StringToPtrGStrdup (factory_name);
			IntPtr raw_ret = gst_pb_utils_get_element_description(native_factory_name);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_factory_name);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_encoder_description(IntPtr caps);

		public static string PbUtilsGetEncoderDescription(Gst.Caps caps) {
			IntPtr raw_ret = gst_pb_utils_get_encoder_description(caps == null ? IntPtr.Zero : caps.Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_sink_description(IntPtr protocol);

		public static string PbUtilsGetSinkDescription(string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_pb_utils_get_sink_description(native_protocol);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_pb_utils_get_source_description(IntPtr protocol);

		public static string PbUtilsGetSourceDescription(string protocol) {
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr raw_ret = gst_pb_utils_get_source_description(native_protocol);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			GLib.Marshaller.Free (native_protocol);
			return ret;
		}

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

		public static void PbUtilsInit() {
			gst_pb_utils_init();
		}

		[DllImport("libgstpbutils-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_plugins_base_version(out uint major, out uint minor, out uint micro, out uint nano);

		public static void PluginsBaseVersion(out uint major, out uint minor, out uint micro, out uint nano) {
			gst_plugins_base_version(out major, out minor, out micro, out nano);
		}

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

		public static string PluginsBaseVersionString() {
			IntPtr raw_ret = gst_plugins_base_version_string();
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

#endregion
	}
}
