2020-01-02 20:00:17 +01:00
|
|
|
exhale
|
|
|
|
======
|
2020-01-02 01:30:15 +01:00
|
|
|
|
2020-01-02 20:00:17 +01:00
|
|
|
exhale, which is an acronym for "Ecodis eXtended High-efficiency And
|
|
|
|
Low-complexity Encoder", is a lightweight library and application to
|
2020-01-03 00:00:28 +01:00
|
|
|
encode uncompressed WAVE-format audio files into MPEG-4-format files
|
2020-01-02 20:00:17 +01:00
|
|
|
complying with the ISO/IEC 23003-3 (MPEG-D) Unified Speech and Audio
|
|
|
|
Coding (USAC, also known as Extended High-Efficiency AAC) standard.
|
|
|
|
|
2020-03-31 20:00:00 +02:00
|
|
|
In addition, exhale writes program peak-level and loudness data into
|
|
|
|
the generated MPEG-4 files according to the ISO/IEC 23003-4, Dynamic
|
|
|
|
Range Control (DRC) specification for use by decoders providing DRC.
|
|
|
|
|
2020-01-02 20:00:17 +01:00
|
|
|
exhale currently makes use of all frequency-domain (FD) coding tools
|
2020-12-31 10:00:00 +01:00
|
|
|
in the scalefactor based MDCT processing path. Its objective is high
|
2020-01-02 20:00:17 +01:00
|
|
|
quality mono, stereo, and multichannel coding at medium and high bit
|
2020-01-24 21:00:38 +01:00
|
|
|
rates, so the lower-rate USAC coding tools (ACELP, TCX, Enhanced SBR
|
|
|
|
and MPEG Surround with Unified Stereo coding) won't be integrated.
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
____________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
Copyright
|
|
|
|
---------
|
|
|
|
|
|
|
|
(c) 2020 Christian R. Helmrich, project ecodis. All rights reserved.
|
|
|
|
|
|
|
|
|
|
|
|
License
|
|
|
|
-------
|
|
|
|
|
|
|
|
exhale is being made available under an open-source license which is
|
2020-11-28 22:00:01 +01:00
|
|
|
based on the 3-clause BSD license but modified to address particular
|
2020-01-03 00:00:28 +01:00
|
|
|
aspects dictated by the nature and the output of this application.
|
2020-01-02 20:00:17 +01:00
|
|
|
|
2020-12-29 21:00:13 +01:00
|
|
|
The license text and release notes for the current version 1.1.1 can
|
2020-01-03 00:00:28 +01:00
|
|
|
be found in the `include` subdirectory of the exhale distribution.
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
Compilation
|
|
|
|
-----------
|
|
|
|
|
|
|
|
This section describes how to compile the exhale source code into an
|
|
|
|
executable application under Linux and Microsoft Windows. The binary
|
|
|
|
application files will show up in a newly created `bin` subdirectory
|
|
|
|
of the exhale distribution directory and/or a subdirectory thereof.
|
|
|
|
|
2020-05-29 01:00:38 +02:00
|
|
|
Note that, for advanced use cases, cmake files are provided as well.
|
|
|
|
See https://gitlab.com/ecodis/exhale/-/merge_requests/2 for details.
|
|
|
|
|
2020-01-02 20:00:17 +01:00
|
|
|
### Linux and MacOS (GNU Compiler Collection, gcc):
|
|
|
|
|
|
|
|
In a terminal, change to the exhale distribution directory and enter
|
|
|
|
|
|
|
|
`
|
|
|
|
make release
|
|
|
|
`
|
|
|
|
|
|
|
|
to build a release-mode executable with the default (usually 64-bit)
|
|
|
|
configuration. A 32-bit debug-mode executable can be built by typing
|
|
|
|
|
|
|
|
`
|
2020-01-03 00:00:28 +01:00
|
|
|
make BUILD32=1 debug
|
2020-01-02 20:00:17 +01:00
|
|
|
`
|
|
|
|
|
|
|
|
### Microsoft Windows (Visual Studio 2012 and later):
|
|
|
|
|
|
|
|
Doubleclick the exhale_vs2012.sln file to open the project in Visual
|
|
|
|
Studio. Once it's loaded, rightclick on `exhaleApp` in the "Solution
|
|
|
|
Explorer" window on the right-hand side, then select `Set as StartUp
|
|
|
|
Project`. Now simply press `F7` to build the solution in debug mode.
|
|
|
|
|
2020-01-03 00:00:28 +01:00
|
|
|
To change the debugging command, rightclick again on `exhaleApp` and
|
|
|
|
select `Properties`. In the newly opened window click on `Debugging`
|
|
|
|
under "Configuration Properties" on the left-hand side. Then you can
|
|
|
|
edit the "Command Arguments" entry on the right-hand side as needed.
|
|
|
|
|
2020-01-02 20:00:17 +01:00
|
|
|
For fastest encoding speed, please select `Release` and `x64` before
|
|
|
|
building the solution. This will create a release-mode 64-bit binary.
|
2020-01-26 16:00:49 +01:00
|
|
|
If you would like to build a dynamically linked library (DLL) of the
|
|
|
|
exhale source instead of an application binary, select `Release DLL`
|
|
|
|
instead of `Release`, rightclick on `exhaleLib`, and select `Build`.
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
|
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
|
|
|
|
This section describes how to run the exhale application either from
|
|
|
|
the command-line or using a third-party software providing WAVE data
|
|
|
|
to exhale's standard input pipe (stdin), such as foobar2000.
|
|
|
|
|
|
|
|
### Standalone (command-line):
|
|
|
|
|
|
|
|
In a terminal, change to exhale's `bin` subdirectory and then enter
|
|
|
|
|
2020-06-22 21:00:11 +02:00
|
|
|
`./exhale` (on Linux and MacOS) or `exhale.exe` (on Windows)
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
to print out usage information. As an example, the following command
|
|
|
|
|
2020-06-22 21:00:11 +02:00
|
|
|
`exhale.exe 5 C:\Music\Input.wav C:\Music\Output.m4a`
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
converts file Input.wav to file Output.m4a at roughly 128 kbit/s (if
|
2020-01-27 00:00:10 +01:00
|
|
|
the input signal is two-channel stereo) and in xHE-AAC audio format.
|
|
|
|
Note that, when calling the exhale application with a path (such as,
|
2020-06-22 21:00:11 +02:00
|
|
|
e.g., `bin/exhale` or `bin\exhale.exe`), but specifying the input or
|
|
|
|
output file without a file path (e.g., `Input.wav`), those files are
|
2020-01-27 00:00:10 +01:00
|
|
|
assumed to be located in the application path (here, `bin`). Use the
|
|
|
|
"dot prefix" to indicate files in the *current* directory instead of
|
|
|
|
the application directory (here, `./Input.wav` or `.\Input.wav`).
|
|
|
|
|
2020-01-02 20:00:17 +01:00
|
|
|
|
|
|
|
### Third-party stdin (foobar2000):
|
|
|
|
|
2020-01-03 00:00:28 +01:00
|
|
|
After downloading from www.foobar2000.org and starting the software,
|
2020-01-27 00:00:10 +01:00
|
|
|
load the desired input audio files into the playlist. Mark all files
|
|
|
|
to be converted, rightclick on one of them, and select `Convert` ->
|
|
|
|
`...`. In the newly opened window click on `Output format` and, once
|
|
|
|
the window content changed, on `Add New`. Then select `Custom` under
|
|
|
|
"Encoder" and enter the following information:
|
2020-01-03 00:00:28 +01:00
|
|
|
|
2020-06-22 21:00:11 +02:00
|
|
|
- *Encoder file:* exhale.exe (including path to the executable)
|
2020-01-03 00:00:28 +01:00
|
|
|
- *Extension:* m4a
|
2020-12-30 23:00:03 +01:00
|
|
|
- *Parameters:* # %d (where # is the bit-rate mode, i.e., 0...9 when
|
|
|
|
SBR is disabled, or a...g when SBR is enabled)
|
2020-01-03 00:00:28 +01:00
|
|
|
- *Format is:* lossy
|
|
|
|
- *Highest BPS mode supported:* 24 (or 32, doesn't matter much)
|
2020-01-27 00:00:10 +01:00
|
|
|
- *Encoder name:* xHE-AAC (exhale)
|
2020-01-03 00:00:28 +01:00
|
|
|
- *Bitrate (kbps):* (depends on bit-rate mode, see Usage above)
|
2020-01-27 00:00:10 +01:00
|
|
|
- *Settings:* CVBR mode # (where # equals that in *Parameters*)
|
|
|
|
|
|
|
|
Then click on `OK` and on `Back` and, in the first "Converter Setup"
|
2020-06-22 21:00:11 +02:00
|
|
|
window, on `Other` and ensure the "Transfer..." box for the class of
|
|
|
|
input metadata that you wish to copy to the output files is checked.
|
2020-01-27 00:00:10 +01:00
|
|
|
Now set the destination settings as desired and click on `Convert`.
|
2020-01-03 00:00:28 +01:00
|
|
|
|
|
|
|
|
|
|
|
Development
|
|
|
|
-----------
|
|
|
|
|
2020-01-24 21:00:38 +01:00
|
|
|
If you are interested in contributing to exhale, please email one of
|
2020-01-03 00:00:28 +01:00
|
|
|
the developers. Merge requests with fixes and/or speedups are highly
|
|
|
|
appreciated.
|