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

namespace Gst.Video {

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

#region Autogenerated code
	public partial class Global {

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_afd_meta(IntPtr buffer, byte field, int spec, int afd);

		public static Gst.Video.VideoAFDMeta BufferAddVideoAfdMeta(Gst.Buffer buffer, byte field, Gst.Video.VideoAFDSpec spec, Gst.Video.VideoAFDValue afd) {
			IntPtr raw_ret = gst_buffer_add_video_afd_meta(buffer == null ? IntPtr.Zero : buffer.Handle, field, (int) spec, (int) afd);
			Gst.Video.VideoAFDMeta ret = Gst.Video.VideoAFDMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_affine_transformation_meta(IntPtr buffer);

		public static Gst.Video.VideoAffineTransformationMeta BufferAddVideoAffineTransformationMeta(Gst.Buffer buffer) {
			IntPtr raw_ret = gst_buffer_add_video_affine_transformation_meta(buffer == null ? IntPtr.Zero : buffer.Handle);
			Gst.Video.VideoAffineTransformationMeta ret = Gst.Video.VideoAffineTransformationMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_bar_meta(IntPtr buffer, byte field, bool is_letterbox, uint bar_data1, uint bar_data2);

		public static Gst.Video.VideoBarMeta BufferAddVideoBarMeta(Gst.Buffer buffer, byte field, bool is_letterbox, uint bar_data1, uint bar_data2) {
			IntPtr raw_ret = gst_buffer_add_video_bar_meta(buffer == null ? IntPtr.Zero : buffer.Handle, field, is_letterbox, bar_data1, bar_data2);
			Gst.Video.VideoBarMeta ret = Gst.Video.VideoBarMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_caption_meta(IntPtr buffer, int caption_type, byte[] data, UIntPtr size);

		public static Gst.Video.VideoCaptionMeta BufferAddVideoCaptionMeta(Gst.Buffer buffer, Gst.Video.VideoCaptionType caption_type, byte[] data, ulong size) {
			IntPtr raw_ret = gst_buffer_add_video_caption_meta(buffer == null ? IntPtr.Zero : buffer.Handle, (int) caption_type, data, new UIntPtr (size));
			Gst.Video.VideoCaptionMeta ret = Gst.Video.VideoCaptionMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_gl_texture_upload_meta(IntPtr buffer, int texture_orientation, uint n_textures, int texture_type, Gst.VideoSharp.VideoGLTextureUploadNative upload, IntPtr user_data, IntPtr user_data_copy, IntPtr user_data_free);

		public static Gst.Video.VideoGLTextureUploadMeta BufferAddVideoGlTextureUploadMeta(Gst.Buffer buffer, Gst.Video.VideoGLTextureOrientation texture_orientation, uint n_textures, Gst.Video.VideoGLTextureType texture_type, Gst.Video.VideoGLTextureUpload upload, IntPtr user_data_copy, IntPtr user_data_free) {
			Gst.VideoSharp.VideoGLTextureUploadWrapper upload_wrapper = new Gst.VideoSharp.VideoGLTextureUploadWrapper (upload);
			IntPtr raw_ret = gst_buffer_add_video_gl_texture_upload_meta(buffer == null ? IntPtr.Zero : buffer.Handle, (int) texture_orientation, n_textures, (int) texture_type, upload_wrapper.NativeDelegate, IntPtr.Zero, user_data_copy, user_data_free);
			Gst.Video.VideoGLTextureUploadMeta ret = Gst.Video.VideoGLTextureUploadMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_meta(IntPtr buffer, int flags, int format, uint width, uint height);

		public static Gst.Video.VideoMeta BufferAddVideoMeta(Gst.Buffer buffer, Gst.Video.VideoFrameFlags flags, Gst.Video.VideoFormat format, uint width, uint height) {
			IntPtr raw_ret = gst_buffer_add_video_meta(buffer == null ? IntPtr.Zero : buffer.Handle, (int) flags, (int) format, width, height);
			Gst.Video.VideoMeta ret = Gst.Video.VideoMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_overlay_composition_meta(IntPtr buf, IntPtr comp);

		public static Gst.Video.VideoOverlayCompositionMeta BufferAddVideoOverlayCompositionMeta(Gst.Buffer buf, Gst.Video.VideoOverlayComposition comp) {
			IntPtr raw_ret = gst_buffer_add_video_overlay_composition_meta(buf == null ? IntPtr.Zero : buf.Handle, comp == null ? IntPtr.Zero : comp.Handle);
			Gst.Video.VideoOverlayCompositionMeta ret = Gst.Video.VideoOverlayCompositionMeta.New (raw_ret);
			return ret;
		}

		public static Gst.Video.VideoOverlayCompositionMeta BufferAddVideoOverlayCompositionMeta(Gst.Buffer buf) {
			return BufferAddVideoOverlayCompositionMeta (buf, null);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_region_of_interest_meta(IntPtr buffer, IntPtr roi_type, uint x, uint y, uint w, uint h);

		public static Gst.Video.VideoRegionOfInterestMeta BufferAddVideoRegionOfInterestMeta(Gst.Buffer buffer, string roi_type, uint x, uint y, uint w, uint h) {
			IntPtr native_roi_type = GLib.Marshaller.StringToPtrGStrdup (roi_type);
			IntPtr raw_ret = gst_buffer_add_video_region_of_interest_meta(buffer == null ? IntPtr.Zero : buffer.Handle, native_roi_type, x, y, w, h);
			Gst.Video.VideoRegionOfInterestMeta ret = Gst.Video.VideoRegionOfInterestMeta.New (raw_ret);
			GLib.Marshaller.Free (native_roi_type);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_region_of_interest_meta_id(IntPtr buffer, uint roi_type, uint x, uint y, uint w, uint h);

		public static Gst.Video.VideoRegionOfInterestMeta BufferAddVideoRegionOfInterestMetaId(Gst.Buffer buffer, uint roi_type, uint x, uint y, uint w, uint h) {
			IntPtr raw_ret = gst_buffer_add_video_region_of_interest_meta_id(buffer == null ? IntPtr.Zero : buffer.Handle, roi_type, x, y, w, h);
			Gst.Video.VideoRegionOfInterestMeta ret = Gst.Video.VideoRegionOfInterestMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_time_code_meta(IntPtr buffer, IntPtr tc);

		public static Gst.Video.VideoTimeCodeMeta BufferAddVideoTimeCodeMeta(Gst.Buffer buffer, Gst.Video.VideoTimeCode tc) {
			IntPtr native_tc = GLib.Marshaller.StructureToPtrAlloc (tc);
			IntPtr raw_ret = gst_buffer_add_video_time_code_meta(buffer == null ? IntPtr.Zero : buffer.Handle, native_tc);
			Gst.Video.VideoTimeCodeMeta ret = Gst.Video.VideoTimeCodeMeta.New (raw_ret);
			Marshal.FreeHGlobal (native_tc);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_add_video_time_code_meta_full(IntPtr buffer, uint fps_n, uint fps_d, IntPtr latest_daily_jam, int flags, uint hours, uint minutes, uint seconds, uint frames, uint field_count);

		public static Gst.Video.VideoTimeCodeMeta BufferAddVideoTimeCodeMetaFull(Gst.Buffer buffer, uint fps_n, uint fps_d, GLib.DateTime latest_daily_jam, Gst.Video.VideoTimeCodeFlags flags, uint hours, uint minutes, uint seconds, uint frames, uint field_count) {
			IntPtr raw_ret = gst_buffer_add_video_time_code_meta_full(buffer == null ? IntPtr.Zero : buffer.Handle, fps_n, fps_d, latest_daily_jam == null ? IntPtr.Zero : latest_daily_jam.Handle, (int) flags, hours, minutes, seconds, frames, field_count);
			Gst.Video.VideoTimeCodeMeta ret = Gst.Video.VideoTimeCodeMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_get_video_meta(IntPtr buffer);

		public static Gst.Video.VideoMeta BufferGetVideoMeta(Gst.Buffer buffer) {
			IntPtr raw_ret = gst_buffer_get_video_meta(buffer == null ? IntPtr.Zero : buffer.Handle);
			Gst.Video.VideoMeta ret = Gst.Video.VideoMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_get_video_meta_id(IntPtr buffer, int id);

		public static Gst.Video.VideoMeta BufferGetVideoMetaId(Gst.Buffer buffer, int id) {
			IntPtr raw_ret = gst_buffer_get_video_meta_id(buffer == null ? IntPtr.Zero : buffer.Handle, id);
			Gst.Video.VideoMeta ret = Gst.Video.VideoMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_buffer_get_video_region_of_interest_meta_id(IntPtr buffer, int id);

		public static Gst.Video.VideoRegionOfInterestMeta BufferGetVideoRegionOfInterestMetaId(Gst.Buffer buffer, int id) {
			IntPtr raw_ret = gst_buffer_get_video_region_of_interest_meta_id(buffer == null ? IntPtr.Zero : buffer.Handle, id);
			Gst.Video.VideoRegionOfInterestMeta ret = Gst.Video.VideoRegionOfInterestMeta.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_buffer_pool_config_get_video_alignment(IntPtr config, IntPtr align);

		public static bool BufferPoolConfigGetVideoAlignment(Gst.Structure config, Gst.Video.VideoAlignment align) {
			IntPtr native_align = GLib.Marshaller.StructureToPtrAlloc (align);
			bool raw_ret = gst_buffer_pool_config_get_video_alignment(config == null ? IntPtr.Zero : config.Handle, native_align);
			bool ret = raw_ret;
			Marshal.FreeHGlobal (native_align);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_buffer_pool_config_set_video_alignment(IntPtr config, IntPtr align);

		public static void BufferPoolConfigSetVideoAlignment(Gst.Structure config, Gst.Video.VideoAlignment align) {
			IntPtr native_align = GLib.Marshaller.StructureToPtrAlloc (align);
			gst_buffer_pool_config_set_video_alignment(config == null ? IntPtr.Zero : config.Handle, native_align);
			Marshal.FreeHGlobal (native_align);
		}

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_navigation_event_get_type(IntPtr evnt);

		public static Gst.Video.NavigationEventType NavigationEventGetType(Gst.Event evnt) {
			int raw_ret = gst_navigation_event_get_type(evnt == null ? IntPtr.Zero : evnt.Handle);
			Gst.Video.NavigationEventType ret = (Gst.Video.NavigationEventType) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_event_parse_command(IntPtr evnt, out int command);

		public static bool NavigationEventParseCommand(Gst.Event evnt, out Gst.Video.NavigationCommand command) {
			int native_command;
			bool raw_ret = gst_navigation_event_parse_command(evnt == null ? IntPtr.Zero : evnt.Handle, out native_command);
			bool ret = raw_ret;
			command = (Gst.Video.NavigationCommand) native_command;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_event_parse_key_event(IntPtr evnt, out IntPtr key);

		public static bool NavigationEventParseKeyEvent(Gst.Event evnt, out string key) {
			IntPtr native_key;
			bool raw_ret = gst_navigation_event_parse_key_event(evnt == null ? IntPtr.Zero : evnt.Handle, out native_key);
			bool ret = raw_ret;
			key = GLib.Marshaller.Utf8PtrToString (native_key);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_event_parse_mouse_button_event(IntPtr evnt, out int button, out double x, out double y);

		public static bool NavigationEventParseMouseButtonEvent(Gst.Event evnt, out int button, out double x, out double y) {
			bool raw_ret = gst_navigation_event_parse_mouse_button_event(evnt == null ? IntPtr.Zero : evnt.Handle, out button, out x, out y);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_event_parse_mouse_move_event(IntPtr evnt, out double x, out double y);

		public static bool NavigationEventParseMouseMoveEvent(Gst.Event evnt, out double x, out double y) {
			bool raw_ret = gst_navigation_event_parse_mouse_move_event(evnt == null ? IntPtr.Zero : evnt.Handle, out x, out y);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_event_parse_mouse_scroll_event(IntPtr evnt, out double x, out double y, out double delta_x, out double delta_y);

		public static bool NavigationEventParseMouseScrollEvent(Gst.Event evnt, out double x, out double y, out double delta_x, out double delta_y) {
			bool raw_ret = gst_navigation_event_parse_mouse_scroll_event(evnt == null ? IntPtr.Zero : evnt.Handle, out x, out y, out delta_x, out delta_y);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_navigation_message_get_type(IntPtr message);

		public static Gst.Video.NavigationMessageType NavigationMessageGetType(Gst.Message message) {
			int raw_ret = gst_navigation_message_get_type(message == null ? IntPtr.Zero : message.Handle);
			Gst.Video.NavigationMessageType ret = (Gst.Video.NavigationMessageType) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_navigation_message_new_angles_changed(IntPtr src, uint cur_angle, uint n_angles);

		public static Gst.Message NavigationMessageNewAnglesChanged(Gst.Object src, uint cur_angle, uint n_angles) {
			IntPtr raw_ret = gst_navigation_message_new_angles_changed(src == null ? IntPtr.Zero : src.Handle, cur_angle, n_angles);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_navigation_message_new_commands_changed(IntPtr src);

		public static Gst.Message NavigationMessageNewCommandsChanged(Gst.Object src) {
			IntPtr raw_ret = gst_navigation_message_new_commands_changed(src == null ? IntPtr.Zero : src.Handle);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_navigation_message_new_event(IntPtr src, IntPtr evnt);

		public static Gst.Message NavigationMessageNewEvent(Gst.Object src, Gst.Event evnt) {
			IntPtr raw_ret = gst_navigation_message_new_event(src == null ? IntPtr.Zero : src.Handle, evnt == null ? IntPtr.Zero : evnt.Handle);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_navigation_message_new_mouse_over(IntPtr src, bool active);

		public static Gst.Message NavigationMessageNewMouseOver(Gst.Object src, bool active) {
			IntPtr raw_ret = gst_navigation_message_new_mouse_over(src == null ? IntPtr.Zero : src.Handle, active);
			Gst.Message ret = raw_ret == IntPtr.Zero ? null : (Gst.Message) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Message), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_message_parse_angles_changed(IntPtr message, out uint cur_angle, out uint n_angles);

		public static bool NavigationMessageParseAnglesChanged(Gst.Message message, out uint cur_angle, out uint n_angles) {
			bool raw_ret = gst_navigation_message_parse_angles_changed(message == null ? IntPtr.Zero : message.Handle, out cur_angle, out n_angles);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_message_parse_event(IntPtr message, out IntPtr evnt);

		public static bool NavigationMessageParseEvent(Gst.Message message, out Gst.Event evnt) {
			IntPtr native_evnt;
			bool raw_ret = gst_navigation_message_parse_event(message == null ? IntPtr.Zero : message.Handle, out native_evnt);
			bool ret = raw_ret;
			evnt = native_evnt == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (native_evnt, typeof (Gst.Event), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_message_parse_mouse_over(IntPtr message, out bool active);

		public static bool NavigationMessageParseMouseOver(Gst.Message message, out bool active) {
			bool raw_ret = gst_navigation_message_parse_mouse_over(message == null ? IntPtr.Zero : message.Handle, out active);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_navigation_query_get_type(IntPtr query);

		public static Gst.Video.NavigationQueryType NavigationQueryGetType(Gst.Query query) {
			int raw_ret = gst_navigation_query_get_type(query == null ? IntPtr.Zero : query.Handle);
			Gst.Video.NavigationQueryType ret = (Gst.Video.NavigationQueryType) raw_ret;
			return ret;
		}

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

		public static Gst.Query NavigationQueryNewAngles() {
			IntPtr raw_ret = gst_navigation_query_new_angles();
			Gst.Query ret = raw_ret == IntPtr.Zero ? null : (Gst.Query) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Query), true);
			return ret;
		}

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

		public static Gst.Query NavigationQueryNewCommands() {
			IntPtr raw_ret = gst_navigation_query_new_commands();
			Gst.Query ret = raw_ret == IntPtr.Zero ? null : (Gst.Query) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Query), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_query_parse_angles(IntPtr query, out uint cur_angle, out uint n_angles);

		public static bool NavigationQueryParseAngles(Gst.Query query, out uint cur_angle, out uint n_angles) {
			bool raw_ret = gst_navigation_query_parse_angles(query == null ? IntPtr.Zero : query.Handle, out cur_angle, out n_angles);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_query_parse_commands_length(IntPtr query, out uint n_cmds);

		public static bool NavigationQueryParseCommandsLength(Gst.Query query, out uint n_cmds) {
			bool raw_ret = gst_navigation_query_parse_commands_length(query == null ? IntPtr.Zero : query.Handle, out n_cmds);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_navigation_query_parse_commands_nth(IntPtr query, uint nth, out int cmd);

		public static bool NavigationQueryParseCommandsNth(Gst.Query query, uint nth, out Gst.Video.NavigationCommand cmd) {
			int native_cmd;
			bool raw_ret = gst_navigation_query_parse_commands_nth(query == null ? IntPtr.Zero : query.Handle, nth, out native_cmd);
			bool ret = raw_ret;
			cmd = (Gst.Video.NavigationCommand) native_cmd;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_navigation_query_set_angles(IntPtr query, uint cur_angle, uint n_angles);

		public static void NavigationQuerySetAngles(Gst.Query query, uint cur_angle, uint n_angles) {
			gst_navigation_query_set_angles(query == null ? IntPtr.Zero : query.Handle, cur_angle, n_angles);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_navigation_query_set_commandsv(IntPtr query, int n_cmds, int[] cmds);

		public static void NavigationQuerySetCommandsv(Gst.Query query, Gst.Video.NavigationCommand[] cmds) {
			int cnt_cmds = cmds == null ? 0 : cmds.Length;
			int[] native_cmds = new int [cnt_cmds];
			for (int i = 0; i < cnt_cmds; i++)
				native_cmds [i] = (int) cmds[i];
			gst_navigation_query_set_commandsv(query == null ? IntPtr.Zero : query.Handle, (cmds == null ? 0 : cmds.Length), native_cmds);
		}

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

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

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

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

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

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

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

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

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_blend(IntPtr dest, IntPtr src, int x, int y, float global_alpha);

		public static bool VideoBlend(Gst.Video.VideoFrame dest, Gst.Video.VideoFrame src, int x, int y, float global_alpha) {
			IntPtr native_dest = GLib.Marshaller.StructureToPtrAlloc (dest);
			IntPtr native_src = GLib.Marshaller.StructureToPtrAlloc (src);
			bool raw_ret = gst_video_blend(native_dest, native_src, x, y, global_alpha);
			bool ret = raw_ret;
			Marshal.FreeHGlobal (native_dest);
			Marshal.FreeHGlobal (native_src);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_video_blend_scale_linear_RGBA(IntPtr src, IntPtr src_buffer, int dest_height, int dest_width, out IntPtr dest, out IntPtr dest_buffer);

		public static void VideoBlendScaleLinearRGBA(Gst.Video.VideoInfo src, Gst.Buffer src_buffer, int dest_height, int dest_width, out Gst.Video.VideoInfo dest, out Gst.Buffer dest_buffer) {
			IntPtr native_dest;
			IntPtr native_dest_buffer;
			gst_video_blend_scale_linear_RGBA(src == null ? IntPtr.Zero : src.Handle, src_buffer == null ? IntPtr.Zero : src_buffer.Handle, dest_height, dest_width, out native_dest, out native_dest_buffer);
			dest = native_dest == IntPtr.Zero ? null : (Gst.Video.VideoInfo) GLib.Opaque.GetOpaque (native_dest, typeof (Gst.Video.VideoInfo), false);
			dest_buffer = native_dest_buffer == IntPtr.Zero ? null : (Gst.Buffer) GLib.Opaque.GetOpaque (native_dest_buffer, typeof (Gst.Buffer), true);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_calculate_display_ratio(out uint dar_n, out uint dar_d, uint video_width, uint video_height, uint video_par_n, uint video_par_d, uint display_par_n, uint display_par_d);

		public static bool VideoCalculateDisplayRatio(out uint dar_n, out uint dar_d, uint video_width, uint video_height, uint video_par_n, uint video_par_d, uint display_par_n, uint display_par_d) {
			bool raw_ret = gst_video_calculate_display_ratio(out dar_n, out dar_d, video_width, video_height, video_par_n, video_par_d, display_par_n, display_par_d);
			bool ret = raw_ret;
			return ret;
		}

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

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

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

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

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

		public static Gst.Video.VideoCaptionType VideoCaptionTypeFromCaps(Gst.Caps caps) {
			int raw_ret = gst_video_caption_type_from_caps(caps == null ? IntPtr.Zero : caps.Handle);
			Gst.Video.VideoCaptionType ret = (Gst.Video.VideoCaptionType) raw_ret;
			return ret;
		}

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

		public static Gst.Caps VideoCaptionTypeToCaps(Gst.Video.VideoCaptionType type) {
			IntPtr raw_ret = gst_video_caption_type_to_caps((int) type);
			Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_chroma_from_string(IntPtr s);

		public static Gst.Video.VideoChromaSite VideoChromaFromString(string s) {
			IntPtr native_s = GLib.Marshaller.StringToPtrGStrdup (s);
			int raw_ret = gst_video_chroma_from_string(native_s);
			Gst.Video.VideoChromaSite ret = (Gst.Video.VideoChromaSite) raw_ret;
			GLib.Marshaller.Free (native_s);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_video_chroma_resample(IntPtr resample, IntPtr lines, int width);

		public static void VideoChromaResample(Gst.Video.VideoChromaResample resample, IntPtr lines, int width) {
			gst_video_chroma_resample(resample == null ? IntPtr.Zero : resample.Handle, lines, width);
		}

		public static void VideoChromaResample(Gst.Video.VideoChromaResample resample, int width) {
			VideoChromaResample (resample, IntPtr.Zero, width);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_chroma_to_string(int site);

		public static string VideoChromaToString(Gst.Video.VideoChromaSite site) {
			IntPtr raw_ret = gst_video_chroma_to_string((int) site);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_color_matrix_from_iso(uint value);

		public static Gst.Video.VideoColorMatrix VideoColorMatrixFromIso(uint value) {
			int raw_ret = gst_video_color_matrix_from_iso(value);
			Gst.Video.VideoColorMatrix ret = (Gst.Video.VideoColorMatrix) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_color_matrix_get_Kr_Kb(int matrix, out double Kr, out double Kb);

		public static bool VideoColorMatrixGetKrKb(Gst.Video.VideoColorMatrix matrix, out double Kr, out double Kb) {
			bool raw_ret = gst_video_color_matrix_get_Kr_Kb((int) matrix, out Kr, out Kb);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_color_matrix_to_iso(int matrix);

		public static uint VideoColorMatrixToIso(Gst.Video.VideoColorMatrix matrix) {
			uint raw_ret = gst_video_color_matrix_to_iso((int) matrix);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_color_primaries_from_iso(uint value);

		public static Gst.Video.VideoColorPrimaries VideoColorPrimariesFromIso(uint value) {
			int raw_ret = gst_video_color_primaries_from_iso(value);
			Gst.Video.VideoColorPrimaries ret = (Gst.Video.VideoColorPrimaries) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_color_primaries_get_info(int primaries);

		public static Gst.Video.VideoColorPrimariesInfo VideoColorPrimariesGetInfo(Gst.Video.VideoColorPrimaries primaries) {
			IntPtr raw_ret = gst_video_color_primaries_get_info((int) primaries);
			Gst.Video.VideoColorPrimariesInfo ret = Gst.Video.VideoColorPrimariesInfo.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_color_primaries_to_iso(int primaries);

		public static uint VideoColorPrimariesToIso(Gst.Video.VideoColorPrimaries primaries) {
			uint raw_ret = gst_video_color_primaries_to_iso((int) primaries);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_video_color_range_offsets(int range, IntPtr info, out int[] offset, out int[] scale);

		public static void VideoColorRangeOffsets(Gst.Video.VideoColorRange range, Gst.Video.VideoFormatInfo info, out int[] offset, out int[] scale) {
			IntPtr native_info = GLib.Marshaller.StructureToPtrAlloc (info);
			offset = new int[4];
			scale = new int[4];
			gst_video_color_range_offsets((int) range, native_info, out offset, out scale);
			Marshal.FreeHGlobal (native_info);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern double gst_video_color_transfer_decode(int func, double val);

		[Obsolete]
		public static double VideoColorTransferDecode(Gst.Video.VideoTransferFunction func, double val) {
			double raw_ret = gst_video_color_transfer_decode((int) func, val);
			double ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern double gst_video_color_transfer_encode(int func, double val);

		[Obsolete]
		public static double VideoColorTransferEncode(Gst.Video.VideoTransferFunction func, double val) {
			double raw_ret = gst_video_color_transfer_encode((int) func, val);
			double ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern unsafe IntPtr gst_video_convert_sample(IntPtr sample, IntPtr to_caps, ulong timeout, out IntPtr error);

		public static unsafe Gst.Sample VideoConvertSample(Gst.Sample sample, Gst.Caps to_caps, ulong timeout) {
			IntPtr error = IntPtr.Zero;
			IntPtr raw_ret = gst_video_convert_sample(sample == null ? IntPtr.Zero : sample.Handle, to_caps == null ? IntPtr.Zero : to_caps.Handle, timeout, out error);
			Gst.Sample ret = raw_ret == IntPtr.Zero ? null : (Gst.Sample) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Sample), true);
			if (error != IntPtr.Zero) throw new GLib.GException (error);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_video_convert_sample_async(IntPtr sample, IntPtr to_caps, ulong timeout, Gst.VideoSharp.VideoConvertSampleCallbackNative cb, IntPtr user_data, GLib.DestroyNotify destroy_notify);

		public static void VideoConvertSampleAsync(Gst.Sample sample, Gst.Caps to_caps, ulong timeout, Gst.Video.VideoConvertSampleCallback cb) {
			Gst.VideoSharp.VideoConvertSampleCallbackWrapper cb_wrapper = new Gst.VideoSharp.VideoConvertSampleCallbackWrapper (cb);
			IntPtr user_data;
			GLib.DestroyNotify destroy_notify;
			if (cb == null) {
				user_data = IntPtr.Zero;
				destroy_notify = null;
			} else {
				user_data = (IntPtr) GCHandle.Alloc (cb_wrapper);
				destroy_notify = GLib.DestroyHelper.NotifyHandler;
			}
			gst_video_convert_sample_async(sample == null ? IntPtr.Zero : sample.Handle, to_caps == null ? IntPtr.Zero : to_caps.Handle, timeout, cb_wrapper.NativeDelegate, user_data, destroy_notify);
		}

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_event_is_force_key_unit(IntPtr evnt);

		public static bool VideoEventIsForceKeyUnit(Gst.Event evnt) {
			bool raw_ret = gst_video_event_is_force_key_unit(evnt == null ? IntPtr.Zero : evnt.Handle);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_event_new_downstream_force_key_unit(ulong timestamp, ulong stream_time, ulong running_time, bool all_headers, uint count);

		public static Gst.Event VideoEventNewDownstreamForceKeyUnit(ulong timestamp, ulong stream_time, ulong running_time, bool all_headers, uint count) {
			IntPtr raw_ret = gst_video_event_new_downstream_force_key_unit(timestamp, stream_time, running_time, all_headers, count);
			Gst.Event ret = raw_ret == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Event), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_event_new_still_frame(bool in_still);

		public static Gst.Event VideoEventNewStillFrame(bool in_still) {
			IntPtr raw_ret = gst_video_event_new_still_frame(in_still);
			Gst.Event ret = raw_ret == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Event), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_event_new_upstream_force_key_unit(ulong running_time, bool all_headers, uint count);

		public static Gst.Event VideoEventNewUpstreamForceKeyUnit(ulong running_time, bool all_headers, uint count) {
			IntPtr raw_ret = gst_video_event_new_upstream_force_key_unit(running_time, all_headers, count);
			Gst.Event ret = raw_ret == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Event), true);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_event_parse_downstream_force_key_unit(IntPtr evnt, out ulong timestamp, out ulong stream_time, out ulong running_time, out bool all_headers, out uint count);

		public static bool VideoEventParseDownstreamForceKeyUnit(Gst.Event evnt, out ulong timestamp, out ulong stream_time, out ulong running_time, out bool all_headers, out uint count) {
			bool raw_ret = gst_video_event_parse_downstream_force_key_unit(evnt == null ? IntPtr.Zero : evnt.Handle, out timestamp, out stream_time, out running_time, out all_headers, out count);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_event_parse_still_frame(IntPtr evnt, out bool in_still);

		public static bool VideoEventParseStillFrame(Gst.Event evnt, out bool in_still) {
			bool raw_ret = gst_video_event_parse_still_frame(evnt == null ? IntPtr.Zero : evnt.Handle, out in_still);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_event_parse_upstream_force_key_unit(IntPtr evnt, out ulong running_time, out bool all_headers, out uint count);

		public static bool VideoEventParseUpstreamForceKeyUnit(Gst.Event evnt, out ulong running_time, out bool all_headers, out uint count) {
			bool raw_ret = gst_video_event_parse_upstream_force_key_unit(evnt == null ? IntPtr.Zero : evnt.Handle, out running_time, out all_headers, out count);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_field_order_from_string(IntPtr order);

		public static Gst.Video.VideoFieldOrder VideoFieldOrderFromString(string order) {
			IntPtr native_order = GLib.Marshaller.StringToPtrGStrdup (order);
			int raw_ret = gst_video_field_order_from_string(native_order);
			Gst.Video.VideoFieldOrder ret = (Gst.Video.VideoFieldOrder) raw_ret;
			GLib.Marshaller.Free (native_order);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_field_order_to_string(int order);

		public static string VideoFieldOrderToString(Gst.Video.VideoFieldOrder order) {
			IntPtr raw_ret = gst_video_field_order_to_string((int) order);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_format_from_fourcc(uint fourcc);

		public static Gst.Video.VideoFormat VideoFormatFromFourcc(uint fourcc) {
			int raw_ret = gst_video_format_from_fourcc(fourcc);
			Gst.Video.VideoFormat ret = (Gst.Video.VideoFormat) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_format_from_masks(int depth, int bpp, int endianness, uint red_mask, uint green_mask, uint blue_mask, uint alpha_mask);

		public static Gst.Video.VideoFormat VideoFormatFromMasks(int depth, int bpp, int endianness, uint red_mask, uint green_mask, uint blue_mask, uint alpha_mask) {
			int raw_ret = gst_video_format_from_masks(depth, bpp, endianness, red_mask, green_mask, blue_mask, alpha_mask);
			Gst.Video.VideoFormat ret = (Gst.Video.VideoFormat) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_format_from_string(IntPtr format);

		public static Gst.Video.VideoFormat VideoFormatFromString(string format) {
			IntPtr native_format = GLib.Marshaller.StringToPtrGStrdup (format);
			int raw_ret = gst_video_format_from_string(native_format);
			Gst.Video.VideoFormat ret = (Gst.Video.VideoFormat) raw_ret;
			GLib.Marshaller.Free (native_format);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_format_get_info(int format);

		public static Gst.Video.VideoFormatInfo VideoFormatGetInfo(Gst.Video.VideoFormat format) {
			IntPtr raw_ret = gst_video_format_get_info((int) format);
			Gst.Video.VideoFormatInfo ret = Gst.Video.VideoFormatInfo.New (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_format_get_palette(int format, out UIntPtr size);

		public static IntPtr VideoFormatGetPalette(Gst.Video.VideoFormat format, out ulong size) {
			UIntPtr native_size;
			IntPtr raw_ret = gst_video_format_get_palette((int) format, out native_size);
			IntPtr ret = raw_ret;
			size = (ulong) native_size;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_format_to_fourcc(int format);

		public static uint VideoFormatToFourcc(Gst.Video.VideoFormat format) {
			uint raw_ret = gst_video_format_to_fourcc((int) format);
			uint ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_format_to_string(int format);

		public static string VideoFormatToString(Gst.Video.VideoFormat format) {
			IntPtr raw_ret = gst_video_format_to_string((int) format);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_guess_framerate(ulong duration, out int dest_n, out int dest_d);

		public static bool VideoGuessFramerate(ulong duration, out int dest_n, out int dest_d) {
			bool raw_ret = gst_video_guess_framerate(duration, out dest_n, out dest_d);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_interlace_mode_from_string(IntPtr mode);

		public static Gst.Video.VideoInterlaceMode VideoInterlaceModeFromString(string mode) {
			IntPtr native_mode = GLib.Marshaller.StringToPtrGStrdup (mode);
			int raw_ret = gst_video_interlace_mode_from_string(native_mode);
			Gst.Video.VideoInterlaceMode ret = (Gst.Video.VideoInterlaceMode) raw_ret;
			GLib.Marshaller.Free (native_mode);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_interlace_mode_to_string(int mode);

		public static string VideoInterlaceModeToString(Gst.Video.VideoInterlaceMode mode) {
			IntPtr raw_ret = gst_video_interlace_mode_to_string((int) mode);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_make_raw_caps(int[] formats, uint len);

		public static Gst.Caps VideoMakeRawCaps(Gst.Video.VideoFormat[] formats, uint len) {
			int cnt_formats = formats == null ? 0 : formats.Length;
			int[] native_formats = new int [cnt_formats];
			for (int i = 0; i < cnt_formats; i++)
				native_formats [i] = (int) formats[i];
			IntPtr raw_ret = gst_video_make_raw_caps(native_formats, len);
			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 VideoMakeRawCaps(uint len) {
			return VideoMakeRawCaps (null, len);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_make_raw_caps_with_features(int[] formats, uint len, IntPtr features);

		public static Gst.Caps VideoMakeRawCapsWithFeatures(Gst.Video.VideoFormat[] formats, uint len, Gst.CapsFeatures features) {
			int cnt_formats = formats == null ? 0 : formats.Length;
			int[] native_formats = new int [cnt_formats];
			for (int i = 0; i < cnt_formats; i++)
				native_formats [i] = (int) formats[i];
			IntPtr native_features = GLib.Marshaller.StructureToPtrAlloc (features);
			IntPtr raw_ret = gst_video_make_raw_caps_with_features(native_formats, len, native_features);
			Gst.Caps ret = raw_ret == IntPtr.Zero ? null : (Gst.Caps) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
			Marshal.FreeHGlobal (native_features);
			return ret;
		}

		public static Gst.Caps VideoMakeRawCapsWithFeatures(uint len) {
			return VideoMakeRawCapsWithFeatures (null, len, Gst.CapsFeatures.Zero);
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_mastering_display_info_from_string(IntPtr minfo, IntPtr mastering);

		public static bool VideoMasteringDisplayInfoFromString(out Gst.Video.VideoMasteringDisplayInfo minfo, string mastering) {
			IntPtr native_minfo = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoMasteringDisplayInfo)));
			IntPtr native_mastering = GLib.Marshaller.StringToPtrGStrdup (mastering);
			bool raw_ret = gst_video_mastering_display_info_from_string(native_minfo, native_mastering);
			bool ret = raw_ret;
			minfo = Gst.Video.VideoMasteringDisplayInfo.New (native_minfo);
			Marshal.FreeHGlobal (native_minfo);
			GLib.Marshaller.Free (native_mastering);
			return ret;
		}

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

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

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

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

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

		public static uint VideoMetaTransformScaleGetQuark() {
			uint raw_ret = gst_video_meta_transform_scale_get_quark();
			uint ret = raw_ret;
			return ret;
		}

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

		public static GLib.Value VideoMultiviewGetDoubledHeightModes() {
			IntPtr raw_ret = gst_video_multiview_get_doubled_height_modes();
			GLib.Value ret = (GLib.Value) Marshal.PtrToStructure (raw_ret, typeof (GLib.Value));
			return ret;
		}

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

		public static GLib.Value VideoMultiviewGetDoubledSizeModes() {
			IntPtr raw_ret = gst_video_multiview_get_doubled_size_modes();
			GLib.Value ret = (GLib.Value) Marshal.PtrToStructure (raw_ret, typeof (GLib.Value));
			return ret;
		}

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

		public static GLib.Value VideoMultiviewGetDoubledWidthModes() {
			IntPtr raw_ret = gst_video_multiview_get_doubled_width_modes();
			GLib.Value ret = (GLib.Value) Marshal.PtrToStructure (raw_ret, typeof (GLib.Value));
			return ret;
		}

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

		public static GLib.Value VideoMultiviewGetMonoModes() {
			IntPtr raw_ret = gst_video_multiview_get_mono_modes();
			GLib.Value ret = (GLib.Value) Marshal.PtrToStructure (raw_ret, typeof (GLib.Value));
			return ret;
		}

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

		public static GLib.Value VideoMultiviewGetUnpackedModes() {
			IntPtr raw_ret = gst_video_multiview_get_unpacked_modes();
			GLib.Value ret = (GLib.Value) Marshal.PtrToStructure (raw_ret, typeof (GLib.Value));
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_multiview_guess_half_aspect(int mv_mode, uint width, uint height, uint par_n, uint par_d);

		public static bool VideoMultiviewGuessHalfAspect(Gst.Video.VideoMultiviewMode mv_mode, uint width, uint height, uint par_n, uint par_d) {
			bool raw_ret = gst_video_multiview_guess_half_aspect((int) mv_mode, width, height, par_n, par_d);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_multiview_mode_from_caps_string(IntPtr caps_mview_mode);

		public static Gst.Video.VideoMultiviewMode VideoMultiviewModeFromCapsString(string caps_mview_mode) {
			IntPtr native_caps_mview_mode = GLib.Marshaller.StringToPtrGStrdup (caps_mview_mode);
			int raw_ret = gst_video_multiview_mode_from_caps_string(native_caps_mview_mode);
			Gst.Video.VideoMultiviewMode ret = (Gst.Video.VideoMultiviewMode) raw_ret;
			GLib.Marshaller.Free (native_caps_mview_mode);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_multiview_mode_to_caps_string(int mview_mode);

		public static string VideoMultiviewModeToCapsString(Gst.Video.VideoMultiviewMode mview_mode) {
			IntPtr raw_ret = gst_video_multiview_mode_to_caps_string((int) mview_mode);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_video_multiview_video_info_change_mode(IntPtr info, int out_mview_mode, int out_mview_flags);

		public static void VideoMultiviewVideoInfoChangeMode(Gst.Video.VideoInfo info, Gst.Video.VideoMultiviewMode out_mview_mode, Gst.Video.VideoMultiviewFlags out_mview_flags) {
			gst_video_multiview_video_info_change_mode(info == null ? IntPtr.Zero : info.Handle, (int) out_mview_mode, (int) out_mview_flags);
		}

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_overlay_set_property(IntPtr _object, int last_prop_id, uint property_id, IntPtr value);

		public static bool VideoOverlaySetProperty(GLib.Object _object, int last_prop_id, uint property_id, GLib.Value value) {
			IntPtr native_value = GLib.Marshaller.StructureToPtrAlloc (value);
			bool raw_ret = gst_video_overlay_set_property(_object == null ? IntPtr.Zero : _object.Handle, last_prop_id, property_id, native_value);
			bool ret = raw_ret;
			Marshal.FreeHGlobal (native_value);
			return ret;
		}

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_tile_get_index(int mode, int x, int y, int x_tiles, int y_tiles);

		public static uint VideoTileGetIndex(Gst.Video.VideoTileMode mode, int x, int y, int x_tiles, int y_tiles) {
			uint raw_ret = gst_video_tile_get_index((int) mode, x, y, x_tiles, y_tiles);
			uint ret = raw_ret;
			return ret;
		}

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

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

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern double gst_video_transfer_function_decode(int func, double val);

		public static double VideoTransferFunctionDecode(Gst.Video.VideoTransferFunction func, double val) {
			double raw_ret = gst_video_transfer_function_decode((int) func, val);
			double ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern double gst_video_transfer_function_encode(int func, double val);

		public static double VideoTransferFunctionEncode(Gst.Video.VideoTransferFunction func, double val) {
			double raw_ret = gst_video_transfer_function_encode((int) func, val);
			double ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_video_transfer_function_from_iso(uint value);

		public static Gst.Video.VideoTransferFunction VideoTransferFunctionFromIso(uint value) {
			int raw_ret = gst_video_transfer_function_from_iso(value);
			Gst.Video.VideoTransferFunction ret = (Gst.Video.VideoTransferFunction) raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_transfer_function_is_equivalent(int from_func, uint from_bpp, int to_func, uint to_bpp);

		public static bool VideoTransferFunctionIsEquivalent(Gst.Video.VideoTransferFunction from_func, uint from_bpp, Gst.Video.VideoTransferFunction to_func, uint to_bpp) {
			bool raw_ret = gst_video_transfer_function_is_equivalent((int) from_func, from_bpp, (int) to_func, to_bpp);
			bool ret = raw_ret;
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_transfer_function_to_iso(int func);

		public static uint VideoTransferFunctionToIso(Gst.Video.VideoTransferFunction func) {
			uint raw_ret = gst_video_transfer_function_to_iso((int) func);
			uint ret = raw_ret;
			return ret;
		}

#endregion
	}
}
