Merge pull request #840 from roderickvd/attenuate-last

Attenuate after normalisation
This commit is contained in:
Roderick van Domburg 2021-09-02 22:09:30 +02:00 committed by GitHub
commit 2fcd24164d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1186,10 +1186,6 @@ impl PlayerInternal {
Some(mut packet) => { Some(mut packet) => {
if !packet.is_empty() { if !packet.is_empty() {
if let AudioPacket::Samples(ref mut data) = packet { if let AudioPacket::Samples(ref mut data) = packet {
if let Some(ref editor) = self.audio_filter {
editor.modify_stream(data)
}
if self.config.normalisation if self.config.normalisation
&& !(f64::abs(normalisation_factor - 1.0) <= f64::EPSILON && !(f64::abs(normalisation_factor - 1.0) <= f64::EPSILON
&& self.config.normalisation_method == NormalisationMethod::Basic) && self.config.normalisation_method == NormalisationMethod::Basic)
@ -1290,18 +1286,13 @@ impl PlayerInternal {
} }
} }
} }
*sample *= actual_normalisation_factor; *sample *= actual_normalisation_factor;
// Extremely sharp attacks, however unlikely, *may* still clip and provide
// undefined results, so strictly enforce output within [-1.0, 1.0].
if *sample < -1.0 {
*sample = -1.0;
} else if *sample > 1.0 {
*sample = 1.0;
}
} }
} }
if let Some(ref editor) = self.audio_filter {
editor.modify_stream(data)
}
} }
if let Err(err) = self.sink.write(&packet, &mut self.converter) { if let Err(err) = self.sink.write(&packet, &mut self.converter) {