FFmpeg
sbrdsp_template.c
Go to the documentation of this file.
1 /*
2  * AAC Spectral Band Replication decoding functions
3  * Copyright (c) 2008-2009 Robert Swain ( rob opendot cl )
4  * Copyright (c) 2009-2010 Alex Converse <alex.converse@gmail.com>
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 static void sbr_sum64x5_c(INTFLOAT *z)
24 {
25  int k;
26  for (k = 0; k < 64; k++) {
27  INTFLOAT f = z[k] + z[k + 64] + z[k + 128] + z[k + 192] + z[k + 256];
28  z[k] = f;
29  }
30 }
31 
32 static void sbr_qmf_deint_bfly_c(INTFLOAT *v, const INTFLOAT *src0, const INTFLOAT *src1)
33 {
34  int i;
35  for (i = 0; i < 64; i++) {
36 #if USE_FIXED
37  v[ i] = (int)(0x10U + src0[i] - src1[63 - i]) >> 5;
38  v[127 - i] = (int)(0x10U + src0[i] + src1[63 - i]) >> 5;
39 #else
40  v[ i] = src0[i] - src1[63 - i];
41  v[127 - i] = src0[i] + src1[63 - i];
42 #endif
43  }
44 }
45 
46 static void sbr_hf_apply_noise_0(INTFLOAT (*Y)[2], const AAC_FLOAT *s_m,
47  const AAC_FLOAT *q_filt, int noise,
48  int kx, int m_max)
49 {
50  sbr_hf_apply_noise(Y, s_m, q_filt, noise, (INTFLOAT)1.0, (INTFLOAT)0.0, m_max);
51 }
52 
53 static void sbr_hf_apply_noise_1(INTFLOAT (*Y)[2], const AAC_FLOAT *s_m,
54  const AAC_FLOAT *q_filt, int noise,
55  int kx, int m_max)
56 {
57  INTFLOAT phi_sign = 1 - 2 * (kx & 1);
58  sbr_hf_apply_noise(Y, s_m, q_filt, noise, (INTFLOAT)0.0, phi_sign, m_max);
59 }
60 
61 static void sbr_hf_apply_noise_2(INTFLOAT (*Y)[2], const AAC_FLOAT *s_m,
62  const AAC_FLOAT *q_filt, int noise,
63  int kx, int m_max)
64 {
65  sbr_hf_apply_noise(Y, s_m, q_filt, noise, (INTFLOAT)-1.0, (INTFLOAT)0.0, m_max);
66 }
67 
68 static void sbr_hf_apply_noise_3(INTFLOAT (*Y)[2], const AAC_FLOAT *s_m,
69  const AAC_FLOAT *q_filt, int noise,
70  int kx, int m_max)
71 {
72  INTFLOAT phi_sign = 1 - 2 * (kx & 1);
73  sbr_hf_apply_noise(Y, s_m, q_filt, noise, (INTFLOAT)0.0, -phi_sign, m_max);
74 }
75 
77 {
78  s->sum64x5 = sbr_sum64x5_c;
79  s->sum_square = sbr_sum_square_c;
80  s->neg_odd_64 = sbr_neg_odd_64_c;
81  s->qmf_pre_shuffle = sbr_qmf_pre_shuffle_c;
82  s->qmf_post_shuffle = sbr_qmf_post_shuffle_c;
83  s->qmf_deint_neg = sbr_qmf_deint_neg_c;
84  s->qmf_deint_bfly = sbr_qmf_deint_bfly_c;
85  s->autocorrelate = sbr_autocorrelate_c;
86  s->hf_gen = sbr_hf_gen_c;
87  s->hf_g_filt = sbr_hf_g_filt_c;
88 
89  s->hf_apply_noise[0] = sbr_hf_apply_noise_0;
90  s->hf_apply_noise[1] = sbr_hf_apply_noise_1;
91  s->hf_apply_noise[2] = sbr_hf_apply_noise_2;
92  s->hf_apply_noise[3] = sbr_hf_apply_noise_3;
93 
94 #if !USE_FIXED
95 #if ARCH_ARM
97 #elif ARCH_AARCH64
99 #elif ARCH_X86
101 #elif ARCH_MIPS
103 #endif
104 #endif /* !USE_FIXED */
105 }
SBRDSPContext
Definition: sbrdsp.h:27
src1
const pixel * src1
Definition: h264pred_template.c:421
sbr_hf_apply_noise_1
static void sbr_hf_apply_noise_1(INTFLOAT(*Y)[2], const AAC_FLOAT *s_m, const AAC_FLOAT *q_filt, int noise, int kx, int m_max)
Definition: sbrdsp_template.c:53
sbr_hf_gen_c
static void sbr_hf_gen_c(float(*X_high)[2], const float(*X_low)[2], const float alpha0[2], const float alpha1[2], float bw, int start, int end)
Definition: sbrdsp.c:158
av_cold
#define av_cold
Definition: attributes.h:90
s
#define s(width, name)
Definition: cbs_vp9.c:256
sbr_qmf_pre_shuffle_c
static void sbr_qmf_pre_shuffle_c(float *z)
Definition: sbrdsp.c:56
ff_sbrdsp_init
av_cold void AAC_RENAME() ff_sbrdsp_init(SBRDSPContext *s)
Definition: sbrdsp_template.c:76
sbr_qmf_deint_bfly_c
static void sbr_qmf_deint_bfly_c(INTFLOAT *v, const INTFLOAT *src0, const INTFLOAT *src1)
Definition: sbrdsp_template.c:32
sbr_sum64x5_c
static void sbr_sum64x5_c(INTFLOAT *z)
Definition: sbrdsp_template.c:23
ff_sbrdsp_init_arm
av_cold void ff_sbrdsp_init_arm(SBRDSPContext *s)
Definition: sbrdsp_init_arm.c:53
sbr_hf_apply_noise_3
static void sbr_hf_apply_noise_3(INTFLOAT(*Y)[2], const AAC_FLOAT *s_m, const AAC_FLOAT *q_filt, int noise, int kx, int m_max)
Definition: sbrdsp_template.c:68
sbr_qmf_deint_neg_c
static void sbr_qmf_deint_neg_c(float *v, const float *src)
Definition: sbrdsp.c:86
sbr_hf_apply_noise_2
static void sbr_hf_apply_noise_2(INTFLOAT(*Y)[2], const AAC_FLOAT *s_m, const AAC_FLOAT *q_filt, int noise, int kx, int m_max)
Definition: sbrdsp_template.c:61
f
f
Definition: af_crystalizer.c:122
sbr_hf_apply_noise
static av_always_inline void sbr_hf_apply_noise(float(*Y)[2], const float *s_m, const float *q_filt, int noise, float phi_sign0, float phi_sign1, int m_max)
Definition: sbrdsp.c:197
sbr_sum_square_c
static float sbr_sum_square_c(float(*x)[2], int n)
Definition: sbrdsp.c:30
sbr_autocorrelate_c
static void sbr_autocorrelate_c(const float x[40][2], float phi[3][2][2])
Definition: sbrdsp.c:134
Y
#define Y
Definition: boxblur.h:37
ff_sbrdsp_init_aarch64
av_cold void ff_sbrdsp_init_aarch64(SBRDSPContext *s)
Definition: sbrdsp_init_aarch64.c:50
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
sbr_qmf_post_shuffle_c
static void sbr_qmf_post_shuffle_c(float W[32][2], const float *z)
Definition: sbrdsp.c:73
AAC_RENAME
#define AAC_RENAME(x)
Definition: aac_defines.h:79
sbr_hf_apply_noise_0
static void sbr_hf_apply_noise_0(INTFLOAT(*Y)[2], const AAC_FLOAT *s_m, const AAC_FLOAT *q_filt, int noise, int kx, int m_max)
Definition: sbrdsp_template.c:46
sbr_hf_g_filt_c
static void sbr_hf_g_filt_c(float(*Y)[2], const float(*X_high)[40][2], const float *g_filt, int m_max, intptr_t ixh)
Definition: sbrdsp.c:186
noise
static int noise(AVBSFContext *ctx, AVPacket *pkt)
Definition: noise_bsf.c:120
src0
const pixel *const src0
Definition: h264pred_template.c:420
AAC_FLOAT
float AAC_FLOAT
Definition: aac_defines.h:86
ff_sbrdsp_init_x86
void ff_sbrdsp_init_x86(SBRDSPContext *s)
Definition: sbrdsp_init.c:58
int
int
Definition: ffmpeg_filter.c:156
sbr_neg_odd_64_c
static void sbr_neg_odd_64_c(float *x)
Definition: sbrdsp.c:46
INTFLOAT
float INTFLOAT
Definition: aac_defines.h:82
ff_sbrdsp_init_mips
void ff_sbrdsp_init_mips(SBRDSPContext *s)
Definition: sbrdsp_mips.c:891