// 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
	[Flags]
	[GLib.GType (typeof (Gst.Video.VideoCodecFrameFlagsGType))]
	public enum VideoCodecFrameFlags : uint {

		DecodeOnly = 1,
		SyncPoint = 2,
		ForceKeyframe = 4,
		ForceKeyframeHeaders = 8,
		Corrupted = 16,
	}

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

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