GCC Code Coverage Report
Directory: ../../../ffmpeg/ Exec Total Coverage
File: src/libavcodec/celp_math.h Lines: 0 3 0.0 %
Date: 2019-11-22 03:34:36 Branches: 0 2 0.0 %

Line Branch Exec Source
1
/*
2
 * Various fixed-point math operations
3
 *
4
 * Copyright (c) 2008 Vladimir Voroshilov
5
 *
6
 * This file is part of FFmpeg.
7
 *
8
 * FFmpeg is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public
10
 * License as published by the Free Software Foundation; either
11
 * version 2.1 of the License, or (at your option) any later version.
12
 *
13
 * FFmpeg is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public
19
 * License along with FFmpeg; if not, write to the Free Software
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
 */
22
23
#ifndef AVCODEC_CELP_MATH_H
24
#define AVCODEC_CELP_MATH_H
25
26
#include <stdint.h>
27
28
typedef struct CELPMContext {
29
    /**
30
     * Return the dot product.
31
     * @param a input data array
32
     * @param b input data array
33
     * @param length number of elements
34
     *
35
     * @return dot product = sum of elementwise products
36
     */
37
    float (*dot_productf)(const float* a, const float* b, int length);
38
39
}CELPMContext;
40
41
/**
42
 * Initialize CELPMContext.
43
 */
44
void ff_celp_math_init(CELPMContext *c);
45
void ff_celp_math_init_mips(CELPMContext *c);
46
47
/**
48
 * fixed-point implementation of exp2(x) in [0; 1] domain.
49
 * @param power argument to exp2, 0 <= power <= 0x7fff
50
 *
51
 * @return value of (1<<20) * exp2(power / (1<<15))
52
 *         0x8000c <= result <= 0xfffea
53
 */
54
int ff_exp2(uint16_t power);
55
56
/**
57
 * Calculate log2(x).
58
 * @param value function argument, 0 < value <= 7fff ffff
59
 *
60
 * @return value of (1<<15) * log2(value)
61
 */
62
int ff_log2_q15(uint32_t value);
63
64
/**
65
 * Calculate the dot product of 2 int16_t vectors.
66
 * @param a input data array
67
 * @param b input data array
68
 * @param length number of elements
69
 *
70
 * @return dot product = sum of elementwise products
71
 */
72
int64_t ff_dot_product(const int16_t *a, const int16_t *b, int length);
73
74
/**
75
 * Shift value left or right depending on sign of offset parameter.
76
 * @param value value to shift
77
 * @param offset shift offset
78
 *
79
 * @return value << offset, if offset>=0; value >> -offset - otherwise
80
 */
81
static inline int bidir_sal(int value, int offset)
82
{
83
    if(offset < 0) return value >> -offset;
84
    else           return value <<  offset;
85
}
86
87
/**
88
 * Return the dot product.
89
 * @param a input data array
90
 * @param b input data array
91
 * @param length number of elements
92
 *
93
 * @return dot product = sum of elementwise products
94
 */
95
float ff_dot_productf(const float* a, const float* b, int length);
96
97
#endif /* AVCODEC_CELP_MATH_H */