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.1 (official pub­lic minor release) from December 2023. 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

   Version 1.2.1  Dec. 2023, this release

  • 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 implemen­ted. 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

   If you are in need of an additional library or application feature not mentioned below, please contact ecodis or a contributor with a request, and we will see what we can do.

  • exhaleLib: finalization of support for 5.1–7.1 multichannel coding, no version plan

  • exhaleLib: speed-ups and further quality tuning for difficult signals, as necessary.


Written by C. R. Helmrich for exhale 1.2.1, Dec. 2023. Available at www.ecodis.de/exhale/release.htm.


   exhale