Name [-1,1] the "nominal" range of float samples

Float values are allowed to be > 0dbfs,
it is just not nominal as it will might
distort the signal when played without
attenuation.

This is also consistent with
[AudioTrack.write(FloatBuffer)](https://developer.android.com/reference/android/media/AudioTrack#write(float[],%20int,%20int,%20int)) that explicitly
allows it up to 3dbfs.

PiperOrigin-RevId: 321345077
This commit is contained in:
krocard 2020-07-15 13:57:25 +01:00 committed by Oliver Woodman
parent c5edc1c2f5
commit 53d12747e5
2 changed files with 3 additions and 1 deletions

View File

@ -2,6 +2,8 @@
### 2.11.8 (2020-08-25) ###
* Fix distorted playback of floating point audio when samples exceed the
`[-1, 1]` nominal range.
* MP4: Add support for `piff` and `isml` brands
([#7584](https://github.com/google/ExoPlayer/issues/7584)).
* FMP4: Fix `saiz` and `senc` sample count checks, resolving a "length

View File

@ -116,7 +116,7 @@ import java.nio.ByteBuffer;
// 32 bit floating point -> 16 bit resampling. Floating point values are in the range
// [-1.0, 1.0], so need to be scaled by Short.MAX_VALUE.
for (int i = position; i < limit; i += 4) {
// Clamp to avoid integer overflow if the floating point values exceed their allowed range
// Clamp to avoid integer overflow if the floating point values exceed their nominal range
// [Internal ref: b/161204847].
float floatValue =
Util.constrainValue(inputBuffer.getFloat(i), /* min= */ -1, /* max= */ 1);