Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
fbe6a51b
Unverified
Commit
fbe6a51b
authored
Oct 29, 2022
by
Lynne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aacsbr: convert to lavu/tx
parent
5f1111e4
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
49 additions
and
22 deletions
+49
-22
aacdec_template.c
libavcodec/aacdec_template.c
+4
-1
aacsbr.h
libavcodec/aacsbr.h
+1
-1
aacsbr_template.c
libavcodec/aacsbr_template.c
+39
-17
sbr.h
libavcodec/sbr.h
+5
-3
No files found.
libavcodec/aacdec_template.c
View file @
fbe6a51b
...
...
@@ -135,9 +135,12 @@ static av_cold int che_configure(AACContext *ac,
return
AVERROR_INVALIDDATA
;
if
(
che_pos
)
{
if
(
!
ac
->
che
[
type
][
id
])
{
int
ret
;
if
(
!
(
ac
->
che
[
type
][
id
]
=
av_mallocz
(
sizeof
(
ChannelElement
))))
return
AVERROR
(
ENOMEM
);
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
ac
,
&
ac
->
che
[
type
][
id
]
->
sbr
,
type
);
ret
=
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
ac
,
&
ac
->
che
[
type
][
id
]
->
sbr
,
type
);
if
(
ret
<
0
)
return
ret
;
}
if
(
type
!=
TYPE_CCE
)
{
if
(
*
channels
>=
MAX_CHANNELS
-
(
type
==
TYPE_CPE
||
(
type
==
TYPE_SCE
&&
ac
->
oc
[
1
].
m4ac
.
ps
==
1
)))
{
...
...
libavcodec/aacsbr.h
View file @
fbe6a51b
...
...
@@ -81,7 +81,7 @@ static const int8_t vlc_sbr_lav[10] =
/** Initialize SBR. */
void
AAC_RENAME
(
ff_aac_sbr_init
)(
void
);
/** Initialize one SBR context. */
void
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
AACContext
*
ac
,
SpectralBandReplication
*
sbr
,
int
id_aac
);
int
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
AACContext
*
ac
,
SpectralBandReplication
*
sbr
,
int
id_aac
);
/** Close one SBR context. */
void
AAC_RENAME
(
ff_aac_sbr_ctx_close
)(
SpectralBandReplication
*
sbr
);
/** Decode one SBR element. */
...
...
libavcodec/aacsbr_template.c
View file @
fbe6a51b
...
...
@@ -89,10 +89,14 @@ static void sbr_turnoff(SpectralBandReplication *sbr) {
memset
(
&
sbr
->
spectrum_params
,
-
1
,
sizeof
(
SpectrumParameters
));
}
av_cold
void
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
AACContext
*
ac
,
SpectralBandReplication
*
sbr
,
int
id_aac
)
av_cold
int
AAC_RENAME
(
ff_aac_sbr_ctx_init
)(
AACContext
*
ac
,
SpectralBandReplication
*
sbr
,
int
id_aac
)
{
if
(
sbr
->
mdct
.
mdct_bits
)
return
;
int
ret
;
float
scale
;
if
(
sbr
->
mdct
)
return
0
;
sbr
->
kx
[
0
]
=
sbr
->
kx
[
1
];
sbr
->
id_aac
=
id_aac
;
sbr_turnoff
(
sbr
);
...
...
@@ -101,17 +105,32 @@ av_cold void AAC_RENAME(ff_aac_sbr_ctx_init)(AACContext *ac, SpectralBandReplica
/* SBR requires samples to be scaled to +/-32768.0 to work correctly.
* mdct scale factors are adjusted to scale up from +/-1.0 at analysis
* and scale back down at synthesis. */
AAC_RENAME_32
(
ff_mdct_init
)(
&
sbr
->
mdct
,
7
,
1
,
1
.
0
/
(
64
*
32768
.
0
));
AAC_RENAME_32
(
ff_mdct_init
)(
&
sbr
->
mdct_ana
,
7
,
1
,
-
2
.
0
*
32768
.
0
);
scale
=
USE_FIXED
?
1
:
1
.
0
/
(
64
*
32768
);
ret
=
av_tx_init
(
&
sbr
->
mdct
,
&
sbr
->
mdct_fn
,
USE_FIXED
?
AV_TX_INT32_MDCT
:
AV_TX_FLOAT_MDCT
,
1
,
64
,
&
scale
,
0
);
if
(
ret
<
0
)
return
ret
;
scale
=
USE_FIXED
?
-
1
.
0
:
-
2
.
0
*
32768
;
ret
=
av_tx_init
(
&
sbr
->
mdct_ana
,
&
sbr
->
mdct_ana_fn
,
USE_FIXED
?
AV_TX_INT32_MDCT
:
AV_TX_FLOAT_MDCT
,
1
,
64
,
&
scale
,
0
);
if
(
ret
<
0
)
return
ret
;
AAC_RENAME
(
ff_ps_ctx_init
)(
&
sbr
->
ps
);
AAC_RENAME
(
ff_sbrdsp_init
)(
&
sbr
->
dsp
);
aacsbr_func_ptr_init
(
&
sbr
->
c
);
return
0
;
}
av_cold
void
AAC_RENAME
(
ff_aac_sbr_ctx_close
)(
SpectralBandReplication
*
sbr
)
{
AAC_RENAME_32
(
ff_mdct_end
)
(
&
sbr
->
mdct
);
AAC_RENAME_32
(
ff_mdct_end
)
(
&
sbr
->
mdct_ana
);
av_tx_uninit
(
&
sbr
->
mdct
);
av_tx_uninit
(
&
sbr
->
mdct_ana
);
}
static
int
qsort_comparison_function_int16
(
const
void
*
a
,
const
void
*
b
)
...
...
@@ -1164,9 +1183,11 @@ int AAC_RENAME(ff_decode_sbr_extension)(AACContext *ac, SpectralBandReplication
*/
#ifndef sbr_qmf_analysis
#if USE_FIXED
static
void
sbr_qmf_analysis
(
AVFixedDSPContext
*
dsp
,
FFTContext
*
mdct
,
static
void
sbr_qmf_analysis
(
AVFixedDSPContext
*
dsp
,
AVTXContext
*
mdct
,
av_tx_fn
mdct_fn
,
#else
static
void
sbr_qmf_analysis
(
AVFloatDSPContext
*
dsp
,
FFTContext
*
mdct
,
static
void
sbr_qmf_analysis
(
AVFloatDSPContext
*
dsp
,
AVTXContext
*
mdct
,
av_tx_fn
mdct_fn
,
#endif
/* USE_FIXED */
SBRDSPContext
*
sbrdsp
,
const
INTFLOAT
*
in
,
INTFLOAT
*
x
,
INTFLOAT
z
[
320
],
INTFLOAT
W
[
2
][
32
][
32
][
2
],
int
buf_idx
)
...
...
@@ -1197,7 +1218,7 @@ static void sbr_qmf_analysis(AVFloatDSPContext *dsp, FFTContext *mdct,
}
}
#endif
mdct
->
imdct_half
(
mdct
,
z
,
z
+
64
);
mdct
_fn
(
mdct
,
z
,
z
+
64
,
sizeof
(
INTFLOAT
)
);
sbrdsp
->
qmf_post_shuffle
(
W
[
buf_idx
][
i
],
z
);
x
+=
32
;
}
...
...
@@ -1209,7 +1230,7 @@ static void sbr_qmf_analysis(AVFloatDSPContext *dsp, FFTContext *mdct,
* (14496-3 sp04 p206)
*/
#ifndef sbr_qmf_synthesis
static
void
sbr_qmf_synthesis
(
FFTContext
*
mdct
,
static
void
sbr_qmf_synthesis
(
AVTXContext
*
mdct
,
av_tx_fn
mdct_fn
,
#if USE_FIXED
SBRDSPContext
*
sbrdsp
,
AVFixedDSPContext
*
dsp
,
#else
...
...
@@ -1237,12 +1258,12 @@ static void sbr_qmf_synthesis(FFTContext *mdct,
X
[
0
][
i
][
n
]
=
-
X
[
0
][
i
][
n
];
X
[
0
][
i
][
32
+
n
]
=
X
[
1
][
i
][
31
-
n
];
}
mdct
->
imdct_half
(
mdct
,
mdct_buf
[
0
],
X
[
0
][
i
]
);
mdct
_fn
(
mdct
,
mdct_buf
[
0
],
X
[
0
][
i
],
sizeof
(
INTFLOAT
)
);
sbrdsp
->
qmf_deint_neg
(
v
,
mdct_buf
[
0
]);
}
else
{
sbrdsp
->
neg_odd_64
(
X
[
1
][
i
]);
mdct
->
imdct_half
(
mdct
,
mdct_buf
[
0
],
X
[
0
][
i
]
);
mdct
->
imdct_half
(
mdct
,
mdct_buf
[
1
],
X
[
1
][
i
]
);
mdct
_fn
(
mdct
,
mdct_buf
[
0
],
X
[
0
][
i
],
sizeof
(
INTFLOAT
)
);
mdct
_fn
(
mdct
,
mdct_buf
[
1
],
X
[
1
][
i
],
sizeof
(
INTFLOAT
)
);
sbrdsp
->
qmf_deint_bfly
(
v
,
mdct_buf
[
1
],
mdct_buf
[
0
]);
}
dsp
->
vector_fmul
(
out
,
v
,
sbr_qmf_window
,
64
>>
div
);
...
...
@@ -1507,7 +1528,8 @@ void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int
}
for
(
ch
=
0
;
ch
<
nch
;
ch
++
)
{
/* decode channel */
sbr_qmf_analysis
(
ac
->
fdsp
,
&
sbr
->
mdct_ana
,
&
sbr
->
dsp
,
ch
?
R
:
L
,
sbr
->
data
[
ch
].
analysis_filterbank_samples
,
sbr_qmf_analysis
(
ac
->
fdsp
,
sbr
->
mdct_ana
,
sbr
->
mdct_ana_fn
,
&
sbr
->
dsp
,
ch
?
R
:
L
,
sbr
->
data
[
ch
].
analysis_filterbank_samples
,
(
INTFLOAT
*
)
sbr
->
qmf_filter_scratch
,
sbr
->
data
[
ch
].
W
,
sbr
->
data
[
ch
].
Ypos
);
sbr
->
c
.
sbr_lf_gen
(
ac
,
sbr
,
sbr
->
X_low
,
...
...
@@ -1554,13 +1576,13 @@ void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int
nch
=
2
;
}
sbr_qmf_synthesis
(
&
sbr
->
mdct
,
&
sbr
->
dsp
,
ac
->
fdsp
,
sbr_qmf_synthesis
(
sbr
->
mdct
,
sbr
->
mdct_fn
,
&
sbr
->
dsp
,
ac
->
fdsp
,
L
,
sbr
->
X
[
0
],
sbr
->
qmf_filter_scratch
,
sbr
->
data
[
0
].
synthesis_filterbank_samples
,
&
sbr
->
data
[
0
].
synthesis_filterbank_samples_offset
,
downsampled
);
if
(
nch
==
2
)
sbr_qmf_synthesis
(
&
sbr
->
mdct
,
&
sbr
->
dsp
,
ac
->
fdsp
,
sbr_qmf_synthesis
(
sbr
->
mdct
,
sbr
->
mdct_fn
,
&
sbr
->
dsp
,
ac
->
fdsp
,
R
,
sbr
->
X
[
1
],
sbr
->
qmf_filter_scratch
,
sbr
->
data
[
1
].
synthesis_filterbank_samples
,
&
sbr
->
data
[
1
].
synthesis_filterbank_samples_offset
,
...
...
libavcodec/sbr.h
View file @
fbe6a51b
...
...
@@ -32,8 +32,8 @@
#include <stdint.h>
#include "libavutil/mem_internal.h"
#include "libavutil/tx.h"
#include "fft.h"
#include "aacps.h"
#include "sbrdsp.h"
...
...
@@ -211,8 +211,10 @@ struct SpectralBandReplication {
AAC_FLOAT
s_m
[
7
][
48
];
AAC_FLOAT
gain
[
7
][
48
];
DECLARE_ALIGNED
(
32
,
INTFLOAT
,
qmf_filter_scratch
)[
5
][
64
];
FFTContext
mdct_ana
;
FFTContext
mdct
;
AVTXContext
*
mdct_ana
;
av_tx_fn
mdct_ana_fn
;
AVTXContext
*
mdct
;
av_tx_fn
mdct_fn
;
SBRDSPContext
dsp
;
AACSBRContext
c
;
};
...
...
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