Go to the documentation of this file.
32 #ifndef AVCODEC_AAC_AACDEC_FIXED_COUPLING_H
33 #define AVCODEC_AAC_AACDEC_FIXED_COUPLING_H
48 int *dest = target->coeffs_fixed;
49 const int *
src = cce->ch[0].coeffs_fixed;
50 int g,
i, group, k, idx = 0;
53 "Dependent coupling is not supported together with LTP\n");
58 if (cce->ch[0].band_type[idx] !=
ZERO_BT) {
59 const int gain = cce->coup.gain[
index][idx];
64 shift = (-gain-1024) >> 3;
68 shift = (gain-1024) >> 3;
73 }
else if (
shift < 0) {
77 for (group = 0; group < ics->
group_len[
g]; group++) {
86 for (group = 0; group < ics->
group_len[
g]; group++) {
90 dest[group * 128 + k] +=
tmp * (1
U <<
shift);
111 const int gain = cce->coup.gain[
index][0];
112 const int *
src = cce->ch[0].output_fixed;
113 unsigned int *dest = target->output_fixed;
114 const int len = 1024 << (ac->oc[1].m4ac.sbr == 1);
117 shift = (gain-1024) >> 3;
120 }
else if (
shift < 0) {
124 for (
i = 0;
i <
len;
i++) {
130 for (
i = 0;
i <
len;
i++) {
static void AAC_RENAME() apply_independent_coupling(AACDecContext *ac, SingleChannelElement *target, ChannelElement *cce, int index)
Apply independent channel coupling (applied after IMDCT).
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
@ ZERO_BT
Scalefactors and spectral data are all zero.
static const int offsets[]
Individual Channel Stream.
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
static int shift(int a, int b)
static const int cce_scale_fixed[8]
Single Channel Element - used for both SCE and LFE elements.
#define i(width, name, range_min, range_max)
static av_always_inline av_const double round(double x)
channel element - generic struct for SCE/CPE/CCE/LFE
const uint16_t * swb_offset
table of offsets to the lowest spectral coefficient of a scalefactor band, sfb, for a particular wind...
main AAC decoding context
static void AAC_RENAME() apply_dependent_coupling(AACDecContext *ac, SingleChannelElement *target, ChannelElement *cce, int index)
Apply dependent channel coupling (applied before IMDCT).
uint8_t max_sfb
number of scalefactor bands per group
@ AOT_AAC_LTP
Y Long Term Prediction.