1
General - (fb2k) / Re: fdkaac input bitdepth
Last post by Case -Alas, the confusion between FDKAAC and bit depth remains. HA wiki states: “…based on fixed-point math and only supports 16-bit integer PCM input”The wiki page refers to The Fraunhofer FDK AAC Codec Library for Android. It is purely fixed point code.
but fdkaac.exe 32float.wav does not throw an error, so there is a temptation to believe that support has been added.Here 'fdkaac' means the encoder frontend developed by @nu774 that utilizes the FDK AAC library. The frontend is being helpful and handles the input best way it can.
Doesn't look like there is dither. A quiet test tone turned into absolute silence with fdkaac.exe.
a) Is there any dither involved or are the extra bits are simply truncated when 32float.wav is converted to 16int?
b) Is further signal processing carried out in 16 bit precision?
c) I see that @kode54 tried to improve the situation, but were his patches used?
Everything FDK AAC library does to the signal is done in fixed point. It will clip and it will mutilate quiet tones.
I tested the library modifications from kode54 with fdkaac frontend. I had to patch an assert in nu774's code (assert(((SAMPLE_BITS)>>3) == sizeof(INT_PCM))) to make the encoding work. This modification allowed the encoder to encode 10 dB above digital fullscale. That is an improvement, but doesn't remove any limits. The test signal I was encoding had peaks 20 dB above full scale.
This change also breaks something very badly. Whenever the signal loudness increases there is a popping sound even when the signal goes nowhere near digital fullscale.
Someone with more time, interest and/or familiarity with the code might be able to fix that, but I'm not sure it's worth the effort. This is after all meant for Android.
There is a proper encoder library bundled in Windows 11 (though I haven't yet tested if it does floats) and the library bundled with old Winamp certainly supports floats.