// 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, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=3)]byte[] data, UIntPtr size);

		public static Gst.Video.VideoCaptionMeta BufferAddVideoCaptionMeta(Gst.Buffer buffer, Gst.Video.VideoCaptionType caption_type, byte[] data) {
			ulong size = (ulong)(data == null ? 0 : data.Length);
			IntPtr raw_ret = gst_buffer_add_video_caption_meta(buffer == null ? IntPtr.Zero : buffer.Handle, (int) caption_type, data, new UIntPtr ((uint)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_codec_alpha_meta(IntPtr buffer, IntPtr alpha_buffer);

		public static Gst.Video.VideoCodecAlphaMeta BufferAddVideoCodecAlphaMeta(Gst.Buffer buffer, Gst.Buffer alpha_buffer) {
			alpha_buffer.Owned = false;
			IntPtr raw_ret = gst_buffer_add_video_codec_alpha_meta(buffer == null ? IntPtr.Zero : buffer.Handle, alpha_buffer == null ? IntPtr.Zero : alpha_buffer.Handle);
			Gst.Video.VideoCodecAlphaMeta ret = Gst.Video.VideoCodecAlphaMeta.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_sei_user_data_unregistered_meta(IntPtr buffer, byte uuid, byte data, UIntPtr size);

		public static Gst.Video.VideoSEIUserDataUnregisteredMeta BufferAddVideoSeiUserDataUnregisteredMeta(Gst.Buffer buffer, byte uuid, byte data, ulong size) {
			IntPtr raw_ret = gst_buffer_add_video_sei_user_data_unregistered_meta(buffer == null ? IntPtr.Zero : buffer.Handle, uuid, data, new UIntPtr (size));
			Gst.Video.VideoSEIUserDataUnregisteredMeta ret = Gst.Video.VideoSEIUserDataUnregisteredMeta.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 bool gst_navigation_event_get_coordinates(IntPtr evnt, out double x, out double y);

		public static bool NavigationEventGetCoordinates(Gst.Event evnt, out double x, out double y) {
			bool raw_ret = gst_navigation_event_get_coordinates(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 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 IntPtr gst_navigation_event_new_command(int command);

		public static Gst.Event NavigationEventNewCommand(Gst.Video.NavigationCommand command) {
			IntPtr raw_ret = gst_navigation_event_new_command((int) command);
			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_navigation_event_new_key_press(IntPtr key, int state);

		public static Gst.Event NavigationEventNewKeyPress(string key, Gst.Video.NavigationModifierType state) {
			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
			IntPtr raw_ret = gst_navigation_event_new_key_press(native_key, (int) state);
			Gst.Event ret = raw_ret == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Event), true);
			GLib.Marshaller.Free (native_key);
			return ret;
		}

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

		public static Gst.Event NavigationEventNewKeyRelease(string key, Gst.Video.NavigationModifierType state) {
			IntPtr native_key = GLib.Marshaller.StringToPtrGStrdup (key);
			IntPtr raw_ret = gst_navigation_event_new_key_release(native_key, (int) state);
			Gst.Event ret = raw_ret == IntPtr.Zero ? null : (Gst.Event) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Event), true);
			GLib.Marshaller.Free (native_key);
			return ret;
		}

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

		public static Gst.Event NavigationEventNewMouseButtonPress(int button, double x, double y, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_mouse_button_press(button, x, y, (int) state);
			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_navigation_event_new_mouse_button_release(int button, double x, double y, int state);

		public static Gst.Event NavigationEventNewMouseButtonRelease(int button, double x, double y, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_mouse_button_release(button, x, y, (int) state);
			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_navigation_event_new_mouse_move(double x, double y, int state);

		public static Gst.Event NavigationEventNewMouseMove(double x, double y, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_mouse_move(x, y, (int) state);
			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_navigation_event_new_mouse_scroll(double x, double y, double delta_x, double delta_y, int state);

		public static Gst.Event NavigationEventNewMouseScroll(double x, double y, double delta_x, double delta_y, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_mouse_scroll(x, y, delta_x, delta_y, (int) state);
			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_navigation_event_new_touch_cancel(int state);

		public static Gst.Event NavigationEventNewTouchCancel(Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_touch_cancel((int) state);
			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_navigation_event_new_touch_down(uint identifier, double x, double y, double pressure, int state);

		public static Gst.Event NavigationEventNewTouchDown(uint identifier, double x, double y, double pressure, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_touch_down(identifier, x, y, pressure, (int) state);
			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_navigation_event_new_touch_frame(int state);

		public static Gst.Event NavigationEventNewTouchFrame(Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_touch_frame((int) state);
			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_navigation_event_new_touch_motion(uint identifier, double x, double y, double pressure, int state);

		public static Gst.Event NavigationEventNewTouchMotion(uint identifier, double x, double y, double pressure, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_touch_motion(identifier, x, y, pressure, (int) state);
			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_navigation_event_new_touch_up(uint identifier, double x, double y, int state);

		public static Gst.Event NavigationEventNewTouchUp(uint identifier, double x, double y, Gst.Video.NavigationModifierType state) {
			IntPtr raw_ret = gst_navigation_event_new_touch_up(identifier, x, y, (int) state);
			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_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_modifier_state(IntPtr evnt, int state);

		public static bool NavigationEventParseModifierState(Gst.Event evnt, Gst.Video.NavigationModifierType state) {
			bool raw_ret = gst_navigation_event_parse_modifier_state(evnt == null ? IntPtr.Zero : evnt.Handle, (int) state);
			bool ret = raw_ret;
			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 bool gst_navigation_event_parse_touch_event(IntPtr evnt, out uint identifier, out double x, out double y, out double pressure);

		public static bool NavigationEventParseTouchEvent(Gst.Event evnt, out uint identifier, out double x, out double y, out double pressure) {
			bool raw_ret = gst_navigation_event_parse_touch_event(evnt == null ? IntPtr.Zero : evnt.Handle, out identifier, out x, out y, out pressure);
			bool ret = raw_ret;
			return ret;
		}

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

		public static bool NavigationEventParseTouchUpEvent(Gst.Event evnt, out uint identifier, out double x, out double y) {
			bool raw_ret = gst_navigation_event_parse_touch_up_event(evnt == null ? IntPtr.Zero : evnt.Handle, out identifier, 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_set_coordinates(IntPtr evnt, double x, double y);

		public static bool NavigationEventSetCoordinates(Gst.Event evnt, double x, double y) {
			bool raw_ret = gst_navigation_event_set_coordinates(evnt == null ? IntPtr.Zero : evnt.Handle, x, 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, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)]int[] cmds);

		public static void NavigationQuerySetCommandsv(Gst.Query query, Gst.Video.NavigationCommand[] cmds) {
			int n_cmds = (cmds == null ? 0 : cmds.Length);
			int[] native_cmds = new int [n_cmds];
			for (int i = 0; i < n_cmds; i++)
				native_cmds [i] = (int) cmds[i];
			gst_navigation_query_set_commandsv(query == null ? IntPtr.Zero : query.Handle, n_cmds, 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 void gst_video_center_rect(IntPtr src, IntPtr dst, IntPtr _result, bool scaling);

		public static Gst.Video.VideoRectangle VideoCenterRect(Gst.Video.VideoRectangle src, Gst.Video.VideoRectangle dst, bool scaling) {
			Gst.Video.VideoRectangle _result;
			IntPtr native_src = GLib.Marshaller.StructureToPtrAlloc (src);
			IntPtr native_dst = GLib.Marshaller.StructureToPtrAlloc (dst);
			IntPtr native__result = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoRectangle)));
			gst_video_center_rect(native_src, native_dst, native__result, scaling);
			Marshal.FreeHGlobal (native_src);
			Marshal.FreeHGlobal (native_dst);
			_result = Gst.Video.VideoRectangle.New (native__result);
			Marshal.FreeHGlobal (native__result);
			return _result;
		}

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

		[Obsolete]
		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 int gst_video_chroma_site_from_string(IntPtr s);

		public static Gst.Video.VideoChromaSite VideoChromaSiteFromString(string s) {
			IntPtr native_s = GLib.Marshaller.StringToPtrGStrdup (s);
			int raw_ret = gst_video_chroma_site_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 IntPtr gst_video_chroma_site_to_string(int site);

		public static string VideoChromaSiteToString(Gst.Video.VideoChromaSite site) {
			IntPtr raw_ret = gst_video_chroma_site_to_string((int) site);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

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

		[Obsolete]
		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 IntPtr gst_video_codec_alpha_meta_api_get_type();

		public static GLib.GType VideoCodecAlphaMetaApiGetType() {
			IntPtr raw_ret = gst_video_codec_alpha_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_codec_alpha_meta_get_info();

		public static Gst.MetaInfo VideoCodecAlphaMetaGetInfo() {
			IntPtr raw_ret = gst_video_codec_alpha_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_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 bool gst_video_color_primaries_is_equivalent(int primaries, int other);

		public static bool VideoColorPrimariesIsEquivalent(Gst.Video.VideoColorPrimaries primaries, Gst.Video.VideoColorPrimaries other) {
			bool raw_ret = gst_video_color_primaries_is_equivalent((int) primaries, (int) other);
			bool ret = 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, [MarshalAs(UnmanagedType.LPArray, SizeConst=4)]out int[] offset, [MarshalAs(UnmanagedType.LPArray, SizeConst=4)]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);
			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 uint gst_video_dma_drm_fourcc_from_format(int format);

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern uint gst_video_dma_drm_fourcc_from_string(IntPtr format_str, out ulong modifier);

		public static uint VideoDmaDrmFourccFromString(string format_str, out ulong modifier) {
			IntPtr native_format_str = GLib.Marshaller.StringToPtrGStrdup (format_str);
			uint raw_ret = gst_video_dma_drm_fourcc_from_string(native_format_str, out modifier);
			uint ret = raw_ret;
			GLib.Marshaller.Free (native_format_str);
			return ret;
		}

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

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

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_dma_drm_fourcc_to_string(uint fourcc, ulong modifier);

		public static string VideoDmaDrmFourccToString(uint fourcc, ulong modifier) {
			IntPtr raw_ret = gst_video_dma_drm_fourcc_to_string(fourcc, modifier);
			string ret = GLib.Marshaller.PtrToStringGFree(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 bool gst_video_frame_map(IntPtr frame, IntPtr info, IntPtr buffer, int flags);

		public static bool VideoFrameMap(out Gst.Video.VideoFrame frame, Gst.Video.VideoInfo info, Gst.Buffer buffer, Gst.MapFlags flags) {
			IntPtr native_frame = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoFrame)));
			bool raw_ret = gst_video_frame_map(native_frame, info == null ? IntPtr.Zero : info.Handle, buffer == null ? IntPtr.Zero : buffer.Handle, (int) flags);
			bool ret = raw_ret;
			frame = Gst.Video.VideoFrame.New (native_frame);
			Marshal.FreeHGlobal (native_frame);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_frame_map_id(IntPtr frame, IntPtr info, IntPtr buffer, int id, int flags);

		public static bool VideoFrameMapId(out Gst.Video.VideoFrame frame, Gst.Video.VideoInfo info, Gst.Buffer buffer, int id, Gst.MapFlags flags) {
			IntPtr native_frame = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoFrame)));
			bool raw_ret = gst_video_frame_map_id(native_frame, info == null ? IntPtr.Zero : info.Handle, buffer == null ? IntPtr.Zero : buffer.Handle, id, (int) flags);
			bool ret = raw_ret;
			frame = Gst.Video.VideoFrame.New (native_frame);
			Marshal.FreeHGlobal (native_frame);
			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 bool gst_video_info_dma_drm_from_caps(IntPtr drm_info, IntPtr caps);

		public static bool VideoInfoDmaDrmFromCaps(out Gst.Video.VideoInfoDmaDrm drm_info, Gst.Caps caps) {
			IntPtr native_drm_info = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoInfoDmaDrm)));
			bool raw_ret = gst_video_info_dma_drm_from_caps(native_drm_info, caps == null ? IntPtr.Zero : caps.Handle);
			bool ret = raw_ret;
			drm_info = Gst.Video.VideoInfoDmaDrm.New (native_drm_info);
			Marshal.FreeHGlobal (native_drm_info);
			return ret;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_info_dma_drm_from_video_info(IntPtr drm_info, IntPtr info, ulong modifier);

		public static bool VideoInfoDmaDrmFromVideoInfo(out Gst.Video.VideoInfoDmaDrm drm_info, Gst.Video.VideoInfo info, ulong modifier) {
			IntPtr native_drm_info = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoInfoDmaDrm)));
			bool raw_ret = gst_video_info_dma_drm_from_video_info(native_drm_info, info == null ? IntPtr.Zero : info.Handle, modifier);
			bool ret = raw_ret;
			drm_info = Gst.Video.VideoInfoDmaDrm.New (native_drm_info);
			Marshal.FreeHGlobal (native_drm_info);
			return ret;
		}

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

		public static Gst.Video.VideoInfoDmaDrm VideoInfoDmaDrmInit() {
			Gst.Video.VideoInfoDmaDrm drm_info;
			IntPtr native_drm_info = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Gst.Video.VideoInfoDmaDrm)));
			gst_video_info_dma_drm_init(native_drm_info);
			drm_info = Gst.Video.VideoInfoDmaDrm.New (native_drm_info);
			Marshal.FreeHGlobal (native_drm_info);
			return drm_info;
		}

		[DllImport("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_video_info_from_caps(out IntPtr info, IntPtr caps);

		public static bool VideoInfoFromCaps(out Gst.Video.VideoInfo info, Gst.Caps caps) {
			IntPtr native_info;
			bool raw_ret = gst_video_info_from_caps(out native_info, caps == null ? IntPtr.Zero : caps.Handle);
			bool ret = raw_ret;
			info = native_info == IntPtr.Zero ? null : (Gst.Video.VideoInfo) GLib.Opaque.GetOpaque (native_info, typeof (Gst.Video.VideoInfo), false);
			return ret;
		}

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

		public static Gst.Video.VideoInfo VideoInfoInit() {
			Gst.Video.VideoInfo info;
			IntPtr native_info;
			gst_video_info_init(out native_info);
			info = native_info == IntPtr.Zero ? null : (Gst.Video.VideoInfo) GLib.Opaque.GetOpaque (native_info, typeof (Gst.Video.VideoInfo), false);
			return info;
		}

		[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 bool gst_video_is_common_aspect_ratio(int width, int height, int par_n, int par_d);

		public static bool VideoIsCommonAspectRatio(int width, int height, int par_n, int par_d) {
			bool raw_ret = gst_video_is_common_aspect_ratio(width, height, par_n, par_d);
			bool ret = raw_ret;
			return ret;
		}

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

		public static bool VideoIsDmaDrmCaps(Gst.Caps caps) {
			bool raw_ret = gst_video_is_dma_drm_caps(caps == null ? IntPtr.Zero : caps.Handle);
			bool ret = raw_ret;
			return ret;
		}

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

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

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

		public static Gst.Caps VideoMakeRawCapsWithFeatures(Gst.Video.VideoFormat[] formats, Gst.CapsFeatures features) {
			uint len = (uint)(formats == null ? 0 : formats.Length);
			int[] native_formats = new int [len];
			for (int i = 0; i < len; 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() {
			return VideoMakeRawCapsWithFeatures (null, 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 bool gst_video_orientation_from_tag(IntPtr taglist, out int method);

		public static bool VideoOrientationFromTag(Gst.TagList taglist, out Gst.Video.VideoOrientationMethod method) {
			int native_method;
			bool raw_ret = gst_video_orientation_from_tag(taglist == null ? IntPtr.Zero : taglist.Handle, out native_method);
			bool ret = raw_ret;
			method = (Gst.Video.VideoOrientationMethod) native_method;
			return ret;
		}

		[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 IntPtr gst_video_sei_user_data_unregistered_meta_api_get_type();

		public static GLib.GType VideoSeiUserDataUnregisteredMetaApiGetType() {
			IntPtr raw_ret = gst_video_sei_user_data_unregistered_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_sei_user_data_unregistered_meta_get_info();

		public static Gst.MetaInfo VideoSeiUserDataUnregisteredMetaGetInfo() {
			IntPtr raw_ret = gst_video_sei_user_data_unregistered_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_sei_user_data_unregistered_parse_precision_time_stamp(IntPtr user_data, out byte status, out ulong precision_time_stamp);

		public static bool VideoSeiUserDataUnregisteredParsePrecisionTimeStamp(Gst.Video.VideoSEIUserDataUnregisteredMeta user_data, out byte status, out ulong precision_time_stamp) {
			IntPtr native_user_data = GLib.Marshaller.StructureToPtrAlloc (user_data);
			bool raw_ret = gst_video_sei_user_data_unregistered_parse_precision_time_stamp(native_user_data, out status, out precision_time_stamp);
			bool ret = raw_ret;
			Marshal.FreeHGlobal (native_user_data);
			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
	}
}
