WinGui: Fix Passthru fallback behaviour. If a specific passthru isn't possible. it will now fallback to the Passthru format encoder first, before using the fallback encoder.
This commit is contained in:
parent
8bde0be0a5
commit
3047c824c0
@ -92,34 +92,26 @@ namespace HandBrakeWPF.Services.Encode.Model.Models
|
||||
|
||||
public AudioTrack(AudioBehaviourTrack track, Audio sourceTrack, IList<HBAudioEncoder> passthruEncoders, HBAudioEncoder fallbackEncoder, OutputFormat container)
|
||||
{
|
||||
HBAudioEncoder chosenEncoder = track.Encoder;
|
||||
if (track.IsPassthru && (sourceTrack.Codec & chosenEncoder.Id) == 0)
|
||||
HBAudioEncoder validatedEncoder = track.Encoder;
|
||||
if (track.IsPassthru)
|
||||
{
|
||||
chosenEncoder = fallbackEncoder;
|
||||
int format = HandBrakeEncoderHelpers.GetContainer(EnumHelper<OutputFormat>.GetShortName(container)).Id;
|
||||
int copyMask = checked((int)HandBrakeEncoderHelpers.BuildCopyMask(passthruEncoders ?? new List<HBAudioEncoder>()));
|
||||
|
||||
validatedEncoder = HandBrakeEncoderHelpers.GetAutoPassthruEncoder(sourceTrack.Codec, copyMask, fallbackEncoder.Id, format);
|
||||
}
|
||||
|
||||
if (track.IsPassthru && chosenEncoder.ShortName == HBAudioEncoder.Passthru)
|
||||
{
|
||||
if (passthruEncoders != null)
|
||||
{
|
||||
int format = HandBrakeEncoderHelpers.GetContainer(EnumHelper<OutputFormat>.GetShortName(container)).Id;
|
||||
int copyMask = checked((int)HandBrakeEncoderHelpers.BuildCopyMask(passthruEncoders));
|
||||
|
||||
HBAudioEncoder autoPassthruEncoderOption = HandBrakeEncoderHelpers.GetAutoPassthruEncoder(sourceTrack.Codec, copyMask, fallbackEncoder.Id, format);
|
||||
chosenEncoder = autoPassthruEncoderOption;
|
||||
}
|
||||
}
|
||||
|
||||
this.scannedTrack = sourceTrack;
|
||||
this.drc = track.DRC;
|
||||
this.encoder = chosenEncoder;
|
||||
this.encoder = validatedEncoder;
|
||||
this.gain = track.Gain;
|
||||
this.mixDown = track.MixDown != null ? track.MixDown.ShortName : "dpl2";
|
||||
|
||||
// If the mixdown isn't supported, downgrade it.
|
||||
if (track.IsPassthru && track.MixDown != null && chosenEncoder != null && !HandBrakeEncoderHelpers.MixdownIsSupported(track.MixDown, chosenEncoder, sourceTrack.ChannelLayout))
|
||||
if (track.IsPassthru && track.MixDown != null && validatedEncoder != null && !HandBrakeEncoderHelpers.MixdownIsSupported(track.MixDown, validatedEncoder, sourceTrack.ChannelLayout))
|
||||
{
|
||||
HBMixdown changedMixdown = HandBrakeEncoderHelpers.GetDefaultMixdown(chosenEncoder, (ulong)sourceTrack.ChannelLayout);
|
||||
HBMixdown changedMixdown = HandBrakeEncoderHelpers.GetDefaultMixdown(validatedEncoder, (ulong)sourceTrack.ChannelLayout);
|
||||
if (changedMixdown != null)
|
||||
{
|
||||
this.mixDown = changedMixdown.ShortName;
|
||||
|
Loading…
x
Reference in New Issue
Block a user