GCC Code Coverage Report
Directory: ../../../ffmpeg/ Exec Total Coverage
File: src/libavcodec/tests/celp_math.c Lines: 19 19 100.0 %
Date: 2020-10-23 17:01:47 Branches: 6 10 60.0 %

Line Branch Exec Source
1
/*
2
 * This file is part of FFmpeg.
3
 *
4
 * FFmpeg is free software; you can redistribute it and/or
5
 * modify it under the terms of the GNU Lesser General Public
6
 * License as published by the Free Software Foundation; either
7
 * version 2.1 of the License, or (at your option) any later version.
8
 *
9
 * FFmpeg is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
 * Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public
15
 * License along with FFmpeg; if not, write to the Free Software
16
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
 */
18
19
#include "libavutil/libm.h"
20
#include "libavcodec/celp_math.c"
21
22
1
static inline void IsAlmostEqual(float A, float B, float epsilon)
23
{
24
1
    float diff = fabsf(A - B);
25
1
    float absa = fabsf(A);
26
1
    float absb = fabsf(B);
27
1
    float largest = (absb > absa) ? absb : absa;
28
1
    av_assert0(diff <= largest * epsilon);
29
1
}
30
31
1
int main(void)
32
{
33
    int i;
34
1
    const float f1[3]   = {0.0,  1.1,  2.2};
35
1
    const float f2[3]   = {3.3,  4.4,  5.5};
36
1
    const int16_t i1[3] = {6,  7,  8};
37
1
    const int16_t i2[3] = {9, 10, 11};
38
39
1
    float   r = ff_dot_productf(f1, f2, FF_ARRAY_ELEMS(f1));
40
1
    int64_t d = ff_dot_product(i1, i2, FF_ARRAY_ELEMS(i1));
41
42
1
    IsAlmostEqual(16.94f, r, 0.000001f);
43
1
    av_assert0(212 == d);
44
45
12
    for (i = 1024; i >= 1; i/=2)
46
11
        av_assert0(ff_log2_q15(i) == (1<<15)*((int)log2(i))+(1<<2));
47
48
1
    return 0;
49
}