Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
cc412b71
Commit
cc412b71
authored
Feb 23, 2012
by
Christophe Gisquet
Committed by
Alex Converse
Mar 01, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aacsbr: use a swap index for the Y matrix rather than copy buffers.
Signed-off-by:
Alex Converse
<
alex.converse@gmail.com
>
parent
63c9de64
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
14 deletions
+20
-14
aacsbr.c
libavcodec/aacsbr.c
+19
-14
sbr.h
libavcodec/sbr.h
+1
-0
No files found.
libavcodec/aacsbr.c
View file @
cc412b71
...
...
@@ -1349,8 +1349,8 @@ static int sbr_hf_gen(AACContext *ac, SpectralBandReplication *sbr,
/// Generate the subband filtered lowband
static
int
sbr_x_gen
(
SpectralBandReplication
*
sbr
,
float
X
[
2
][
38
][
64
],
const
float
X_low
[
32
][
40
][
2
],
const
float
Y
[
2
]
[
38
][
64
][
2
],
int
ch
)
const
float
Y0
[
38
][
64
][
2
],
const
float
Y1
[
38
][
64
][
2
],
const
float
X_low
[
32
][
40
][
2
],
int
ch
)
{
int
k
,
i
;
const
int
i_f
=
32
;
...
...
@@ -1364,8 +1364,8 @@ static int sbr_x_gen(SpectralBandReplication *sbr, float X[2][38][64],
}
for
(;
k
<
sbr
->
kx
[
0
]
+
sbr
->
m
[
0
];
k
++
)
{
for
(
i
=
0
;
i
<
i_Temp
;
i
++
)
{
X
[
0
][
i
][
k
]
=
Y
[
0
]
[
i
+
i_f
][
k
][
0
];
X
[
1
][
i
][
k
]
=
Y
[
0
]
[
i
+
i_f
][
k
][
1
];
X
[
0
][
i
][
k
]
=
Y
0
[
i
+
i_f
][
k
][
0
];
X
[
1
][
i
][
k
]
=
Y
0
[
i
+
i_f
][
k
][
1
];
}
}
...
...
@@ -1377,8 +1377,8 @@ static int sbr_x_gen(SpectralBandReplication *sbr, float X[2][38][64],
}
for
(;
k
<
sbr
->
kx
[
1
]
+
sbr
->
m
[
1
];
k
++
)
{
for
(
i
=
i_Temp
;
i
<
i_f
;
i
++
)
{
X
[
0
][
i
][
k
]
=
Y
[
1
]
[
i
][
k
][
0
];
X
[
1
][
i
][
k
]
=
Y
[
1
]
[
i
][
k
][
1
];
X
[
0
][
i
][
k
]
=
Y
1
[
i
][
k
][
0
];
X
[
1
][
i
][
k
]
=
Y
1
[
i
][
k
][
1
];
}
}
return
0
;
...
...
@@ -1537,7 +1537,8 @@ static void sbr_gain_calc(AACContext *ac, SpectralBandReplication *sbr,
}
/// Assembling HF Signals (14496-3 sp04 p220)
static
void
sbr_hf_assemble
(
float
Y
[
2
][
38
][
64
][
2
],
const
float
X_high
[
64
][
40
][
2
],
static
void
sbr_hf_assemble
(
float
Y1
[
38
][
64
][
2
],
const
float
X_high
[
64
][
40
][
2
],
SpectralBandReplication
*
sbr
,
SBRData
*
ch_data
,
const
int
e_a
[
2
])
{
...
...
@@ -1559,7 +1560,6 @@ static void sbr_hf_assemble(float Y[2][38][64][2], const float X_high[64][40][2]
float
(
*
g_temp
)[
48
]
=
ch_data
->
g_temp
,
(
*
q_temp
)[
48
]
=
ch_data
->
q_temp
;
int
indexnoise
=
ch_data
->
f_indexnoise
;
int
indexsine
=
ch_data
->
f_indexsine
;
memcpy
(
Y
[
0
],
Y
[
1
],
sizeof
(
Y
[
0
]));
if
(
sbr
->
reset
)
{
for
(
i
=
0
;
i
<
h_SL
;
i
++
)
{
...
...
@@ -1602,18 +1602,18 @@ static void sbr_hf_assemble(float Y[2][38][64][2], const float X_high[64][40][2]
q_filt
=
q_temp
[
i
];
}
sbr
->
dsp
.
hf_g_filt
(
Y
[
1
]
[
i
]
+
kx
,
X_high
+
kx
,
g_filt
,
m_max
,
sbr
->
dsp
.
hf_g_filt
(
Y
1
[
i
]
+
kx
,
X_high
+
kx
,
g_filt
,
m_max
,
i
+
ENVELOPE_ADJUSTMENT_OFFSET
);
if
(
e
!=
e_a
[
0
]
&&
e
!=
e_a
[
1
])
{
sbr
->
dsp
.
hf_apply_noise
[
indexsine
](
Y
[
1
]
[
i
]
+
kx
,
sbr
->
s_m
[
e
],
sbr
->
dsp
.
hf_apply_noise
[
indexsine
](
Y
1
[
i
]
+
kx
,
sbr
->
s_m
[
e
],
q_filt
,
indexnoise
,
kx
,
m_max
);
}
else
{
for
(
m
=
0
;
m
<
m_max
;
m
++
)
{
Y
[
1
]
[
i
][
m
+
kx
][
0
]
+=
Y
1
[
i
][
m
+
kx
][
0
]
+=
sbr
->
s_m
[
e
][
m
]
*
phi
[
0
][
indexsine
];
Y
[
1
]
[
i
][
m
+
kx
][
1
]
+=
Y
1
[
i
][
m
+
kx
][
1
]
+=
sbr
->
s_m
[
e
][
m
]
*
(
phi
[
1
][
indexsine
]
*
phi_sign
);
phi_sign
=
-
phi_sign
;
}
...
...
@@ -1653,12 +1653,17 @@ void ff_sbr_apply(AACContext *ac, SpectralBandReplication *sbr, int id_aac,
sbr_mapping
(
ac
,
sbr
,
&
sbr
->
data
[
ch
],
sbr
->
data
[
ch
].
e_a
);
sbr_env_estimate
(
sbr
->
e_curr
,
sbr
->
X_high
,
sbr
,
&
sbr
->
data
[
ch
]);
sbr_gain_calc
(
ac
,
sbr
,
&
sbr
->
data
[
ch
],
sbr
->
data
[
ch
].
e_a
);
sbr_hf_assemble
(
sbr
->
data
[
ch
].
Y
,
sbr
->
X_high
,
sbr
,
&
sbr
->
data
[
ch
],
sbr
->
data
[
ch
].
Ypos
^=
1
;
sbr_hf_assemble
(
sbr
->
data
[
ch
].
Y
[
sbr
->
data
[
ch
].
Ypos
],
sbr
->
X_high
,
sbr
,
&
sbr
->
data
[
ch
],
sbr
->
data
[
ch
].
e_a
);
}
/* synthesis */
sbr_x_gen
(
sbr
,
sbr
->
X
[
ch
],
sbr
->
X_low
,
sbr
->
data
[
ch
].
Y
,
ch
);
sbr_x_gen
(
sbr
,
sbr
->
X
[
ch
],
sbr
->
data
[
ch
].
Y
[
1
-
sbr
->
data
[
ch
].
Ypos
],
sbr
->
data
[
ch
].
Y
[
sbr
->
data
[
ch
].
Ypos
],
sbr
->
X_low
,
ch
);
}
if
(
ac
->
m4ac
.
ps
==
1
)
{
...
...
libavcodec/sbr.h
View file @
cc412b71
...
...
@@ -88,6 +88,7 @@ typedef struct {
///QMF values of the original signal
float
W
[
2
][
32
][
32
][
2
];
///QMF output of the HF adjustor
int
Ypos
;
DECLARE_ALIGNED
(
16
,
float
,
Y
)[
2
][
38
][
64
][
2
];
DECLARE_ALIGNED
(
16
,
float
,
g_temp
)[
42
][
48
];
float
q_temp
[
42
][
48
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment