From: sr55 Date: Mon, 23 Apr 2018 20:52:42 +0000 (+0100) Subject: WinGui: Add support for setting mixdown, bitrate, sample rate, gain and DRC for the... X-Git-Tag: 1.2.0~501 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=de49d8c04a8e31ef41368c5a09223f2d84c74944;p=handbrake WinGui: Add support for setting mixdown, bitrate, sample rate, gain and DRC for the passthru encoder on the audio behaviour screen. This is used for the audio fallback encoder. #1291 --- diff --git a/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviourTrack.cs b/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviourTrack.cs index 1297ecb71..0e16f83f1 100644 --- a/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviourTrack.cs +++ b/win/CS/HandBrakeWPF/Model/Audio/AudioBehaviourTrack.cs @@ -127,7 +127,7 @@ namespace HandBrakeWPF.Model.Audio { get { - return this.IsPassthru ? null : this.mixDown; + return this.mixDown; } set @@ -409,7 +409,7 @@ namespace HandBrakeWPF.Model.Audio { get { - if (this.IsPassthru || this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) + if (this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) { return false; } @@ -426,7 +426,7 @@ namespace HandBrakeWPF.Model.Audio { get { - if (this.IsPassthru || this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) + if (this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) { return false; } @@ -443,7 +443,7 @@ namespace HandBrakeWPF.Model.Audio { get { - if (this.IsPassthru || this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) + if (this.Encoder == AudioEncoder.ffflac || this.Encoder == AudioEncoder.ffflac24) { return false; } @@ -588,13 +588,13 @@ namespace HandBrakeWPF.Model.Audio private void SetupMixdowns() { this.mixdowns = new BindingList(HandBrakeEncoderHelpers.Mixdowns.ToList()); - + HBAudioEncoder audioEncoder = HandBrakeEncoderHelpers.GetAudioEncoder(EnumHelper.GetShortName(this.Encoder)); BindingList mixdownList = new BindingList(); foreach (HBMixdown mixdown in HandBrakeEncoderHelpers.Mixdowns) { - if (HandBrakeEncoderHelpers.MixdownHasCodecSupport(mixdown, audioEncoder)) + if (HandBrakeEncoderHelpers.MixdownHasCodecSupport(mixdown, audioEncoder) || this.IsPassthru) // Show only supported, or all for passthru. { mixdownList.Add(mixdown); } @@ -606,7 +606,8 @@ namespace HandBrakeWPF.Model.Audio // If the mixdown isn't supported, downgrade it to the best available. if (!this.Mixdowns.Contains(this.MixDown)) { - this.MixDown = this.Mixdowns.LastOrDefault(); + this.mixDown = this.Mixdowns.LastOrDefault(); + this.NotifyOfPropertyChange(() => this.MixDown); } } diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs index 7cc073125..24a56a8b2 100644 --- a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs +++ b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/AudioTrack.cs @@ -113,9 +113,11 @@ namespace HandBrakeWPF.Services.Encode.Model.Models { AudioEncoder chosenEncoder = track.Encoder; HBAudioEncoder encoderInfo = HandBrakeEncoderHelpers.GetAudioEncoder(EnumHelper.GetShortName(track.Encoder)); + HBAudioEncoder fallbackEncoderInfo; if (track.IsPassthru && (sourceTrack.Codec & encoderInfo.Id) == 0) { chosenEncoder = fallback; + encoderInfo = HandBrakeEncoderHelpers.GetAudioEncoder(EnumHelper.GetShortName(track.Encoder)); } this.scannedTrack = sourceTrack; @@ -125,7 +127,9 @@ namespace HandBrakeWPF.Services.Encode.Model.Models this.mixDown = track.MixDown != null ? track.MixDown.ShortName : "dpl2"; // If the mixdown isn't supported, downgrade it. - if (track.MixDown != null && encoderInfo != null && !HandBrakeEncoderHelpers.MixdownIsSupported(track.MixDown, encoderInfo, sourceTrack.ChannelLayout)) + + + if (track.IsPassthru && track.MixDown != null && encoderInfo != null && !HandBrakeEncoderHelpers.MixdownIsSupported(track.MixDown, encoderInfo, sourceTrack.ChannelLayout)) { HBMixdown changedMixdown = HandBrakeEncoderHelpers.GetDefaultMixdown(encoderInfo, (ulong)sourceTrack.ChannelLayout); if (changedMixdown != null) diff --git a/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml b/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml index 83214b6bc..bf6ee04ae 100644 --- a/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml +++ b/win/CS/HandBrakeWPF/Views/AudioDefaultsView.xaml @@ -267,33 +267,26 @@ SelectedItem="{Binding Bitrate}" Visibility="{Binding IsBitrateVisible, Converter={StaticResource boolToVisConverter}, ConverterParameter=false}" /> - + + ItemsSource="{Binding Mixdowns}" SelectedItem="{Binding MixDown}" + DisplayMemberPath="DisplayName" /> - + + SelectedItem="{Binding SampleRateDisplayValue}" /> - + + Minimum="0" Modulus="0.1" Maximum="4" Number="{Binding DRC, Mode=TwoWay}" UpdateBindingOnTextChange="True" + ShowIncrementButtons="True" AllowEmpty="False" /> - + + Minimum="-20" Modulus="1" Maximum="20" Number="{Binding Gain, Mode=TwoWay}" UpdateBindingOnTextChange="True" + ShowIncrementButtons="True" AllowEmpty="False" />