<Compile Include="Interop\Json\Encode\SubtitleTrack.cs" />\r
<Compile Include="Interop\Json\Encode\Video.cs" />\r
<Compile Include="Interop\Factories\AnamorphicFactory.cs" />\r
+ <Compile Include="Interop\Model\Encoding\DeinterlaceFilter.cs" />\r
<Compile Include="Properties\AssemblyInfo.cs" />\r
<Compile Include="Interop\Json\Scan\SourceAudioTrack.cs" />\r
<Compile Include="Interop\Json\Scan\SourceChapter.cs" />\r
/// </summary>\r
public enum Decomb\r
{\r
- [ShortName("off")]\r
- Off = 0,\r
-\r
[ShortName("default")]\r
- Default = 2,\r
+ Default,\r
\r
[ShortName("fast")]\r
- Fast = 3,\r
+ Fast,\r
\r
[ShortName("bob")]\r
- Bob = 4,\r
+ Bob,\r
\r
[ShortName("custom")]\r
- Custom = 1\r
+ Custom \r
}\r
}\r
/// </summary>\r
public enum Deinterlace\r
{\r
- [ShortName("off")]\r
- Off = 0,\r
-\r
[ShortName("fast")]\r
- Fast = 2,\r
+ Fast,\r
\r
[ShortName("slow")]\r
- Slow = 3,\r
+ Slow,\r
\r
[ShortName("slower")]\r
- Slower = 4,\r
+ Slower,\r
\r
[ShortName("bob")]\r
- Bob = 5,\r
+ Bob,\r
\r
[ShortName("custom")]\r
- Custom = 1\r
+ Custom\r
}\r
}\r
--- /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.ApplicationServices.Interop.Model.Encoding
+{
+ using HandBrake.ApplicationServices.Attributes;
+
+ /// <summary>
+ /// The deinterlace.
+ /// </summary>
+ public enum DeinterlaceFilter
+ {
+ [ShortName("off")]
+ Off = 0,
+
+ [ShortName("Deinterlace")]
+ Deinterlace = 1,
+
+ [ShortName("Decomb")]
+ Decomb = 2
+ }
+}
{\r
return EnumHelper<OutputFormat>.GetEnumDisplayValues(typeof(OutputFormat));\r
}\r
+ if (value is IEnumerable<DeinterlaceFilter>)\r
+ {\r
+ return EnumHelper<DeinterlaceFilter>.GetEnumDisplayValues(typeof(DeinterlaceFilter));\r
+ }\r
\r
// Single Items\r
if (targetType == typeof(VideoEncoder) || value.GetType() == typeof(VideoEncoder))\r
{\r
return EnumHelper<OutputFormat>.GetDisplay((OutputFormat)value);\r
}\r
- \r
+\r
+ if (targetType == typeof(DeinterlaceFilter) || value.GetType() == typeof(DeinterlaceFilter))\r
+ {\r
+ return EnumHelper<DeinterlaceFilter>.GetDisplay((DeinterlaceFilter)value);\r
+ }\r
+\r
return null;\r
}\r
\r
return EnumHelper<OutputFormat>.GetValue(value.ToString());\r
}\r
\r
+ if (targetType == typeof(DeinterlaceFilter) || value.GetType() == typeof(DeinterlaceFilter))\r
+ {\r
+ return EnumHelper<DeinterlaceFilter>.GetValue(value.ToString());\r
+ }\r
+\r
return null;\r
}\r
}\r
}\r
\r
/// <summary>\r
- /// Looks up a localized string similar to Deinterlace.\r
+ /// Looks up a localized string similar to Deinterlace:.\r
/// </summary>\r
public static string FiltersView_Deinterlace {\r
get {\r
<value>Decomb</value>\r
</data>\r
<data name="FiltersView_Deinterlace" xml:space="preserve">\r
- <value>Deinterlace</value>\r
+ <value>Deinterlace:</value>\r
</data>\r
<data name="FiltersView_Denoise" xml:space="preserve">\r
<value>Denoise:</value>\r
}
// Decomb
- if (job.Decomb != Decomb.Off)
+ if (job.DeinterlaceFilter == DeinterlaceFilter.Decomb)
{
string options;
if (job.Decomb == Decomb.Fast)
}
// Deinterlace
- if (job.Deinterlace != Deinterlace.Off)
+ if (job.DeinterlaceFilter == DeinterlaceFilter.Deinterlace)
{
string options;
if (job.Deinterlace == Deinterlace.Fast)
this.Deblock = task.Deblock;
this.Decomb = task.Decomb;
this.Deinterlace = task.Deinterlace;
+ this.DeinterlaceFilter = task.DeinterlaceFilter;
this.Denoise = task.Denoise;
this.DenoisePreset = task.DenoisePreset;
this.DenoiseTune = task.DenoiseTune;
#region Filters
+ /// <summary>
+ /// Gets or sets Deinterlace Filter Mode
+ /// </summary>
+ public DeinterlaceFilter DeinterlaceFilter { get; set; }
+
/// <summary>
/// Gets or sets Deinterlace.
/// </summary>
{\r
case "decomb":\r
preset.Task.Decomb = Decomb.Default;\r
- preset.Task.Deinterlace = Deinterlace.Off;\r
+ preset.Task.Deinterlace = Deinterlace.Fast;\r
+ preset.Task.DeinterlaceFilter = DeinterlaceFilter.Decomb;\r
break;\r
case "deinterlace":\r
- preset.Task.Decomb = Decomb.Off;\r
+ preset.Task.Decomb = Decomb.Default;\r
preset.Task.Deinterlace = Deinterlace.Fast;\r
+ preset.Task.DeinterlaceFilter = DeinterlaceFilter.Deinterlace;\r
break;\r
default:\r
- preset.Task.Decomb = Decomb.Off;\r
- preset.Task.Deinterlace = Deinterlace.Off;\r
+ preset.Task.Decomb = Decomb.Default;\r
+ preset.Task.Deinterlace = Deinterlace.Fast;\r
+ preset.Task.DeinterlaceFilter = DeinterlaceFilter.Off;\r
break;\r
}\r
\r
- if (preset.Task.Decomb != Decomb.Off)\r
+ if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb)\r
{\r
switch (importedPreset.PictureDeinterlaceFilter)\r
{\r
}\r
}\r
\r
- if (preset.Task.Deinterlace != Deinterlace.Off)\r
+ if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace)\r
{\r
switch (importedPreset.PictureDeinterlaceFilter)\r
{\r
\r
// Filters\r
preset.PictureDeblock = export.Task.Deblock;\r
- preset.PictureDeinterlaceFilter = export.Task.Decomb != Decomb.Off ? "decomb" : export.Task.Deinterlace != Deinterlace.Off ? "deinterlace" : "off"; \r
- preset.PictureDeinterlacePreset = export.Task.Decomb != Decomb.Off ? EnumHelper<Decomb>.GetShortName(export.Task.Decomb) : export.Task.Deinterlace != Deinterlace.Off ? EnumHelper<Deinterlace>.GetShortName(export.Task.Deinterlace) : string.Empty;\r
- preset.PictureDeinterlaceCustom = export.Task.Decomb != Decomb.Off ? export.Task.CustomDecomb : export.Task.Deinterlace != Deinterlace.Off ? export.Task.CustomDeinterlace : string.Empty;\r
+ preset.PictureDeinterlaceFilter = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb \r
+ ? "decomb" \r
+ : export.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace ? "deinterlace" : "off"; \r
+ preset.PictureDeinterlacePreset = export.Task.DeinterlaceFilter == DeinterlaceFilter.Decomb \r
+ ? EnumHelper<Decomb>.GetShortName(export.Task.Decomb) \r
+ : export.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace ? 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.Deinterlace ? export.Task.CustomDeinterlace : string.Empty;\r
preset.PictureDeinterlaceCustom = export.Task.CustomDeinterlace;\r
preset.PictureDenoiseCustom = export.Task.CustomDenoise;\r
preset.PictureDenoiseFilter = EnumHelper<Denoise>.GetShortName(export.Task.Denoise);\r
/// </summary>\r
public class FiltersViewModel : ViewModelBase, IFiltersViewModel\r
{\r
- /// <summary>\r
- /// The is deinterlace mode.\r
- /// </summary>\r
- private bool isDeinterlaceMode;\r
+ private DeinterlaceFilter deinterlaceFilter;\r
\r
#region Constructors and Destructors\r
\r
{\r
this.CurrentTask = new EncodeTask();\r
this.DeblockValue = 4; // OFF\r
- this.IsDeinterlaceMode = true;\r
+ this.SelectedDeinterlaceFilter = DeinterlaceFilter.Off;\r
}\r
\r
#endregion\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
/// Gets or sets a value indicating whether Grayscale.\r
/// </summary>\r
set\r
{\r
this.CurrentTask.Deinterlace = value;\r
- if (this.CurrentTask.Deinterlace != Deinterlace.Off)\r
- {\r
- this.SelectedDecomb = Decomb.Off;\r
- }\r
-\r
this.NotifyOfPropertyChange(() => this.SelectedDeInterlace);\r
\r
if (value != Deinterlace.Custom) this.CustomDeinterlace = string.Empty;\r
\r
// Show / Hide the Custom Control\r
- this.ShowDeinterlaceCustom = this.CurrentTask.Deinterlace == Deinterlace.Custom;\r
+ this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
-\r
- if (value != Deinterlace.Off)\r
- {\r
- this.IsDeinterlaceMode = true;\r
- }\r
+ this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
}\r
}\r
\r
set\r
{\r
this.CurrentTask.Decomb = value;\r
- if (this.CurrentTask.Decomb != Decomb.Off)\r
- {\r
- this.SelectedDeInterlace = Deinterlace.Off;\r
- }\r
-\r
this.NotifyOfPropertyChange(() => this.SelectedDecomb);\r
\r
if (value != Decomb.Custom) this.CustomDecomb = string.Empty;\r
\r
// Show / Hide the Custom Control\r
- this.ShowDecombCustom = this.CurrentTask.Decomb == Decomb.Custom;\r
this.NotifyOfPropertyChange(() => this.ShowDecombCustom);\r
-\r
- if (value != Decomb.Off)\r
- {\r
- this.IsDeinterlaceMode = false;\r
- }\r
+ this.NotifyOfPropertyChange(() => this.ShowDeinterlaceCustom);\r
+ this.NotifyOfPropertyChange(() => this.ShowDeinterlaceDecombCustom);\r
}\r
}\r
\r
/// <summary>\r
/// Gets or sets a value indicating whether ShowDecombCustom.\r
/// </summary>\r
- public bool ShowDecombCustom { get; set; }\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.Deinterlace && this.SelectedDeInterlace == Deinterlace.Custom);\r
\r
/// <summary>\r
/// Gets or sets a value indicating whether ShowDelelecineCustom.\r
/// </summary>\r
- public bool ShowDeinterlaceCustom { get; set; }\r
+ public bool ShowDeinterlaceCustom => this.SelectedDeinterlaceFilter == DeinterlaceFilter.Deinterlace && this.SelectedDeInterlace == Deinterlace.Custom;\r
\r
/// <summary>\r
/// Gets or sets a value indicating whether ShowDenoiseCustom.\r
public bool ShowDetelecineCustom { get; set; }\r
\r
/// <summary>\r
- /// Gets or sets a value indicating whether is deinterlace mode.\r
+ /// Gets or sets the selected deinterlace filter mode.\r
/// </summary>\r
- public bool IsDeinterlaceMode\r
+ public DeinterlaceFilter SelectedDeinterlaceFilter\r
{\r
get\r
{\r
- return this.isDeinterlaceMode;\r
+ return this.deinterlaceFilter;\r
}\r
set\r
{\r
- if (!Equals(this.isDeinterlaceMode, value))\r
+ if (value == this.deinterlaceFilter)\r
{\r
- this.isDeinterlaceMode = value;\r
- this.NotifyOfPropertyChange(() => this.IsDeinterlaceMode);\r
-\r
- this.DeinterlaceControlText = value ? "Deinterlace:" : "Decomb:";\r
+ return;\r
+ }\r
\r
- if (value)\r
- {\r
- this.SelectedDecomb = Decomb.Off;\r
- }\r
- else\r
- {\r
- this.SelectedDeInterlace = Deinterlace.Off;\r
- }\r
+ this.deinterlaceFilter = value;\r
+ this.CurrentTask.DeinterlaceFilter = value;\r
\r
- this.NotifyOfPropertyChange(() => this.DeinterlaceControlText);\r
+ if (this.deinterlaceFilter == DeinterlaceFilter.Deinterlace)\r
+ {\r
+ this.IsDeinterlaceMode = true;\r
+ this.IsDecombMode = false;\r
+ }\r
+ else if (this.deinterlaceFilter == DeinterlaceFilter.Decomb)\r
+ {\r
+ this.IsDeinterlaceMode = false;\r
+ this.IsDecombMode = true;\r
+ }\r
+ else\r
+ {\r
+ this.IsDeinterlaceMode = false;\r
+ this.IsDecombMode = false;\r
}\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
}\r
}\r
\r
/// <summary>\r
- /// Gets or sets the deinterlace control text.\r
+ /// Gets or sets a value indicating whether is deinterlace mode.\r
+ /// </summary>\r
+ public bool IsDeinterlaceMode { get; set; }\r
+\r
+ /// <summary>\r
+ /// Gets or sets a value indicating whether is decomb mode.\r
/// </summary>\r
- public string DeinterlaceControlText { get; set; }\r
+ public bool IsDecombMode { get; set; }\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
{\r
// Properties\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
- this.SelectedDetelecine = preset.Task.Detelecine;\r
+ if (preset.Task.DeinterlaceFilter == DeinterlaceFilter.Deinterlace)\r
+ {\r
+ this.SelectedDeinterlaceFilter = DeinterlaceFilter.Deinterlace;\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
+\r
+\r
this.Grayscale = preset.Task.Grayscale;\r
this.DeblockValue = preset.Task.Deblock == 0 ? 4 : preset.Task.Deblock;\r
this.SelectedDenoisePreset = preset.Task.DenoisePreset;\r
{\r
// Default everything to off\r
this.SelectedDenoise = Denoise.Off;\r
- this.SelectedDecomb = Decomb.Off;\r
- this.SelectedDeInterlace = Deinterlace.Off;\r
+ this.SelectedDecomb = Decomb.Default;\r
+ this.SelectedDeInterlace = Deinterlace.Fast;\r
this.SelectedDetelecine = Detelecine.Off;\r
this.Grayscale = false;\r
this.DeblockValue = 0;\r
this.NotifyOfPropertyChange(() => this.CustomDeinterlace);\r
this.NotifyOfPropertyChange(() => this.CustomDetelecine);\r
this.NotifyOfPropertyChange(() => this.CustomDenoise);\r
+\r
+ this.NotifyOfPropertyChange(() => this.IsDeinterlaceMode);\r
+ this.NotifyOfPropertyChange(() => this.IsDecombMode);\r
+ this.NotifyOfPropertyChange(() => this.IsDeinterlaceDecomb);\r
+\r
}\r
\r
/// <summary>\r
<ColumnDefinition Width="Auto" />\r
</Grid.ColumnDefinitions>\r
\r
+ <!-- Detelecine -->\r
<TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Detelecine}" Grid.Row="0" Grid.Column="0" Margin="0,0,0,10" />\r
<ComboBox Width="120" Grid.Row="0" ItemsSource="{Binding DetelecineOptions, Converter={StaticResource boolComboConverter}}" \r
SelectedItem="{Binding SelectedDetelecine, Converter={StaticResource boolComboConverter}}" Grid.Column="1" Margin="0,0,0,10"\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
- <TextBlock Text="{Binding DeinterlaceControlText}" Grid.Row="1" Grid.Column="0" Margin="0,0,0,10" VerticalAlignment="Top"/>\r
+ <!-- Deinterlace -->\r
+ <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Deinterlace}" Grid.Row="1" Grid.Column="0" Margin="0,0,0,10" />\r
<StackPanel Grid.Row="1" Grid.Column="1" >\r
- <StackPanel Orientation="Horizontal">\r
- <RadioButton GroupName="Interlace" Content="{x:Static Properties:ResourcesUI.FiltersView_Deinterlace}" IsChecked="{Binding IsDeinterlaceMode}" \r
- ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DecombDeinterlace}" />\r
- <RadioButton GroupName="Interlace" Content="{x:Static Properties:ResourcesUI.FiltersView_Decomb}" Margin="10,0,0,0" IsChecked="{Binding IsDeinterlaceMode, Converter={StaticResource inverseBooleanConverter}}"\r
- ToolTip="{x:Static Properties:ResourcesTooltips.FilterView_DecombDeinterlace}"/>\r
- </StackPanel>\r
-\r
- <ComboBox Width="120" ItemsSource="{Binding DecombOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"\r
- SelectedItem="{Binding SelectedDecomb, Converter={StaticResource boolComboConverter}}" Margin="0,0,0,10"\r
- Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}, ConverterParameter=True}" />\r
\r
- <ComboBox Width="120" ItemsSource="{Binding DeInterlaceOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"\r
- SelectedItem="{Binding SelectedDeInterlace, Converter={StaticResource boolComboConverter}}" Margin="0,0,0,10"\r
- Visibility="{Binding IsDeinterlaceMode, Converter={StaticResource boolToVisConverter}}" />\r
+ <ComboBox Width="120" ItemsSource="{Binding DeinterlaceFilterOptions, Converter={StaticResource boolComboConverter}}" HorizontalAlignment="Left"\r
+ SelectedItem="{Binding SelectedDeinterlaceFilter, Converter={StaticResource boolComboConverter}}" Margin="0,0,0,10" />\r
+ \r
</StackPanel>\r
\r
- <TextBox Width="120" Grid.Row="1" Grid.Column="2" Text="{Binding CustomDecomb, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" HorizontalAlignment="Left"\r
- Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" />\r
+ <StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="2">\r
+ <TextBlock Text="Preset:" VerticalAlignment="Center" Margin="0,0,5,10" Visibility="{Binding IsDeinterlaceDecomb, Converter={StaticResource boolToVisConverter}}" />\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}}" Margin="0,0,0,10" />\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}}" Margin="0,0,0,10" />\r
+\r
+ <TextBlock Text="Custom:" VerticalAlignment="Center" Margin="5,0,5,10" Visibility="{Binding ShowDeinterlaceDecombCustom, Converter={StaticResource boolToVisConverter}}" />\r
+ <TextBox Width="120" Text="{Binding CustomDecomb, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
+ Visibility="{Binding ShowDecombCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,0,0,10" />\r
+\r
+ <TextBox Width="120" Text="{Binding CustomDeinterlace, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Left"\r
+ Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" Margin="0,0,0,10" />\r
+ </StackPanel>\r
\r
- <TextBox Width="120" Grid.Row="1" Grid.Column="2" Text="{Binding CustomDeinterlace, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" HorizontalAlignment="Left"\r
- Visibility="{Binding ShowDeinterlaceCustom, Converter={StaticResource boolToVisConverter}}" />\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
SelectedItem="{Binding SelectedDenoise, Converter={StaticResource boolComboConverter}}" Grid.Column="1"\r
\r
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Grid.Row="3" Grid.Column="2" Margin="0,0,0,10" \r
Visibility="{Binding ShowDenoiseOptions, Converter={StaticResource boolToVisConverter}}">\r
- <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Preset}" Margin="5,0,5,0" />\r
+ <TextBlock Text="{x:Static Properties:ResourcesUI.FiltersView_Preset}" Margin="0,0,5,0" />\r
<ComboBox SelectedItem="{Binding SelectedDenoisePreset}" \r
MinWidth="100" HorizontalAlignment="Center" VerticalAlignment="Center">\r
<ComboBox.ItemsSource>\r