Also make a function only used here static. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>tags/n4.4
@@ -362,9 +362,6 @@ static void ebur128_filter_##type(FFEBUR128State* st, const type** srcs, | |||||
st->d->v[ci][1] = fabs(st->d->v[ci][1]) < DBL_MIN ? 0.0 : st->d->v[ci][1]; \ | st->d->v[ci][1] = fabs(st->d->v[ci][1]) < DBL_MIN ? 0.0 : st->d->v[ci][1]; \ | ||||
} \ | } \ | ||||
} | } | ||||
EBUR128_FILTER(short, -((double)SHRT_MIN)) | |||||
EBUR128_FILTER(int, -((double)INT_MIN)) | |||||
EBUR128_FILTER(float, 1.0) | |||||
EBUR128_FILTER(double, 1.0) | EBUR128_FILTER(double, 1.0) | ||||
static double ebur128_energy_to_loudness(double energy) | static double ebur128_energy_to_loudness(double energy) | ||||
@@ -459,8 +456,8 @@ int ff_ebur128_set_channel(FFEBUR128State * st, | |||||
} | } | ||||
static int ebur128_energy_shortterm(FFEBUR128State * st, double *out); | static int ebur128_energy_shortterm(FFEBUR128State * st, double *out); | ||||
#define FF_EBUR128_ADD_FRAMES_PLANAR(type) \ | |||||
void ff_ebur128_add_frames_planar_##type(FFEBUR128State* st, const type** srcs, \ | |||||
#define EBUR128_ADD_FRAMES_PLANAR(type) \ | |||||
static void ebur128_add_frames_planar_##type(FFEBUR128State* st, const type** srcs, \ | |||||
size_t frames, int stride) { \ | size_t frames, int stride) { \ | ||||
size_t src_index = 0; \ | size_t src_index = 0; \ | ||||
while (frames > 0) { \ | while (frames > 0) { \ | ||||
@@ -502,10 +499,7 @@ void ff_ebur128_add_frames_planar_##type(FFEBUR128State* st, const type** srcs, | |||||
} \ | } \ | ||||
} \ | } \ | ||||
} | } | ||||
FF_EBUR128_ADD_FRAMES_PLANAR(short) | |||||
FF_EBUR128_ADD_FRAMES_PLANAR(int) | |||||
FF_EBUR128_ADD_FRAMES_PLANAR(float) | |||||
FF_EBUR128_ADD_FRAMES_PLANAR(double) | |||||
EBUR128_ADD_FRAMES_PLANAR(double) | |||||
#define FF_EBUR128_ADD_FRAMES(type) \ | #define FF_EBUR128_ADD_FRAMES(type) \ | ||||
void ff_ebur128_add_frames_##type(FFEBUR128State* st, const type* src, \ | void ff_ebur128_add_frames_##type(FFEBUR128State* st, const type* src, \ | ||||
size_t frames) { \ | size_t frames) { \ | ||||
@@ -513,11 +507,8 @@ void ff_ebur128_add_frames_##type(FFEBUR128State* st, const type* src, \ | |||||
const type **buf = (const type**)st->d->data_ptrs; \ | const type **buf = (const type**)st->d->data_ptrs; \ | ||||
for (i = 0; i < st->channels; i++) \ | for (i = 0; i < st->channels; i++) \ | ||||
buf[i] = src + i; \ | buf[i] = src + i; \ | ||||
ff_ebur128_add_frames_planar_##type(st, buf, frames, st->channels); \ | |||||
ebur128_add_frames_planar_##type(st, buf, frames, st->channels); \ | |||||
} | } | ||||
FF_EBUR128_ADD_FRAMES(short) | |||||
FF_EBUR128_ADD_FRAMES(int) | |||||
FF_EBUR128_ADD_FRAMES(float) | |||||
FF_EBUR128_ADD_FRAMES(double) | FF_EBUR128_ADD_FRAMES(double) | ||||
static int ebur128_calc_relative_threshold(FFEBUR128State **sts, size_t size, | static int ebur128_calc_relative_threshold(FFEBUR128State **sts, size_t size, | ||||
@@ -606,12 +597,6 @@ int ff_ebur128_loudness_global(FFEBUR128State * st, double *out) | |||||
return ebur128_gated_loudness(&st, 1, out); | return ebur128_gated_loudness(&st, 1, out); | ||||
} | } | ||||
int ff_ebur128_loudness_global_multiple(FFEBUR128State ** sts, size_t size, | |||||
double *out) | |||||
{ | |||||
return ebur128_gated_loudness(sts, size, out); | |||||
} | |||||
static int ebur128_energy_in_interval(FFEBUR128State * st, | static int ebur128_energy_in_interval(FFEBUR128State * st, | ||||
size_t interval_frames, double *out) | size_t interval_frames, double *out) | ||||
{ | { | ||||
@@ -628,21 +613,6 @@ static int ebur128_energy_shortterm(FFEBUR128State * st, double *out) | |||||
out); | out); | ||||
} | } | ||||
int ff_ebur128_loudness_momentary(FFEBUR128State * st, double *out) | |||||
{ | |||||
double energy; | |||||
int error = ebur128_energy_in_interval(st, st->d->samples_in_100ms * 4, | |||||
&energy); | |||||
if (error) { | |||||
return error; | |||||
} else if (energy <= 0.0) { | |||||
*out = -HUGE_VAL; | |||||
return 0; | |||||
} | |||||
*out = ebur128_energy_to_loudness(energy); | |||||
return 0; | |||||
} | |||||
int ff_ebur128_loudness_shortterm(FFEBUR128State * st, double *out) | int ff_ebur128_loudness_shortterm(FFEBUR128State * st, double *out) | ||||
{ | { | ||||
double energy; | double energy; | ||||
@@ -657,22 +627,6 @@ int ff_ebur128_loudness_shortterm(FFEBUR128State * st, double *out) | |||||
return 0; | return 0; | ||||
} | } | ||||
int ff_ebur128_loudness_window(FFEBUR128State * st, | |||||
unsigned long window, double *out) | |||||
{ | |||||
double energy; | |||||
size_t interval_frames = st->samplerate * window / 1000; | |||||
int error = ebur128_energy_in_interval(st, interval_frames, &energy); | |||||
if (error) { | |||||
return error; | |||||
} else if (energy <= 0.0) { | |||||
*out = -HUGE_VAL; | |||||
return 0; | |||||
} | |||||
*out = ebur128_energy_to_loudness(energy); | |||||
return 0; | |||||
} | |||||
/* EBU - TECH 3342 */ | /* EBU - TECH 3342 */ | ||||
int ff_ebur128_loudness_range_multiple(FFEBUR128State ** sts, size_t size, | int ff_ebur128_loudness_range_multiple(FFEBUR128State ** sts, size_t size, | ||||
double *out) | double *out) | ||||
@@ -81,7 +81,7 @@ enum channel { | |||||
* modes that suit your needs, as performance will be better. | * modes that suit your needs, as performance will be better. | ||||
*/ | */ | ||||
enum mode { | enum mode { | ||||
/** can call ff_ebur128_loudness_momentary */ | |||||
/** can resurrrect and call ff_ebur128_loudness_momentary */ | |||||
FF_EBUR128_MODE_M = (1 << 0), | FF_EBUR128_MODE_M = (1 << 0), | ||||
/** can call ff_ebur128_loudness_shortterm */ | /** can call ff_ebur128_loudness_shortterm */ | ||||
FF_EBUR128_MODE_S = (1 << 1) | FF_EBUR128_MODE_M, | FF_EBUR128_MODE_S = (1 << 1) | FF_EBUR128_MODE_M, | ||||
@@ -151,41 +151,9 @@ int ff_ebur128_set_channel(FFEBUR128State * st, | |||||
* @param src array of source frames. Channels must be interleaved. | * @param src array of source frames. Channels must be interleaved. | ||||
* @param frames number of frames. Not number of samples! | * @param frames number of frames. Not number of samples! | ||||
*/ | */ | ||||
void ff_ebur128_add_frames_short(FFEBUR128State * st, | |||||
const short *src, size_t frames); | |||||
/** \brief See \ref ebur128_add_frames_short */ | |||||
void ff_ebur128_add_frames_int(FFEBUR128State * st, | |||||
const int *src, size_t frames); | |||||
/** \brief See \ref ebur128_add_frames_short */ | |||||
void ff_ebur128_add_frames_float(FFEBUR128State * st, | |||||
const float *src, size_t frames); | |||||
/** \brief See \ref ebur128_add_frames_short */ | |||||
void ff_ebur128_add_frames_double(FFEBUR128State * st, | void ff_ebur128_add_frames_double(FFEBUR128State * st, | ||||
const double *src, size_t frames); | const double *src, size_t frames); | ||||
/** \brief Add frames to be processed. | |||||
* | |||||
* @param st library state. | |||||
* @param srcs array of source frame channel data pointers | |||||
* @param frames number of frames. Not number of samples! | |||||
* @param stride number of samples to skip to for the next sample of the same channel | |||||
*/ | |||||
void ff_ebur128_add_frames_planar_short(FFEBUR128State * st, | |||||
const short **srcs, | |||||
size_t frames, int stride); | |||||
/** \brief See \ref ebur128_add_frames_planar_short */ | |||||
void ff_ebur128_add_frames_planar_int(FFEBUR128State * st, | |||||
const int **srcs, | |||||
size_t frames, int stride); | |||||
/** \brief See \ref ebur128_add_frames_planar_short */ | |||||
void ff_ebur128_add_frames_planar_float(FFEBUR128State * st, | |||||
const float **srcs, | |||||
size_t frames, int stride); | |||||
/** \brief See \ref ebur128_add_frames_planar_short */ | |||||
void ff_ebur128_add_frames_planar_double(FFEBUR128State * st, | |||||
const double **srcs, | |||||
size_t frames, int stride); | |||||
/** \brief Get global integrated loudness in LUFS. | /** \brief Get global integrated loudness in LUFS. | ||||
* | * | ||||
* @param st library state. | * @param st library state. | ||||
@@ -196,28 +164,7 @@ void ff_ebur128_add_frames_planar_double(FFEBUR128State * st, | |||||
* - AVERROR(EINVAL) if mode "FF_EBUR128_MODE_I" has not been set. | * - AVERROR(EINVAL) if mode "FF_EBUR128_MODE_I" has not been set. | ||||
*/ | */ | ||||
int ff_ebur128_loudness_global(FFEBUR128State * st, double *out); | int ff_ebur128_loudness_global(FFEBUR128State * st, double *out); | ||||
/** \brief Get global integrated loudness in LUFS across multiple instances. | |||||
* | |||||
* @param sts array of library states. | |||||
* @param size length of sts | |||||
* @param out integrated loudness in LUFS. -HUGE_VAL if result is negative | |||||
* infinity. | |||||
* @return | |||||
* - 0 on success. | |||||
* - AVERROR(EINVAL) if mode "FF_EBUR128_MODE_I" has not been set. | |||||
*/ | |||||
int ff_ebur128_loudness_global_multiple(FFEBUR128State ** sts, | |||||
size_t size, double *out); | |||||
/** \brief Get momentary loudness (last 400ms) in LUFS. | |||||
* | |||||
* @param st library state. | |||||
* @param out momentary loudness in LUFS. -HUGE_VAL if result is negative | |||||
* infinity. | |||||
* @return | |||||
* - 0 on success. | |||||
*/ | |||||
int ff_ebur128_loudness_momentary(FFEBUR128State * st, double *out); | |||||
/** \brief Get short-term loudness (last 3s) in LUFS. | /** \brief Get short-term loudness (last 3s) in LUFS. | ||||
* | * | ||||
* @param st library state. | * @param st library state. | ||||
@@ -229,20 +176,6 @@ int ff_ebur128_loudness_momentary(FFEBUR128State * st, double *out); | |||||
*/ | */ | ||||
int ff_ebur128_loudness_shortterm(FFEBUR128State * st, double *out); | int ff_ebur128_loudness_shortterm(FFEBUR128State * st, double *out); | ||||
/** \brief Get loudness of the specified window in LUFS. | |||||
* | |||||
* window must not be larger than the current window set in st. | |||||
* | |||||
* @param st library state. | |||||
* @param window window in ms to calculate loudness. | |||||
* @param out loudness in LUFS. -HUGE_VAL if result is negative infinity. | |||||
* @return | |||||
* - 0 on success. | |||||
* - AVERROR(EINVAL) if window larger than current window in st. | |||||
*/ | |||||
int ff_ebur128_loudness_window(FFEBUR128State * st, | |||||
unsigned long window, double *out); | |||||
/** \brief Get loudness range (LRA) of programme in LU. | /** \brief Get loudness range (LRA) of programme in LU. | ||||
* | * | ||||
* Calculates loudness range according to EBU 3342. | * Calculates loudness range according to EBU 3342. | ||||