FFmpeg
Loading...
Searching...
No Matches
libavfilter
af_afirdsp.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 Paul B Mahol
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVFILTER_AFIRDSP_H
22
#define AVFILTER_AFIRDSP_H
23
24
#include <stddef.h>
25
26
#include "config.h"
27
#include "
libavutil/attributes.h
"
28
29
typedef
struct
AudioFIRDSPContext
{
30
void (*
fcmul_add
)(
float
*sum,
const
float
*t,
const
float
*
c
,
31
ptrdiff_t
len
);
32
void (*
dcmul_add
)(
double
*sum,
const
double
*t,
const
double
*
c
,
33
ptrdiff_t
len
);
34
}
AudioFIRDSPContext
;
35
36
void
ff_afir_init_riscv
(
AudioFIRDSPContext
*
s
);
37
void
ff_afir_init_x86
(
AudioFIRDSPContext
*
s
);
38
39
static
void
fcmul_add_c
(
float
*sum,
const
float
*t,
const
float
*
c
, ptrdiff_t
len
)
40
{
41
int
n;
42
43
for
(n = 0; n <
len
; n++) {
44
const
float
cre =
c
[2 * n ];
45
const
float
cim =
c
[2 * n + 1];
46
const
float
tre = t[2 * n ];
47
const
float
tim = t[2 * n + 1];
48
49
sum[2 * n ] += tre * cre - tim * cim;
50
sum[2 * n + 1] += tre * cim + tim * cre;
51
}
52
53
sum[2 * n] += t[2 * n] *
c
[2 * n];
54
}
55
56
static
void
dcmul_add_c
(
double
*sum,
const
double
*t,
const
double
*
c
, ptrdiff_t
len
)
57
{
58
int
n;
59
60
for
(n = 0; n <
len
; n++) {
61
const
double
cre =
c
[2 * n ];
62
const
double
cim =
c
[2 * n + 1];
63
const
double
tre = t[2 * n ];
64
const
double
tim = t[2 * n + 1];
65
66
sum[2 * n ] += tre * cre - tim * cim;
67
sum[2 * n + 1] += tre * cim + tim * cre;
68
}
69
70
sum[2 * n] += t[2 * n] *
c
[2 * n];
71
}
72
73
av_unused
static
void
ff_afir_init
(
AudioFIRDSPContext
*dsp)
74
{
75
dsp->
fcmul_add
=
fcmul_add_c
;
76
dsp->
dcmul_add
=
dcmul_add_c
;
77
78
#if ARCH_RISCV
79
ff_afir_init_riscv
(dsp);
80
#elif ARCH_X86 && HAVE_X86ASM
81
ff_afir_init_x86
(dsp);
82
#endif
83
}
84
85
#endif
/* AVFILTER_AFIRDSP_H */
ff_afir_init
static av_unused void ff_afir_init(AudioFIRDSPContext *dsp)
Definition
af_afirdsp.h:73
dcmul_add_c
static void dcmul_add_c(double *sum, const double *t, const double *c, ptrdiff_t len)
Definition
af_afirdsp.h:56
ff_afir_init_riscv
void ff_afir_init_riscv(AudioFIRDSPContext *s)
Definition
af_afir_init.c:31
ff_afir_init_x86
void ff_afir_init_x86(AudioFIRDSPContext *s)
Definition
af_afir_init.c:32
fcmul_add_c
static void fcmul_add_c(float *sum, const float *t, const float *c, ptrdiff_t len)
Definition
af_afirdsp.h:39
s
#define s(width, name)
Definition
cbs_vp9.c:198
attributes.h
Macro definitions for various function/variable attributes.
av_unused
#define av_unused
Definition
attributes.h:164
AudioFIRDSPContext
Definition
af_afirdsp.h:29
AudioFIRDSPContext::fcmul_add
void(* fcmul_add)(float *sum, const float *t, const float *c, ptrdiff_t len)
Definition
af_afirdsp.h:30
AudioFIRDSPContext::dcmul_add
void(* dcmul_add)(double *sum, const double *t, const double *c, ptrdiff_t len)
Definition
af_afirdsp.h:32
len
int len
Definition
vorbis_enc_data.h:426
c
static double c[64]
Definition
vsrc_mptestsrc.c:89
Generated on Sun Aug 16 2026 20:20:55 for FFmpeg by
1.13.2