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

namespace Gst.Video {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	[GLib.GType (typeof (Gst.Video.VideoTransferFunctionGType))]
	public enum VideoTransferFunction {

		Unknown = 0,
		Gamma10 = 1,
		Gamma18 = 2,
		Gamma20 = 3,
		Gamma22 = 4,
		Bt709 = 5,
		Smpte240m = 6,
		Srgb = 7,
		Gamma28 = 8,
		Log100 = 9,
		Log316 = 10,
		Bt202012 = 11,
		Adobergb = 12,
		Bt202010 = 13,
		Smpte2084 = 14,
		AribStdB67 = 15,
		Bt601 = 16,
	}

	internal class VideoTransferFunctionGType {
		[DllImport ("gstvideo-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_video_transfer_function_get_type ();

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