using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace butterflow_ui
{
/// An options configuration file. This class is used to serialize out the configuration to a file.
[Serializable]
public class OptionsConfigurationFile
{
#region Properties
/// Gets or sets the playback rate.
/// The playback rate.
public string PlaybackRate { get; set; }
/// Gets or sets a value indicating whether the keep audio.
/// True if keep audio, false if not.
public bool KeepAudio { get; set; }
/// Gets or sets a value indicating whether the keep subregions that are not explicitly specified.
/// True if keeping subregions not explicitly specified, false if not.
public bool KeepSubregions { get; set; }
/// Gets or sets a value indicating whether the result is rendered in lossless quality.
/// True if lossless quality is selected, false if not.
public bool LosslessQuality { get; set; }
/// Gets or sets a value indicating whether the butterflow should be turned toward smooth motion.
/// True if tuned toward smooth motion, false if not.
public bool SmoothMotion { get; set; }
/// Gets or sets a value indicating whether to lock aspect ratio of the video.
/// True if locking aspect ratio of the video, false if not.
public bool LockAspectRatio { get; set; }
/// Gets or sets a value indicating whether to use fast pyramids.
/// True if using fast pyramids, false if not.
public bool FastPyramid { get; set; }
/// Gets or sets the pyramid scale factor.
/// The pyramid scale factor.
public decimal PyramidScale { get; set; }
/// Gets or sets the number of pyramid layers.
/// The number of pyramid layers.
public int Levels { get; set; }
/// Gets or sets the size of the windowing average.
/// The size of the windowing average.
public int WindowSize { get; set; }
/// Gets or sets the number of iterations at each pyramid level.
/// The number of iterations at each pyramid level.
public int Iterations { get; set; }
/// Gets or sets the size of the pixel neighborhood.
/// The size of the pixel neighborhood.
/// Per butterflow's documentation, the valid range for --poly-n is {5,7}.
public int PixelNeighborhood { get; set; }
/// Gets or sets the standard deviation of smooth derivatives.
/// The standard deviation of smooth derivatives.
public decimal SmoothDerivativeStandardDeviation { get; set; }
/// Gets or sets the type of the flow filter used for optical flow calculations.
/// The type of the flow filter used for optical flow calculations.
public FlowFilterType FlowFilterType { get; set; }
#endregion
}
}