diff options
author | sr55 <[email protected]> | 2016-04-09 14:46:54 +0100 |
---|---|---|
committer | sr55 <[email protected]> | 2016-04-09 14:46:54 +0100 |
commit | fc3324c8fa6c0aaa37c89d8d0bf098092d705932 (patch) | |
tree | 6789acc002fdd809e8327eb2d42bed9f440cf89e /win/CS/HandBrakeWPF/Converters | |
parent | ca2fc63cfd6a47920492bc96c3efd7e207af817d (diff) |
WinGui: Use Mixdowns from LibHBand sanitise the choices. The GUI no longer shows invalid mixdowns.
Diffstat (limited to 'win/CS/HandBrakeWPF/Converters')
3 files changed, 137 insertions, 14 deletions
diff --git a/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownConverter.cs b/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownConverter.cs new file mode 100644 index 000000000..e1a371743 --- /dev/null +++ b/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownConverter.cs @@ -0,0 +1,61 @@ +// -------------------------------------------------------------------------------------------------------------------- +// <copyright file="AudioMixdownConverter.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 AudioMixdownConverter type. +// </summary> +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrakeWPF.Converters.Audio +{ + using System.Globalization; + using System.Windows.Data; + using System; + + using HandBrake.ApplicationServices.Interop; + using HandBrake.ApplicationServices.Interop.Model.Encoding; + + /// <summary> + /// The audio mixdown converter. + /// Handles conversion between HBMixdown and it's shortname. + /// </summary> + public class AudioMixdownConverter : IValueConverter + { + /// <summary> + /// Converts a value. + /// </summary> + /// <returns> + /// A converted value. If the method returns null, the valid null value is used. + /// </returns> + /// <param name="value">The value produced by the binding source.</param><param name="targetType">The type of the binding target property.</param><param name="parameter">The converter parameter to use.</param><param name="culture">The culture to use in the converter.</param> + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + string mixdown = value as string; + if (!string.IsNullOrEmpty(mixdown)) + { + return HandBrakeEncoderHelpers.GetMixdown(mixdown); + } + + return HandBrakeEncoderHelpers.GetMixdown("dpl2"); // Default + } + + /// <summary> + /// Converts a value. + /// </summary> + /// <returns> + /// A converted value. If the method returns null, the valid null value is used. + /// </returns> + /// <param name="value">The value that is produced by the binding target.</param><param name="targetType">The type to convert to.</param><param name="parameter">The converter parameter to use.</param><param name="culture">The culture to use in the converter.</param> + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + HBMixdown mixdown = value as HBMixdown; + if (mixdown != null) + { + return mixdown.ShortName; + } + + return "none"; + } + } +} diff --git a/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownListConverter.cs b/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownListConverter.cs new file mode 100644 index 000000000..cad01f88a --- /dev/null +++ b/win/CS/HandBrakeWPF/Converters/Audio/AudioMixdownListConverter.cs @@ -0,0 +1,75 @@ +// -------------------------------------------------------------------------------------------------------------------- +// <copyright file="AudioMixdownListConverter.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 AudioMixdownListConverter type. +// </summary> +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrakeWPF.Converters.Audio +{ + using System.Globalization; + using System.Windows.Data; + using System; + using System.ComponentModel; + + using HandBrake.ApplicationServices.Interop; + using HandBrake.ApplicationServices.Interop.Model.Encoding; + + using HandBrakeWPF.Services.Encode.Model.Models; + using HandBrakeWPF.Utilities; + + /// <summary> + /// The audio mixdown converter. + /// Returns the list of available mixdowns for the given track and encoder. + /// </summary> + public class AudioMixdownListConverter : IValueConverter + { + /// <summary> + /// Converts a value. + /// </summary> + /// <returns> + /// A converted value. If the method returns null, the valid null value is used. + /// </returns> + /// <param name="value">The value produced by the binding source.</param><param name="targetType">The type of the binding target property.</param><param name="parameter">The converter parameter to use.</param><param name="culture">The culture to use in the converter.</param> + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + AudioTrack track = value as AudioTrack; + if (track != null && track.ScannedTrack != null) + { + HBAudioEncoder encoder = + HandBrakeEncoderHelpers.GetAudioEncoder(EnumHelper<AudioEncoder>.GetShortName(track.Encoder)); + + BindingList<HBMixdown> mixdowns = new BindingList<HBMixdown>(); + foreach (HBMixdown mixdown in HandBrakeEncoderHelpers.Mixdowns) + { + if (HandBrakeEncoderHelpers.MixdownIsSupported( + mixdown, + encoder, + track.ScannedTrack.ChannelLayout)) + { + mixdowns.Add(mixdown); + } + } + + return mixdowns; + } + + return value; + } + + /// <summary> + /// Converts a value. + /// </summary> + /// <returns> + /// A converted value. If the method returns null, the valid null value is used. + /// </returns> + /// <param name="value">The value that is produced by the binding target.</param><param name="targetType">The type to convert to.</param><param name="parameter">The converter parameter to use.</param><param name="culture">The culture to use in the converter.</param> + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + + return value; + } + } +} diff --git a/win/CS/HandBrakeWPF/Converters/EnumComboConverter.cs b/win/CS/HandBrakeWPF/Converters/EnumComboConverter.cs index a25cd1100..b803e1126 100644 --- a/win/CS/HandBrakeWPF/Converters/EnumComboConverter.cs +++ b/win/CS/HandBrakeWPF/Converters/EnumComboConverter.cs @@ -58,10 +58,6 @@ namespace HandBrakeWPF.Converters {
return EnumHelper<VideoEncoder>.GetEnumDisplayValues(typeof(VideoEncoder));
}
- if (value is IEnumerable<Mixdown>)
- {
- return EnumHelper<Mixdown>.GetEnumDisplayValues(typeof(Mixdown));
- }
if (value is IEnumerable<PresetPictureSettingsMode>)
{
return EnumHelper<PresetPictureSettingsMode>.GetEnumDisplayValues(typeof(PresetPictureSettingsMode));
@@ -103,12 +99,7 @@ namespace HandBrakeWPF.Converters if (targetType == typeof(VideoEncoder) || value.GetType() == typeof(VideoEncoder))
{
return EnumHelper<VideoEncoder>.GetDisplay((VideoEncoder)value);
- }
- if (targetType == typeof(Mixdown) || value.GetType() == typeof(Mixdown))
- {
- return EnumHelper<Mixdown>.GetDisplay((Mixdown)value);
- }
-
+ }
if (targetType == typeof(PresetPictureSettingsMode) || value.GetType() == typeof(PresetPictureSettingsMode))
{
return EnumHelper<PresetPictureSettingsMode>.GetDisplay((PresetPictureSettingsMode)value);
@@ -183,10 +174,6 @@ namespace HandBrakeWPF.Converters {
return EnumHelper<VideoEncoder>.GetValue(value.ToString());
}
- if (targetType == typeof(Mixdown) || value.GetType() == typeof(Mixdown))
- {
- return EnumHelper<Mixdown>.GetValue(value.ToString());
- }
if (targetType == typeof(PresetPictureSettingsMode) || value.GetType() == typeof(PresetPictureSettingsMode))
{
return EnumHelper<PresetPictureSettingsMode>.GetValue(value.ToString());
|