Example #1
0
        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);
        }
Example #2
0
        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";
            }
        }