// --------------------------------------------------------------------------------------------------------------------
//
// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
//
//
// Defines the EncodingProfile type.
//
// --------------------------------------------------------------------------------------------------------------------
namespace HandBrake.Interop.Model.Encoding
{
using System.Collections.Generic;
using HandBrake.Interop.Model;
///
/// The encoding profile.
///
public class EncodingProfile
{
///
/// Initializes a new instance of the class.
///
public EncodingProfile()
{
this.Cropping = new Cropping();
}
#region Destination and Output Settings
///
/// Gets or sets the container name.
///
public string ContainerName { get; set; }
///
/// Gets or sets the preferred extension.
///
public OutputExtension PreferredExtension { get; set; }
///
/// Gets or sets a value indicating whether include chapter markers.
///
public bool IncludeChapterMarkers { get; set; }
///
/// Gets or sets a value indicating whether large file.
///
public bool LargeFile { get; set; }
///
/// Gets or sets a value indicating whether optimize.
///
public bool Optimize { get; set; }
///
/// Gets or sets a value indicating whether i pod 5 g support.
///
public bool IPod5GSupport { get; set; }
#endregion
#region Picture Settings
///
/// Gets or sets the width.
///
public int Width { get; set; }
///
/// Gets or sets the height.
///
public int Height { get; set; }
///
/// Gets or sets the max width.
///
public int MaxWidth { get; set; }
///
/// Gets or sets the max height.
///
public int MaxHeight { get; set; }
///
/// Gets or sets the scale method.
///
public ScaleMethod ScaleMethod { get; set; }
///
/// Gets or sets the cropping type.
///
public CroppingType CroppingType { get; set; }
///
/// Gets or sets the cropping.
///
public Cropping Cropping { get; set; }
///
/// Gets or sets the anamorphic.
///
public Anamorphic Anamorphic { get; set; }
///
/// Gets or sets a value indicating whether use display width.
///
public bool UseDisplayWidth { get; set; }
///
/// Gets or sets the display width.
///
public int DisplayWidth { get; set; }
///
/// Gets or sets a value indicating whether keep display aspect.
///
public bool KeepDisplayAspect { get; set; }
///
/// Gets or sets the pixel aspect x.
///
public int PixelAspectX { get; set; }
///
/// Gets or sets the pixel aspect y.
///
public int PixelAspectY { get; set; }
///
/// Gets or sets the modulus.
///
public int Modulus { get; set; }
///
/// Gets or sets the rotation.
///
public PictureRotation Rotation { get; set; }
///
/// Gets or sets a value indicating whether the picture should be flipped horizontally.
///
public bool FlipHorizontal { get; set; }
///
/// Gets or sets a value indicating whether the picture should be flipped vertically.
///
public bool FlipVertical { get; set; }
#endregion
#region Filters
///
/// Gets or sets the deinterlace.
///
public Deinterlace Deinterlace { get; set; }
///
/// Gets or sets the custom deinterlace.
///
public string CustomDeinterlace { get; set; }
///
/// Gets or sets the decomb.
///
public Decomb Decomb { get; set; }
///
/// Gets or sets the custom decomb.
///
public string CustomDecomb { get; set; }
///
/// Gets or sets the detelecine.
///
public Detelecine Detelecine { get; set; }
///
/// Gets or sets the custom detelecine.
///
public string CustomDetelecine { get; set; }
///
/// Gets or sets the denoise.
///
public Denoise Denoise { get; set; }
///
/// Gets or sets the denoise preset.
///
public DenoisePreset DenoisePreset { get; set; }
///
/// Gets or sets the denoise tune.
///
public DenoiseTune DenoiseTune { get; set; }
///
/// Gets or sets the custom denoise.
///
public string CustomDenoise { get; set; }
///
/// Gets or sets the deblock.
///
public int Deblock { get; set; }
///
/// Gets or sets a value indicating whether the grayscale filter will be applied.
///
public bool Grayscale { get; set; }
#endregion
#region Video
///
/// Gets or sets the video encoder.
///
public string VideoEncoder { get; set; }
///
/// Gets or sets the video encoder options.
///
public string VideoOptions { get; set; }
///
/// Gets or sets the video encoder profile name.
///
public string VideoProfile { get; set; }
///
/// Gets or sets the video encoder preset name.
///
public string VideoPreset { get; set; }
///
/// Gets or sets the video encoder tunes.
///
public List VideoTunes { get; set; }
///
/// Gets or sets the video encoder level.
///
public string VideoLevel { get; set; }
///
/// Gets or sets a value indicating whether to use QSV decoding.
///
public bool QsvDecode { get; set; }
///
/// Gets or sets the video encode rate type.
///
public VideoEncodeRateType VideoEncodeRateType { get; set; }
///
/// Gets or sets the quality.
///
public double Quality { get; set; }
///
/// Gets or sets the target size.
///
public int TargetSize { get; set; }
///
/// Gets or sets the video bitrate.
///
public int VideoBitrate { get; set; }
///
/// Gets or sets a value indicating whether two pass.
///
public bool TwoPass { get; set; }
///
/// Gets or sets a value indicating whether turbo first pass.
///
public bool TurboFirstPass { get; set; }
///
/// Gets or sets the framerate.
///
public double Framerate { get; set; }
///
/// Gets or sets a value indicating whether constant framerate.
///
public bool ConstantFramerate { get; set; }
#endregion
#region Audio
///
/// Gets or sets the audio encodings.
///
public List AudioEncodings { get; set; }
///
/// Gets or sets the audio encoder fallback.
///
public string AudioEncoderFallback { get; set; }
#endregion
///
/// The clone.
///
///
/// The .
///
public EncodingProfile Clone()
{
var profile = new EncodingProfile
{
ContainerName = this.ContainerName,
PreferredExtension = this.PreferredExtension,
IncludeChapterMarkers = this.IncludeChapterMarkers,
LargeFile = this.LargeFile,
Optimize = this.Optimize,
IPod5GSupport = this.IPod5GSupport,
Width = this.Width,
Height = this.Height,
MaxWidth = this.MaxWidth,
MaxHeight = this.MaxHeight,
ScaleMethod = this.ScaleMethod,
CroppingType = this.CroppingType,
Cropping = this.Cropping.Clone(),
Anamorphic = this.Anamorphic,
UseDisplayWidth = this.UseDisplayWidth,
DisplayWidth = this.DisplayWidth,
KeepDisplayAspect = this.KeepDisplayAspect,
PixelAspectX = this.PixelAspectX,
PixelAspectY = this.PixelAspectY,
Modulus = this.Modulus,
Rotation = this.Rotation,
FlipHorizontal = this.FlipHorizontal,
FlipVertical = this.FlipVertical,
Deinterlace = this.Deinterlace,
CustomDeinterlace = this.CustomDeinterlace,
Decomb = this.Decomb,
CustomDecomb = this.CustomDecomb,
Detelecine = this.Detelecine,
CustomDetelecine = this.CustomDetelecine,
Denoise = this.Denoise,
CustomDenoise = this.CustomDenoise,
Deblock = this.Deblock,
Grayscale = this.Grayscale,
VideoEncoder = this.VideoEncoder,
VideoOptions = this.VideoOptions,
VideoProfile = this.VideoProfile,
VideoPreset = this.VideoPreset,
VideoTunes = this.VideoTunes,
VideoLevel = this.VideoLevel,
QsvDecode = this.QsvDecode,
VideoEncodeRateType = this.VideoEncodeRateType,
Quality = this.Quality,
TargetSize = this.TargetSize,
VideoBitrate = this.VideoBitrate,
TwoPass = this.TwoPass,
TurboFirstPass = this.TurboFirstPass,
Framerate = this.Framerate,
ConstantFramerate = this.ConstantFramerate,
AudioEncodings = new List(this.AudioEncodings),
AudioEncoderFallback = this.AudioEncoderFallback
};
return profile;
}
}
}