IPCamAppBar/IPCamLib/FFMPEG/TransformParameters.cs

59 lines
1.9 KiB
C#

/*
* Source code originally from RtspClientSharp's player example:
* https://github.com/BogdanovKirill/RtspClientSharp
*/
// ReSharper disable All
using System.Drawing;
namespace IPCamLib.FFMPEG
{
internal class TransformParameters
{
public RectangleF RegionOfInterest { get; }
public Size TargetFrameSize { get; }
public ScalingPolicy ScalePolicy { get; }
public PixelFormat TargetFormat { get; }
public ScalingQuality ScaleQuality { get; }
public TransformParameters(RectangleF regionOfInterest, Size targetFrameSize, ScalingPolicy scalePolicy,
PixelFormat targetFormat, ScalingQuality scaleQuality)
{
RegionOfInterest = regionOfInterest;
TargetFrameSize = targetFrameSize;
TargetFormat = targetFormat;
ScaleQuality = scaleQuality;
ScalePolicy = scalePolicy;
}
protected bool Equals(TransformParameters other)
{
return RegionOfInterest.Equals(other.RegionOfInterest) &&
TargetFrameSize.Equals(other.TargetFrameSize) &&
TargetFormat == other.TargetFormat && ScaleQuality == other.ScaleQuality;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != GetType()) return false;
return Equals((TransformParameters) obj);
}
public override int GetHashCode()
{
unchecked
{
var hashCode = RegionOfInterest.GetHashCode();
hashCode = (hashCode * 397) ^ TargetFrameSize.GetHashCode();
hashCode = (hashCode * 397) ^ (int) TargetFormat;
hashCode = (hashCode * 397) ^ (int) ScaleQuality;
return hashCode;
}
}
}
}