exhale/README.md

154 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

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
2021-08-30 09:00:00 +02:00
**Important:** Due to the missing lower-rate coding tools, the audio
quality at the lowest of exhale's bit-rate modes (18 kbit/s mono, 36
kbit/s stereo) doesn't reflect the full capabilities of the Extended
HE-AAC standard. Therefore, use the lowest bit-rate modes *only when
required*. Also, please don't attempt to modify exhale's source code
or to configure the command-line encoder to produce lower bit-rates.
Use only existing presets and input sampling rates of 32...48 kHz.
2020-01-02 20:00:17 +01:00
____________________________________________________________________
Copyright
---------
2023-12-20 13:00:00 +01:00
(c) 2024 Christian R. Helmrich, project ecodis. All rights reserved.
2020-01-02 20:00:17 +01:00
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
2023-12-20 13:00:00 +01:00
The license text and release notes for the current version 1.2.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
2021-03-27 01:00:00 +01:00
to exhale's standard input pipe (stdin), such as foobar2000. See the
Wiki at https://gitlab.com/ecodis/exhale/-/wikis/home for more info.
2020-01-02 20:00:17 +01:00
### 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
2021-01-23 18:00:00 +01:00
the input signal is 2-channel stereo) and in Extended HE-AAC format.
2020-01-27 00:00:10 +01:00
2021-08-30 09:00:00 +02:00
There is also an **expert mode** providing two additional arguments:
`exhale.exe b s 42 C:\Music\Input.wav C:\Music\Output.m4a`
e.g. encodes Input.wav to Output.m4a at roughly 48 kbit/s stereo and
with SBR enabled, seamless operation (`s` forces media time 0 in the
edit list), and an independent frame interval of 42 (range 10...99).
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` ->
2021-04-24 11:00:00 +02:00
`...`. In the newly opened window click on `Output format`. Once the
window content changed, double-click on entry `AAC (exhale)` and set
up the conversion. If that entry does not exist, click on `Add New`,
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)
2021-01-23 18:00:00 +01:00
- *Encoder name:* Extended HE-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.