Message ID | 20170125005725.16675-2-cus@passwd.hu |
---|---|
State | Superseded |
Headers | show |
On Wed, 25 Jan 2017, Marton Balint wrote: > Also disallow NULL contexts. > > Fixes Coverity CID 1396273, 1396279. > > Signed-off-by: Marton Balint <cus@passwd.hu> > --- > libavfilter/ebur128.c | 40 +++++++++++++++++++--------------------- > 1 file changed, 19 insertions(+), 21 deletions(-) > > diff --git a/libavfilter/ebur128.c b/libavfilter/ebur128.c > index 012df54..e064c59 100644 > --- a/libavfilter/ebur128.c > +++ b/libavfilter/ebur128.c > @@ -519,49 +519,45 @@ FF_EBUR128_ADD_FRAMES(int) > FF_EBUR128_ADD_FRAMES(float) > FF_EBUR128_ADD_FRAMES(double) > > -static int ebur128_calc_relative_threshold(FFEBUR128State * st, > +static void ebur128_sum_relative_threshold(FFEBUR128State * st, > size_t * above_thresh_counter, > double *relative_threshold) > { > size_t i; > - *relative_threshold = 0.0; > - *above_thresh_counter = 0; > > for (i = 0; i < 1000; ++i) { > *relative_threshold += st->d->block_energy_histogram[i] * > histogram_energies[i]; > *above_thresh_counter += st->d->block_energy_histogram[i]; > } > +} > > +static void ebur128_finalize_relative_threshold(size_t *above_thresh_counter, > + double *relative_threshold) > +{ > if (*above_thresh_counter != 0) { > *relative_threshold /= (double) *above_thresh_counter; > *relative_threshold *= RELATIVE_GATE_FACTOR; > } > - > - return 0; > } > > static int ebur128_gated_loudness(FFEBUR128State ** sts, size_t size, > double *out) > { > double gated_loudness = 0.0; > - double relative_threshold; > - size_t above_thresh_counter; > + double relative_threshold = 0.0; > + size_t above_thresh_counter = 0; > size_t i, j, start_index; > > - for (i = 0; i < size; i++) { > - if (sts[i] > - && (sts[i]->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) { > + for (i = 0; i < size; i++) > + if ((sts[i]->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) > return AVERROR(EINVAL); > - } > - } > > - for (i = 0; i < size; i++) { > - if (!sts[i]) > - continue; > - ebur128_calc_relative_threshold(sts[i], &above_thresh_counter, > + for (i = 0; i < size; i++) > + ebur128_sum_relative_threshold(sts[i], &above_thresh_counter, > + &relative_threshold); > + ebur128_finalize_relative_threshold(&above_thresh_counter, > &relative_threshold); > - } > if (!above_thresh_counter) { > *out = -HUGE_VAL; > return 0; > @@ -596,14 +592,16 @@ static int ebur128_gated_loudness(FFEBUR128State ** sts, size_t size, > > int ff_ebur128_relative_threshold(FFEBUR128State * st, double *out) > { > - double relative_threshold; > - size_t above_thresh_counter; > + double relative_threshold = 0.0; > + size_t above_thresh_counter = 0; > > if ((st->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) > return AVERROR(EINVAL); > > - ebur128_calc_relative_threshold(st, &above_thresh_counter, > - &relative_threshold); > + ebur128_sum_relative_threshold(st, &above_thresh_counter, > + &relative_threshold); > + ebur128_finalize_relative_threshold(&above_thresh_counter, > + &relative_threshold); > > if (!above_thresh_counter) { > *out = -70.0; > -- > 2.10.2 Ping... Thanks, Marton
diff --git a/libavfilter/ebur128.c b/libavfilter/ebur128.c index 012df54..e064c59 100644 --- a/libavfilter/ebur128.c +++ b/libavfilter/ebur128.c @@ -519,49 +519,45 @@ FF_EBUR128_ADD_FRAMES(int) FF_EBUR128_ADD_FRAMES(float) FF_EBUR128_ADD_FRAMES(double) -static int ebur128_calc_relative_threshold(FFEBUR128State * st, +static void ebur128_sum_relative_threshold(FFEBUR128State * st, size_t * above_thresh_counter, double *relative_threshold) { size_t i; - *relative_threshold = 0.0; - *above_thresh_counter = 0; for (i = 0; i < 1000; ++i) { *relative_threshold += st->d->block_energy_histogram[i] * histogram_energies[i]; *above_thresh_counter += st->d->block_energy_histogram[i]; } +} +static void ebur128_finalize_relative_threshold(size_t *above_thresh_counter, + double *relative_threshold) +{ if (*above_thresh_counter != 0) { *relative_threshold /= (double) *above_thresh_counter; *relative_threshold *= RELATIVE_GATE_FACTOR; } - - return 0; } static int ebur128_gated_loudness(FFEBUR128State ** sts, size_t size, double *out) { double gated_loudness = 0.0; - double relative_threshold; - size_t above_thresh_counter; + double relative_threshold = 0.0; + size_t above_thresh_counter = 0; size_t i, j, start_index; - for (i = 0; i < size; i++) { - if (sts[i] - && (sts[i]->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) { + for (i = 0; i < size; i++) + if ((sts[i]->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) return AVERROR(EINVAL); - } - } - for (i = 0; i < size; i++) { - if (!sts[i]) - continue; - ebur128_calc_relative_threshold(sts[i], &above_thresh_counter, + for (i = 0; i < size; i++) + ebur128_sum_relative_threshold(sts[i], &above_thresh_counter, + &relative_threshold); + ebur128_finalize_relative_threshold(&above_thresh_counter, &relative_threshold); - } if (!above_thresh_counter) { *out = -HUGE_VAL; return 0; @@ -596,14 +592,16 @@ static int ebur128_gated_loudness(FFEBUR128State ** sts, size_t size, int ff_ebur128_relative_threshold(FFEBUR128State * st, double *out) { - double relative_threshold; - size_t above_thresh_counter; + double relative_threshold = 0.0; + size_t above_thresh_counter = 0; if ((st->mode & FF_EBUR128_MODE_I) != FF_EBUR128_MODE_I) return AVERROR(EINVAL); - ebur128_calc_relative_threshold(st, &above_thresh_counter, - &relative_threshold); + ebur128_sum_relative_threshold(st, &above_thresh_counter, + &relative_threshold); + ebur128_finalize_relative_threshold(&above_thresh_counter, + &relative_threshold); if (!above_thresh_counter) { *out = -70.0;
Also disallow NULL contexts. Fixes Coverity CID 1396273, 1396279. Signed-off-by: Marton Balint <cus@passwd.hu> --- libavfilter/ebur128.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-)