public static (uint applBitrate, uint settingsBitrate) ApplicableBitRate(this IBitRateSettings settings, uint sourceBitrate) { uint settingsBitrate = settings.ReducedBitRate.UInt32(); if ((settingsBitrate == 0 || settingsBitrate >= sourceBitrate) && !settings.VariableBitRate) { return(0, 0); } uint applicableBitrate = sourceBitrate; if (settingsBitrate != 0) { applicableBitrate = Math.Min(sourceBitrate, settingsBitrate); } return(applicableBitrate, settingsBitrate); }
public void SetBitRate(IBitRateSettings settings, IAudioQuality audioQuality, bool anyway) { uint sampleRate = audioQuality.SampleRate; uint sourceBitrate = audioQuality.AvgBitRate; bool reducing = false; var(applicableBitrate, settingsBitrate) = settings.ApplicableBitRate(sourceBitrate); if (applicableBitrate == 0) { if (!anyway) { return; } else { applicableBitrate = sourceBitrate; } } else { reducing = true; _bitrateParam = getSampeRate(sampleRate, applicableBitrate); } if (settings.VariableBitRate) { _bitrateParam += getVariableBitrate(applicableBitrate, settings.ConvFormat == EConvFormat.mp3); } else { if (reducing) { Log(3, this, () => $"{ID}reduce: {sourceBitrate} -> {settingsBitrate} kb/s"); } _bitrateParam += $"-b:a {applicableBitrate}k"; } }