FFmpeg
libavcodec
vorbisdsp.c
Go to the documentation of this file.
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 "config.h"
20
#include "
libavutil/attributes.h
"
21
#include "
vorbisdsp.h
"
22
23
static
void
vorbis_inverse_coupling_c
(
float
*mag,
float
*ang, ptrdiff_t blocksize)
24
{
25
for
(ptrdiff_t
i
= 0;
i
< blocksize;
i
++) {
26
float
angi = ang[
i
], magi = mag[
i
];
27
28
if
(magi > 0.
f
) {
29
if
(angi > 0.
f
) {
30
ang[
i
] = magi - angi;
31
}
else
{
32
ang[
i
] = magi;
33
mag[
i
] = magi + angi;
34
}
35
}
else
{
36
if
(angi > 0.
f
) {
37
ang[
i
] = magi + angi;
38
}
else
{
39
ang[
i
] = magi;
40
mag[
i
] = magi - angi;
41
}
42
}
43
}
44
}
45
46
av_cold
void
ff_vorbisdsp_init
(
VorbisDSPContext
*dsp)
47
{
48
dsp->
vorbis_inverse_coupling
=
vorbis_inverse_coupling_c
;
49
50
#if ARCH_AARCH64
51
ff_vorbisdsp_init_aarch64
(dsp);
52
#elif ARCH_ARM
53
ff_vorbisdsp_init_arm
(dsp);
54
#elif ARCH_PPC
55
ff_vorbisdsp_init_ppc
(dsp);
56
#elif ARCH_RISCV
57
ff_vorbisdsp_init_riscv
(dsp);
58
#elif ARCH_X86
59
ff_vorbisdsp_init_x86
(dsp);
60
#endif
61
}
ff_vorbisdsp_init_arm
av_cold void ff_vorbisdsp_init_arm(VorbisDSPContext *c)
Definition:
vorbisdsp_init_arm.c:30
ff_vorbisdsp_init_riscv
av_cold void ff_vorbisdsp_init_riscv(VorbisDSPContext *c)
Definition:
vorbisdsp_init.c:29
vorbis_inverse_coupling_c
static void vorbis_inverse_coupling_c(float *mag, float *ang, ptrdiff_t blocksize)
Definition:
vorbisdsp.c:23
VorbisDSPContext
Definition:
vorbisdsp.h:24
av_cold
#define av_cold
Definition:
attributes.h:90
VorbisDSPContext::vorbis_inverse_coupling
void(* vorbis_inverse_coupling)(float *mag, float *ang, ptrdiff_t blocksize)
Definition:
vorbisdsp.h:26
f
f
Definition:
af_crystalizer.c:122
vorbisdsp.h
ff_vorbisdsp_init_aarch64
av_cold void ff_vorbisdsp_init_aarch64(VorbisDSPContext *c)
Definition:
vorbisdsp_init.c:27
attributes.h
i
#define i(width, name, range_min, range_max)
Definition:
cbs_h2645.c:256
ff_vorbisdsp_init
av_cold void ff_vorbisdsp_init(VorbisDSPContext *dsp)
Definition:
vorbisdsp.c:46
ff_vorbisdsp_init_ppc
av_cold void ff_vorbisdsp_init_ppc(VorbisDSPContext *c)
Definition:
vorbisdsp_altivec.c:55
ff_vorbisdsp_init_x86
void ff_vorbisdsp_init_x86(VorbisDSPContext *dsp)
Definition:
vorbisdsp_init.c:30
Generated on Mon Nov 25 2024 19:22:04 for FFmpeg by
1.8.17