diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2016-03-04 22:01:59 +0100 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2016-03-04 22:01:59 +0100 |
commit | bf68d2db72f4e2c0dc4217f632a12d4cbf5010d0 (patch) | |
tree | b6e774305a334e1d6df1ab10e46c7059561142f9 /lib | |
parent | 113076a4db004a5c59aa9d02b3f9e1e9dab8e82c (diff) |
remove unused gpl version of ebu r128
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ebu_r128/ebu_r128_proc.cc | 337 | ||||
-rw-r--r-- | lib/ebu_r128/ebu_r128_proc.h | 136 |
2 files changed, 0 insertions, 473 deletions
diff --git a/lib/ebu_r128/ebu_r128_proc.cc b/lib/ebu_r128/ebu_r128_proc.cc deleted file mode 100644 index d480ce0c05..0000000000 --- a/lib/ebu_r128/ebu_r128_proc.cc +++ /dev/null @@ -1,337 +0,0 @@ -// ------------------------------------------------------------------------ -// -// Copyright (C) 2010-2011 Fons Adriaensen <fons@linuxaudio.org> -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// -// ------------------------------------------------------------------------ - - -#include <string.h> -#include <math.h> -#include "ebu_r128_proc.h" - - -float Ebu_r128_hist::_bin_power [100] = { 0.0f }; -float Ebu_r128_proc::_chan_gain [5] = { 1.0f, 1.0f, 1.0f, 1.41f, 1.41f }; - - -Ebu_r128_hist::Ebu_r128_hist (void) -{ - _histc = new int [751]; - initstat (); - reset (); -} - - -Ebu_r128_hist::~Ebu_r128_hist (void) -{ - delete[] _histc; -} - - -void Ebu_r128_hist::reset (void) -{ - memset (_histc, 0, 751 * sizeof (float)); - _count = 0; - _error = 0; -} - - -void Ebu_r128_hist::initstat (void) -{ - int i; - - if (_bin_power [0]) return; - for (i = 0; i < 100; i++) - { - _bin_power [i] = powf (10.0f, i / 100.0f); - } -} - - -void Ebu_r128_hist::addpoint (float v) -{ - int k; - - k = (int) floorf (10 * v + 700.5f); - if (k < 0) return; - if (k > 750) - { - k = 750; - _error++; - } - _histc [k]++; - _count++; -} - - -float Ebu_r128_hist::integrate (int i) -{ - int j, k, n; - float s; - - j = i % 100; - n = 0; - s = 0; - while (i <= 750) - { - k = _histc [i++]; - n += k; - s += k * _bin_power [j++]; - if (j == 100) - { - j = 0; - s /= 10.0f; - } - } - return s / n; -} - - -void Ebu_r128_hist::calc_integ (float *vi, float *th) -{ - int k; - float s; - - if (_count < 50) - { - *vi = -200.0f; - return; - } - s = integrate (0); -// Original threshold was -8 dB below result of first integration -// if (th) *th = 10 * log10f (s) - 8.0f; -// k = (int)(floorf (100 * log10f (s) + 0.5f)) + 620; -// Threshold redefined to -10 dB below result of first integration - if (th) *th = 10 * log10f (s) - 10.0f; - k = (int)(floorf (100 * log10f (s) + 0.5f)) + 600; - if (k < 0) k = 0; - s = integrate (k); - *vi = 10 * log10f (s); -} - - -void Ebu_r128_hist::calc_range (float *v0, float *v1, float *th) -{ - int i, j, k, n; - float a, b, s; - - if (_count < 20) - { - *v0 = -200.0f; - *v1 = -200.0f; - return; - } - s = integrate (0); - if (th) *th = 10 * log10f (s) - 20.0f; - k = (int)(floorf (100 * log10f (s) + 0.5)) + 500; - if (k < 0) k = 0; - for (i = k, n = 0; i <= 750; i++) n += _histc [i]; - a = 0.10f * n; - b = 0.95f * n; - for (i = k, s = 0; s < a; i++) s += _histc [i]; - for (j = 750, s = n; s > b; j--) s -= _histc [j]; - *v0 = (i - 701) / 10.0f; - *v1 = (j - 699) / 10.0f; -} - - - - -Ebu_r128_proc::Ebu_r128_proc (void) -{ - reset (); -} - - -Ebu_r128_proc::~Ebu_r128_proc (void) -{ -} - - -void Ebu_r128_proc::init (int nchan, float fsamp) -{ - _nchan = nchan; - _fsamp = fsamp; - _fragm = (int) fsamp / 20; - detect_init (_fsamp); - reset (); -} - - -void Ebu_r128_proc::reset (void) -{ - _integr = false; - _frcnt = _fragm; - _frpwr = 1e-30f; - _wrind = 0; - _div1 = 0; - _div2 = 0; - _loudness_M = -200.0f; - _loudness_S = -200.0f; - memset (_power, 0, 64 * sizeof (float)); - integr_reset (); - detect_reset (); -} - - -void Ebu_r128_proc::integr_reset (void) -{ - _hist_M.reset (); - _hist_S.reset (); - _maxloudn_M = -200.0f; - _maxloudn_S = -200.0f; - _integrated = -200.0f; - _integ_thr = -200.0f; - _range_min = -200.0f; - _range_max = -200.0f; - _range_thr = -200.0f; - _div1 = _div2 = 0; -} - - -void Ebu_r128_proc::process (int nfram, float *input []) -{ - int i, k; - - for (i = 0; i < _nchan; i++) _ipp [i] = input [i]; - while (nfram) - { - k = (_frcnt < nfram) ? _frcnt : nfram; - _frpwr += detect_process (k); - _frcnt -= k; - if (_frcnt == 0) - { - _power [_wrind++] = _frpwr / _fragm; - _frcnt = _fragm; - _frpwr = 1e-30f; - _wrind &= 63; - _loudness_M = addfrags (8); - _loudness_S = addfrags (60); - if (_loudness_M > _maxloudn_M) _maxloudn_M = _loudness_M; - if (_loudness_S > _maxloudn_S) _maxloudn_S = _loudness_S; - if (_integr) - { - if (++_div1 == 2) - { - _hist_M.addpoint (_loudness_M); - _div1 = 0; - } - if (++_div2 == 10) - { - _hist_S.addpoint (_loudness_S); - _div2 = 0; - _hist_M.calc_integ (&_integrated, &_integ_thr); - _hist_S.calc_range (&_range_min, &_range_max, &_range_thr); - } - } - } - for (i = 0; i < _nchan; i++) _ipp [i] += k; - nfram -= k; - } -} - - -float Ebu_r128_proc::addfrags (int nfrag) -{ - int i, k; - float s; - - s = 0; - k = (_wrind - nfrag) & 63; - for (i = 0; i < nfrag; i++) s += _power [(i + k) & 63]; - return -0.6976f + 10 * log10f (s / nfrag); -} - - -void Ebu_r128_proc::detect_init (float fsamp) -{ - float a, b, c, d, r, u1, u2, w1, w2; - - r = 1 / tan (4712.3890f / fsamp); - w1 = r / 1.12201f; - w2 = r * 1.12201f; - u1 = u2 = 1.4085f + 210.0f / fsamp; - a = u1 * w1; - b = w1 * w1; - c = u2 * w2; - d = w2 * w2; - r = 1 + a + b; - _a0 = (1 + c + d) / r; - _a1 = (2 - 2 * d) / r; - _a2 = (1 - c + d) / r; - _b1 = (2 - 2 * b) / r; - _b2 = (1 - a + b) / r; - r = 48.0f / fsamp; - a = 4.9886075f * r; - b = 6.2298014f * r * r; - r = 1 + a + b; - a *= 2 / r; - b *= 4 / r; - _c3 = a + b; - _c4 = b; - r = 1.004995f / r; - _a0 *= r; - _a1 *= r; - _a2 *= r; -} - - -void Ebu_r128_proc::detect_reset (void) -{ - for (int i = 0; i < MAXCH; i++) _fst [i].reset (); -} - - -float Ebu_r128_proc::detect_process (int nfram) -{ - int i, j; - float si, sj; - float x, y, z1, z2, z3, z4; - float *p; - Ebu_r128_fst *S; - - si = 0; - for (i = 0, S = _fst; i < _nchan; i++, S++) - { - z1 = S->_z1; - z2 = S->_z2; - z3 = S->_z3; - z4 = S->_z4; - p = _ipp [i]; - sj = 0; - for (j = 0; j < nfram; j++) - { - x = p [j] - _b1 * z1 - _b2 * z2 + 1e-15f; - y = _a0 * x + _a1 * z1 + _a2 * z2 - _c3 * z3 - _c4 * z4; - z2 = z1; - z1 = x; - z4 += z3; - z3 += y; - sj += y * y; - } - if (_nchan == 1) si = 2 * sj; - else si += _chan_gain [i] * sj; - S->_z1 = z1; - S->_z2 = z2; - S->_z3 = z3; - S->_z4 = z4; - } - return si; -} - - - diff --git a/lib/ebu_r128/ebu_r128_proc.h b/lib/ebu_r128/ebu_r128_proc.h deleted file mode 100644 index dbecfcb789..0000000000 --- a/lib/ebu_r128/ebu_r128_proc.h +++ /dev/null @@ -1,136 +0,0 @@ -// ------------------------------------------------------------------------ -// -// Copyright (C) 2010-2011 Fons Adriaensen <fons@linuxaudio.org> -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// -// ------------------------------------------------------------------------ - - -#ifndef __EBU_R128_PROC_H -#define __EBU_R128_PROC_H - - -#define MAXCH 5 - - -class Ebu_r128_fst -{ -private: - - friend class Ebu_r128_proc; - - void reset (void) { _z1 = _z2 = _z3 = _z4 = 0; } - - float _z1, _z2, _z3, _z4; -}; - - -class Ebu_r128_hist -{ -private: - - Ebu_r128_hist (void); - ~Ebu_r128_hist (void); - - friend class Ebu_r128_proc; - - void reset (void); - void initstat (void); - void addpoint (float v); - float integrate (int ind); - void calc_integ (float *vi, float *th); - void calc_range (float *v0, float *v1, float *th); - - int *_histc; - int _count; - int _error; - - static float _bin_power [100]; -}; - - - -class Ebu_r128_proc -{ -public: - - Ebu_r128_proc (void); - ~Ebu_r128_proc (void); - - void init (int nchan, float fsamp); - void reset (void); - void process (int nfram, float *input []); - void integr_reset (void); - void integr_pause (void) { _integr = false; } - void integr_start (void) { _integr = true; } - - float loudness_M (void) const { return _loudness_M; } - float maxloudn_M (void) const { return _maxloudn_M; } - float loudness_S (void) const { return _loudness_S; } - float maxloudn_S (void) const { return _maxloudn_S; } - float integrated (void) const { return _integrated; } - float integ_thr (void) const { return _integ_thr; } - float range_min (void) const { return _range_min; } - float range_max (void) const { return _range_max; } - float range_thr (void) const { return _range_thr; } - - const int *histogram_M (void) const { return _hist_M._histc; } - const int *histogram_S (void) const { return _hist_S._histc; } - int hist_M_count (void) const { return _hist_M._count; } - int hist_S_count (void) const { return _hist_S._count; } - -private: - - float addfrags (int nfrag); - void detect_init (float fsamp); - void detect_reset (void); - float detect_process (int nfram); - - bool _integr; // Integration on/off. - int _nchan; // Number of channels, 2 or 5. - float _fsamp; // Sample rate. - int _fragm; // Fragmenst size, 1/20 second. - int _frcnt; // Number of samples remaining in current fragment. - float _frpwr; // Power accumulated for current fragment. - float _power [64]; // Array of fragment powers. - int _wrind; // Write index into _frpwr - int _div1; // M period counter, 200 ms; - int _div2; // S period counter, 1s; - float _loudness_M; - float _maxloudn_M; - float _loudness_S; - float _maxloudn_S; - float _integrated; - float _integ_thr; - float _range_min; - float _range_max; - float _range_thr; - - // Filter coefficients and states. - float _a0, _a1, _a2; - float _b1, _b2; - float _c3, _c4; - float *_ipp [MAXCH]; - Ebu_r128_fst _fst [MAXCH]; - Ebu_r128_hist _hist_M; - Ebu_r128_hist _hist_S; - - // Default channel gains. - static float _chan_gain [5]; -}; - - -#endif |