On Wed, 25 Jan 2017, Marton Balint wrote:
Also disallow NULL contexts. Fixes Coverity CID 1396273, 1396279. Signed-off-by: Marton Balint <c...@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 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel