/* EncodeTask.cs $ This file is part of the HandBrake source code. Homepage: . It may be used under the terms of the GNU General Public License. */ namespace HandBrake.ApplicationServices.Model { using System.Collections.ObjectModel; using System.Linq; using HandBrake.ApplicationServices.Model.Encoding; using HandBrake.Interop.Model; using HandBrake.Interop.Model.Encoding; using HandBrake.Interop.Model.Encoding.x264; using OutputFormat = HandBrake.ApplicationServices.Model.Encoding.OutputFormat; /// /// An Encode Task /// public class EncodeTask { /// /// Initializes a new instance of the class. /// public EncodeTask() { this.Cropping = new Cropping(); this.AudioTracks = new ObservableCollection(); this.SubtitleTracks = new ObservableCollection(); this.ChapterNames = new ObservableCollection(); } #region Source /// /// Gets or sets Source. /// public string Source { get; set; } /// /// Gets or sets Title. /// public int Title { get; set; } /// /// Gets or sets the Angle /// public int Angle { get; set; } /// /// Gets or sets PointToPointMode. /// public PointToPointMode PointToPointMode { get; set; } /// /// Gets or sets StartPoint. /// public int StartPoint { get; set; } /// /// Gets or sets EndPoint. /// public int EndPoint { get; set; } #endregion #region Destination /// /// Gets or sets Destination. /// public string Destination { get; set; } #endregion #region Output Settings /// /// Gets or sets OutputFormat. /// public OutputFormat OutputFormat { get; set; } /// /// Gets or sets a value indicating whether LargeFile. /// public bool LargeFile { get; set; } /// /// Gets or sets a value indicating whether Optimize. /// public bool OptimizeMP4 { get; set; } /// /// Gets or sets a value indicating whether IPod5GSupport. /// public bool IPod5GSupport { get; set; } #endregion #region Picture /// /// Gets or sets Width. /// public int? Width { get; set; } /// /// Gets or sets Height. /// public int? Height { get; set; } /// /// Gets or sets MaxWidth. /// public int? MaxWidth { get; set; } /// /// Gets or sets MaxHeight. /// public int? MaxHeight { get; set; } /// /// Gets or sets Cropping. /// public Cropping Cropping { get; set; } /// /// Gets or sets a value indicating whether HasCropping. /// public bool HasCropping { get; set; } /// /// Gets or sets Anamorphic. /// public Anamorphic Anamorphic { get; set; } /// /// Gets or sets DisplayWidth. /// public double? DisplayWidth { get; set; } /// /// Gets or sets a value indicating whether KeepDisplayAspect. /// public bool KeepDisplayAspect { get; set; } /// /// Gets or sets PixelAspectX. /// public int PixelAspectX { get; set; } /// /// Gets or sets PixelAspectY. /// public int PixelAspectY { get; set; } /// /// Gets or sets Modulus. /// public int? Modulus { get; set; } #endregion #region Filters /// /// Gets or sets Deinterlace. /// public Deinterlace Deinterlace { get; set; } /// /// Gets or sets CustomDeinterlace. /// public string CustomDeinterlace { get; set; } /// /// Gets or sets Decomb. /// public Decomb Decomb { get; set; } /// /// Gets or sets CustomDecomb. /// public string CustomDecomb { get; set; } /// /// Gets or sets Detelecine. /// public Detelecine Detelecine { get; set; } /// /// Gets or sets CustomDetelecine. /// public string CustomDetelecine { get; set; } /// /// Gets or sets Denoise. /// public Denoise Denoise { get; set; } /// /// Gets or sets CustomDenoise. /// public string CustomDenoise { get; set; } /// /// Gets or sets Deblock. /// public int Deblock { get; set; } /// /// Gets or sets a value indicating whether Grayscale. /// public bool Grayscale { get; set; } #endregion #region Video /// /// Gets or sets VideoEncodeRateType. /// public VideoEncodeRateType VideoEncodeRateType { get; set; } /// /// Gets or sets the VideoEncoder /// public VideoEncoder VideoEncoder { get; set; } /// /// Gets or sets the Video Encode Mode /// public FramerateMode FramerateMode { get; set; } /// /// Gets or sets Quality. /// public double? Quality { get; set; } /// /// Gets or sets VideoBitrate. /// public int? VideoBitrate { get; set; } /// /// Gets or sets a value indicating whether TwoPass. /// public bool TwoPass { get; set; } /// /// Gets or sets a value indicating whether TurboFirstPass. /// public bool TurboFirstPass { get; set; } /// /// Gets or sets Framerate. /// Null = Same as Source /// public double? Framerate { get; set; } #endregion #region Audio /// /// Gets or sets AudioEncodings. /// public ObservableCollection AudioTracks { get; set; } #endregion #region Subtitles /// /// Gets or sets SubtitleTracks. /// public ObservableCollection SubtitleTracks { get; set; } #endregion #region Chapters /// /// Gets or sets a value indicating whether IncludeChapterMarkers. /// public bool IncludeChapterMarkers { get; set; } /// /// Gets or sets ChapterMarkersFilePath. /// public string ChapterMarkersFilePath { get; set; } /// /// Gets or sets ChapterNames. /// public ObservableCollection ChapterNames { get; set; } #endregion #region Advanced /// /// Gets or sets AdvancedEncoderOptions. /// public string AdvancedEncoderOptions { get; set; } /// /// Gets or sets x264Preset. /// public x264Preset x264Preset { get; set; } /// /// Gets or sets x264Profile. /// public x264Profile x264Profile { get; set; } /// /// Gets or sets X264Tune. /// public x264Tune X264Tune { get; set; } /// /// Gets or sets Verbosity. /// public int Verbosity { get; set; } /// /// Gets or sets a value indicating whether disableLibDvdNav. /// public bool DisableLibDvdNav { get; set; } #endregion #region Preset Information (TODO This should probably be dropped) /// /// Gets or sets PresetBuildNumber. /// public int PresetBuildNumber { get; set; } /// /// Gets or sets PresetDescription. /// public string PresetDescription { get; set; } /// /// Gets or sets PresetName. /// public string PresetName { get; set; } /// /// Gets or sets Type. /// public string Type { get; set; } /// /// Gets or sets a value indicating whether UsesMaxPictureSettings. /// public bool UsesMaxPictureSettings { get; set; } /// /// Gets or sets a value indicating whether UsesPictureFilters. /// public bool UsesPictureFilters { get; set; } /// /// Gets or sets a value indicating whether UsesPictureSettings. /// public bool UsesPictureSettings { get; set; } #endregion #region Helpers /// /// Gets a value indicating whether M4v extension is required. /// public bool RequiresM4v { get { if (this.OutputFormat == OutputFormat.M4V || this.OutputFormat == OutputFormat.Mp4) { bool audio = this.AudioTracks.Any(item => item.Encoder == AudioEncoder.Ac3Passthrough || item.Encoder == AudioEncoder.Ac3 || item.Encoder == AudioEncoder.DtsPassthrough || item.Encoder == AudioEncoder.Passthrough); bool subtitles = this.SubtitleTracks.Any(track => track.SubtitleType != SubtitleType.VobSub); return audio || subtitles; } return false; } } #endregion } }