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)
|
public AudioTrack(AudioBehaviourTrack track, Audio sourceTrack, IList<HBAudioEncoder> passthruEncoders, HBAudioEncoder fallbackEncoder, OutputFormat container)
|
||||||
{
|
{
|
||||||
HBAudioEncoder chosenEncoder = track.Encoder;
|
HBAudioEncoder validatedEncoder = track.Encoder;
|
||||||
if (track.IsPassthru && (sourceTrack.Codec & chosenEncoder.Id) == 0)
|
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.scannedTrack = sourceTrack;
|
||||||
this.drc = track.DRC;
|
this.drc = track.DRC;
|
||||||
this.encoder = chosenEncoder;
|
this.encoder = validatedEncoder;
|
||||||
this.gain = track.Gain;
|
this.gain = track.Gain;
|
||||||
this.mixDown = track.MixDown != null ? track.MixDown.ShortName : "dpl2";
|
this.mixDown = track.MixDown != null ? track.MixDown.ShortName : "dpl2";
|
||||||
|
|
||||||
// If the mixdown isn't supported, downgrade it.
|
// 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)
|
if (changedMixdown != null)
|
||||||
{
|
{
|
||||||
this.mixDown = changedMixdown.ShortName;
|
this.mixDown = changedMixdown.ShortName;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user