Seems suboptimal....the truncation part, that's not best practice when going from higher bit to 16, is it?
Of course it is suboptimal and truncation isn't best practice. I'm not advocating this behavior, just telling how it is.
But again I only asked because f2K uses ffmpeg. I'll try setting output to FLAC and see what happens. I see if doing that actually changes an ffmpeg command parameter, or just pipes the ffmpeg 16 bit output wav to a flac encoder.
As it been wrote already: behavior of fb2k's converter is not anyhow connected with default behavior of ffmpeg. Unless you are using ffmpeg.exe through "FFmpeg decoder wrapper" component to decode your files. At least in 32-bit version of fb2k, all internal decoders (including ffmpeg based ones) decode everything to 32bit floating point (maybe in 64-bit version it is 64 bit floating point, i don't know).
FWIW I've downlaoded the latest ffmpeg package with all shared libraries, for windows 64 (ffmpeg-n6.0-latest-win64-gpl-shared-6.0) and may experiment with that. If nothing else I now have all the documentation that comes with. The internal working of the libraries is still opaque to me though.
Audiomuxer logs its conversions, so I get info from that, though not very detailed . Here's what a conversion from 5.0 DTS 96/24 file to wav logged, using default values (meaning the libDcaDec DTS decoder, which according to its github page, is deprecated due to it being now "fully integrated into FFmpeg master branch and further development will continue there. Using FFmpeg for DTS decoding is now recommended.")
==> Cross-EyedMary.dts
> DTS | 96000Hz | 1 510 kb/s | 5Ch (2/2/0.1)
> Eac3to LOG -->
eac3to v3.36
command line: "eac3to.exe" Cross-EyedMary.dts Cross-EyedMary.wav -progressnumbers
------------------------------------------------------------------------------
DTS-96/24, 2/2.1 channels, 0:04:12, 1510kbps, 96kHz
Decoding with libDcaDec DTS Decoder...
Writing WAV...
Creating file ...
eac3to processing took 5 seconds.
Done.
> Cross-EyedMary.wav created
The output file is a 96 kHz 24 bits 5 channel .wav (extensible wav format)
Specifying FLAC output adds a SOX step
==> Cross-EyedMary.dts
> DTS | 96000Hz | 1 510 kb/s | 5Ch (2/2/0.1)
> Eac3to LOG -->
eac3to v3.36
command line: "eac3to.exe" Cross-EyedMary.dts Cross-EyedMary.tmp.wav" -progressnumbers
------------------------------------------------------------------------------
DTS-96/24, 2/2.1 channels, 0:04:12, 1510kbps, 96kHz
Decoding with libDcaDec DTS Decoder...
Writing WAV...
Creating file Cross-Eyed Mary.tmp.wav ...
eac3to processing took 5 seconds.
Done.
> Sox LOG -->
Input File : Cross-EyedMary.tmp.wav
Channels : 5
Sample Rate : 96000
Precision : 24-bit
Sample Encoding: 24-bit Signed Integer PCM
Done.
> Cross-EyedMary.flac created
There's also an option to use the libav DTS decoder..which I guess is the ffmpeg decoder. It does this with the same input format and .wav out selected (interesting that there's an explicit step to deal with clipping, and that the output is the DTS 'core' decode rate of 48 kHz):
==> Cross-EyedMary.dts
> DTS | 96000Hz | 1 510 kb/s | 5Ch (2/2/0.1)
> Eac3to LOG -->
eac3to v3.36
command line: "eac3to.exe" Cross-EyedMary.dts Cross-EyedMary.wav -libav -progressnumbers
------------------------------------------------------------------------------
DTS-96/24, 2/2.1 channels, 0:04:12, 1510kbps, 96kHz
Decoding with libav/ffmpeg...
Reducing depth from 64 to 24 bits...
Writing WAV...
Creating file Cross-EyedMary.wav...
Clipping detected, a 2nd pass will be necessary. <WARNING>
Starting 2nd pass...
Decoding with libav/ffmpeg...
Reducing depth from 64 to 24 bits...
Writing WAV...
Applying -0.1dB gain...
Creating file Cross-EyedMary.wav...
eac3to processing took 8 seconds.
Done.
> Cross-EyedMary.wav created
The output file is a 48kHz 24 bit .wav file (extensible wav format)
specifying FLAC output produces a .flac file that decodes to the same 48/24 .wav file as above.