And he's off!
Tycho has kindly started the translation of lossyWAV from Delphi to C++.
I'll need to learn it to be able to contribute meaningfully....
Changelog:lossyWAV beta 1.3.0m 25/03/2013
lossyWAV beta 1.3.0m 25/03/2013
- experimental parameter --feedback introduced to modify bit removal process to include an added noise check. Seems to work well in conjunction with "--maxclips 0" or "--maxclips 1" at lower quality settings.
lossyWAV beta 1.3.0k3 08/03/2013
- Removed experimental new parameter --noisebtr.
- --interp-curve reinstated.
- experimental parameter --altfilter introduced to modify adaptive noise shaping method.
lossyWAV beta 1.3.0j 08/02/2013
- Introduction of experimental new parameter --noisebtr which applies a new method of detemining bits to remove. Well, I say new - SebastianG did point me in this direction *quite* some time ago. Basically, the creation of the noise shaping filter for each channel outputs a numerical value that I have finally used to determine the number of bits to remove from that codec-block channel. It even works on (non-clipping) tonal samples. It should be noted that this is a complete departure from the original method - no searching for the lowest signal in the FFT output bins. Limited tuning so far - however the presets should give approximately the same resultant FLAC output bitrate from --portable up to --insane. Below --portable, I have made the quality settings more aggressive and --extraportable results in a FLAC output bitrate of approximately 283kbit/s. This is quite a drop from the 308 to 311kbit/s previously. If anyone is prepared to spend the time on some testing, that would be very much appreciated. I think that --extraportable is a bit *too* aggressive at the moment, but that is more of a feeling than anything else.
- --interp-curve removed at this time.
- beta 1.3.0k2 issued due to omission of --noisebtr from text output parameter list (used in FACT chunk and log file).
- beta 1.3.0k3 issued due to last minute fix for bits-per-sample not equal to 16.
lossyWAV beta 1.3.0i 30/01/2013
- Further experimental modification to the adaptive noise shaping routine, backed off a little but now works well with >96kHz samplerate
lossyWAV beta 1.3.0h 23/01/2013
- Further experimental modification to the adaptive noise shaping routine. NB: Testing has shown that this does not work well with >96kHz samplerate!!.
- Bug-fix: now processes >16-bit properly - unexpected integer overflow discovered where floating point was thought to be used.
lossyWAV beta 1.3.0g 18/01/2013
- Further experimental modification to the adaptive noise shaping routine. FLAC encode (-5 -b 512) from "-q X -i" results in 302kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0f 26/10/2012
- Experimental modification to the adaptive noise shaping routine, new parameter -i, --interp-curve; adds optional cubic curve interpolation in lieu of linear interpolation when determining target spectral shape for each noise shaping filter. When encoded in FLAC (-5 -b 512) using the --extraportable preset, my 10 album test set results in 304kbit/s (compared to 309 kbit/s for vanilla --extraportable).
lossyWAV beta 1.3.0e 24/09/2012
- First attempt at FFMPEG compatibility;
lossyWAV beta 1.3.0d 18/09/2012
- More rounding issues found and amended;
- Output is hopefully bit identical with reference output (2nd attempt....);
lossyWAV beta 1.3.0c 15/09/2012
- Bit removal chain error identified: C++ inherently rounds 0.5 differently from Delphi, Delphi uses Banker's rounding (round to even);
- Banker's rounding implemented;
Output is now bit identical with reference output (caveat: from testing so far).  Found not to be at --portable. Bug hunting continues.... [/edit]
This post has been edited by Nick.C: Mar 30 2013, 15:37
- Piped I/O implemented - please report problems;
- Most bugs in bit-removal chain removed - output not yet bit identical;
- Internal FFT routines optimised.