mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
Move TNS and swb_offset tables from aacdectab.h to aactab.c so that they can be
shared with the AAC encoder. Originally committed as revision 19174 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
70f99f8dd2
commit
85e9296f41
@ -565,16 +565,16 @@ static int decode_ics_info(AACContext * ac, IndividualChannelStream * ics, GetBi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ics->num_windows = 8;
|
ics->num_windows = 8;
|
||||||
ics->swb_offset = swb_offset_128[ac->m4ac.sampling_index];
|
ics->swb_offset = ff_swb_offset_128[ac->m4ac.sampling_index];
|
||||||
ics->num_swb = ff_aac_num_swb_128[ac->m4ac.sampling_index];
|
ics->num_swb = ff_aac_num_swb_128[ac->m4ac.sampling_index];
|
||||||
ics->tns_max_bands = tns_max_bands_128[ac->m4ac.sampling_index];
|
ics->tns_max_bands = ff_tns_max_bands_128[ac->m4ac.sampling_index];
|
||||||
ics->predictor_present = 0;
|
ics->predictor_present = 0;
|
||||||
} else {
|
} else {
|
||||||
ics->max_sfb = get_bits(gb, 6);
|
ics->max_sfb = get_bits(gb, 6);
|
||||||
ics->num_windows = 1;
|
ics->num_windows = 1;
|
||||||
ics->swb_offset = swb_offset_1024[ac->m4ac.sampling_index];
|
ics->swb_offset = ff_swb_offset_1024[ac->m4ac.sampling_index];
|
||||||
ics->num_swb = ff_aac_num_swb_1024[ac->m4ac.sampling_index];
|
ics->num_swb = ff_aac_num_swb_1024[ac->m4ac.sampling_index];
|
||||||
ics->tns_max_bands = tns_max_bands_1024[ac->m4ac.sampling_index];
|
ics->tns_max_bands = ff_tns_max_bands_1024[ac->m4ac.sampling_index];
|
||||||
ics->predictor_present = get_bits1(gb);
|
ics->predictor_present = get_bits1(gb);
|
||||||
ics->predictor_reset_group = 0;
|
ics->predictor_reset_group = 0;
|
||||||
if (ics->predictor_present) {
|
if (ics->predictor_present) {
|
||||||
|
@ -34,145 +34,6 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
/* @name swb_offsets
|
|
||||||
* Sample offset into the window indicating the beginning of a scalefactor
|
|
||||||
* window band
|
|
||||||
*
|
|
||||||
* scalefactor window band - term for scalefactor bands within a window,
|
|
||||||
* given in Table 4.110 to Table 4.128.
|
|
||||||
*
|
|
||||||
* scalefactor band - a set of spectral coefficients which are scaled by one
|
|
||||||
* scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
|
|
||||||
* may contain several scalefactor window bands of corresponding frequency. For
|
|
||||||
* all other window_sequences scalefactor bands and scalefactor window bands are
|
|
||||||
* identical.
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_96[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 36, 40, 44, 48, 52, 56, 64,
|
|
||||||
72, 80, 88, 96, 108, 120, 132, 144,
|
|
||||||
156, 172, 188, 212, 240, 276, 320, 384,
|
|
||||||
448, 512, 576, 640, 704, 768, 832, 896,
|
|
||||||
960, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_128_96[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_64[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 36, 40, 44, 48, 52, 56, 64,
|
|
||||||
72, 80, 88, 100, 112, 124, 140, 156,
|
|
||||||
172, 192, 216, 240, 268, 304, 344, 384,
|
|
||||||
424, 464, 504, 544, 584, 624, 664, 704,
|
|
||||||
744, 784, 824, 864, 904, 944, 984, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_48[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 36, 40, 48, 56, 64, 72, 80,
|
|
||||||
88, 96, 108, 120, 132, 144, 160, 176,
|
|
||||||
196, 216, 240, 264, 292, 320, 352, 384,
|
|
||||||
416, 448, 480, 512, 544, 576, 608, 640,
|
|
||||||
672, 704, 736, 768, 800, 832, 864, 896,
|
|
||||||
928, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_128_48[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 28, 36,
|
|
||||||
44, 56, 68, 80, 96, 112, 128
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_32[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 36, 40, 48, 56, 64, 72, 80,
|
|
||||||
88, 96, 108, 120, 132, 144, 160, 176,
|
|
||||||
196, 216, 240, 264, 292, 320, 352, 384,
|
|
||||||
416, 448, 480, 512, 544, 576, 608, 640,
|
|
||||||
672, 704, 736, 768, 800, 832, 864, 896,
|
|
||||||
928, 960, 992, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_24[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 36, 40, 44, 52, 60, 68, 76,
|
|
||||||
84, 92, 100, 108, 116, 124, 136, 148,
|
|
||||||
160, 172, 188, 204, 220, 240, 260, 284,
|
|
||||||
308, 336, 364, 396, 432, 468, 508, 552,
|
|
||||||
600, 652, 704, 768, 832, 896, 960, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_128_24[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
36, 44, 52, 64, 76, 92, 108, 128
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_16[] = {
|
|
||||||
0, 8, 16, 24, 32, 40, 48, 56,
|
|
||||||
64, 72, 80, 88, 100, 112, 124, 136,
|
|
||||||
148, 160, 172, 184, 196, 212, 228, 244,
|
|
||||||
260, 280, 300, 320, 344, 368, 396, 424,
|
|
||||||
456, 492, 532, 572, 616, 664, 716, 772,
|
|
||||||
832, 896, 960, 1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_128_16[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
32, 40, 48, 60, 72, 88, 108, 128
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_1024_8[] = {
|
|
||||||
0, 12, 24, 36, 48, 60, 72, 84,
|
|
||||||
96, 108, 120, 132, 144, 156, 172, 188,
|
|
||||||
204, 220, 236, 252, 268, 288, 308, 328,
|
|
||||||
348, 372, 396, 420, 448, 476, 508, 544,
|
|
||||||
580, 620, 664, 712, 764, 820, 880, 944,
|
|
||||||
1024
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t swb_offset_128_8[] = {
|
|
||||||
0, 4, 8, 12, 16, 20, 24, 28,
|
|
||||||
36, 44, 52, 60, 72, 88, 108, 128
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t *swb_offset_1024[] = {
|
|
||||||
swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
|
|
||||||
swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
|
|
||||||
swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
|
|
||||||
swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
|
|
||||||
swb_offset_1024_8
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint16_t *swb_offset_128[] = {
|
|
||||||
/* The last entry on the following row is swb_offset_128_64 but is a
|
|
||||||
duplicate of swb_offset_128_96. */
|
|
||||||
swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
|
|
||||||
swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
|
|
||||||
swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
|
|
||||||
swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
|
|
||||||
swb_offset_128_8
|
|
||||||
};
|
|
||||||
|
|
||||||
// @}
|
|
||||||
|
|
||||||
/* @name tns_max_bands
|
|
||||||
* The maximum number of scalefactor bands on which TNS can operate for the long
|
|
||||||
* and short transforms respectively. The index to these tables is related to
|
|
||||||
* the sample rate of the audio.
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
static const uint8_t tns_max_bands_1024[] = {
|
|
||||||
31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t tns_max_bands_128[] = {
|
|
||||||
9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
|
|
||||||
};
|
|
||||||
// @}
|
|
||||||
|
|
||||||
/* @name tns_tmp2_map
|
/* @name tns_tmp2_map
|
||||||
* Tables of the tmp2[] arrays of LPC coefficients used for TNS.
|
* Tables of the tmp2[] arrays of LPC coefficients used for TNS.
|
||||||
* The suffix _M_N[] indicate the values of coef_compress and coef_res
|
* The suffix _M_N[] indicate the values of coef_compress and coef_res
|
||||||
|
@ -899,6 +899,146 @@ const float * const ff_aac_codebook_vectors[] = {
|
|||||||
codebook_vector8, codebook_vector10,
|
codebook_vector8, codebook_vector10,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* @name swb_offsets
|
||||||
|
* Sample offset into the window indicating the beginning of a scalefactor
|
||||||
|
* window band
|
||||||
|
*
|
||||||
|
* scalefactor window band - term for scalefactor bands within a window,
|
||||||
|
* given in Table 4.110 to Table 4.128.
|
||||||
|
*
|
||||||
|
* scalefactor band - a set of spectral coefficients which are scaled by one
|
||||||
|
* scalefactor. In case of EIGHT_SHORT_SEQUENCE and grouping a scalefactor band
|
||||||
|
* may contain several scalefactor window bands of corresponding frequency. For
|
||||||
|
* all other window_sequences scalefactor bands and scalefactor window bands are
|
||||||
|
* identical.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_96[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 36, 40, 44, 48, 52, 56, 64,
|
||||||
|
72, 80, 88, 96, 108, 120, 132, 144,
|
||||||
|
156, 172, 188, 212, 240, 276, 320, 384,
|
||||||
|
448, 512, 576, 640, 704, 768, 832, 896,
|
||||||
|
960, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_128_96[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_64[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 36, 40, 44, 48, 52, 56, 64,
|
||||||
|
72, 80, 88, 100, 112, 124, 140, 156,
|
||||||
|
172, 192, 216, 240, 268, 304, 344, 384,
|
||||||
|
424, 464, 504, 544, 584, 624, 664, 704,
|
||||||
|
744, 784, 824, 864, 904, 944, 984, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_48[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 36, 40, 48, 56, 64, 72, 80,
|
||||||
|
88, 96, 108, 120, 132, 144, 160, 176,
|
||||||
|
196, 216, 240, 264, 292, 320, 352, 384,
|
||||||
|
416, 448, 480, 512, 544, 576, 608, 640,
|
||||||
|
672, 704, 736, 768, 800, 832, 864, 896,
|
||||||
|
928, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_128_48[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 28, 36,
|
||||||
|
44, 56, 68, 80, 96, 112, 128
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_32[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 36, 40, 48, 56, 64, 72, 80,
|
||||||
|
88, 96, 108, 120, 132, 144, 160, 176,
|
||||||
|
196, 216, 240, 264, 292, 320, 352, 384,
|
||||||
|
416, 448, 480, 512, 544, 576, 608, 640,
|
||||||
|
672, 704, 736, 768, 800, 832, 864, 896,
|
||||||
|
928, 960, 992, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_24[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 36, 40, 44, 52, 60, 68, 76,
|
||||||
|
84, 92, 100, 108, 116, 124, 136, 148,
|
||||||
|
160, 172, 188, 204, 220, 240, 260, 284,
|
||||||
|
308, 336, 364, 396, 432, 468, 508, 552,
|
||||||
|
600, 652, 704, 768, 832, 896, 960, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_128_24[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
36, 44, 52, 64, 76, 92, 108, 128
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_16[] = {
|
||||||
|
0, 8, 16, 24, 32, 40, 48, 56,
|
||||||
|
64, 72, 80, 88, 100, 112, 124, 136,
|
||||||
|
148, 160, 172, 184, 196, 212, 228, 244,
|
||||||
|
260, 280, 300, 320, 344, 368, 396, 424,
|
||||||
|
456, 492, 532, 572, 616, 664, 716, 772,
|
||||||
|
832, 896, 960, 1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_128_16[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
32, 40, 48, 60, 72, 88, 108, 128
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_1024_8[] = {
|
||||||
|
0, 12, 24, 36, 48, 60, 72, 84,
|
||||||
|
96, 108, 120, 132, 144, 156, 172, 188,
|
||||||
|
204, 220, 236, 252, 268, 288, 308, 328,
|
||||||
|
348, 372, 396, 420, 448, 476, 508, 544,
|
||||||
|
580, 620, 664, 712, 764, 820, 880, 944,
|
||||||
|
1024
|
||||||
|
};
|
||||||
|
|
||||||
|
static const uint16_t swb_offset_128_8[] = {
|
||||||
|
0, 4, 8, 12, 16, 20, 24, 28,
|
||||||
|
36, 44, 52, 60, 72, 88, 108, 128
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t *ff_swb_offset_1024[] = {
|
||||||
|
swb_offset_1024_96, swb_offset_1024_96, swb_offset_1024_64,
|
||||||
|
swb_offset_1024_48, swb_offset_1024_48, swb_offset_1024_32,
|
||||||
|
swb_offset_1024_24, swb_offset_1024_24, swb_offset_1024_16,
|
||||||
|
swb_offset_1024_16, swb_offset_1024_16, swb_offset_1024_8,
|
||||||
|
swb_offset_1024_8
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t *ff_swb_offset_128[] = {
|
||||||
|
/* The last entry on the following row is swb_offset_128_64 but is a
|
||||||
|
duplicate of swb_offset_128_96. */
|
||||||
|
swb_offset_128_96, swb_offset_128_96, swb_offset_128_96,
|
||||||
|
swb_offset_128_48, swb_offset_128_48, swb_offset_128_48,
|
||||||
|
swb_offset_128_24, swb_offset_128_24, swb_offset_128_16,
|
||||||
|
swb_offset_128_16, swb_offset_128_16, swb_offset_128_8,
|
||||||
|
swb_offset_128_8
|
||||||
|
};
|
||||||
|
|
||||||
|
// @}
|
||||||
|
|
||||||
|
/* @name ff_tns_max_bands
|
||||||
|
* The maximum number of scalefactor bands on which TNS can operate for the long
|
||||||
|
* and short transforms respectively. The index to these tables is related to
|
||||||
|
* the sample rate of the audio.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
const uint8_t ff_tns_max_bands_1024[] = {
|
||||||
|
31, 31, 34, 40, 42, 51, 46, 46, 42, 42, 42, 39, 39
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint8_t ff_tns_max_bands_128[] = {
|
||||||
|
9, 9, 10, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14
|
||||||
|
};
|
||||||
|
// @}
|
||||||
|
|
||||||
|
|
||||||
#if CONFIG_HARDCODED_TABLES
|
#if CONFIG_HARDCODED_TABLES
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,6 +65,12 @@ extern const uint16_t ff_aac_spectral_sizes[11];
|
|||||||
|
|
||||||
extern const float *ff_aac_codebook_vectors[];
|
extern const float *ff_aac_codebook_vectors[];
|
||||||
|
|
||||||
|
extern const uint16_t *ff_swb_offset_1024[13];
|
||||||
|
extern const uint16_t *ff_swb_offset_128 [13];
|
||||||
|
|
||||||
|
extern const uint8_t ff_tns_max_bands_1024[13];
|
||||||
|
extern const uint8_t ff_tns_max_bands_128 [13];
|
||||||
|
|
||||||
#if CONFIG_HARDCODED_TABLES
|
#if CONFIG_HARDCODED_TABLES
|
||||||
extern const float ff_aac_pow2sf_tab[428];
|
extern const float ff_aac_pow2sf_tab[428];
|
||||||
#else
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user