[CELT-dev] Current git CELT breaks audio above +3dBFS.

Gregory Maxwell gmaxwell at gmail.com
Mon Jan 24 14:13:29 PST 2011

[I'm primarily intending this message for the developers of netjack,
but it may be of interest to other CELT users]


Jean-marc was concerned that CELT application developers may
incorrectly send in non-scaled integers (like ±32767) into the float
interface of CELT and thus unintentionally create software which was
incompatible with everyone else (and particularly, very incompatible
with fixed point decoders). This isn't entirely unlikely, as speex has
a float interface scaled this way, though we've never actually seen
someone do it.

As a result, commit
adds a clamp so that instead of being able to extend to +138dBFS
(before quality started becoming degraded) we are artificially
limiting the input to 3dBFS.  As a consolation, we've recently fixed
some quality problems with very quiet signals (down to -144dB),  so
applications which need extended positive dynamic range can achieve it
by adding before encoding and removing it after decoding without much
quality compromise.

The ability of CELT interconnected Jack to exceed 0dBFS is a
functionality that I've personally depended on, because it allows me
to stick a limiter before my final output and not worry about
intermediate gain levels. Since this change in behavior (unlike our
API changes) would be easily missed developers while causing
intermittent terrible quality for users, I thought it would be good to
send this word of caution.


More information about the celt-dev mailing list