<Compile Include="Interop\Json\State\TaskState.cs" />
<Compile Include="Interop\Model\Encoding\CombDetect.cs" />
<Compile Include="Interop\Model\Encoding\DeinterlaceFilter.cs" />
+ <Compile Include="Interop\Model\Encoding\Denoise.cs" />
+ <Compile Include="Interop\Model\Encoding\Detelecine.cs" />
<Compile Include="Interop\Model\Encoding\HBPresetTune.cs" />
<Compile Include="Interop\Model\Encoding\Sharpen.cs" />
<Compile Include="Interop\Model\Preview\RawPreviewData.cs" />
<Compile Include="Interop\Model\Cropping.cs" />
<Compile Include="Interop\Model\Encoding\Anamorphic.cs" />
<Compile Include="Interop\Model\Encoding\Container.cs" />
- <Compile Include="Interop\Model\Encoding\Decomb.cs" />
- <Compile Include="Interop\Model\Encoding\Deinterlace.cs" />
- <Compile Include="Interop\Model\Encoding\Denoise.cs" />
- <Compile Include="Interop\Model\Encoding\Detelecine.cs" />
<Compile Include="Interop\Model\Encoding\HBAudioEncoder.cs" />
<Compile Include="Interop\Model\Encoding\HBContainer.cs" />
<Compile Include="Interop\Model\Encoding\HBMixdown.cs" />
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------
-// <copyright file="Decomb.cs" company="HandBrake Project (http://handbrake.fr)">
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
-// </copyright>
-// <summary>
-// Defines the Decomb type.
-// </summary>
-// --------------------------------------------------------------------------------------------------------------------
-
-namespace HandBrake.Interop.Interop.Model.Encoding
-{
- using HandBrake.Interop.Attributes;
-
- /// <summary>
- /// The decomb.
- /// </summary>
- public enum Decomb
- {
- [ShortName("default")]
- Default,
-
- [ShortName("bob")]
- Bob,
-
- [ShortName("custom")]
- Custom,
-
- [ShortName("eedi2")]
- EEDI2,
-
- [ShortName("eedi2bob")]
- EEDI2Bob
- }
-}
+++ /dev/null
-// --------------------------------------------------------------------------------------------------------------------
-// <copyright file="Deinterlace.cs" company="HandBrake Project (http://handbrake.fr)">
-// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
-// </copyright>
-// <summary>
-// Defines the Deinterlace type.
-// </summary>
-// --------------------------------------------------------------------------------------------------------------------
-
-namespace HandBrake.Interop.Interop.Model.Encoding
-{
- using HandBrake.Interop.Attributes;
-
- /// <summary>
- /// The deinterlace.
- /// </summary>
- public enum Deinterlace
- {
- [ShortName("custom")]
- Custom,
-
- [ShortName("default")]
- Default,
-
- [ShortName("skip-spatial")]
- SkipSpatialCheck,
-
- [ShortName("bob")]
- Bob
- }
-}
// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.
// </copyright>
// <summary>
-// Defines the HBPresetTune type.
+// An object represetning the key and name of a Filter Preset or Tune option.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
namespace HandBrake.Interop.Interop.Model.Encoding
{
- /// <summary>
- /// The hb preset tune.
- /// </summary>
public class HBPresetTune
{
- /// <summary>
- /// Initializes a new instance of the <see cref="HBPresetTune"/> class.
- /// </summary>
- /// <param name="name">
- /// The name.
- /// </param>
- /// <param name="shortName">
- /// The short Name.
- /// </param>
+ public HBPresetTune()
+ {
+ }
+
public HBPresetTune(string name, string shortName)
{
this.Name = name;
this.ShortName = shortName;
}
- /// <summary>
- /// Gets the name.
- /// </summary>
- public string Name { get; private set; }
+ public string Name { get; set; }
+
+ public string ShortName { get; set; }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != this.GetType()) return false;
+ return this.Equals((HBPresetTune)obj);
+ }
+
+ public override int GetHashCode()
+ {
+ return this.ShortName != null ? this.ShortName.GetHashCode() : 0;
+ }
- /// <summary>
- /// Gets the short name.
- /// </summary>
- public string ShortName { get; private set; }
+ protected bool Equals(HBPresetTune other)
+ {
+ return string.Equals(this.ShortName, other.ShortName);
+ }
}
}
{\r
return EnumHelper<PresetPictureSettingsMode>.GetEnumDisplayValues(typeof(PresetPictureSettingsMode));\r
}\r
- if (value is IEnumerable<Decomb>)\r
- {\r
- return EnumHelper<Decomb>.GetEnumDisplayValues(typeof(Decomb));\r
- }\r
- if (value is IEnumerable<Deinterlace>)\r
- {\r
- return EnumHelper<Deinterlace>.GetEnumDisplayValues(typeof(Deinterlace));\r
- }\r
if (value is IEnumerable<Detelecine>)\r
{\r
return EnumHelper<Detelecine>.GetEnumDisplayValues(typeof(Detelecine));\r
{\r
return EnumHelper<PresetPictureSettingsMode>.GetDisplay((PresetPictureSettingsMode)value);\r
}\r
- if (targetType == typeof(Deinterlace) || value.GetType() == typeof(Deinterlace))\r
- {\r
- return EnumHelper<Deinterlace>.GetDisplay((Deinterlace)value);\r
- }\r
if (targetType == typeof(Detelecine) || value.GetType() == typeof(Detelecine))\r
{\r
return EnumHelper<Detelecine>.GetDisplay((Detelecine)value);\r
}\r
- if (targetType == typeof(Decomb) || value.GetType() == typeof(Decomb))\r
- {\r
- return EnumHelper<Decomb>.GetDisplay((Decomb)value);\r
- }\r
if (targetType == typeof(Denoise) || value.GetType() == typeof(Denoise))\r
{\r
return EnumHelper<Denoise>.GetDisplay((Denoise)value);\r
{\r
return EnumHelper<Denoise>.GetValue(value.ToString());\r
}\r
- if (targetType == typeof(Decomb) || value.GetType() == typeof(Decomb))\r
- {\r
- return EnumHelper<Decomb>.GetValue(value.ToString());\r
- }\r
- if (targetType == typeof(Deinterlace) || value.GetType() == typeof(Deinterlace))\r
- {\r
- return EnumHelper<Deinterlace>.GetValue(value.ToString());\r
- }\r
if (targetType == typeof(Detelecine) || value.GetType() == typeof(Detelecine))\r
{\r
return EnumHelper<Detelecine>.GetValue(value.ToString());\r
// Deinterlace
if (job.DeinterlaceFilter == DeinterlaceFilter.Yadif)
{
- IntPtr settingsPtr = HBFunctions.hb_generate_filter_settings_json((int)hb_filter_ids.HB_FILTER_DEINTERLACE, EnumHelper<Deinterlace>.GetShortName(job.Deinterlace), null, job.CustomDeinterlace);
+ IntPtr settingsPtr = HBFunctions.hb_generate_filter_settings_json((int)hb_filter_ids.HB_FILTER_DEINTERLACE, job.DeinterlacePreset?.ShortName, null, job.CustomDeinterlaceSettings);
string unparsedJson = Marshal.PtrToStringAnsi(settingsPtr);
if (!string.IsNullOrEmpty(unparsedJson))
{
// Decomb
if (job.DeinterlaceFilter == DeinterlaceFilter.Decomb)
{
- IntPtr settingsPtr = HBFunctions.hb_generate_filter_settings_json((int)hb_filter_ids.HB_FILTER_DECOMB, EnumHelper<Decomb>.GetShortName(job.Decomb), null, job.CustomDecomb);
+ IntPtr settingsPtr = HBFunctions.hb_generate_filter_settings_json((int)hb_filter_ids.HB_FILTER_DECOMB, job.DeinterlacePreset?.ShortName, null, job.CustomDeinterlaceSettings);
string unparsedJson = Marshal.PtrToStringAnsi(settingsPtr);
if (!string.IsNullOrEmpty(unparsedJson))
{
this.AlignAVStart = task.AlignAVStart;
this.ChapterMarkersFilePath = task.ChapterMarkersFilePath;
this.Cropping = new Cropping(task.Cropping);
- this.CustomDecomb = task.CustomDecomb;
- this.CustomDeinterlace = task.CustomDeinterlace;
+ this.CustomDeinterlaceSettings = task.CustomDeinterlaceSettings;
this.CustomDenoise = task.CustomDenoise;
this.CustomDetelecine = task.CustomDetelecine;
this.CustomCombDetect = task.CustomCombDetect;
this.CombDetect = task.CombDetect;
this.Deblock = task.Deblock;
- this.Decomb = task.Decomb;
- this.Deinterlace = task.Deinterlace;
+ this.DeinterlacePreset = task.DeinterlacePreset;
this.DeinterlaceFilter = task.DeinterlaceFilter;
this.Denoise = task.Denoise;
this.DenoisePreset = task.DenoisePreset;
/// <summary>
/// Gets or sets Deinterlace.
/// </summary>
- public Deinterlace Deinterlace { get; set; }
-
- /// <summary>
- /// Gets or sets CustomDeinterlace.
- /// </summary>
- public string CustomDeinterlace { get; set; }
-
- /// <summary>
- /// Gets or sets Decomb.
- /// </summary>
- public Decomb Decomb { get; set; }
+ public HBPresetTune DeinterlacePreset { get; set; }
/// <summary>
/// Gets or sets the comb detect.
/// <summary>
/// Gets or sets CustomDecomb.
/// </summary>
- public string CustomDecomb { get; set; }
+ public string CustomDeinterlaceSettings { get; set; }
/// <summary>
/// Gets or sets the custom comb detect.
switch (importedPreset.PictureDeinterlaceFilter)\r
{\r
case "decomb":\r
- preset.Task.Decomb = Decomb.Default;\r
- preset.Task.Deinterlace = Deinterlace.Default;\r
preset.Task.DeinterlaceFilter = DeinterlaceFilter.Decomb;\r
break;\r
case "yadif":\r
- preset.Task.Decomb = Decomb.Default;\r
- preset.Task.Deinterlace = Deinterlace.Default;\r
preset.Task.DeinterlaceFilter = DeinterlaceFilter.Yadif;\r
break;\r
default:\r
- preset.Task.Decomb = Decomb.Default;\r
- preset.Task.Deinterlace = Deinterlace.Default;\r
preset.Task.DeinterlaceFilter = DeinterlaceFilter.Off;\r
break;\r
}\r
\r
if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)\r
{\r
- switch (importedPreset.PictureDeinterlacePreset)\r
- {\r
- case "custom":\r
- preset.Task.Decomb = Decomb.Custom;\r
- break;\r
- case "default":\r
- preset.Task.Decomb = Decomb.Default;\r
- break;\r
- case "bob":\r
- preset.Task.Decomb = Decomb.Bob;\r
- break;\r
- case "eedi2":\r
- preset.Task.Decomb = Decomb.EEDI2;\r
- break;\r
- case "eedi2bob":\r
- preset.Task.Decomb = Decomb.EEDI2Bob;\r
- break;\r
- default:\r
- preset.Task.Decomb = Decomb.Default;\r
- break;\r
- }\r
-\r
- if (preset.Task.Decomb == Decomb.Custom)\r
- {\r
- preset.Task.CustomDecomb = importedPreset.PictureDeinterlaceCustom;\r
- }\r
+ List<HBPresetTune> filterPresets = HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DECOMB);\r
+ HBPresetTune presetTune = filterPresets.FirstOrDefault(f => f.ShortName == importedPreset.PictureDeinterlacePreset);\r
+ preset.Task.DeinterlacePreset = presetTune ?? new HBPresetTune("Default", "default");\r
+ preset.Task.CustomDeinterlaceSettings = importedPreset.PictureDeinterlaceCustom;\r
}\r
\r
if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif)\r
{\r
- switch (importedPreset.PictureDeinterlacePreset)\r
- {\r
- case "custom":\r
- preset.Task.Deinterlace = Deinterlace.Custom;\r
- break;\r
- case "bob":\r
- preset.Task.Deinterlace = Deinterlace.Bob;\r
- break;\r
- case "skip-spatial":\r
- preset.Task.Deinterlace = Deinterlace.SkipSpatialCheck;\r
- break;\r
- case "default":\r
- preset.Task.Deinterlace = Deinterlace.Default;\r
- break;\r
- default:\r
- preset.Task.Deinterlace = Deinterlace.Default;\r
- break;\r
- }\r
-\r
- if (preset.Task.Deinterlace == Deinterlace.Custom)\r
- {\r
- preset.Task.CustomDeinterlace = importedPreset.PictureDeinterlaceCustom;\r
- }\r
+ List<HBPresetTune> filterPresets = HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DEINTERLACE);\r
+ HBPresetTune presetTune = filterPresets.FirstOrDefault(f => f.ShortName == importedPreset.PictureDeinterlacePreset);\r
+ preset.Task.DeinterlacePreset = presetTune ?? new HBPresetTune("Default", "default");\r
+ preset.Task.CustomDeinterlaceSettings = importedPreset.PictureDeinterlaceCustom;\r
}\r
\r
if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif || preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)\r
preset.PictureDeinterlaceFilter = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb\r
? "decomb"\r
: export.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif ? "yadif" : "off";\r
- preset.PictureDeinterlacePreset = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb\r
- ? EnumHelper<Decomb>.GetShortName(export.Task.Decomb)\r
- : export.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif ? EnumHelper<Deinterlace>.GetShortName(export.Task.Deinterlace) : string.Empty;\r
- preset.PictureDeinterlaceCustom = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb\r
- ? export.Task.CustomDecomb\r
- : export.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif ? export.Task.CustomDeinterlace : string.Empty;\r
+ preset.PictureDeinterlacePreset = export.Task.DeinterlacePreset?.ShortName;\r
+ preset.PictureDeinterlaceCustom = export.Task.CustomDeinterlaceSettings;\r
\r
preset.PictureCombDetectPreset = EnumHelper<CombDetect>.GetShortName(export.Task.CombDetect);\r
preset.PictureCombDetectCustom = export.Task.CustomCombDetect;\r
/// </summary>\r
public EncodeTask CurrentTask { get; private set; }\r
\r
- /// <summary>\r
- /// Gets or sets CustomDecomb.\r
- /// </summary>\r
- public string CustomDecomb\r
- {\r
- get\r
- {\r
- return this.CurrentTask.CustomDecomb;\r
- }\r
-\r
- set\r
- {\r
- this.CurrentTask.CustomDecomb = value;\r
- this.NotifyOfPropertyChange(() => this.CustomDecomb);\r
- this.OnTabStatusChanged(null);\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Gets or sets CustomDeinterlace.\r
- /// </summary>\r
- public string CustomDeinterlace\r
- {\r
- get\r
- {\r
- return this.CurrentTask.CustomDeinterlace;\r
- }\r
-\r
- set\r
- {\r
- this.CurrentTask.CustomDeinterlace = value;\r
- this.NotifyOfPropertyChange(() => this.CustomDeinterlace);\r
- this.OnTabStatusChanged(null);\r
- }\r
- }\r
-\r
/// <summary>\r
/// Gets or sets CustomDenoise.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets DeInterlaceOptions.\r
- /// </summary>\r
- public IEnumerable<Deinterlace> DeInterlaceOptions\r
- {\r
- get\r
- {\r
- return EnumHelper<Deinterlace>.GetEnumList();\r
- }\r
- }\r
-\r
/// <summary>\r
/// Gets DeblockText.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets DecombOptions.\r
- /// </summary>\r
- public IEnumerable<Decomb> DecombOptions\r
- {\r
- get\r
- {\r
- return EnumHelper<Decomb>.GetEnumList();\r
- }\r
- }\r
-\r
/// <summary>\r
/// Gets DenoiseOptions.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets DeinterlaceFilterOptions.\r
- /// </summary>\r
- public IEnumerable<DeinterlaceFilter> DeinterlaceFilterOptions\r
- {\r
- get\r
- {\r
- return EnumHelper<DeinterlaceFilter>.GetEnumList();\r
- }\r
- }\r
-\r
- /// <summary>\r
- /// Comb Detection Presets\r
- /// </summary>\r
- public IEnumerable<CombDetect> CombDetectPresets\r
- {\r
- get\r
- {\r
- return EnumHelper<CombDetect>.GetEnumList();\r
- }\r
- }\r
-\r
/// <summary>\r
/// Gets or sets a value indicating whether Grayscale.\r
/// </summary>\r
}\r
}\r
\r
+ #region Interlace Detection\r
+\r
/// <summary>\r
- /// Gets or sets SelectedDeInterlace.\r
+ /// Comb Detection Presets\r
/// </summary>\r
- public Deinterlace SelectedDeInterlace\r
+ public IEnumerable<CombDetect> CombDetectPresets\r
{\r
get\r
{\r
- return this.CurrentTask.Deinterlace;\r
- }\r
-\r
- set\r
- {\r
- this.CurrentTask.Deinterlace = value;\r
- this.NotifyOfPropertyChange(() => this.SelectedDeInterlace);\r
-\r
- if (value != Deinterlace.Custom) this.CustomDeinterlace = string.Empty;\r
-\r
- // Show / Hide the Custom Control\r
- this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
- this.OnTabStatusChanged(null);\r
+ return EnumHelper<CombDetect>.GetEnumList();\r
}\r
}\r
\r
+ /// <summary>\r
+ /// Show the CombDetect Custom Box.\r
+ /// </summary>\r
+ public bool ShowCombDetectCustom => this.SelectedCombDetectPreset == CombDetect.Custom;\r
+\r
/// <summary>\r
/// Gets or sets the selected comb detect preset.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Show the CombDetect Custom Box.\r
- /// </summary>\r
- public bool ShowCombDetectCustom => this.SelectedCombDetectPreset == CombDetect.Custom;\r
-\r
/// <summary>\r
/// Gets or sets the custom comb detect.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets or sets SelectedDecomb.\r
- /// </summary>\r
- public Decomb SelectedDecomb\r
+ #endregion\r
+\r
+ #region Deinterlace and Decomb\r
+\r
+ public IEnumerable<DeinterlaceFilter> DeinterlaceFilterOptions => EnumHelper<DeinterlaceFilter>.GetEnumList();\r
+\r
+ public DeinterlaceFilter SelectedDeinterlaceFilter\r
{\r
get\r
{\r
- return this.CurrentTask.Decomb;\r
+ return this.deinterlaceFilter;\r
}\r
\r
set\r
{\r
- this.CurrentTask.Decomb = value;\r
- this.NotifyOfPropertyChange(() => this.SelectedDecomb);\r
+ if (value == this.deinterlaceFilter)\r
+ {\r
+ return;\r
+ }\r
\r
- if (value != Decomb.Custom) this.CustomDecomb = string.Empty;\r
+ this.deinterlaceFilter = value;\r
+ this.CurrentTask.DeinterlaceFilter = value;\r
\r
- // Show / Hide the Custom Control\r
- this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
+ this.NotifyOfPropertyChange(() => this.SelectedDeinterlaceFilter);\r
+ this.NotifyOfPropertyChange(() => this.ShowCustomDeinterlace);\r
+ this.NotifyOfPropertyChange(() => this.DeinterlacePresets);\r
+ this.NotifyOfPropertyChange(() => this.IsDeinterlaceEnabled);\r
+\r
+ if (!this.DeinterlacePresets.Contains(this.SelectedDeInterlacePreset))\r
+ {\r
+ this.SelectedDeInterlacePreset = this.DeinterlacePresets.FirstOrDefault(p => p.ShortName == "default");\r
+ }\r
+ \r
this.OnTabStatusChanged(null);\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets or sets SelectedDenoise.\r
- /// </summary>\r
- public Denoise SelectedDenoise\r
+ public IEnumerable<HBPresetTune> DeinterlacePresets\r
{\r
get\r
{\r
- return this.CurrentTask.Denoise;\r
+ switch (this.SelectedDeinterlaceFilter)\r
+ {\r
+ case DeinterlaceFilter.Yadif:\r
+ return new BindingList<HBPresetTune>(HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DEINTERLACE));\r
+ case DeinterlaceFilter.Decomb:\r
+ return new BindingList<HBPresetTune>(HandBrakeFilterHelpers.GetFilterPresets((int)hb_filter_ids.HB_FILTER_DECOMB));\r
+ default:\r
+ return new BindingList<HBPresetTune>();\r
+ }\r
+ }\r
+ }\r
+\r
+ public HBPresetTune SelectedDeInterlacePreset\r
+ {\r
+ get\r
+ {\r
+ return this.CurrentTask.DeinterlacePreset;\r
}\r
\r
set\r
{\r
- this.CurrentTask.Denoise = value;\r
- this.NotifyOfPropertyChange(() => this.SelectedDenoise);\r
+ this.CurrentTask.DeinterlacePreset = value;\r
+ this.NotifyOfPropertyChange(() => this.SelectedDeInterlacePreset);\r
+\r
+ if (value?.ShortName == "custom") this.CustomDeinterlaceSettings = string.Empty;\r
\r
// Show / Hide the Custom Control\r
- this.NotifyOfPropertyChange(() => this.ShowDenoiseCustom);\r
+ this.NotifyOfPropertyChange(() => this.ShowCustomDeinterlace);\r
+ this.OnTabStatusChanged(null);\r
+ }\r
+ }\r
+ \r
+ public bool IsDeinterlaceEnabled => this.CurrentTask.DeinterlaceFilter != DeinterlaceFilter.Off;\r
\r
- this.SelectedDenoisePreset = this.CurrentTask.Denoise == Denoise.hqdn3d ? DenoisePreset.Weak : DenoisePreset.Ultralight; // Default so we don't have an invalid preset.\r
+ public bool ShowCustomDeinterlace => this.IsDeinterlaceEnabled && this.CurrentTask.DeinterlacePreset?.ShortName == "custom";\r
\r
- this.NotifyOfPropertyChange(() => this.ShowDenoiseOptions);\r
- this.NotifyOfPropertyChange(() => this.ShowDenoiseTune);\r
+ /// <summary>\r
+ /// Gets or sets CustomDecomb.\r
+ /// </summary>\r
+ public string CustomDeinterlaceSettings\r
+ {\r
+ get\r
+ {\r
+ return this.CurrentTask.CustomDeinterlaceSettings;\r
+ }\r
+\r
+ set\r
+ {\r
+ this.CurrentTask.CustomDeinterlaceSettings = value;\r
+ this.NotifyOfPropertyChange(() => this.CustomDeinterlaceSettings);\r
this.OnTabStatusChanged(null);\r
}\r
}\r
\r
+ #endregion\r
+\r
/// <summary>\r
/// Gets or sets SelectedDetelecine.\r
/// </summary>\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ShowDecombCustom.\r
- /// </summary>\r
- public bool ShowDecombCustom => this.SelectedDeinterlaceFilter == DeinterlaceFilter.Decomb && this.SelectedDecomb == Decomb.Custom;\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ShowDeinterlaceDecombCustom.\r
- /// </summary>\r
- public bool ShowDeinterlaceDecombCustom => (this.SelectedDeinterlaceFilter == DeinterlaceFilter.Decomb && this.SelectedDecomb == Decomb.Custom) || (this.SelectedDeinterlaceFilter == DeinterlaceFilter.Yadif && this.SelectedDeInterlace == Deinterlace.Custom);\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ShowDelelecineCustom.\r
- /// </summary>\r
- public bool ShowDeinterlaceCustom => this.SelectedDeinterlaceFilter == DeinterlaceFilter.Yadif && this.SelectedDeInterlace == Deinterlace.Custom;\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether ShowDenoiseCustom.\r
- /// </summary>\r
- public bool ShowDenoiseCustom => this.CurrentTask.DenoisePreset == DenoisePreset.Custom;\r
-\r
/// <summary>\r
/// Gets or sets a value indicating whether ShowDetelecineCustom.\r
/// </summary>\r
public bool ShowDetelecineCustom => this.CurrentTask.Detelecine == Detelecine.Custom;\r
\r
+\r
+ #region Denoise\r
+\r
/// <summary>\r
- /// Gets or sets the selected deinterlace filter mode.\r
+ /// Gets or sets SelectedDenoise.\r
/// </summary>\r
- public DeinterlaceFilter SelectedDeinterlaceFilter\r
+ public Denoise SelectedDenoise\r
{\r
get\r
{\r
- return this.deinterlaceFilter;\r
+ return this.CurrentTask.Denoise;\r
}\r
+\r
set\r
{\r
- if (value == this.deinterlaceFilter)\r
- {\r
- return;\r
- }\r
+ this.CurrentTask.Denoise = value;\r
+ this.NotifyOfPropertyChange(() => this.SelectedDenoise);\r
\r
- this.deinterlaceFilter = value;\r
- this.CurrentTask.DeinterlaceFilter = value;\r
+ // Show / Hide the Custom Control\r
+ this.NotifyOfPropertyChange(() => this.ShowDenoiseCustom);\r
\r
- this.NotifyOfPropertyChange(() => this.SelectedDeinterlaceFilter);\r
- this.NotifyOfPropertyChange(() => this.IsDeinterlaceMode);\r
- this.NotifyOfPropertyChange(() => this.IsDecombMode);\r
- this.NotifyOfPropertyChange(() => this.IsDeinterlaceDecomb);\r
- this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
+ this.SelectedDenoisePreset = this.CurrentTask.Denoise == Denoise.hqdn3d ? DenoisePreset.Weak : DenoisePreset.Ultralight; // Default so we don't have an invalid preset.\r
+\r
+ this.NotifyOfPropertyChange(() => this.ShowDenoiseOptions);\r
+ this.NotifyOfPropertyChange(() => this.ShowDenoiseTune);\r
this.OnTabStatusChanged(null);\r
}\r
}\r
\r
- /// <summary>\r
- /// Gets or sets a value indicating whether is deinterlace mode.\r
- /// </summary>\r
- public bool IsDeinterlaceMode => this.deinterlaceFilter == DeinterlaceFilter.Yadif;\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether is decomb mode.\r
- /// </summary>\r
- public bool IsDecombMode => this.deinterlaceFilter == DeinterlaceFilter.Decomb;\r
-\r
- /// <summary>\r
- /// Gets or sets a value indicating whether is deinterlace or decomb mode.\r
- /// </summary>\r
- public bool IsDeinterlaceDecomb => this.SelectedDeinterlaceFilter != DeinterlaceFilter.Off;\r
-\r
/// <summary>\r
/// Gets or sets the selected denoise tune.\r
/// </summary>\r
/// <summary>\r
/// Gets the denoise presets.\r
/// </summary>\r
- public IEnumerable<DenoisePreset> DenoisePresets\r
- {\r
- get\r
- {\r
- return EnumHelper<DenoisePreset>.GetEnumList();\r
- }\r
- }\r
+ public IEnumerable<DenoisePreset> DenoisePresets => EnumHelper<DenoisePreset>.GetEnumList();\r
\r
/// <summary>\r
/// Gets the denoise tunes.\r
/// </summary>\r
- public IEnumerable<DenoiseTune> DenoiseTunes\r
- {\r
- get\r
- {\r
- return EnumHelper<DenoiseTune>.GetEnumList();\r
- }\r
- }\r
+ public IEnumerable<DenoiseTune> DenoiseTunes => EnumHelper<DenoiseTune>.GetEnumList();\r
\r
- /// <summary>\r
- /// Gets a value indicating whether show denoise options.\r
- /// </summary>\r
- public bool ShowDenoiseOptions\r
- {\r
- get\r
- {\r
- return this.SelectedDenoise != Denoise.Off;\r
- }\r
- }\r
+ public bool ShowDenoiseOptions => this.SelectedDenoise != Denoise.Off;\r
\r
- /// <summary>\r
- /// Gets a value indicating whether show denoise tune.\r
- /// </summary>\r
- public bool ShowDenoiseTune\r
- {\r
- get\r
- {\r
- return this.SelectedDenoise == Denoise.NLMeans && this.SelectedDenoisePreset != DenoisePreset.Custom;\r
- }\r
- }\r
+ public bool ShowDenoiseTune => this.SelectedDenoise == Denoise.NLMeans && this.SelectedDenoisePreset != DenoisePreset.Custom;\r
+\r
+ public bool ShowDenoiseCustom => this.CurrentTask.DenoisePreset == DenoisePreset.Custom;\r
+\r
+ #endregion\r
\r
/// <summary>\r
/// The rotation options.\r
this.SelectedDenoise = preset.Task.Denoise;\r
this.SelectedDetelecine = preset.Task.Detelecine;\r
\r
- this.SelectedDecomb = preset.Task.Decomb;\r
- this.SelectedDeInterlace = preset.Task.Deinterlace;\r
- if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Yadif)\r
- {\r
- this.SelectedDeinterlaceFilter = DeinterlaceFilter.Yadif;\r
- }\r
- else if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)\r
- {\r
- this.SelectedDeinterlaceFilter = DeinterlaceFilter.Decomb;\r
- }\r
- else\r
- {\r
- this.SelectedDeinterlaceFilter = DeinterlaceFilter.Off;\r
- }\r
+ this.SelectedDeinterlaceFilter = preset.Task.DeinterlaceFilter;\r
+ this.SelectedDeInterlacePreset = preset.Task.DeinterlacePreset;\r
\r
this.SelectedCombDetectPreset = preset.Task.CombDetect;\r
\r
this.CustomSharpen = preset.Task.SharpenCustom;\r
\r
// Custom Values\r
- this.CustomDecomb = preset.Task.CustomDecomb;\r
+ this.CustomDeinterlaceSettings = preset.Task.CustomDeinterlaceSettings;\r
this.CustomCombDetect = preset.Task.CustomCombDetect;\r
- this.CustomDeinterlace = preset.Task.CustomDeinterlace;\r
this.CustomDetelecine = preset.Task.CustomDetelecine;\r
this.CustomDenoise = preset.Task.CustomDenoise;\r
\r
{\r
// Default everything to off\r
this.SelectedDenoise = Denoise.Off;\r
- this.SelectedDecomb = Decomb.Default;\r
- this.SelectedDeInterlace = Deinterlace.Default;\r
+ this.SelectedDeinterlaceFilter = DeinterlaceFilter.Off;\r
this.SelectedDetelecine = Detelecine.Off;\r
this.Grayscale = false;\r
this.DeblockValue = 0;\r
this.CurrentTask = task;\r
\r
this.NotifyOfPropertyChange(() => this.SelectedDenoise);\r
- this.NotifyOfPropertyChange(() => this.SelectedDecomb);\r
- this.NotifyOfPropertyChange(() => this.SelectedDeInterlace);\r
+ this.NotifyOfPropertyChange(() => this.SelectedDeinterlaceFilter);\r
+ this.NotifyOfPropertyChange(() => this.SelectedDeInterlacePreset);\r
this.NotifyOfPropertyChange(() => this.SelectedDetelecine);\r
this.NotifyOfPropertyChange(() => this.Grayscale);\r
this.NotifyOfPropertyChange(() => this.DeblockValue);\r
this.NotifyOfPropertyChange(() => this.FlipVideo);\r
this.NotifyOfPropertyChange(() => this.SelectedRotation);\r
\r
- this.NotifyOfPropertyChange(() => this.CustomDecomb);\r
- this.NotifyOfPropertyChange(() => this.CustomDeinterlace);\r
+ this.NotifyOfPropertyChange(() => this.CustomDeinterlaceSettings);\r
this.NotifyOfPropertyChange(() => this.CustomDetelecine);\r
this.NotifyOfPropertyChange(() => this.CustomDenoise);\r
this.NotifyOfPropertyChange(() => this.CustomSharpen);\r
this.NotifyOfPropertyChange(() => this.CustomCombDetect);\r
\r
- this.NotifyOfPropertyChange(() => this.IsDeinterlaceMode);\r
- this.NotifyOfPropertyChange(() => this.IsDecombMode);\r
- this.NotifyOfPropertyChange(() => this.IsDeinterlaceDecomb);\r
\r
this.NotifyOfPropertyChange(() => this.ShowDenoiseOptions);\r
this.NotifyOfPropertyChange(() => this.ShowDenoiseCustom);\r
this.NotifyOfPropertyChange(() => this.ShowDenoiseTune);\r
- this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
+ this.NotifyOfPropertyChange(() => this.ShowCustomDeinterlace);\r
this.NotifyOfPropertyChange(() => this.ShowCombDetectCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
- this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
this.NotifyOfPropertyChange(() => this.ShowDetelecineCustom); \r
this.NotifyOfPropertyChange(() => this.ShowSharpenCustom);\r
this.NotifyOfPropertyChange(() => this.ShowSharpenOptions);\r
return false;\r
}\r
\r
- if (preset.Task.Deinterlace != this.SelectedDeInterlace)\r
+ if (preset.Task.DeinterlacePreset != this.SelectedDeInterlacePreset)\r
{\r
return false;\r
}\r
\r
- if (preset.Task.Decomb != this.SelectedDecomb)\r
+ if (preset.Task.CustomDeinterlaceSettings != this.CustomDeinterlaceSettings)\r
{\r
return false;\r
}\r
return false;\r
}\r
\r
- if ((preset.Task.CustomDecomb ?? string.Empty) != (this.CustomDecomb ?? string.Empty))\r
- {\r
- return false;\r
- }\r
-\r
- if ((preset.Task.CustomDeinterlace ?? string.Empty) != (this.CustomDeinterlace ?? string.Empty))\r
- {\r
- return false;\r
- }\r
-\r
if ((preset.Task.CustomCombDetect ?? string.Empty) != (this.CustomCombDetect ?? string.Empty))\r
{\r
return false;\r
<RowDefinition Height="Auto" />\r
<RowDefinition Height="Auto" />\r
<RowDefinition Height="Auto" />\r
+ <RowDefinition Height="Auto" />\r
</Grid.RowDefinitions>\r
\r
<Grid.ColumnDefinitions>\r
<TextBox Width="120" Grid.Row="0" Grid.Column="2" Margin="0,0,0,10" Text="{Binding CustomDetelecine, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left"\r
Visibility="{Binding ShowDetelecineCustom, Converter={StaticResource boolToVisConverter}}"/>\r
\r
- <!-- Deinterlace -->\r
- <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Deinterlace}" VerticalAlignment="Center" Grid.Row="1" Grid.Column="0" Margin="0,0,0,10" />\r
- <StackPanel Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="0,0,0,10">\r
+ <!-- Interlace Detection -->\r
+ <TextBlock Text="Interlace Detection:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Row="1" />\r
+\r
+ <ComboBox Width="120" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding CombDetectPresets, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"\r
+ SelectedItem="{Binding SelectedCombDetectPreset, Converter={StaticResource boolComboConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetection}"\r
+ VerticalContentAlignment="Center"/>\r
+\r
+ <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="2">\r
+ <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="0,0,5,0" Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" />\r
+ <TextBox Width="120" Text="{Binding CustomCombDetect, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
+ Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetectionCustom}" />\r
+ </StackPanel>\r
\r
+ <!-- Deinterlace -->\r
+ <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Deinterlace}" VerticalAlignment="Center" Grid.Row="2" Grid.Column="0" Margin="0,0,0,10" />\r
+ <StackPanel Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" Margin="0,0,0,10">\r
<ComboBox Width="120" ItemsSource="{Binding DeinterlaceFilterOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"\r
SelectedItem="{Binding SelectedDeinterlaceFilter, Converter={StaticResource boolComboConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_Deinterlace}" />\r
- \r
</StackPanel>\r
\r
- <Grid Grid.Row="1" Grid.Column="2" Margin="0,0,0,10">\r
- <Grid.RowDefinitions>\r
- <RowDefinition />\r
- <RowDefinition />\r
- </Grid.RowDefinitions>\r
- \r
- <Grid.ColumnDefinitions>\r
- <ColumnDefinition Width="Auto" />\r
- <ColumnDefinition />\r
- <ColumnDefinition Width="15"/>\r
- <ColumnDefinition Width="Auto" />\r
- <ColumnDefinition />\r
- </Grid.ColumnDefinitions>\r
-\r
- \r
- <TextBlock Text="Preset:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="0" Grid.Row="0" Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}" />\r
- <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal">\r
- <ComboBox Width="120" ItemsSource="{Binding DecombOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"\r
- SelectedItem="{Binding SelectedDecomb, Converter={StaticResource boolComboConverter}}"\r
- Visibility="{Binding IsDecombMode, Converter={StaticResource boolToVisConverter}}" />\r
-\r
- <ComboBox Width="120" ItemsSource="{Binding DeInterlaceOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"\r
- SelectedItem="{Binding SelectedDeInterlace, Converter={StaticResource boolComboConverter}}"\r
- Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlacePreset}" />\r
- </StackPanel>\r
-\r
- <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="0" Grid.Row="1" Visibility="{Binding ShowDeinterlaceDecombCustom, Converter={StaticResource boolToVisConverter}}" />\r
- <StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal">\r
- <TextBox Width="120" Text="{Binding CustomDecomb, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
- Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlaceCustom}" />\r
-\r
- <TextBox Width="120" Text="{Binding CustomDeinterlace, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
- Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlaceCustom}" />\r
- </StackPanel>\r
+ <StackPanel Grid.Row="2" Grid.Column="2" Orientation="Horizontal" Margin="0,0,0,10">\r
+ <TextBlock Text="Preset:" VerticalAlignment="Center" Margin="0,0,5,0" Visibility="{Binding IsDeinterlaceEnabled, Converter={StaticResource boolToVisConverter}}" />\r
+ <ComboBox Width="120" ItemsSource="{Binding DeinterlacePresets}" HorizontalAlignment="Left" VerticalAlignment="Center"\r
+ SelectedItem="{Binding SelectedDeInterlacePreset}" DisplayMemberPath="Name" Visibility="{Binding IsDeinterlaceEnabled, Converter={StaticResource boolToVisConverter}}" />\r
\r
- <TextBlock Text="Interlace Detection:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="3" Grid.Row="0" Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}" />\r
- <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="0,0,5,0" Grid.Column="3" Grid.Row="1" Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" />\r
-\r
- <ComboBox Width="120" Grid.Row="0" Grid.Column="4" ItemsSource="{Binding CombDetectPresets, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center"\r
- SelectedItem="{Binding SelectedCombDetectPreset, Converter={StaticResource boolComboConverter}}" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetection}"\r
- Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}"/>\r
- <TextBox Width="120" Grid.Row="1" Grid.Column="4" Text="{Binding CustomCombDetect, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
- Visibility="{Binding ShowCombDetectCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,5,0,0" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_InterlaceDetectionCustom}" />\r
- </Grid>\r
+ <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="5,0,5,0" Visibility="{Binding ShowCustomDeinterlace, Converter={StaticResource boolToVisConverter}}" />\r
+ <TextBox Width="120" Text="{Binding CustomDeinterlaceSettings, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
+ Visibility="{Binding ShowCustomDeinterlace, Converter={StaticResource boolToVisConverter}}" MinHeight="22" ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DeinterlaceCustom}" />\r
+ </StackPanel>\r
\r
- \r
\r
- \r
<!-- Denoise -->\r
<TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Denoise}" Grid.Row="3" Grid.Column="0" Margin="0,0,0,10"/>\r
<ComboBox Width="120" Grid.Row="3" ItemsSource="{Binding DenoiseOptions, Converter={StaticResource boolComboConverter}}" \r