FFmpeg
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 
47 {
49 
50 #if ARCH_AARCH64
52 #elif ARCH_ARM
54 #elif ARCH_PPC
56 #elif ARCH_RISCV
58 #elif ARCH_X86
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:269
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