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

Reply via email to