// 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
	[StructLayout(LayoutKind.Sequential)]
	public partial struct VideoHDR10Plus : IEquatable<VideoHDR10Plus> {

		public byte ApplicationIdentifier;
		public byte ApplicationVersion;
		public byte NumWindows;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=1)]
		public Gst.Video.VideoColorVolumeTransformation[] ProcessingWindow;
		public uint TargetedSystemDisplayMaximumLuminance;
		public byte TargetedSystemDisplayActualPeakLuminanceFlag;
		public byte NumRowsTargetedSystemDisplayActualPeakLuminance;
		public byte NumColsTargetedSystemDisplayActualPeakLuminance;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=625)]
		public byte[] TargetedSystemDisplayActualPeakLuminance;
		public byte MasteringDisplayActualPeakLuminanceFlag;
		public byte NumRowsMasteringDisplayActualPeakLuminance;
		public byte NumColsMasteringDisplayActualPeakLuminance;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=625)]
		public byte[] MasteringDisplayActualPeakLuminance;

		public static Gst.Video.VideoHDR10Plus Zero = new Gst.Video.VideoHDR10Plus ();

		public static Gst.Video.VideoHDR10Plus New(IntPtr raw) {
			if (raw == IntPtr.Zero)
				return Gst.Video.VideoHDR10Plus.Zero;
			return (Gst.Video.VideoHDR10Plus) Marshal.PtrToStructure (raw, typeof (Gst.Video.VideoHDR10Plus));
		}

		public bool Equals (VideoHDR10Plus other)
		{
			return true && ApplicationIdentifier.Equals (other.ApplicationIdentifier) && ApplicationVersion.Equals (other.ApplicationVersion) && NumWindows.Equals (other.NumWindows) && ProcessingWindow.Equals (other.ProcessingWindow) && TargetedSystemDisplayMaximumLuminance.Equals (other.TargetedSystemDisplayMaximumLuminance) && TargetedSystemDisplayActualPeakLuminanceFlag.Equals (other.TargetedSystemDisplayActualPeakLuminanceFlag) && NumRowsTargetedSystemDisplayActualPeakLuminance.Equals (other.NumRowsTargetedSystemDisplayActualPeakLuminance) && NumColsTargetedSystemDisplayActualPeakLuminance.Equals (other.NumColsTargetedSystemDisplayActualPeakLuminance) && TargetedSystemDisplayActualPeakLuminance.Equals (other.TargetedSystemDisplayActualPeakLuminance) && MasteringDisplayActualPeakLuminanceFlag.Equals (other.MasteringDisplayActualPeakLuminanceFlag) && NumRowsMasteringDisplayActualPeakLuminance.Equals (other.NumRowsMasteringDisplayActualPeakLuminance) && NumColsMasteringDisplayActualPeakLuminance.Equals (other.NumColsMasteringDisplayActualPeakLuminance) && MasteringDisplayActualPeakLuminance.Equals (other.MasteringDisplayActualPeakLuminance);
		}

		public override bool Equals (object other)
		{
			return other is VideoHDR10Plus && Equals ((VideoHDR10Plus) other);
		}

		public override int GetHashCode ()
		{
			return this.GetType ().FullName.GetHashCode () ^ ApplicationIdentifier.GetHashCode () ^ ApplicationVersion.GetHashCode () ^ NumWindows.GetHashCode () ^ ProcessingWindow.GetHashCode () ^ TargetedSystemDisplayMaximumLuminance.GetHashCode () ^ TargetedSystemDisplayActualPeakLuminanceFlag.GetHashCode () ^ NumRowsTargetedSystemDisplayActualPeakLuminance.GetHashCode () ^ NumColsTargetedSystemDisplayActualPeakLuminance.GetHashCode () ^ TargetedSystemDisplayActualPeakLuminance.GetHashCode () ^ MasteringDisplayActualPeakLuminanceFlag.GetHashCode () ^ NumRowsMasteringDisplayActualPeakLuminance.GetHashCode () ^ NumColsMasteringDisplayActualPeakLuminance.GetHashCode () ^ MasteringDisplayActualPeakLuminance.GetHashCode ();
		}

		private static GLib.GType GType {
			get { return GLib.GType.Pointer; }
		}
#endregion
	}
}
