ecodis :: exhale :: Release Notes
Author: Dr.-Ing. Christian R. Helmrich
Description: exhale Software Release Notes
Keywords: audio, data compression, perceptual coding, subjective evaluation, video

| # exhale - ecodis extended high-efficiency and low-complexity encoder Software Release Notes, Version History, Known Issues, Upcoming Feature Roadmap ### The version of this distribution of the «exhale» software release is 1.2.2 (official public minor release) from January 2026. Please check www.ecodis.de regularly for new versions of this software. A summary of each version up to this release, a list of known issues with this release, and a roadmap of additional functionality are provided below. ### Chronological Version History ### Since version 1.2.2 main branch on Git ### exhaleApp: fix LUFS calc overflow on full-scale square waves, print expert settings ### exhaleApp: delete unused legacy source file app/basicWavReader.txt (source only) ### exhaleLib: fix bit allocation with expert CVBR modes 10–12 and BA_MORE_CBR=1 ### Version 1.2.2 Dec. 2025, this release ### exhaleApp: add expert non-SBR CVBR modes 10–12 for higher rates; see Readme ### exhaleLib: enable relaxed max quantized spectral magnitude restriction by default ### exhaleLib: avoid "extra bytes" conformance warning in UsacConfig part of streams ### exhaleLib: improve LF bit allocation, compensate for bit rate increase after 1.2.1.2 ### cleanup of some constraint in the code; this marks the end of active development. ### Version 1.2.1.2 May 2025 ### exhaleApp: avoid out of bounds AU writeouts, fix 5.1 WAV/MPEG channel mapping ### exhaleLib: relax max. quantized spectral magnitude restriction1, fix MSE test code ### exhaleLib: clean quantizer+entropy coder, increase max. IPF AU size to 12 kbit/ch ### exhaleLib: fix more high-rate efficiency issues, fix mode-f stereo coding (issue 33) #### 1: optional, activated via define SFB_QUANT_PERCEPT_OPT = 1 or 0, triggers FFmpeg decoder bug! ### Version 1.2.1 Dec. 2023 ### exhaleApp: always determine MPEG-4 instantaneous bit-rate across 2048 samples ### exhaleLib: added code for MSE optimized encoding (for tests, disabled by default) ### exhaleLib: code cleanup in quantization.*, increase max. IPF AU size to 10 kbit/ch ### exhaleLib: fix two rare high-rate quality issues (only affects CVBR modes above 5) ### Version 1.2.0 Dec. 2022 ### C API correction, some code sanitizing (issue 24, merge requests 8–11, J. Regan) ### exhaleLib: code cleanup, very minor quality improvements in CVBR modes f and 5 ### exhaleLib: 5% speedup of all modes, better target rate matching in CVBR mode g ### exhaleLib: work around MinGW compilation hickup (issue 26; thanks, C. Degawa!) ### Version 1.1.9 Dec. 2021 ### exhaleApp: write encoder name and version as «udta» tool string into MP4 header ### exhaleApp: optimize leading and trailing PCM read for gapless playback (issue 21) ### Version 1.1.8 Oct. 2021 ### some final code cleanup, small code corrections and editorial changes for this year ### exhaleLib: minor stereo quality tuning for low rates, optional CBR mode via macro ### Version 1.1.7 Aug. 2021 ### minor tuning at low SBR rates, enabled SBR coding at 22050 Hz input sample rate ### exhaleApp: added expert modes for loudness leveling, custom Intra frame interval ### Version 1.1.6 May 2021 ### minor quality tuning and support for delayless operation (media time=0) with SBR ### exhaleApp: fixed very rare output file corruption after finishing encoding with SBR ### exhaleApp: fixed compilation error under Fedora (issue 20) and stdin hickup issue ### exhaleLib: fixed some quality issues in SBR modes, no changes in non-SBR modes ### Version 1.1.5 Apr. 2021 ### exhaleApp: correct print-out of Unicode file names and paths, minor code cleanup ### exhaleLib: minor tuning of immediate playout frames, no changes to audio quality ### makefile: support for compilation of Universal 2 binaries on MacOS™ (C. Snowhill) ### Version 1.1.4 Mar. 2021 ### exhaleApp: removed LUFS/dBFS command arguments again, code now automatic ### exhaleApp: consider the working instead of application path if no path is specified ### exhaleLib: reduce enc. delay to closest integer multiple of frame length (issue 15) ### exhaleLib: very minor tuning of transient coding especially on male speech signals ### Version 1.1.3 Feb. 2021 ### exhaleApp: allow specifying loudness (LUFS) and peak sample (dBFS) after preset ### exhaleLib: write UsacConfig in immediate playout frames (increases compatibility) ### Version 1.1.2 Jan. 2021 ### further improved file interoperability and seekability with some playback software ### exhaleLib: write all frames in «stss» data as immediate playout frames (issue 15) ### Version 1.1.1 Dec. 2020 ### slightly improved audio quality with SBR, better compatibility with some decoders ### exhaleLib: increased frequency resolution of coded SBR envelopes, minor cleanup ### exhaleLib: workaround for time differential coding bug in some xHE-AAC decoders ### Version 1.1.0 Nov. 2020 ### addition of basic SBR functionality for lower-rate coding down to 18 kbps/channel ### exhaleApp: add support for CVBR modes a—g for encoding with SBR functionality ### exhaleApp: show «ARM» in header and '-v' command on corresponding platforms ### exhaleLib: basic 2:1 SBR encoding with ccfl = 2048, minor fixes and code cleanup ### Version 1.0.8 Oct. 2020 ### minor quality improvements at low and high rates, some license text clarifications ### exhaleApp: slightly improved loudness calculation for low and high sampling rates ### exhaleLib: improved audio quality a bit for the lower and higher-rate CVBR modes ### License: removed references to BSD text, clarified disclaimer and contributor text ### Version 1.0.7 Aug. 2020 ### minor bugfixes in bit-rate control and higher-rate coding at 32 kHz sampling rate ### exhaleApp: add support for CVBR mode 0 at codec sampling rates below 44.1 kHz ### exhaleApp: write complete MP4 «stss» data for improved compatibility (issue 13) ### exhaleApp: higher accuracy of loudness estimation, better BS.1770-4 compliance ### Version 1.0.6 July 2020 ### bugfixes, improved quality on some transient signals, better decoder compatibility ### exhaleApp: support for Extensible WAVE format, write MP4 «prol» data (issue 10) ### exhaleApp: automatic downsampling of 48-kHz input to 32 kHz for CVBR mode 1 ### exhaleLib: fine-tuning of psychoacoustic model for difficult transient input signals ### Version 1.0.5 June 2020 ### slightly reduced bit-rates with lower modes, better compatibility when using stdin ### exhaleApp: support for Unicode text on Windows™, 44100 Hz with CVBR mode 1 ### exhaleApp: automatic upsampling of low-sample-rate input, fixed reader (issue 9) ### exhaleLib: optimized noise filling tool for slightly lower bit-rates at CVBR mode <4 ### compilation: exhaleApp.exe -> exhale.exe (issue 8), support for Arm™, C header ### Version 1.0.4 May 2020 ### finalized basic joint-stereo and TNS coding functionality, quality and stability fixes ### exhaleApp: support for 32000 Hz with CVBR mode 1, added '-v' version command ### exhaleLib: completed audio quality fine-tuning for very tonal and transient signals ### compilation: support for MinGW (issue 5) and cmake (via CMakeList files, issue 6) ### Version 1.0.3 Apr. 2020 ### extended basic joint-stereo coding functionality for mid/high rates, minor bugfixes ### exhaleLib: band adaptive joint-stereo coding for all CVBR modes, fixed rare crash ### exhaleLib: audio quality fine-tuning, especially for very tonal and transient signals ### makefile: -std=c++11 to allow for compilation with older versions of gcc (issue 4) ### Version 1.0.2 Mar. 2020 ### added basic low/mid-rate joint-stereo coding functionality, bugfixes, and speedups ### exhaleApp: support for input sampling rates of up to 48000 Hz with CVBR mode 2 ### exhaleLib: frame adaptive joint-stereo preprocessing and coding (CVBR mode <5) ### exhaleLib: accelerated R/D opt. coding, stability and quality fixes (issues 2 and 3) ### Version 1.0.1 Feb. 2020 ### improved low-bitrate coding efficiency and support for MPEG-D loudness metadata ### exhaleApp: increased MP4 file versatility (issue 1) and calculation of loudness info ### exhaleLib: backward compatible API extension to support writing of loudness info ### exhaleLib: extended R/D optimized coding, improved short-transform quantization ### Version 1.0.0 Jan. 2020 ### compilation fixes and executable printout changes for Linux and MacOS™ platform ### exhaleApp: fixed reading of WAVE files including metadata after the «data» chunk ### exhaleLib: some tuning of transform and noise level detection for transient signals ### exhaleLib: support for export as DLL on Microsoft Windows™ (not tested, though) ### Version 1.0RC Dec. 2019 ### initial release for testing with only basic channel-independent coding functionality ### only support for Microsoft Windows™ (32-bit and 64-bit) platform provided so far. ### Known Issues with This Release ### If you notice an issue with this release not mentioned below, please contact ecodis or a contributor with the details (configuration, input file) needed to reproduce the issue. ### exhaleApp: At the end of each encoding run, the MPEG-4 file header with seeking information is written to the beginning of the output file to maximize compatibility in audio streaming applications. Since such a file operation is not supported with pipe based output, encoding to stdout instead of files is currently not supported. ### exhaleApp: Only basic WAVE input file reading functionality has been implemented. Specifically, 8-bit WAVE input is assumed to contain an even number of audio samples, and ITU-R BS.2088 (RF64, Broadcast WAVE) files are not supported. ### Roadmap of Upcoming Features ### As of late 2025, the exhale project is in maintenance mode, focusing only on bugfixing and correct compilation and operation on different platforms. However, still desired are ### speedup and further bugfixing, as necessary and if contributed by the community. ### #### Written by C. R. Helmrich for exhale 1.2.2, Dec. 2025. Available at www.ecodis.de/exhale/release.htm. |