libebur128
==========

libebur128 is a library that implements the EBU R 128 standard for loudness
normalisation.

All source code is licensed under the MIT license. See COPYING file for
details.

See also [loudness-scanner tool](https://github.com/jiixyj/loudness-scanner).

News
----

v1.2.6 released:
 * Fix dynamic linking on Windows.

v1.2.5 released:
 * Remove `BUILD_STATIC_LIBS` build option. Instead the CMake-supported
   `BUILD_SHARED_LIBS` option is now honored as expected.
 * Various code cleanups, warning fixes and documentation improvements
 * Fix issue related to filter state indexing with high channel enums (#77)
 * Introduce limits for number of channels and maximum supported samplerate to
   avoid integer overflows
 * Fix error return code of `ebur128_set_channel`. The actual behavior is now
   aligned to the documentation (#90).

v1.2.4 released:
 * Fix broken `ebur128_loudness_global_multiple()` function. Since v1.1.0 it
   calculated the relative threshold just from the last state given to it,
   resulting in wrong values.
 * More tests
 * Fix some minor build issues
 * Fix uninitialized memory in `ebur128_init()`, possibly resulting in wrong
   values

v1.2.3 released:
 * Fix uninitialized memory access during true peak scanning (bug #72)

v1.2.2 released (v1.2.1 was mistagged):
 * Fix a null pointer dereference when doing true peak scanning of 192kHz data

v1.2.0 released:

 * New functions for real time loudness/peak monitoring:
   * `ebur128_loudness_window()`
   * `ebur128_set_max_window()`
   * `ebur128_set_max_history()`
   * `ebur128_prev_sample_peak()`
   * `ebur128_prev_true_peak()`
 * New FIR resampler for true peak calculation, removing Speex dependency
 * Add true peak conformance tests
 * Bug fixes

v1.1.0 released:

 * Add `ebur128_relative_threshold()`
 * Add channel definitions from ITU R-REC-BS 1770-4 to channel enum
 * Fix some minor build issues

v1.0.3 released:

 * Fix build with recent speexdsp
 * Correct license file name
 * CMake option to disable static library
 * minimal-example.c: do not hard code program name in usage

Features
--------

* Portable ANSI C code
* Implements M, S and I modes
* Implements loudness range measurement (EBU - TECH 3342)
* True peak scanning
* Supports all samplerates by recalculation of the filter coefficients

Installation
------------

In the root folder, type:

    mkdir build
    cd build
    cmake ..
    make

If you want the git version, run simply:

    git clone git://github.com/jiixyj/libebur128.git

Usage
-----

Library usage should be pretty straightforward. All exported symbols are
documented in the ebur128.h header file. For a usage example, see
minimal-example.c in the tests folder.

On some operating systems, static libraries should be compiled as position
independent code. You can enable that by turning on `WITH_STATIC_PIC`.
