aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2022-12-02 20:44:13 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-12-02 20:44:13 +0000
commit107cb12c2b2e1b719eb4df15708584b4f6392668 (patch)
treeba49d720e42d9ee1fbb97899fd62d4df54c9d6a0
parent61803678225bdfa64badf8410aa198562f006f6b (diff)
parent2ae5f6ff8a0a12ead1cb7bab53c110039d7c8884 (diff)
downloadlibxaac-107cb12c2b2e1b719eb4df15708584b4f6392668.tar.gz
Update to v0.1.4 from upstream project am: 2ae5f6ff8amain-16k-with-phones
Original change: https://android-review.googlesource.com/c/platform/external/libxaac/+/2323113 Change-Id: Ie7744998f7d2ec5cc322d493be9bd41dafda0118 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--Android.bp2
-rw-r--r--CMakeLists.txt9
-rw-r--r--METADATA6
-rw-r--r--decoder/armv7/ixheaacd_function_selector_arm_non_neon.c4
-rw-r--r--decoder/armv7/ixheaacd_function_selector_armv7.c17
-rw-r--r--decoder/armv7/ixheaacd_fwd_modulation.s35
-rw-r--r--decoder/armv7/ixheaacd_qmf_dec_armv7.c117
-rw-r--r--decoder/armv8/ixheaacd_function_selector_armv8.c22
-rw-r--r--decoder/armv8/ixheaacd_qmf_dec_armv8.c163
-rw-r--r--decoder/drc_src/impd_drc_api.c24
-rw-r--r--decoder/drc_src/impd_drc_api_struct_def.h8
-rw-r--r--decoder/drc_src/impd_drc_bitbuffer.c4
-rw-r--r--decoder/drc_src/impd_drc_common.h2
-rw-r--r--decoder/drc_src/impd_drc_config_params.h2
-rw-r--r--decoder/drc_src/impd_drc_dynamic_payload.c3
-rw-r--r--decoder/drc_src/impd_drc_gain_dec.c94
-rw-r--r--decoder/drc_src/impd_drc_init.c7
-rw-r--r--decoder/drc_src/impd_drc_loudness_control.c9
-rw-r--r--decoder/drc_src/impd_drc_main_td_process.c72
-rw-r--r--decoder/drc_src/impd_drc_process.c72
-rw-r--r--decoder/drc_src/impd_drc_selection_process.c2
-rw-r--r--decoder/drc_src/impd_drc_selection_process_drcset_selection.c9
-rw-r--r--decoder/drc_src/impd_drc_shape_filter.c16
-rw-r--r--decoder/drc_src/impd_drc_static_payload.c20
-rw-r--r--decoder/drc_src/impd_drc_struct.h2
-rw-r--r--decoder/generic/ixheaacd_function_selector_generic.c13
-rw-r--r--decoder/generic/ixheaacd_qmf_dec_generic.c281
-rw-r--r--decoder/ixheaacd_aac_config.h5
-rw-r--r--decoder/ixheaacd_aac_imdct.c984
-rw-r--r--decoder/ixheaacd_aac_imdct.h48
-rw-r--r--decoder/ixheaacd_aac_rom.c791
-rw-r--r--decoder/ixheaacd_aac_rom.h37
-rw-r--r--decoder/ixheaacd_aac_tns.c6
-rw-r--r--decoder/ixheaacd_aacdecoder.c172
-rw-r--r--decoder/ixheaacd_acelp_tools.c5
-rw-r--r--decoder/ixheaacd_adts_crc_check.c5
-rw-r--r--decoder/ixheaacd_api.c253
-rw-r--r--decoder/ixheaacd_basic_ops32.h18
-rw-r--r--decoder/ixheaacd_basic_ops40.h13
-rw-r--r--decoder/ixheaacd_block.c100
-rw-r--r--decoder/ixheaacd_block.h36
-rw-r--r--decoder/ixheaacd_channel.c114
-rw-r--r--decoder/ixheaacd_common_initfuncs.c3
-rw-r--r--decoder/ixheaacd_common_lpfuncs.c4
-rw-r--r--decoder/ixheaacd_config.h77
-rw-r--r--decoder/ixheaacd_create.c17
-rw-r--r--decoder/ixheaacd_create.h2
-rw-r--r--decoder/ixheaacd_decode_main.c59
-rw-r--r--decoder/ixheaacd_defines.h14
-rw-r--r--decoder/ixheaacd_drc_freq_dec.c14
-rw-r--r--decoder/ixheaacd_env_calc.c108
-rw-r--r--decoder/ixheaacd_env_calc.h16
-rw-r--r--decoder/ixheaacd_env_dec.c35
-rw-r--r--decoder/ixheaacd_env_dec.h26
-rw-r--r--decoder/ixheaacd_env_extr.c91
-rw-r--r--decoder/ixheaacd_env_extr.h4
-rw-r--r--decoder/ixheaacd_error_codes.h52
-rw-r--r--decoder/ixheaacd_esbr_envcal.c55
-rw-r--r--decoder/ixheaacd_esbr_fft.c5
-rw-r--r--decoder/ixheaacd_ext_ch_ele.c6
-rw-r--r--decoder/ixheaacd_fft.c545
-rw-r--r--decoder/ixheaacd_freq_sca.c3
-rw-r--r--decoder/ixheaacd_function_selector.h28
-rw-r--r--decoder/ixheaacd_headerdecode.c149
-rw-r--r--decoder/ixheaacd_huff_code_reorder.c21
-rw-r--r--decoder/ixheaacd_init_config.c9
-rw-r--r--decoder/ixheaacd_initfuncs.c64
-rw-r--r--decoder/ixheaacd_latmdemux.c8
-rw-r--r--decoder/ixheaacd_ld_mps_config.c312
-rw-r--r--decoder/ixheaacd_ld_mps_dec.c207
-rw-r--r--decoder/ixheaacd_ld_mps_dec.h31
-rw-r--r--decoder/ixheaacd_longblock.c2
-rw-r--r--decoder/ixheaacd_lpc.c6
-rw-r--r--decoder/ixheaacd_lpc_dec.c17
-rw-r--r--decoder/ixheaacd_lpfuncs.c714
-rw-r--r--decoder/ixheaacd_lpp_tran.c207
-rw-r--r--decoder/ixheaacd_lpp_tran.h16
-rw-r--r--decoder/ixheaacd_lt_predict.c3
-rw-r--r--decoder/ixheaacd_mps_dec.c81
-rw-r--r--decoder/ixheaacd_mps_dec.h53
-rw-r--r--decoder/ixheaacd_mps_decor.h4
-rw-r--r--decoder/ixheaacd_mps_decorr.c225
-rw-r--r--decoder/ixheaacd_mps_hybrid_filt.c13
-rw-r--r--decoder/ixheaacd_mps_nlc_dec.h2
-rw-r--r--decoder/ixheaacd_mps_parse.c576
-rw-r--r--decoder/ixheaacd_mps_poly_filt.c214
-rw-r--r--decoder/ixheaacd_mps_pre_mix.c300
-rw-r--r--decoder/ixheaacd_mps_rom.c720
-rw-r--r--decoder/ixheaacd_mps_smoothing.c41
-rw-r--r--decoder/ixheaacd_mps_temp_process.c92
-rw-r--r--decoder/ixheaacd_mps_temp_reshape.c16
-rw-r--r--decoder/ixheaacd_multichannel.c13
-rw-r--r--decoder/ixheaacd_peak_limiter.c8
-rw-r--r--decoder/ixheaacd_pns_js_thumb.c139
-rw-r--r--decoder/ixheaacd_process.c18
-rw-r--r--decoder/ixheaacd_ps_bitdec.c19
-rw-r--r--decoder/ixheaacd_ps_bitdec.h2
-rw-r--r--decoder/ixheaacd_ps_dec.c4
-rw-r--r--decoder/ixheaacd_ps_dec.h6
-rw-r--r--decoder/ixheaacd_qmf_dec.c132
-rw-r--r--decoder/ixheaacd_qmf_dec.h28
-rw-r--r--decoder/ixheaacd_rev_vlc.c29
-rw-r--r--decoder/ixheaacd_rom.c8358
-rw-r--r--decoder/ixheaacd_sbr_const.h4
-rw-r--r--decoder/ixheaacd_sbr_dec.c187
-rw-r--r--decoder/ixheaacd_sbr_dec.h15
-rw-r--r--decoder/ixheaacd_sbr_rom.c184
-rw-r--r--decoder/ixheaacd_sbr_rom.h3
-rw-r--r--decoder/ixheaacd_sbrdec_initfuncs.c56
-rw-r--r--decoder/ixheaacd_sbrdec_lpfuncs.c20
-rw-r--r--decoder/ixheaacd_sbrdecoder.c37
-rw-r--r--decoder/ixheaacd_sbrdecoder.h3
-rw-r--r--decoder/ixheaacd_sbrdecsettings.h2
-rw-r--r--decoder/ixheaacd_stereo.c41
-rw-r--r--decoder/ixheaacd_stereo.h2
-rw-r--r--decoder/ixheaacd_struct_def.h30
-rw-r--r--decoder/ixheaacd_thumb_ps_dec.c17
-rw-r--r--decoder/ixheaacd_vec_baisc_ops.h2
-rw-r--r--decoder/x86/ixheaacd_function_selector_x86.c21
-rw-r--r--decoder/x86_64/ixheaacd_function_selector_x86_64.c21
-rw-r--r--test/impd_drc_config_params.h3
-rw-r--r--test/ixheaacd_error.c14
-rw-r--r--test/ixheaacd_main.c179
123 files changed, 12955 insertions, 5511 deletions
diff --git a/Android.bp b/Android.bp
index 10def9e..162b162 100644
--- a/Android.bp
+++ b/Android.bp
@@ -123,6 +123,8 @@ cc_library_static {
"decoder/ixheaacd_huff_code_reorder.c",
"decoder/ixheaacd_rev_vlc.c",
"decoder/ixheaacd_qmf_dec.c",
+ "decoder/ixheaacd_ld_mps_config.c",
+ "decoder/ixheaacd_ld_mps_dec.c",
"decoder/drc_src/impd_drc_api.c",
"decoder/drc_src/impd_drc_bitbuffer.c",
"decoder/drc_src/impd_drc_dec.c",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 813b9d3..573aadb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,6 +113,8 @@ list(
"${XAAC_ROOT}/decoder/ixheaacd_huff_code_reorder.c"
"${XAAC_ROOT}/decoder/ixheaacd_rev_vlc.c"
"${XAAC_ROOT}/decoder/ixheaacd_qmf_dec.c"
+ "${XAAC_ROOT}/decoder/ixheaacd_ld_mps_dec.c"
+ "${XAAC_ROOT}/decoder/ixheaacd_ld_mps_config.c"
"${XAAC_ROOT}/decoder/drc_src/impd_drc_api.c"
"${XAAC_ROOT}/decoder/drc_src/impd_drc_bitbuffer.c"
"${XAAC_ROOT}/decoder/drc_src/impd_drc_dec.c"
@@ -158,7 +160,12 @@ list(APPEND XAACDEC_SRCS
add_executable(xaacdec ${XAACDEC_SRCS})
-target_link_libraries(xaacdec libxaacdec m)
+if(MSVC)
+ target_link_libraries(xaacdec libxaacdec)
+else()
+ target_link_libraries(xaacdec libxaacdec m)
+endif()
+
set_target_properties(
xaacdec
PROPERTIES
diff --git a/METADATA b/METADATA
index d6eab38..c055ca0 100644
--- a/METADATA
+++ b/METADATA
@@ -5,11 +5,11 @@ third_party {
type: GIT
value: "https://github.com/ittiam-systems/libxaac.git"
}
- version: "601a6a03ce6d42c50c08f8bb07c4be2cbbf3b112"
+ version: "9d57cec9725da0a4246f31779629e68630ac005c"
license_type: NOTICE
last_upgrade_date {
year: 2022
- month: 8
- day: 01
+ month: 12
+ day: 02
}
}
diff --git a/decoder/armv7/ixheaacd_function_selector_arm_non_neon.c b/decoder/armv7/ixheaacd_function_selector_arm_non_neon.c
index d15cf74..ac633bf 100644
--- a/decoder/armv7/ixheaacd_function_selector_arm_non_neon.c
+++ b/decoder/armv7/ixheaacd_function_selector_arm_non_neon.c
@@ -61,11 +61,11 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_armv7;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
+(WORD32 *, ia_lpp_trans_cov_matrix *,
WORD32) = &ixheaacd_covariance_matrix_calc_armv7;
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_armv7;
VOID(*ixheaacd_over_lap_add1)
diff --git a/decoder/armv7/ixheaacd_function_selector_armv7.c b/decoder/armv7/ixheaacd_function_selector_armv7.c
index d3a17d7..230594b 100644
--- a/decoder/armv7/ixheaacd_function_selector_armv7.c
+++ b/decoder/armv7/ixheaacd_function_selector_armv7.c
@@ -68,11 +68,11 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_armv7;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
+(WORD32 *, ia_lpp_trans_cov_matrix *,
WORD32) = &ixheaacd_covariance_matrix_calc_armv7;
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_armv7;
VOID(*ixheaacd_over_lap_add1)
@@ -232,3 +232,16 @@ VOID(*ixheaacd_scale_factor_process)
(WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width,
WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type,
WORD32 aac_sf_data_resil_flag) = &ixheaacd_scale_factor_process_armv7;
+
+VOID(*ixheaacd_covariance_matrix_calc_960)
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec_960;
+
+VOID(*ixheaacd_aac_ld_dec_rearrange_960)
+(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
+ WORD16 *re_arr_tab) = &ixheaacd_dec_rearrange_short;
+
+VOID(*ixheaacd_pretwiddle_compute_960)
+(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_960_dec;
diff --git a/decoder/armv7/ixheaacd_fwd_modulation.s b/decoder/armv7/ixheaacd_fwd_modulation.s
index d1f599a..727b719 100644
--- a/decoder/armv7/ixheaacd_fwd_modulation.s
+++ b/decoder/armv7/ixheaacd_fwd_modulation.s
@@ -32,9 +32,12 @@ ixheaacd_fwd_modulation:
LDR r2, [sp, #0x24]
MOV lr, r1
MOV r4, r1
- MOV r1, #0x1f
+ LDR r1, [r3]
+ SUB r1, r1, #1
+ CMP r1, #0x3f
MOV r7, r5
ADD r8, r0, #0xfc
+ ADDEQ r8, r8, #0x100
MOV r6, r3
LOOP1:
LDR r3, [r0], #4
@@ -70,12 +73,16 @@ LOOP1:
BL ixheaacd_cos_sin_mod
+ LDR r1, [sp, #0x28]
+ LDRSH r2, [r6]
+ CMP r1, #1
+ BEQ LOOP3
LDRSH r1, [r6, #0x2c]
LDRSH r2, [r6, #0x2a]
LDR r0, [r6, #0x18]
SUBS r2, r1, r2
-@ LDMLEFD sp!, {r3-r9, r12, pc}
+@ LDMLEFD sp!, {r3-r9, r12, pc}
LDMFDLE sp!, {r3-r9, r12, pc}
LOOP2:
LDR r1, [r0], #4
@@ -99,5 +106,29 @@ LOOP2:
SUBS r2, r2, #1
STR r1, [r5], #4
BGT LOOP2
+ B END
+LOOP3:
+ LDR r12, [r5, #0]
+ LDR r3, [r4, #0]
+
+ MOV r1, r3
+ MOV r3, #0
+ SUB r3, r3, r12
+
+ STR r3, [r4], #4
+ STR r1, [r5], #4
+
+ LDR r12, [r5, #0]
+ LDR r3, [r4, #0]
+
+ MOV r1, r12
+ MOV r12, #0
+ SUB r12, r12, r3
+
+ STR r12, [r5], #4
+ STR r1, [r4], #4
+ SUBS r2, r2, #2
+ BGT LOOP3
+END:
LDMFD sp!, {r3-r9, r12, pc}
diff --git a/decoder/armv7/ixheaacd_qmf_dec_armv7.c b/decoder/armv7/ixheaacd_qmf_dec_armv7.c
index e87ab36..54e1fb9 100644
--- a/decoder/armv7/ixheaacd_qmf_dec_armv7.c
+++ b/decoder/armv7/ixheaacd_qmf_dec_armv7.c
@@ -66,6 +66,8 @@
#define ROUNDING_SPECTRA 1
#define HQ_SHIFT_VAL 4
+extern const WORD32 ixheaacd_ldmps_polyphase_filter_coeff_fix[1280];
+
VOID ixheaacd_dct2_64(WORD32 *x, WORD32 *X,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
WORD16 *filter_states) {
@@ -90,7 +92,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
WORD32 ch_fac, WORD32 low_pow_flag,
- WORD audio_object_type) {
+ WORD audio_object_type, WORD32 ldmps_present) {
WORD32 i, k;
WORD32 num_time_slots = qmf_bank->num_time_slots;
@@ -206,7 +208,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
if (!low_pow_flag) {
ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i],
- qmf_bank, qmf_dec_tables_ptr);
+ qmf_bank, qmf_dec_tables_ptr, ldmps_present);
} else {
ixheaacd_dct3_32(
(WORD32 *)analysis_buffer, qmf_real[i], qmf_dec_tables_ptr->dct23_tw,
@@ -227,6 +229,115 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
}
}
+VOID ixheaacd_cplx_anal_qmffilt_32(const WORD32 *time_sample_buf,
+ ia_sbr_scale_fact_struct *sbr_scale_factor,
+ WORD32 **qmf_real, WORD32 **qmf_imag,
+ ia_sbr_qmf_filter_bank_struct *qmf_bank,
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ch_fac, WORD32 ldsbr_present) {
+ WORD32 i, k;
+ WORD32 num_time_slots = qmf_bank->num_time_slots;
+
+ WORD32 analysis_buffer[4 * NO_ANALYSIS_CHANNELS];
+ WORD32 *filter_states = qmf_bank->core_samples_buffer_32;
+
+ WORD32 *fp1, *fp2, *tmp;
+
+ WORD32 *filter_1;
+ WORD32 *filter_2;
+ WORD32 *filt_ptr;
+ WORD32 start_slot = 2;
+
+ if (ldsbr_present) {
+ qmf_bank->filter_pos_32 +=
+ (qmf_dec_tables_ptr->qmf_c_ldsbr_mps - qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 = qmf_dec_tables_ptr->qmf_c_ldsbr_mps;
+ } else {
+ qmf_bank->filter_pos_32 += (ixheaacd_ldmps_polyphase_filter_coeff_fix -
+ qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 =
+ (WORD32 *)ixheaacd_ldmps_polyphase_filter_coeff_fix;
+ }
+
+ filter_1 = qmf_bank->filter_pos_32;
+ filter_2 = filter_1 + qmf_bank->no_channels;
+
+ sbr_scale_factor->st_lb_scale = 0;
+ sbr_scale_factor->lb_scale = -10;
+
+ sbr_scale_factor->lb_scale = -9;
+ if (qmf_bank->no_channels != 64) {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l32;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l32;
+ } else {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l64;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l64;
+ }
+ qmf_bank->t_cos =
+ (WORD16 *)qmf_dec_tables_ptr->ixheaacd_sbr_t_cos_sin_l32_eld;
+
+ fp1 = qmf_bank->anal_filter_states_32;
+ fp2 = qmf_bank->anal_filter_states_32 + qmf_bank->no_channels;
+
+ filter_2 = qmf_bank->filter_2_32;
+ fp1 = qmf_bank->fp1_anal_32;
+ fp2 = qmf_bank->fp2_anal_32;
+
+ for (i = start_slot; i < num_time_slots + start_slot; i++) {
+ for (k = 0; k < qmf_bank->no_channels; k++)
+ filter_states[qmf_bank->no_channels - 1 - k] =
+ time_sample_buf[ch_fac * k];
+
+ if (ldsbr_present) {
+ ixheaacd_sbr_qmfanal32_winadd_eld_32(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ } else {
+ ixheaacd_sbr_qmfanal32_winadd_eld_mps(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ }
+
+ time_sample_buf += qmf_bank->no_channels * ch_fac;
+
+ filter_states -= qmf_bank->no_channels;
+
+ if (filter_states < qmf_bank->anal_filter_states_32) {
+ filter_states = qmf_bank->anal_filter_states_32 +
+ ((qmf_bank->no_channels * 10) - qmf_bank->no_channels);
+ }
+
+ tmp = fp1;
+ fp1 = fp2;
+ fp2 = tmp;
+
+ filter_1 += qmf_bank->no_channels;
+ filter_2 += qmf_bank->no_channels;
+
+ filt_ptr = filter_1;
+ filter_1 = filter_2;
+ filter_2 = filt_ptr;
+
+ if (filter_2 >
+ (qmf_bank->analy_win_coeff_32 + (qmf_bank->no_channels * 10))) {
+ filter_1 = (WORD32 *)qmf_bank->analy_win_coeff_32;
+ filter_2 = (WORD32 *)qmf_bank->analy_win_coeff_32 + qmf_bank->no_channels;
+ }
+
+ ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i], qmf_bank,
+ qmf_dec_tables_ptr, 1);
+ }
+
+ qmf_bank->filter_pos_32 = filter_1;
+ qmf_bank->core_samples_buffer_32 = filter_states;
+
+ qmf_bank->fp1_anal_32 = fp1;
+ qmf_bank->fp2_anal_32 = fp2;
+ qmf_bank->filter_2_32 = filter_2;
+}
+
VOID ixheaacd_inv_modulation_lp(WORD32 *qmf_real, WORD16 *filter_states,
ia_sbr_qmf_filter_bank_struct *syn_qmf,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr) {
@@ -351,4 +462,4 @@ VOID ixheaacd_esbr_cos_sin_mod(WORD32 *subband,
}
p_sin = qmf_bank->esbr_alt_sin_twiddle;
ixheaacd_esbr_cos_sin_mod_loop2(subband, p_sin, M);
-} \ No newline at end of file
+}
diff --git a/decoder/armv8/ixheaacd_function_selector_armv8.c b/decoder/armv8/ixheaacd_function_selector_armv8.c
index 8cb4067..ce1b3fb 100644
--- a/decoder/armv8/ixheaacd_function_selector_armv8.c
+++ b/decoder/armv8/ixheaacd_function_selector_armv8.c
@@ -66,11 +66,11 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_dec;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
- WORD32) = &ixheaacd_covariance_matrix_calc_dec;
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec;
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_dec;
VOID(*ixheaacd_over_lap_add1)
@@ -178,7 +178,7 @@ VOID(*ixheaacd_overlap_buf_out)
VOID(*ixheaacd_overlap_out_copy)
(WORD32 *out_samples, WORD32 *ptr_overlap_buf, WORD32 *ptr_overlap_buf1,
- const WORD16 ch_fac) = &ixheaacd_overlap_out_copy_dec;
+ const WORD16 ch_fac, WORD16 size_01) = &ixheaacd_overlap_out_copy_dec;
VOID(*ixheaacd_pretwiddle_compute)
(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
@@ -230,3 +230,17 @@ VOID(*ixheaacd_scale_factor_process)
(WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width,
WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type,
WORD32 aac_sf_data_resil_flag) = &ixheaacd_scale_factor_process_armv8;
+
+VOID(*ixheaacd_covariance_matrix_calc_960)
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec_960;
+
+VOID(*ixheaacd_aac_ld_dec_rearrange_960)
+(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
+ WORD16 *re_arr_tab) = &ixheaacd_dec_rearrange_short;
+
+VOID(*ixheaacd_pretwiddle_compute_960)
+(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_960_dec;
+
diff --git a/decoder/armv8/ixheaacd_qmf_dec_armv8.c b/decoder/armv8/ixheaacd_qmf_dec_armv8.c
index 2ba9e9f..1970ec0 100644
--- a/decoder/armv8/ixheaacd_qmf_dec_armv8.c
+++ b/decoder/armv8/ixheaacd_qmf_dec_armv8.c
@@ -64,6 +64,8 @@
#define ROUNDING_SPECTRA 1
#define HQ_SHIFT_VAL 4
+extern const WORD32 ixheaacd_ldmps_polyphase_filter_coeff_fix[1280];
+
VOID ixheaacd_dct3_32(WORD32 *input, WORD32 *output,
const WORD16 *main_twidle_fwd, const WORD16 *post_tbl,
const WORD16 *w_16, const WORD32 *p_table) {
@@ -302,15 +304,16 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
VOID ixheaacd_fwd_modulation(const WORD32 *p_time_in1, WORD32 *real_subband,
WORD32 *imag_subband,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
- ia_qmf_dec_tables_struct *qmf_dec_tables_ptr) {
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ld_mps_flag) {
WORD32 i;
- const WORD32 *p_time_in2 = &p_time_in1[2 * NO_ANALYSIS_CHANNELS - 1];
+ const WORD32 *p_time_in2 = &p_time_in1[2 * qmf_bank->no_channels - 1];
WORD32 temp1, temp2;
WORD32 *t_real_subband = real_subband;
WORD32 *t_imag_subband = imag_subband;
const WORD16 *tcos;
- for (i = NO_ANALYSIS_CHANNELS - 1; i >= 0; i--) {
+ for (i = qmf_bank->no_channels - 1; i >= 0; i--) {
temp1 = ixheaacd_shr32(*p_time_in1++, HQ_SHIFT_VAL);
temp2 = ixheaacd_shr32(*p_time_in2--, HQ_SHIFT_VAL);
@@ -326,18 +329,33 @@ VOID ixheaacd_fwd_modulation(const WORD32 *p_time_in1, WORD32 *real_subband,
tcos = qmf_bank->t_cos;
- for (i = (qmf_bank->usb - qmf_bank->lsb - 1); i >= 0; i--) {
- WORD16 cosh, sinh;
- WORD32 re, im;
-
- re = *real_subband;
- im = *imag_subband;
- cosh = *tcos++;
- sinh = *tcos++;
- *real_subband++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32_shl(re, cosh),
- ixheaacd_mult32x16in32_shl(im, sinh));
- *imag_subband++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32_shl(im, cosh),
- ixheaacd_mult32x16in32_shl(re, sinh));
+ if (ld_mps_flag == 0) {
+ for (i = (qmf_bank->usb - qmf_bank->lsb - 1); i >= 0; i--) {
+ WORD16 cosh, sinh;
+ WORD32 re, im;
+
+ re = *real_subband;
+ im = *imag_subband;
+ cosh = *tcos++;
+ sinh = *tcos++;
+ *real_subband++ =
+ ixheaacd_add32_sat(ixheaacd_mult32x16in32_shl(re, cosh),
+ ixheaacd_mult32x16in32_shl(im, sinh));
+ *imag_subband++ =
+ ixheaacd_sub32_sat(ixheaacd_mult32x16in32_shl(im, cosh),
+ ixheaacd_mult32x16in32_shl(re, sinh));
+ }
+ } else {
+ WORD32 i_band;
+ for (i = 0; i < min(64, qmf_bank->no_channels); i += 2) {
+ i_band = real_subband[i];
+ real_subband[i] = -imag_subband[i];
+ imag_subband[i] = i_band;
+
+ i_band = -real_subband[i + 1];
+ real_subband[i + 1] = imag_subband[i + 1];
+ imag_subband[i + 1] = i_band;
+ }
}
}
@@ -347,7 +365,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
WORD32 ch_fac, WORD32 low_pow_flag,
- WORD audio_object_type) {
+ WORD audio_object_type, WORD32 ldmps_present) {
WORD32 i, k;
WORD32 num_time_slots = qmf_bank->num_time_slots;
@@ -464,7 +482,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
if (!low_pow_flag) {
ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i],
- qmf_bank, qmf_dec_tables_ptr);
+ qmf_bank, qmf_dec_tables_ptr, ldmps_present);
} else {
ixheaacd_dct3_32(
(WORD32 *)analysis_buffer, qmf_real[i], qmf_dec_tables_ptr->dct23_tw,
@@ -485,6 +503,115 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
}
}
+VOID ixheaacd_cplx_anal_qmffilt_32(const WORD32 *time_sample_buf,
+ ia_sbr_scale_fact_struct *sbr_scale_factor,
+ WORD32 **qmf_real, WORD32 **qmf_imag,
+ ia_sbr_qmf_filter_bank_struct *qmf_bank,
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ch_fac, WORD32 ldsbr_present) {
+ WORD32 i, k;
+ WORD32 num_time_slots = qmf_bank->num_time_slots;
+
+ WORD32 analysis_buffer[4 * NO_ANALYSIS_CHANNELS];
+ WORD32 *filter_states = qmf_bank->core_samples_buffer_32;
+
+ WORD32 *fp1, *fp2, *tmp;
+
+ WORD32 *filter_1;
+ WORD32 *filter_2;
+ WORD32 *filt_ptr;
+ WORD32 start_slot = 2;
+
+ if (ldsbr_present) {
+ qmf_bank->filter_pos_32 +=
+ (qmf_dec_tables_ptr->qmf_c_ldsbr_mps - qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 = qmf_dec_tables_ptr->qmf_c_ldsbr_mps;
+ } else {
+ qmf_bank->filter_pos_32 += (ixheaacd_ldmps_polyphase_filter_coeff_fix -
+ qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 =
+ (WORD32 *)ixheaacd_ldmps_polyphase_filter_coeff_fix;
+ }
+
+ filter_1 = qmf_bank->filter_pos_32;
+ filter_2 = filter_1 + qmf_bank->no_channels;
+
+ sbr_scale_factor->st_lb_scale = 0;
+ sbr_scale_factor->lb_scale = -10;
+
+ sbr_scale_factor->lb_scale = -9;
+ if (qmf_bank->no_channels != 64) {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l32;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l32;
+ } else {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l64;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l64;
+ }
+ qmf_bank->t_cos =
+ (WORD16 *)qmf_dec_tables_ptr->ixheaacd_sbr_t_cos_sin_l32_eld;
+
+ fp1 = qmf_bank->anal_filter_states_32;
+ fp2 = qmf_bank->anal_filter_states_32 + qmf_bank->no_channels;
+
+ filter_2 = qmf_bank->filter_2_32;
+ fp1 = qmf_bank->fp1_anal_32;
+ fp2 = qmf_bank->fp2_anal_32;
+
+ for (i = start_slot; i < num_time_slots + start_slot; i++) {
+ for (k = 0; k < qmf_bank->no_channels; k++)
+ filter_states[qmf_bank->no_channels - 1 - k] =
+ time_sample_buf[ch_fac * k];
+
+ if (ldsbr_present) {
+ ixheaacd_sbr_qmfanal32_winadd_eld_32(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ } else {
+ ixheaacd_sbr_qmfanal32_winadd_eld_mps(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ }
+
+ time_sample_buf += qmf_bank->no_channels * ch_fac;
+
+ filter_states -= qmf_bank->no_channels;
+
+ if (filter_states < qmf_bank->anal_filter_states_32) {
+ filter_states = qmf_bank->anal_filter_states_32 +
+ ((qmf_bank->no_channels * 10) - qmf_bank->no_channels);
+ }
+
+ tmp = fp1;
+ fp1 = fp2;
+ fp2 = tmp;
+
+ filter_1 += qmf_bank->no_channels;
+ filter_2 += qmf_bank->no_channels;
+
+ filt_ptr = filter_1;
+ filter_1 = filter_2;
+ filter_2 = filt_ptr;
+
+ if (filter_2 >
+ (qmf_bank->analy_win_coeff_32 + (qmf_bank->no_channels * 10))) {
+ filter_1 = (WORD32 *)qmf_bank->analy_win_coeff_32;
+ filter_2 = (WORD32 *)qmf_bank->analy_win_coeff_32 + qmf_bank->no_channels;
+ }
+
+ ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i], qmf_bank,
+ qmf_dec_tables_ptr, 1);
+ }
+
+ qmf_bank->filter_pos_32 = filter_1;
+ qmf_bank->core_samples_buffer_32 = filter_states;
+
+ qmf_bank->fp1_anal_32 = fp1;
+ qmf_bank->fp2_anal_32 = fp2;
+ qmf_bank->filter_2_32 = filter_2;
+}
+
VOID ixheaacd_inv_modulation_lp(WORD32 *qmf_real, WORD16 *filter_states,
ia_sbr_qmf_filter_bank_struct *syn_qmf,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr) {
@@ -1337,4 +1464,4 @@ VOID ixheaacd_radix4bfly(const WORD16 *w, WORD32 *x, WORD32 index1,
x += fft_jmp;
w_ptr = w_ptr - fft_jmp;
}
-} \ No newline at end of file
+}
diff --git a/decoder/drc_src/impd_drc_api.c b/decoder/drc_src/impd_drc_api.c
index 7121a71..d31c93f 100644
--- a/decoder/drc_src/impd_drc_api.c
+++ b/decoder/drc_src/impd_drc_api.c
@@ -222,32 +222,26 @@ IA_ERRORCODE ia_drc_dec_api(pVOID p_ia_drc_dec_obj, WORD32 i_cmd, WORD32 i_idx,
break;
}
case IA_CMD_TYPE_INIT_CPY_IC_BSF_BUFF: {
- memcpy(p_obj_drc->str_bit_handler.bitstream_drc_config +
- p_obj_drc->str_bit_handler.num_bytes_bs_drc_config,
+ memcpy(p_obj_drc->str_bit_handler.bitstream_drc_config,
p_obj_drc->pp_mem[2],
p_obj_drc->str_bit_handler.num_byts_cur_ic);
p_obj_drc->str_bit_handler.num_bytes_bs_drc_config =
- p_obj_drc->str_bit_handler.num_bytes_bs_drc_config +
p_obj_drc->str_bit_handler.num_byts_cur_ic;
break;
}
case IA_CMD_TYPE_INIT_CPY_IL_BSF_BUFF: {
- memcpy(p_obj_drc->str_bit_handler.bitstream_loudness_info +
- p_obj_drc->str_bit_handler.num_bytes_bs_loudness_info,
+ memcpy(p_obj_drc->str_bit_handler.bitstream_loudness_info,
p_obj_drc->pp_mem[2],
p_obj_drc->str_bit_handler.num_byts_cur_il);
p_obj_drc->str_bit_handler.num_bytes_bs_loudness_info =
- p_obj_drc->str_bit_handler.num_bytes_bs_loudness_info +
p_obj_drc->str_bit_handler.num_byts_cur_il;
break;
}
case IA_CMD_TYPE_INIT_CPY_IN_BSF_BUFF: {
- memcpy(p_obj_drc->str_bit_handler.bitstream_unidrc_interface +
- p_obj_drc->str_bit_handler.num_bytes_bs_unidrc_interface,
+ memcpy(p_obj_drc->str_bit_handler.bitstream_unidrc_interface,
p_obj_drc->pp_mem[2],
p_obj_drc->str_bit_handler.num_byts_cur_in);
p_obj_drc->str_bit_handler.num_bytes_bs_unidrc_interface =
- p_obj_drc->str_bit_handler.num_bytes_bs_unidrc_interface +
p_obj_drc->str_bit_handler.num_byts_cur_in;
break;
}
@@ -271,7 +265,7 @@ IA_ERRORCODE ia_drc_dec_api(pVOID p_ia_drc_dec_obj, WORD32 i_cmd, WORD32 i_idx,
break;
}
case IA_DRC_DEC_CONFIG_DRC_TARGET_LOUDNESS: {
- *pi_value = p_obj_drc->str_payload.pstr_loudness_info->loudness_info
+ *pi_value = (WORD32)p_obj_drc->str_payload.pstr_loudness_info->loudness_info
->loudness_measure->method_val;
if (*pi_value < -1)
*pi_value = *pi_value * -4;
@@ -291,6 +285,14 @@ IA_ERRORCODE ia_drc_dec_api(pVOID p_ia_drc_dec_obj, WORD32 i_cmd, WORD32 i_idx,
p_obj_drc->str_config.sampling_rate = *pus_value;
break;
}
+ case IA_DRC_DEC_CONFIG_PARAM_APPLY_CROSSFADE: {
+ p_obj_drc->str_config.apply_crossfade = *pus_value;
+ break;
+ }
+ case IA_DRC_DEC_CONFIG_PARAM_CONFIG_CHANGED: {
+ p_obj_drc->str_config.is_config_changed = *pus_value;
+ break;
+ }
case IA_DRC_DEC_CONFIG_PARAM_NUM_CHANNELS: {
p_obj_drc->str_config.num_ch_in = *pus_value;
if (*pus_value < 1 || *pus_value > MAX_CHANNEL_COUNT) {
@@ -351,10 +353,12 @@ IA_ERRORCODE ia_drc_dec_api(pVOID p_ia_drc_dec_obj, WORD32 i_cmd, WORD32 i_idx,
}
case IA_DRC_DEC_CONFIG_DRC_BOOST: {
p_obj_drc->str_config.boost = (*pf_value);
+ p_obj_drc->str_config.boost_set = 1;
break;
}
case IA_DRC_DEC_CONFIG_DRC_COMPRESS: {
p_obj_drc->str_config.compress = (*pf_value);
+ p_obj_drc->str_config.compress_set = 1;
break;
}
default: { return -1; }
diff --git a/decoder/drc_src/impd_drc_api_struct_def.h b/decoder/drc_src/impd_drc_api_struct_def.h
index 265a82f..a753465 100644
--- a/decoder/drc_src/impd_drc_api_struct_def.h
+++ b/decoder/drc_src/impd_drc_api_struct_def.h
@@ -58,7 +58,11 @@ typedef struct ia_drc_config_struct {
WORD32 album_mode;
FLOAT32 boost;
FLOAT32 compress;
-
+ UWORD8 boost_set;
+ UWORD8 compress_set;
+ WORD32 apply_crossfade;
+ WORD32 is_config_changed;
+ WORD32 ln_dbgain_prev;
} ia_drc_config_struct;
/* DRC bitsteam handler */
@@ -128,7 +132,7 @@ typedef struct IA_PSM_API_Struct {
ia_mem_info_struct *p_mem_info;
pVOID *pp_mem;
struct ia_bit_buf_struct str_bit_buf, *pstr_bit_buf;
-
+ WORD32 frame_count;
} ia_drc_api_struct;
#endif
diff --git a/decoder/drc_src/impd_drc_bitbuffer.c b/decoder/drc_src/impd_drc_bitbuffer.c
index de9d020..91188c8 100644
--- a/decoder/drc_src/impd_drc_bitbuffer.c
+++ b/decoder/drc_src/impd_drc_bitbuffer.c
@@ -185,11 +185,9 @@ WORD32 impd_process_drc_bitstream_dec_gain(
WORD32* num_bits_read) {
WORD32 err_code = 0;
- WORD32 dummy;
-
impd_create_init_bit_buf(it_bit_buff, bitstream_gain, num_bytes);
- dummy = impd_read_bits_buf(it_bit_buff, num_bits_offset);
+ impd_read_bits_buf(it_bit_buff, num_bits_offset);
if (it_bit_buff->error) return it_bit_buff->error;
err_code = impd_drc_uni_gain_read(it_bit_buff, p_drc_bs_dec_struct,
diff --git a/decoder/drc_src/impd_drc_common.h b/decoder/drc_src/impd_drc_common.h
index 3dbbd2c..324e830 100644
--- a/decoder/drc_src/impd_drc_common.h
+++ b/decoder/drc_src/impd_drc_common.h
@@ -170,7 +170,7 @@ extern "C" {
#define MAX_NUM_DRC_EFFECT_TYPE_REQUESTS 15
#define MAX_SIGNATURE_DATA_LENGTH_PLUS_ONE 256
-#define EXT_COUNT_MAX 2
+#define EXT_COUNT_MAX 8
#define UNIDRCGAINEXT_TERM 0x0
#define UNIDRCLOUDEXT_TERM 0x0
#define UNIDRCCONFEXT_TERM 0x0
diff --git a/decoder/drc_src/impd_drc_config_params.h b/decoder/drc_src/impd_drc_config_params.h
index 13a79ec..b0d19c5 100644
--- a/decoder/drc_src/impd_drc_config_params.h
+++ b/decoder/drc_src/impd_drc_config_params.h
@@ -44,4 +44,6 @@
#define IA_DRC_DEC_CONFIG_DRC_ALBUM_MODE 0x0014
#define IA_DRC_DEC_CONFIG_DRC_BOOST 0x0015
#define IA_DRC_DEC_CONFIG_DRC_COMPRESS 0x0016
+#define IA_DRC_DEC_CONFIG_PARAM_APPLY_CROSSFADE 0x0017
+#define IA_DRC_DEC_CONFIG_PARAM_CONFIG_CHANGED 0x0018
#endif
diff --git a/decoder/drc_src/impd_drc_dynamic_payload.c b/decoder/drc_src/impd_drc_dynamic_payload.c
index f8a1aa9..3c0cbb8 100644
--- a/decoder/drc_src/impd_drc_dynamic_payload.c
+++ b/decoder/drc_src/impd_drc_dynamic_payload.c
@@ -353,7 +353,7 @@ WORD32 impd_parse_uni_drc_gain_ext(
ia_bit_buf_struct* it_bit_buff,
ia_uni_drc_gain_ext_struct* uni_drc_gain_ext) {
WORD32 k;
- WORD32 bit_size_len, ext_size_bits, bit_size, other_bit;
+ WORD32 bit_size_len, ext_size_bits, bit_size;
k = 0;
uni_drc_gain_ext->uni_drc_gain_ext_type[k] =
@@ -369,7 +369,6 @@ WORD32 impd_parse_uni_drc_gain_ext(
if (it_bit_buff->error) return it_bit_buff->error;
uni_drc_gain_ext->ext_bit_size[k] = bit_size + 1;
- other_bit =
impd_skip_bits_buf(it_bit_buff, uni_drc_gain_ext->ext_bit_size[k]);
if (it_bit_buff->error) return it_bit_buff->error;
k++;
diff --git a/decoder/drc_src/impd_drc_gain_dec.c b/decoder/drc_src/impd_drc_gain_dec.c
index dc7430f..6b3f40b 100644
--- a/decoder/drc_src/impd_drc_gain_dec.c
+++ b/decoder/drc_src/impd_drc_gain_dec.c
@@ -244,22 +244,22 @@ impd_map_gain(
ia_split_drc_characteristic_struct* split_drc_characteristic_source,
ia_split_drc_characteristic_struct* split_drc_characteristic_target,
FLOAT32 gain_in_db, FLOAT32* gain_out_db) {
- FLOAT32 inLevel;
+ FLOAT32 in_level=0;
WORD32 err = 0;
switch (split_drc_characteristic_source->characteristic_format) {
case CHARACTERISTIC_SIGMOID:
err = impd_compressor_io_sigmoid_inv(split_drc_characteristic_source,
- gain_in_db, &inLevel);
+ gain_in_db, &in_level);
if (err) return (err);
break;
case CHARACTERISTIC_NODES:
impd_compressor_io_nodes_inverse(split_drc_characteristic_source,
- gain_in_db, &inLevel);
+ gain_in_db, &in_level);
break;
case CHARACTERISTIC_PASS_THRU:
- inLevel = gain_in_db;
+ in_level = gain_in_db;
break;
default:
return (UNEXPECTED_ERROR);
@@ -267,23 +267,23 @@ impd_map_gain(
}
switch (split_drc_characteristic_target->characteristic_format) {
case CHARACTERISTIC_SIGMOID:
- err = impd_compressor_io_sigmoid(split_drc_characteristic_target, inLevel,
+ err = impd_compressor_io_sigmoid(split_drc_characteristic_target, in_level,
gain_out_db);
if (err) return (err);
break;
case CHARACTERISTIC_NODES:
- if (inLevel < DRC_INPUT_LOUDNESS_TARGET) {
+ if (in_level < DRC_INPUT_LOUDNESS_TARGET) {
err = impd_compressor_io_nodes_lt(split_drc_characteristic_target,
- inLevel, gain_out_db);
+ in_level, gain_out_db);
if (err) return (err);
} else {
err = impd_compressor_io_nodes_rt(split_drc_characteristic_target,
- inLevel, gain_out_db);
+ in_level, gain_out_db);
if (err) return (err);
}
break;
case CHARACTERISTIC_PASS_THRU:
- *gain_out_db = inLevel;
+ *gain_out_db = in_level;
break;
default:
break;
@@ -551,32 +551,44 @@ WORD32
impd_concatenate_segments(WORD32 drc_frame_size, WORD32 drc_band,
ia_interp_params_struct* interp_params_str,
ia_spline_nodes_struct* str_spline_nodes,
- ia_interp_buf_struct* buf_interpolation) {
- WORD32 timePrev, duration, n, err = 0;
- FLOAT32 loc_db_gain = 0.0f, prev_db_gain, slope = 0.0f, slopePrev;
+ ia_interp_buf_struct* buf_interpolation,
+ WORD32 sel_drc_index, WORD32 is_config_changed,
+ WORD32 loudness_changed) {
+ WORD32 time_prev, duration, n, err = 0;
+ FLOAT32 loc_db_gain = 0.0f, prev_db_gain, slope = 0.0f, slope_prev;
- timePrev = buf_interpolation->prev_node.time;
+ time_prev = buf_interpolation->prev_node.time;
prev_db_gain = buf_interpolation->prev_node.loc_db_gain;
- slopePrev = buf_interpolation->prev_node.slope;
+ slope_prev = buf_interpolation->prev_node.slope;
for (n = 0; n < str_spline_nodes->num_nodes; n++) {
- duration = str_spline_nodes->str_node[n].time - timePrev;
+ duration = str_spline_nodes->str_node[n].time - time_prev;
loc_db_gain = str_spline_nodes->str_node[n].loc_db_gain;
+ if (loudness_changed) {
+ if (sel_drc_index == 0 && is_config_changed == 1) {
+ loc_db_gain = str_spline_nodes->str_node[n].loc_db_gain +
+ interp_params_str->loudness_normalization_gain_db;
+ if (prev_db_gain == 0) {
+ prev_db_gain = buf_interpolation->prev_node.loc_db_gain +
+ interp_params_str->loudness_normalization_gain_db;
+ }
+ }
+ }
slope = str_spline_nodes->str_node[n].slope;
err = impd_interpolate_drc_gain(
interp_params_str, drc_band, duration, prev_db_gain, loc_db_gain,
- slopePrev, slope, buf_interpolation->lpcm_gains + MAX_SIGNAL_DELAY +
- drc_frame_size + timePrev);
+ slope_prev, slope, buf_interpolation->lpcm_gains + MAX_SIGNAL_DELAY +
+ drc_frame_size + time_prev);
if (err) return (err);
- timePrev = str_spline_nodes->str_node[n].time;
+ time_prev = str_spline_nodes->str_node[n].time;
prev_db_gain = loc_db_gain;
- slopePrev = slope;
+ slope_prev = slope;
}
buf_interpolation->str_node.loc_db_gain = loc_db_gain;
buf_interpolation->str_node.slope = slope;
- buf_interpolation->str_node.time = timePrev;
+ buf_interpolation->str_node.time = time_prev;
return (0);
}
@@ -593,8 +605,8 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
WORD32 drc_instructions_index =
ia_drc_params_struct->sel_drc_array[sel_drc_index].drc_instructions_index;
if (drc_instructions_index >= 0) {
- WORD32 b, g, gainElementIndex, err = 0;
- WORD32 parametricDrcInstanceIndex = 0;
+ WORD32 b, g, gain_element_index, err = 0;
+ WORD32 parametric_drc_instance_index = 0;
ia_interp_params_struct interp_params_str = {0};
ia_drc_instructions_struct* str_drc_instruction_str =
@@ -644,7 +656,7 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
impd_advance_buf(ia_drc_params_struct->drc_frame_size,
&(drc_gain_buffers->pstr_gain_buf[sel_drc_index]));
- gainElementIndex = 0;
+ gain_element_index = 0;
for (g = 0; g < num_drc_ch_groups; g++) {
WORD32 gainSet = 0;
WORD32 num_drc_bands = 0;
@@ -688,42 +700,46 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
ia_drc_params_struct->drc_frame_size, b, &interp_params_str,
&(pstr_drc_gain->drc_gain_sequence[seq].str_spline_nodes[0]),
&(drc_gain_buffers->pstr_gain_buf[sel_drc_index]
- .buf_interpolation[gainElementIndex]));
+ .buf_interpolation[gain_element_index]),
+ sel_drc_index, pstr_drc_config->is_config_changed,
+ pstr_drc_config->ln_gain_changed);
if (err) return (err);
- gainElementIndex++;
+ gain_element_index++;
}
} else {
if (ia_drc_params_struct->sub_band_domain_mode ==
SUBBAND_DOMAIN_MODE_OFF &&
!(p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.parametric_drc_type == PARAM_DRC_TYPE_LIM)) {
err = impd_parametric_drc_instance_process(
p_drc_gain_dec_structs->audio_in_out_buf.audio_in_out_buf, NULL,
NULL, &p_drc_gain_dec_structs->parametricdrc_params,
&p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]);
+ [parametric_drc_instance_index]);
if (err) return (err);
err = impd_concatenate_segments(
ia_drc_params_struct->drc_frame_size, 0, &interp_params_str,
&p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.str_spline_nodes,
&(drc_gain_buffers->pstr_gain_buf[sel_drc_index]
- .buf_interpolation[gainElementIndex]));
+ .buf_interpolation[gain_element_index]),
+ sel_drc_index, pstr_drc_config->is_config_changed,
+ pstr_drc_config->ln_gain_changed);
if (err) return (err);
} else if (ia_drc_params_struct->sub_band_domain_mode ==
SUBBAND_DOMAIN_MODE_OFF &&
p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.parametric_drc_type == PARAM_DRC_TYPE_LIM) {
FLOAT32* lpcm_gains = (drc_gain_buffers->pstr_gain_buf[sel_drc_index]
- .buf_interpolation[gainElementIndex])
+ .buf_interpolation[gain_element_index])
.lpcm_gains +
MAX_SIGNAL_DELAY;
impd_parametric_lim_type_drc_process(
@@ -731,7 +747,7 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
loudness_normalization_gain_db,
&p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.str_parametric_drc_type_lim_params,
lpcm_gains);
@@ -739,7 +755,7 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
SUBBAND_DOMAIN_MODE_OFF &&
!(p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.parametric_drc_type == PARAM_DRC_TYPE_LIM)) {
err = impd_parametric_drc_instance_process(
NULL, p_drc_gain_dec_structs->audio_in_out_buf.audio_real_buff,
@@ -747,24 +763,26 @@ impd_get_drc_gain(ia_drc_gain_dec_struct* p_drc_gain_dec_structs,
&p_drc_gain_dec_structs->parametricdrc_params,
&p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]);
+ [parametric_drc_instance_index]);
if (err) return (err);
err = impd_concatenate_segments(
ia_drc_params_struct->drc_frame_size, 0, &interp_params_str,
&p_drc_gain_dec_structs->parametricdrc_params
.str_parametric_drc_instance_params
- [parametricDrcInstanceIndex]
+ [parametric_drc_instance_index]
.str_spline_nodes,
&(drc_gain_buffers->pstr_gain_buf[sel_drc_index]
- .buf_interpolation[gainElementIndex]));
+ .buf_interpolation[gain_element_index]),
+ sel_drc_index, pstr_drc_config->is_config_changed,
+ pstr_drc_config->ln_gain_changed);
if (err) return (err);
} else {
return (UNEXPECTED_ERROR);
}
- gainElementIndex++;
- parametricDrcInstanceIndex++;
+ gain_element_index++;
+ parametric_drc_instance_index++;
}
}
}
diff --git a/decoder/drc_src/impd_drc_init.c b/decoder/drc_src/impd_drc_init.c
index fa8578e..cf232e8 100644
--- a/decoder/drc_src/impd_drc_init.c
+++ b/decoder/drc_src/impd_drc_init.c
@@ -113,6 +113,8 @@ IA_ERRORCODE impd_drc_set_default_config(ia_drc_api_struct *p_obj_drc) {
p_obj_drc->str_config.target_loudness = -24;
p_obj_drc->str_config.loud_norm_flag = 0;
p_obj_drc->str_config.album_mode = 0;
+ p_obj_drc->str_config.boost = 1.0f;
+ p_obj_drc->str_config.compress = 1.0f;
memset(&p_obj_drc->str_bit_handler, 0, sizeof(p_obj_drc->str_bit_handler));
return IA_NO_ERROR;
@@ -410,6 +412,11 @@ IA_ERRORCODE impd_drc_init(ia_drc_api_struct *p_obj_drc) {
if (err_code != IA_NO_ERROR) return err_code;
}
+ if (!p_obj_drc->str_config.boost_set) p_obj_drc->str_config.boost = 1.0f;
+
+ if (!p_obj_drc->str_config.compress_set)
+ p_obj_drc->str_config.compress = 1.0f;
+
err_code = impd_drc_dec_interface_add_effect_type(
p_obj_drc->str_payload.pstr_drc_interface,
p_obj_drc->str_config.effect_type, p_obj_drc->str_config.target_loudness,
diff --git a/decoder/drc_src/impd_drc_loudness_control.c b/decoder/drc_src/impd_drc_loudness_control.c
index c377a24..e478fc4 100644
--- a/decoder/drc_src/impd_drc_loudness_control.c
+++ b/decoder/drc_src/impd_drc_loudness_control.c
@@ -734,7 +734,6 @@ WORD32 impd_init_loudness_control(
if (overall_loudness_info_present == 1) {
WORD32 requested_method_definition = METHOD_DEFINITION_PROGRAM_LOUDNESS;
WORD32 other_method_definition = METHOD_DEFINITION_PROGRAM_LOUDNESS;
- WORD32 requested_measurement_system = MEASUREMENT_SYSTEM_BS_1770_4;
WORD32 requested_preprocessing = 0;
const WORD32* system_bonus = measurement_system_default_tbl;
@@ -761,35 +760,27 @@ WORD32 impd_init_loudness_control(
switch (pstr_drc_sel_proc_params_struct->loudness_measurement_system) {
case USER_MEASUREMENT_SYSTEM_DEFAULT:
case USER_MEASUREMENT_SYSTEM_BS_1770_4:
- requested_measurement_system = MEASUREMENT_SYSTEM_BS_1770_4;
system_bonus = measurement_system_bs1770_3_tbl;
break;
case USER_MEASUREMENT_SYSTEM_USER:
- requested_measurement_system = MEASUREMENT_SYSTEM_USER;
system_bonus = measurement_system_user_tbl;
break;
case USER_MEASUREMENT_SYSTEM_EXPERT_PANEL:
- requested_measurement_system = MEASUREMENT_SYSTEM_EXPERT_PANEL;
system_bonus = measurement_system_expert_tbl;
break;
case USER_MEASUREMENT_SYSTEM_RESERVED_A:
- requested_measurement_system = USER_MEASUREMENT_SYSTEM_RESERVED_A;
system_bonus = measurement_system_rms_a_tbl;
break;
case USER_MEASUREMENT_SYSTEM_RESERVED_B:
- requested_measurement_system = USER_MEASUREMENT_SYSTEM_RESERVED_B;
system_bonus = measurement_system_rms_b_tbl;
break;
case USER_MEASUREMENT_SYSTEM_RESERVED_C:
- requested_measurement_system = USER_MEASUREMENT_SYSTEM_RESERVED_C;
system_bonus = measurement_system_rms_c_tbl;
break;
case USER_MEASUREMENT_SYSTEM_RESERVED_D:
- requested_measurement_system = USER_MEASUREMENT_SYSTEM_RESERVED_D;
system_bonus = measurement_system_rms_d_tbl;
break;
case USER_MEASUREMENT_SYSTEM_RESERVED_E:
- requested_measurement_system = USER_MEASUREMENT_SYSTEM_RESERVED_E;
system_bonus = measurement_system_rms_e_tbl;
break;
diff --git a/decoder/drc_src/impd_drc_main_td_process.c b/decoder/drc_src/impd_drc_main_td_process.c
index 4354365..407983c 100644
--- a/decoder/drc_src/impd_drc_main_td_process.c
+++ b/decoder/drc_src/impd_drc_main_td_process.c
@@ -40,6 +40,8 @@
#include "impd_drc_api_struct_def.h"
#include "impd_drc_hashdefines.h"
#include "impd_drc_peak_limiter.h"
+IA_ERRORCODE impd_drc_set_default_bitstream_config(
+ ia_drc_config *pstr_drc_config);
static IA_ERRORCODE impd_down_mix(
ia_drc_sel_proc_output_struct *uni_drc_sel_proc_output,
@@ -84,12 +86,61 @@ IA_ERRORCODE impd_process_time_domain(ia_drc_api_struct *p_obj_drc) {
return IA_NO_ERROR;
}
+ p_obj_drc->str_payload.pstr_loudness_info->loudness_info_album_count = 0;
+ p_obj_drc->str_payload.pstr_loudness_info->loudness_info_count = 0;
+ p_obj_drc->str_payload.pstr_loudness_info->loudness_info_set_ext_present = 0;
+ p_obj_drc->str_payload.pstr_drc_config->is_config_changed =
+ p_obj_drc->str_config.is_config_changed;
+
+ if (p_obj_drc->str_config.is_config_changed == 1) {
+ err_code = impd_process_drc_bitstream_dec_loudness_info_set(
+ p_obj_drc->pstr_bit_buf, p_obj_drc->str_payload.pstr_loudness_info,
+ &p_obj_drc->str_bit_handler.bitstream_loudness_info[0],
+ p_obj_drc->str_bit_handler.num_bytes_bs_loudness_info);
+ if (err_code != IA_NO_ERROR) return err_code;
+
+ err_code = impd_drc_uni_sel_proc_process(
+ p_obj_drc->str_payload.pstr_selection_proc,
+ p_obj_drc->str_payload.pstr_drc_config,
+ p_obj_drc->str_payload.pstr_loudness_info,
+ p_obj_drc->str_payload.pstr_drc_sel_proc_output);
+ if (err_code != IA_NO_ERROR) return err_code;
+
+ err_code = impd_process_drc_bitstream_dec_config(
+ p_obj_drc->str_payload.pstr_bitstream_dec, p_obj_drc->pstr_bit_buf,
+ p_obj_drc->str_payload.pstr_drc_config,
+ &p_obj_drc->str_bit_handler.bitstream_drc_config[0],
+ p_obj_drc->str_bit_handler.num_bytes_bs_drc_config);
+ if (err_code == 1) {
+ memset(p_obj_drc->str_payload.pstr_drc_config, 0, sizeof(ia_drc_config));
+ err_code = impd_drc_set_default_bitstream_config(
+ p_obj_drc->str_payload.pstr_drc_config);
+ p_obj_drc->str_payload.pstr_drc_config->channel_layout
+ .base_channel_count = p_obj_drc->str_config.num_ch_in;
+ }
+
+ if (err_code != IA_NO_ERROR) return err_code;
+ }
+
+ if (p_obj_drc->frame_count == 0) {
+ p_obj_drc->str_config.ln_dbgain_prev =
+ (WORD32)p_obj_drc->str_payload.pstr_drc_sel_proc_output
+ ->loudness_normalization_gain_db;
+ }
+
+ if (!p_obj_drc->str_payload.pstr_drc_config->ln_gain_changed) {
+ if (p_obj_drc->str_payload.pstr_drc_sel_proc_output
+ ->loudness_normalization_gain_db !=
+ p_obj_drc->str_config.ln_dbgain_prev) {
+ p_obj_drc->str_payload.pstr_drc_config->ln_gain_changed = 1;
+ }
+ }
+
err_code = impd_process_drc_bitstream_dec_gain(
p_obj_drc->str_payload.pstr_bitstream_dec, p_obj_drc->pstr_bit_buf,
p_obj_drc->str_payload.pstr_drc_config,
p_obj_drc->str_payload.pstr_drc_gain,
- &p_obj_drc->str_bit_handler
- .it_bit_buf[p_obj_drc->str_bit_handler.byte_index_bs],
+ p_obj_drc->str_bit_handler.it_bit_buf,
p_obj_drc->str_bit_handler.num_bytes_bs,
p_obj_drc->str_bit_handler.num_bits_offset_bs,
&p_obj_drc->str_bit_handler.num_bits_read_bs);
@@ -202,15 +253,19 @@ IA_ERRORCODE impd_process_time_domain(ia_drc_api_struct *p_obj_drc) {
if (err_code != IA_NO_ERROR) return err_code;
- if (p_obj_drc->str_payload.pstr_drc_sel_proc_output
+ if (p_obj_drc->str_payload.pstr_drc_config->apply_drc == 0 ||
+ p_obj_drc->str_payload.pstr_drc_config->is_config_changed == 0 ||
+ p_obj_drc->str_payload.pstr_drc_config->ln_gain_changed == 0) {
+ if (p_obj_drc->str_payload.pstr_drc_sel_proc_output
->loudness_normalization_gain_db != 0.0f) {
- FLOAT32 gain_value =
- (FLOAT32)pow(10.0, p_obj_drc->str_payload.pstr_drc_sel_proc_output
+ FLOAT32 gain_value =
+ (FLOAT32)pow(10.0, p_obj_drc->str_payload.pstr_drc_sel_proc_output
->loudness_normalization_gain_db /
20.0);
- for (i = 0; i < p_obj_drc->str_config.num_ch_out; i++) {
- for (j = 0; j < p_obj_drc->str_config.frame_size; j++) {
- audio_buff[i][j] *= gain_value;
+ for (i = 0; i < p_obj_drc->str_config.num_ch_out; i++) {
+ for (j = 0; j < p_obj_drc->str_config.frame_size; j++) {
+ audio_buff[i][j] *= gain_value;
+ }
}
}
}
@@ -320,5 +375,6 @@ IA_ERRORCODE impd_process_time_domain(ia_drc_api_struct *p_obj_drc) {
p_obj_drc->str_config.num_ch_out *
(p_obj_drc->str_config.pcm_size >> 3);
}
+ p_obj_drc->frame_count++;
return err_code;
}
diff --git a/decoder/drc_src/impd_drc_process.c b/decoder/drc_src/impd_drc_process.c
index e4b5147..2dd97d1 100644
--- a/decoder/drc_src/impd_drc_process.c
+++ b/decoder/drc_src/impd_drc_process.c
@@ -40,13 +40,13 @@ VOID impd_apply_gains_and_add(
FLOAT32* channel_audio[], WORD32 impd_apply_gains) {
WORD32 c, b, g, i;
- WORD32 offset = 0, signalIndex = 0;
- WORD32 gainIndexForGroup[CHANNEL_GROUP_COUNT_MAX];
- WORD32 signalIndexForChannel[MAX_CHANNEL_COUNT];
+ WORD32 offset = 0, signal_index = 0;
+ WORD32 gain_index_for_group[CHANNEL_GROUP_COUNT_MAX];
+ WORD32 signal_index_for_channel[MAX_CHANNEL_COUNT];
FLOAT32* lpcm_gains;
FLOAT32 sum;
- FLOAT32 drc_gain_last, gainThr;
- WORD32 iEnd, iStart;
+ FLOAT32 drc_gain_last = 0, gain_thr;
+ WORD32 i_end, i_start;
ia_drc_instructions_struct* str_drc_instruction_str =
&(pstr_drc_instruction_arr[drc_instructions_index]);
@@ -58,21 +58,21 @@ VOID impd_apply_gains_and_add(
if (ia_drc_params_struct->delay_mode == DELAY_MODE_LOW_DELAY) {
offset = ia_drc_params_struct->drc_frame_size;
}
- gainIndexForGroup[0] = 0;
+ gain_index_for_group[0] = 0;
for (g = 0; g < str_drc_instruction_str->num_drc_ch_groups - 1; g++) {
- gainIndexForGroup[g + 1] =
- gainIndexForGroup[g] +
+ gain_index_for_group[g + 1] =
+ gain_index_for_group[g] +
str_drc_instruction_str->band_count_of_ch_group[g];
}
- signalIndexForChannel[0] = 0;
+ signal_index_for_channel[0] = 0;
for (c = 0; c < str_drc_instruction_str->audio_num_chan - 1; c++) {
if (str_drc_instruction_str->channel_group_of_ch[c] >= 0) {
- signalIndexForChannel[c + 1] =
- signalIndexForChannel[c] +
+ signal_index_for_channel[c + 1] =
+ signal_index_for_channel[c] +
str_drc_instruction_str->band_count_of_ch_group
[str_drc_instruction_str->channel_group_of_ch[c]];
} else {
- signalIndexForChannel[c + 1] = signalIndexForChannel[c] + 1;
+ signal_index_for_channel[c + 1] = signal_index_for_channel[c] + 1;
}
}
@@ -81,59 +81,59 @@ VOID impd_apply_gains_and_add(
b++) {
if (str_drc_instruction_str->ch_group_parametric_drc_flag[g] == 0) {
lpcm_gains =
- pstr_gain_buf->buf_interpolation[gainIndexForGroup[g] + b]
+ pstr_gain_buf->buf_interpolation[gain_index_for_group[g] + b]
.lpcm_gains +
MAX_SIGNAL_DELAY - ia_drc_params_struct->gain_delay_samples -
ia_drc_params_struct->audio_delay_samples + offset;
} else {
lpcm_gains =
- pstr_gain_buf->buf_interpolation[gainIndexForGroup[g] + b]
+ pstr_gain_buf->buf_interpolation[gain_index_for_group[g] + b]
.lpcm_gains +
MAX_SIGNAL_DELAY +
str_drc_instruction_str
->parametric_drc_look_ahead_samples[g] -
ia_drc_params_struct->audio_delay_samples;
}
- iEnd = 0;
- iStart = 0;
- while (iEnd < ia_drc_params_struct->drc_frame_size) {
+ i_end = 0;
+ i_start = 0;
+ while (i_end < ia_drc_params_struct->drc_frame_size) {
if (shape_filter_block[g].shape_flter_block_flag) {
drc_gain_last = shape_filter_block[g].drc_gain_last;
- gainThr = 0.0001f * drc_gain_last;
- while ((iEnd < ia_drc_params_struct->drc_frame_size) &&
- (fabs(lpcm_gains[iEnd] - drc_gain_last) <= gainThr))
- iEnd++;
+ gain_thr = 0.0001f * drc_gain_last;
+ while ((i_end < ia_drc_params_struct->drc_frame_size) &&
+ (fabs(lpcm_gains[i_end] - drc_gain_last) <= gain_thr))
+ i_end++;
} else {
- iEnd = ia_drc_params_struct->drc_frame_size;
+ i_end = ia_drc_params_struct->drc_frame_size;
}
for (c = 0; c < str_drc_instruction_str->audio_num_chan; c++)
{
if (g == str_drc_instruction_str->channel_group_of_ch[c]) {
- signalIndex = signalIndexForChannel[c] + b;
+ signal_index = signal_index_for_channel[c] + b;
if (impd_apply_gains == 1) {
impd_shape_filt_block_time_process(
- &shape_filter_block[g], &lpcm_gains[0], signalIndex,
- &deinterleaved_audio[signalIndex][0], iStart, iEnd);
+ &shape_filter_block[g], &lpcm_gains[0], signal_index,
+ &deinterleaved_audio[signal_index][0], i_start, i_end);
} else {
- for (i = iStart; i < iEnd; i++) {
- deinterleaved_audio[signalIndex][i] = lpcm_gains[i];
+ for (i = i_start; i < i_end; i++) {
+ deinterleaved_audio[signal_index][i] = lpcm_gains[i];
}
}
}
}
- if ((iEnd < ia_drc_params_struct->drc_frame_size) &&
+ if ((i_end < ia_drc_params_struct->drc_frame_size) &&
(shape_filter_block[g].shape_flter_block_flag)) {
- impd_shape_filt_block_adapt(lpcm_gains[iEnd],
+ impd_shape_filt_block_adapt(lpcm_gains[i_end],
&shape_filter_block[g]);
}
- if ((iEnd == iStart) &&
+ if ((i_end == i_start) &&
(drc_gain_last == shape_filter_block[g].drc_gain_last))
break;
- iStart = iEnd;
+ i_start = i_end;
}
}
}
@@ -141,7 +141,7 @@ VOID impd_apply_gains_and_add(
}
}
- signalIndex = 0;
+ signal_index = 0;
if (str_drc_instruction_str->drc_set_id > 0) {
for (c = 0; c < str_drc_instruction_str->audio_num_chan; c++)
@@ -153,17 +153,17 @@ VOID impd_apply_gains_and_add(
sum = 0.0f;
for (b = 0; b < str_drc_instruction_str->band_count_of_ch_group[g];
b++) {
- sum += deinterleaved_audio[signalIndex + b][i];
+ sum += deinterleaved_audio[signal_index + b][i];
}
channel_audio[c][i] = sum;
}
- signalIndex += str_drc_instruction_str->band_count_of_ch_group[g];
+ signal_index += str_drc_instruction_str->band_count_of_ch_group[g];
} else {
for (i = 0; i < ia_drc_params_struct->drc_frame_size; i++) {
- channel_audio[c][i] = deinterleaved_audio[signalIndex][i];
+ channel_audio[c][i] = deinterleaved_audio[signal_index][i];
}
- signalIndex++;
+ signal_index++;
}
}
} else {
diff --git a/decoder/drc_src/impd_drc_selection_process.c b/decoder/drc_src/impd_drc_selection_process.c
index 0917845..9b4fa8e 100644
--- a/decoder/drc_src/impd_drc_selection_process.c
+++ b/decoder/drc_src/impd_drc_selection_process.c
@@ -541,7 +541,6 @@ WORD32 impd_match_eq_set(ia_drc_config* drc_config, WORD32 downmix_id,
WORD32* matching_eq_set_idx) {
ia_eq_instructions_struct* str_eq_instructions = NULL;
WORD32 i, k, n;
- WORD32 match = 0;
*matching_eq_set_count = 0;
for (i = 0; i < drc_config->str_drc_config_ext.eq_instructions_count; i++) {
str_eq_instructions =
@@ -557,7 +556,6 @@ WORD32 impd_match_eq_set(ia_drc_config* drc_config, WORD32 downmix_id,
for (n = 0; n < str_eq_instructions->drc_set_id_count; n++) {
if ((str_eq_instructions->drc_set_id[n] == ID_FOR_ANY_DRC) ||
(drc_set_id == str_eq_instructions->drc_set_id[n])) {
- match = 1;
matching_eq_set_idx[*matching_eq_set_count] = i;
(*matching_eq_set_count)++;
}
diff --git a/decoder/drc_src/impd_drc_selection_process_drcset_selection.c b/decoder/drc_src/impd_drc_selection_process_drcset_selection.c
index b80d71f..676878b 100644
--- a/decoder/drc_src/impd_drc_selection_process_drcset_selection.c
+++ b/decoder/drc_src/impd_drc_selection_process_drcset_selection.c
@@ -203,8 +203,6 @@ WORD32 impd_get_selected_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc,
WORD32 drc_set_id_selected) {
WORD32 n;
- ia_drc_instructions_struct* str_drc_instruction_str = NULL;
-
for (n = 0; n < pstr_drc_uni_sel_proc->drc_config.drc_instructions_count_plus;
n++) {
if (pstr_drc_uni_sel_proc->drc_config.str_drc_instruction_str[n]
@@ -215,9 +213,6 @@ WORD32 impd_get_selected_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc,
return (EXTERNAL_ERROR);
}
pstr_drc_uni_sel_proc->drc_inst_index_sel = n;
- str_drc_instruction_str = &(
- pstr_drc_uni_sel_proc->drc_config
- .str_drc_instruction_str[pstr_drc_uni_sel_proc->drc_inst_index_sel]);
pstr_drc_uni_sel_proc->drc_instructions_index[0] =
pstr_drc_uni_sel_proc->drc_inst_index_sel;
@@ -431,10 +426,9 @@ WORD32 impd_match_effect_types(
WORD32 k, err;
WORD32 match_found_flag = 0;
WORD32 state_requested;
- WORD32 desired_effect_type_found, fallback_effect_type_found;
+ WORD32 desired_effect_type_found;
desired_effect_type_found = 0;
- fallback_effect_type_found = 0;
k = 0;
while (k < effect_type_requested_desired_count) {
state_requested = 1;
@@ -453,7 +447,6 @@ WORD32 impd_match_effect_types(
&match_found_flag, selection_candidate_count,
selection_candidate_info);
if (err) return (err);
- if (match_found_flag) fallback_effect_type_found = 1;
k++;
}
}
diff --git a/decoder/drc_src/impd_drc_shape_filter.c b/decoder/drc_src/impd_drc_shape_filter.c
index b8ca037..d2467c7 100644
--- a/decoder/drc_src/impd_drc_shape_filter.c
+++ b/decoder/drc_src/impd_drc_shape_filter.c
@@ -41,7 +41,7 @@ VOID impd_shape_filt_block_adapt(const FLOAT32 drc_gain,
shape_filter_block* shape_filter_block) {
// WORD32 err = 0;
WORD32 i;
- FLOAT32 warpedGain, x1, y1;
+ FLOAT32 warped_gain = 0, x1 = 0, y1;
shape_filter_block->drc_gain_last = drc_gain;
for (i = 0; i < 4; i++) {
if (shape_filter_block->shape_filter[i].type == SHAPE_FILTER_TYPE_OFF)
@@ -51,9 +51,9 @@ VOID impd_shape_filt_block_adapt(const FLOAT32 drc_gain,
shape_filter_block->shape_filter[i].type ==
SHAPE_FILTER_TYPE_HF_CUT) {
if (drc_gain < 1.0f)
- warpedGain = -1.0f;
+ warped_gain = -1.0f;
else
- warpedGain =
+ warped_gain =
(drc_gain - 1.0f) /
(drc_gain - 1.0f + shape_filter_block->shape_filter[i].gain_offset);
x1 = shape_filter_block->shape_filter[i].a1;
@@ -62,9 +62,9 @@ VOID impd_shape_filt_block_adapt(const FLOAT32 drc_gain,
shape_filter_block->shape_filter[i].type ==
SHAPE_FILTER_TYPE_HF_BOOST) {
if (drc_gain >= 1.0f)
- warpedGain = -1.0f;
+ warped_gain = -1.0f;
else
- warpedGain =
+ warped_gain =
(1.0f - drc_gain) /
(1.0f +
drc_gain *
@@ -72,11 +72,11 @@ VOID impd_shape_filt_block_adapt(const FLOAT32 drc_gain,
x1 = shape_filter_block->shape_filter[i].b1;
}
- if (warpedGain <= 0.0f) {
+ if (warped_gain <= 0.0f) {
y1 = x1;
- } else if (warpedGain <
+ } else if (warped_gain <
shape_filter_block->shape_filter[i].warped_gain_max) {
- y1 = x1 + shape_filter_block->shape_filter[i].factor * warpedGain;
+ y1 = x1 + shape_filter_block->shape_filter[i].factor * warped_gain;
} else {
y1 = shape_filter_block->shape_filter[i].y1_bound;
}
diff --git a/decoder/drc_src/impd_drc_static_payload.c b/decoder/drc_src/impd_drc_static_payload.c
index 3ad9562..3c08adb 100644
--- a/decoder/drc_src/impd_drc_static_payload.c
+++ b/decoder/drc_src/impd_drc_static_payload.c
@@ -574,7 +574,7 @@ static WORD32 impd_parse_parametric_drc_instructions(
ia_bit_buf_struct* it_bit_buff, WORD32 parametric_drc_frame_size,
ia_parametric_drc_instructions_struct* str_parametric_drc_instructions) {
WORD32 i = 0, err = 0, temp;
- WORD32 bit_size_len, bit_size, other_bit;
+ WORD32 bit_size_len, bit_size;
str_parametric_drc_instructions->drc_characteristic = 0;
str_parametric_drc_instructions->disable_paramteric_drc = 0;
@@ -678,7 +678,7 @@ static WORD32 impd_parse_parametric_drc_instructions(
default:
str_parametric_drc_instructions->disable_paramteric_drc = 1;
for (i = 0; i < str_parametric_drc_instructions->len_bit_size; i++) {
- other_bit = impd_read_bits_buf(it_bit_buff, 1);
+ impd_read_bits_buf(it_bit_buff, 1);
if (it_bit_buff->error) return it_bit_buff->error;
}
break;
@@ -908,7 +908,7 @@ impd_parse_drc_config_ext(ia_bit_buf_struct* it_bit_buff,
ia_drc_config* drc_config,
ia_drc_config_ext* str_drc_config_ext) {
WORD32 err = 0, i, k;
- WORD32 bit_size_len, ext_size_bits, bit_size, other_bit;
+ WORD32 bit_size_len, ext_size_bits, bit_size;
k = 0;
str_drc_config_ext->drc_config_ext_type[k] =
@@ -955,7 +955,7 @@ impd_parse_drc_config_ext(ia_bit_buf_struct* it_bit_buff,
break;
default:
for (i = 0; i < str_drc_config_ext->ext_bit_size[k]; i++) {
- other_bit = impd_read_bits_buf(it_bit_buff, 1);
+ impd_read_bits_buf(it_bit_buff, 1);
if (it_bit_buff->error) return it_bit_buff->error;
}
break;
@@ -1622,7 +1622,7 @@ impd_parse_loudness_info_set_ext(
ia_bit_buf_struct* it_bit_buff,
ia_drc_loudness_info_set_struct* loudness_info_set) {
WORD32 err = 0, i, k;
- WORD32 bit_size_len, ext_size_bits, bit_size, other_bit;
+ WORD32 bit_size_len, ext_size_bits, bit_size;
k = 0;
loudness_info_set->str_loudness_info_set_ext.loudness_info_set_ext_type[k] =
@@ -1649,7 +1649,7 @@ impd_parse_loudness_info_set_ext(
for (i = 0;
i < loudness_info_set->str_loudness_info_set_ext.ext_bit_size[k];
i++) {
- other_bit = impd_read_bits_buf(it_bit_buff, 1);
+ impd_read_bits_buf(it_bit_buff, 1);
if (it_bit_buff->error) return it_bit_buff->error;
}
break;
@@ -2199,9 +2199,9 @@ impd_parse_drc_instructions_uni_drc(
if (it_bit_buff->error) return it_bit_buff->error;
repeat_parameters_cnt += 1;
- if ((c + repeat_parameters_cnt) > MAX_CHANNEL_COUNT)
- return (UNEXPECTED_ERROR);
for (k = 0; k < repeat_parameters_cnt; k++) {
+ if (c > (MAX_CHANNEL_COUNT-1))
+ return (UNEXPECTED_ERROR);
str_drc_instruction_str->gain_set_index[c] =
str_drc_instruction_str->gain_set_index[c - 1];
str_drc_instruction_str->str_ducking_modifiers_for_channel[c] =
@@ -2343,9 +2343,9 @@ impd_parse_drc_instructions_uni_drc(
if (it_bit_buff->error) return it_bit_buff->error;
repeat_gain_set_idx_cnt += 1;
- if ((c + repeat_gain_set_idx_cnt) > MAX_CHANNEL_COUNT)
- return (UNEXPECTED_ERROR);
for (k = 0; k < repeat_gain_set_idx_cnt; k++) {
+ if (c > (MAX_CHANNEL_COUNT - 1))
+ return (UNEXPECTED_ERROR);
str_drc_instruction_str->gain_set_index[c] = bs_gain_set_idx - 1;
c++;
}
diff --git a/decoder/drc_src/impd_drc_struct.h b/decoder/drc_src/impd_drc_struct.h
index 5aa7e30..ea07644 100644
--- a/decoder/drc_src/impd_drc_struct.h
+++ b/decoder/drc_src/impd_drc_struct.h
@@ -618,6 +618,8 @@ typedef struct ia_drc_config {
ia_channel_layout_struct channel_layout;
ia_downmix_instructions_struct
dwnmix_instructions[DOWNMIX_INSTRUCTION_COUNT_MAX];
+ WORD32 is_config_changed;
+ WORD32 ln_gain_changed;
} ia_drc_config;
typedef struct {
diff --git a/decoder/generic/ixheaacd_function_selector_generic.c b/decoder/generic/ixheaacd_function_selector_generic.c
index 9354159..9ceab86 100644
--- a/decoder/generic/ixheaacd_function_selector_generic.c
+++ b/decoder/generic/ixheaacd_function_selector_generic.c
@@ -67,11 +67,15 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_dec;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
+(WORD32 *, ia_lpp_trans_cov_matrix *,
WORD32) = &ixheaacd_covariance_matrix_calc_dec;
+VOID(*ixheaacd_covariance_matrix_calc_960)
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec_960;
+
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_dec;
VOID(*ixheaacd_over_lap_add1)
@@ -186,6 +190,11 @@ VOID(*ixheaacd_pretwiddle_compute)
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_dec;
+VOID(*ixheaacd_pretwiddle_compute_960)
+(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_960_dec;
+
VOID(*ixheaacd_imdct_using_fft)
(ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
WORD32 *ptr_x, WORD32 *ptr_y) = &ixheaacd_imdct_using_fft_dec;
diff --git a/decoder/generic/ixheaacd_qmf_dec_generic.c b/decoder/generic/ixheaacd_qmf_dec_generic.c
index 85e7a5b..0497bec 100644
--- a/decoder/generic/ixheaacd_qmf_dec_generic.c
+++ b/decoder/generic/ixheaacd_qmf_dec_generic.c
@@ -58,6 +58,8 @@
#define RADIXSHIFT 1
#define HQ_SHIFT_VAL 4
+extern const WORD32 ixheaacd_ldmps_polyphase_filter_coeff_fix[1280];
+
VOID ixheaacd_dct3_32(WORD32 *input, WORD32 *output,
const WORD16 *main_twidle_fwd, const WORD16 *post_tbl,
const WORD16 *w_16, const WORD32 *p_table) {
@@ -83,12 +85,12 @@ VOID ixheaacd_dct3_32(WORD32 *input, WORD32 *output,
temp1[0] = *ptr_forward++;
temp1[1] = *ptr_reverse--;
temp1[0] = ixheaacd_add32_sat(ixheaacd_shr32(temp1[0], LP_SHIFT_VAL),
- ixheaacd_shr32(temp1[1], LP_SHIFT_VAL));
+ ixheaacd_shr32(temp1[1], LP_SHIFT_VAL));
temp1[2] = *(ptr_forward - 33);
temp1[3] = *(ptr_reverse - 31);
temp1[1] = ixheaacd_sub32_sat(ixheaacd_shr32(temp1[2], LP_SHIFT_VAL),
- ixheaacd_shr32(temp1[3], LP_SHIFT_VAL));
+ ixheaacd_shr32(temp1[3], LP_SHIFT_VAL));
twid_re = *twidle_fwd++;
twid_im = *twidle_fwd;
@@ -108,7 +110,7 @@ VOID ixheaacd_dct3_32(WORD32 *input, WORD32 *output,
temp1[1] = *ptr_reverse--;
temp1[0] = *(ptr_reverse - 31);
temp1[1] = ixheaacd_sub32_sat(ixheaacd_shr32(temp1[1], LP_SHIFT_VAL),
- ixheaacd_shr32(temp1[0], LP_SHIFT_VAL));
+ ixheaacd_shr32(temp1[0], LP_SHIFT_VAL));
temp1[0] = temp1[1];
@@ -293,7 +295,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
wre = *p_sin_cos++;
*psubband_t++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
*psubband_t++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re, wim));
@@ -303,7 +305,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
*psubband_t2++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wim),
ixheaacd_mult32x16in32(re, wre));
*psubband_t2++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wim),
- ixheaacd_mult32x16in32(im, wre));
+ ixheaacd_mult32x16in32(im, wre));
re = *psubband1--;
im = *psubband++;
@@ -314,13 +316,13 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
*psubband1_t-- = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re, wim));
*psubband1_t-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
re = *psubband12--;
im = *psubband2++;
*psubband1_t2-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wim),
- ixheaacd_mult32x16in32(im, wre));
+ ixheaacd_mult32x16in32(im, wre));
*psubband1_t2-- = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wim),
ixheaacd_mult32x16in32(re, wre));
@@ -331,7 +333,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
wre = *p_sin_cos++;
*psubband_t++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
*psubband_t++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re, wim));
@@ -341,7 +343,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
*psubband_t2++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wim),
ixheaacd_mult32x16in32(re, wre));
*psubband_t2++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wim),
- ixheaacd_mult32x16in32(im, wre));
+ ixheaacd_mult32x16in32(im, wre));
re = *psubband1--;
im = *psubband++;
@@ -352,14 +354,14 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
*psubband1_t-- = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re, wim));
*psubband1_t-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
re = *psubband12--;
im = *psubband2++;
;
*psubband1_t2-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wim),
- ixheaacd_mult32x16in32(im, wre));
+ ixheaacd_mult32x16in32(im, wre));
*psubband1_t2-- = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wim),
ixheaacd_mult32x16in32(re, wre));
}
@@ -400,7 +402,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
im = *psubband1;
*psubband1-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
*psubband++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re, wim));
@@ -430,7 +432,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
re2 = *psubband1;
*psubband++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re, wim),
- ixheaacd_mult32x16in32(im, wre));
+ ixheaacd_mult32x16in32(im, wre));
*psubband1-- = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wim),
ixheaacd_mult32x16in32(re, wre));
@@ -450,7 +452,7 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
im = psubband1[0];
*psubband1-- = ixheaacd_add32_sat(ixheaacd_mult32x16in32(re2, wre),
- ixheaacd_mult32x16in32(im, wim));
+ ixheaacd_mult32x16in32(im, wim));
*psubband++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32(im, wre),
ixheaacd_mult32x16in32(re2, wim));
@@ -466,15 +468,16 @@ VOID ixheaacd_cos_sin_mod(WORD32 *subband,
VOID ixheaacd_fwd_modulation(const WORD32 *p_time_in1, WORD32 *real_subband,
WORD32 *imag_subband,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
- ia_qmf_dec_tables_struct *qmf_dec_tables_ptr) {
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ld_mps_flag) {
WORD32 i;
- const WORD32 *p_time_in2 = &p_time_in1[2 * NO_ANALYSIS_CHANNELS - 1];
+ const WORD32 *p_time_in2 = &p_time_in1[2 * qmf_bank->no_channels - 1];
WORD32 temp1, temp2;
WORD32 *t_real_subband = real_subband;
WORD32 *t_imag_subband = imag_subband;
const WORD16 *tcos;
- for (i = NO_ANALYSIS_CHANNELS - 1; i >= 0; i--) {
+ for (i = qmf_bank->no_channels - 1; i >= 0; i--) {
temp1 = ixheaacd_shr32(*p_time_in1++, HQ_SHIFT_VAL);
temp2 = ixheaacd_shr32(*p_time_in2--, HQ_SHIFT_VAL);
@@ -483,28 +486,48 @@ VOID ixheaacd_fwd_modulation(const WORD32 *p_time_in1, WORD32 *real_subband,
*t_imag_subband++ = ixheaacd_add32_sat(temp1, temp2);
}
- ixheaacd_cos_sin_mod(real_subband, qmf_bank, qmf_dec_tables_ptr->w_16,
- qmf_dec_tables_ptr->dig_rev_table4_16);
-
- tcos = qmf_bank->t_cos;
-
- for (i = (qmf_bank->usb - qmf_bank->lsb - 1); i >= 0; i--) {
- WORD16 cosh, sinh;
- WORD32 re, im;
+ if (qmf_bank->no_channels != 64)
+ ixheaacd_cos_sin_mod(real_subband, qmf_bank, qmf_dec_tables_ptr->w_16,
+ qmf_dec_tables_ptr->dig_rev_table4_16);
+ else
+ ixheaacd_cos_sin_mod(real_subband, qmf_bank, qmf_dec_tables_ptr->w_32,
+ qmf_dec_tables_ptr->dig_rev_table2_32);
- re = *real_subband;
- im = *imag_subband;
- cosh = *tcos++;
- sinh = *tcos++;
- *real_subband++ = ixheaacd_add32_sat(ixheaacd_mult32x16in32_shl(re, cosh),
- ixheaacd_mult32x16in32_shl(im, sinh));
- *imag_subband++ = ixheaacd_sub32_sat(ixheaacd_mult32x16in32_shl(im, cosh),
- ixheaacd_mult32x16in32_shl(re, sinh));
+ if (ld_mps_flag == 0) {
+ tcos = qmf_bank->t_cos;
+
+ for (i = (qmf_bank->usb - qmf_bank->lsb - 1); i >= 0; i--) {
+ WORD16 cosh, sinh;
+ WORD32 re, im;
+
+ re = *real_subband;
+ im = *imag_subband;
+ cosh = *tcos++;
+ sinh = *tcos++;
+ *real_subband++ =
+ ixheaacd_add32_sat(ixheaacd_mult32x16in32_shl(re, cosh),
+ ixheaacd_mult32x16in32_shl(im, sinh));
+ *imag_subband++ =
+ ixheaacd_sub32_sat(ixheaacd_mult32x16in32_shl(im, cosh),
+ ixheaacd_mult32x16in32_shl(re, sinh));
+ }
+ } else {
+ WORD32 i_band;
+ for (i = 0; i < min(64, qmf_bank->no_channels); i += 2) {
+ i_band = real_subband[i];
+ real_subband[i] = -imag_subband[i];
+ imag_subband[i] = i_band;
+
+ i_band = -real_subband[i + 1];
+ real_subband[i + 1] = imag_subband[i + 1];
+ imag_subband[i + 1] = i_band;
+ }
}
}
-VOID ixheaacd_sbr_qmfanal32_winadd(WORD16 *inp1, WORD16 *inp2, WORD16 *p_qmf1,
- WORD16 *p_qmf2, WORD32 *p_out) {
+VOID ixheaacd_sbr_qmfanal32_winadd(WORD16 *inp1, WORD16 *inp2,
+ const WORD16 *p_qmf1, const WORD16 *p_qmf2,
+ WORD32 *p_out) {
WORD32 n;
for (n = 0; n < 32; n += 2) {
@@ -570,7 +593,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
WORD32 ch_fac, WORD32 low_pow_flag,
- WORD audio_object_type) {
+ WORD audio_object_type, WORD32 ldmps_present) {
WORD32 i, k;
WORD32 num_time_slots = qmf_bank->num_time_slots;
@@ -582,6 +605,8 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
WORD16 *filter_1;
WORD16 *filter_2;
WORD16 *filt_ptr;
+ WORD32 start_slot = 0;
+
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
qmf_bank->filter_pos +=
@@ -599,7 +624,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
audio_object_type != AOT_ER_AAC_LD) {
filter_2 = filter_1 + 64;
} else {
- filter_2 = filter_1 + 32;
+ filter_2 = filter_1 + qmf_bank->no_channels;
}
sbr_scale_factor->st_lb_scale = 0;
@@ -611,10 +636,17 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
} else {
sbr_scale_factor->lb_scale = -9;
}
- qmf_bank->cos_twiddle =
- (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l32;
- qmf_bank->alt_sin_twiddle =
- (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l32;
+ if (qmf_bank->no_channels != 64) {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l32;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l32;
+ } else {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l64;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l64;
+ }
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
qmf_bank->t_cos = (WORD16 *)qmf_dec_tables_ptr->sbr_t_cos_sin_l32;
@@ -625,7 +657,7 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
}
fp1 = qmf_bank->anal_filter_states;
- fp2 = qmf_bank->anal_filter_states + NO_ANALYSIS_CHANNELS;
+ fp2 = qmf_bank->anal_filter_states + qmf_bank->no_channels;
if (audio_object_type == AOT_ER_AAC_ELD ||
audio_object_type == AOT_ER_AAC_LD) {
@@ -634,9 +666,10 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
fp2 = qmf_bank->fp2_anal;
}
- for (i = 0; i < num_time_slots; i++) {
- for (k = 0; k < NO_ANALYSIS_CHANNELS; k++)
- filter_states[NO_ANALYSIS_CHANNELS - 1 - k] = time_sample_buf[ch_fac * k];
+ for (i = start_slot; i < num_time_slots + start_slot; i++) {
+ for (k = 0; k < qmf_bank->no_channels; k++)
+ filter_states[qmf_bank->no_channels - 1 - k] =
+ time_sample_buf[ch_fac * k];
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
@@ -647,11 +680,12 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
analysis_buffer);
}
- time_sample_buf += NO_ANALYSIS_CHANNELS * ch_fac;
+ time_sample_buf += qmf_bank->no_channels * ch_fac;
- filter_states -= NO_ANALYSIS_CHANNELS;
+ filter_states -= qmf_bank->no_channels;
if (filter_states < qmf_bank->anal_filter_states) {
- filter_states = qmf_bank->anal_filter_states + 288;
+ filter_states = qmf_bank->anal_filter_states +
+ ((qmf_bank->no_channels * 10) - qmf_bank->no_channels);
}
tmp = fp1;
@@ -662,8 +696,8 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
filter_1 += 64;
filter_2 += 64;
} else {
- filter_1 += 32;
- filter_2 += 32;
+ filter_1 += qmf_bank->no_channels;
+ filter_2 += qmf_bank->no_channels;
}
filt_ptr = filter_1;
@@ -676,15 +710,16 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
filter_2 = (WORD16 *)qmf_bank->analy_win_coeff + 64;
}
} else {
- if (filter_2 > (qmf_bank->analy_win_coeff + 320)) {
+ if (filter_2 >
+ (qmf_bank->analy_win_coeff + (qmf_bank->no_channels * 10))) {
filter_1 = (WORD16 *)qmf_bank->analy_win_coeff;
- filter_2 = (WORD16 *)qmf_bank->analy_win_coeff + 32;
+ filter_2 = (WORD16 *)qmf_bank->analy_win_coeff + qmf_bank->no_channels;
}
}
if (!low_pow_flag) {
ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i],
- qmf_bank, qmf_dec_tables_ptr);
+ qmf_bank, qmf_dec_tables_ptr, ldmps_present);
} else {
ixheaacd_dct3_32(
(WORD32 *)analysis_buffer, qmf_real[i], qmf_dec_tables_ptr->dct23_tw,
@@ -705,6 +740,114 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_sample_buf,
}
}
+VOID ixheaacd_cplx_anal_qmffilt_32(const WORD32 *time_sample_buf,
+ ia_sbr_scale_fact_struct *sbr_scale_factor,
+ WORD32 **qmf_real, WORD32 **qmf_imag,
+ ia_sbr_qmf_filter_bank_struct *qmf_bank,
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ch_fac, WORD32 ldsbr_present) {
+ WORD32 i, k;
+ WORD32 num_time_slots = qmf_bank->num_time_slots;
+
+ WORD32 analysis_buffer[4 * NO_ANALYSIS_CHANNELS];
+ WORD32 *filter_states = qmf_bank->core_samples_buffer_32;
+
+ WORD32 *fp1, *fp2, *tmp;
+
+ WORD32 *filter_1;
+ WORD32 *filter_2;
+ WORD32 *filt_ptr;
+ WORD32 start_slot = 2;
+
+ if (ldsbr_present) {
+ qmf_bank->filter_pos_32 +=
+ (qmf_dec_tables_ptr->qmf_c_ldsbr_mps - qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 = qmf_dec_tables_ptr->qmf_c_ldsbr_mps;
+ } else {
+ qmf_bank->filter_pos_32 += (ixheaacd_ldmps_polyphase_filter_coeff_fix -
+ qmf_bank->analy_win_coeff_32);
+ qmf_bank->analy_win_coeff_32 =
+ (WORD32 *)ixheaacd_ldmps_polyphase_filter_coeff_fix;
+ }
+
+ filter_1 = qmf_bank->filter_pos_32;
+ filter_2 = filter_1 + qmf_bank->no_channels;
+
+ sbr_scale_factor->st_lb_scale = 0;
+ sbr_scale_factor->lb_scale = -10;
+
+ sbr_scale_factor->lb_scale = -9;
+ if (qmf_bank->no_channels != 64) {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l32;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l32;
+ } else {
+ qmf_bank->cos_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_sin_cos_twiddle_l64;
+ qmf_bank->alt_sin_twiddle =
+ (WORD16 *)qmf_dec_tables_ptr->sbr_alt_sin_twiddle_l64;
+ }
+ qmf_bank->t_cos =
+ (WORD16 *)qmf_dec_tables_ptr->ixheaacd_sbr_t_cos_sin_l32_eld;
+
+ fp1 = qmf_bank->anal_filter_states_32;
+ fp2 = qmf_bank->anal_filter_states_32 + qmf_bank->no_channels;
+
+ filter_2 = qmf_bank->filter_2_32;
+ fp1 = qmf_bank->fp1_anal_32;
+ fp2 = qmf_bank->fp2_anal_32;
+
+ for (i = start_slot; i < num_time_slots + start_slot; i++) {
+ for (k = 0; k < qmf_bank->no_channels; k++)
+ filter_states[qmf_bank->no_channels - 1 - k] =
+ time_sample_buf[ch_fac * k];
+
+ if (ldsbr_present) {
+ ixheaacd_sbr_qmfanal32_winadd_eld_32(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ } else {
+ ixheaacd_sbr_qmfanal32_winadd_eld_mps(fp1, fp2, filter_1, filter_2,
+ analysis_buffer);
+ }
+
+ time_sample_buf += qmf_bank->no_channels * ch_fac;
+
+ filter_states -= qmf_bank->no_channels;
+
+ if (filter_states < qmf_bank->anal_filter_states_32) {
+ filter_states = qmf_bank->anal_filter_states_32 +
+ ((qmf_bank->no_channels * 10) - qmf_bank->no_channels);
+ }
+
+ tmp = fp1;
+ fp1 = fp2;
+ fp2 = tmp;
+
+ filter_1 += qmf_bank->no_channels;
+ filter_2 += qmf_bank->no_channels;
+
+ filt_ptr = filter_1;
+ filter_1 = filter_2;
+ filter_2 = filt_ptr;
+
+ if (filter_2 >
+ (qmf_bank->analy_win_coeff_32 + (qmf_bank->no_channels * 10))) {
+ filter_1 = (WORD32 *)qmf_bank->analy_win_coeff_32;
+ filter_2 = (WORD32 *)qmf_bank->analy_win_coeff_32 + qmf_bank->no_channels;
+ }
+
+ ixheaacd_fwd_modulation(analysis_buffer, qmf_real[i], qmf_imag[i], qmf_bank,
+ qmf_dec_tables_ptr, 1);
+ }
+
+ qmf_bank->filter_pos_32 = filter_1;
+ qmf_bank->core_samples_buffer_32 = filter_states;
+
+ qmf_bank->fp1_anal_32 = fp1;
+ qmf_bank->fp2_anal_32 = fp2;
+ qmf_bank->filter_2_32 = filter_2;
+}
VOID ixheaacd_inv_modulation_lp(WORD32 *qmf_real, WORD16 *filter_states,
ia_sbr_qmf_filter_bank_struct *syn_qmf,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr) {
@@ -746,9 +889,6 @@ VOID ixheaacd_esbr_radix4bfly(const WORD32 *w, WORD32 *x, WORD32 index1,
WORD64 mul_1, mul_2, mul_3, mul_4, mul_5, mul_6;
WORD64 mul_7, mul_8, mul_9, mul_10, mul_11, mul_12;
- WORD32 *x_l1;
- WORD32 *x_l2;
- WORD32 *x_h2;
const WORD32 *w_ptr = w;
WORD32 i1;
@@ -756,10 +896,6 @@ VOID ixheaacd_esbr_radix4bfly(const WORD32 *w, WORD32 *x, WORD32 index1,
l1 = index << 2;
l2 = (index << 2) + (index << 1);
- x_l1 = &(x[l1]);
- x_l2 = &(x[l2]);
- x_h2 = &(x[h2]);
-
fft_jmp = 6 * (index);
for (i1 = 0; i1 < index1; i1++) {
@@ -846,7 +982,6 @@ VOID ixheaacd_esbr_postradixcompute2(WORD32 *ptr_y, WORD32 *ptr_x,
WORD32 x_8, x_9, x_a, x_b, x_c, x_d, x_e, x_f;
WORD32 n00, n10, n20, n30, n01, n11, n21, n31;
WORD32 n02, n12, n22, n32, n03, n13, n23, n33;
- WORD32 n0, j0;
WORD32 *x2, *x0;
WORD32 *y0, *y1, *y2, *y3;
@@ -857,8 +992,6 @@ VOID ixheaacd_esbr_postradixcompute2(WORD32 *ptr_y, WORD32 *ptr_x,
y1 = y0 + (WORD32)(npoints >> 2);
y3 = y2 + (WORD32)(npoints >> 2);
- j0 = 8;
- n0 = npoints >> 1;
for (k = 0; k < 2; k++) {
for (i = 0; i<npoints>> 1; i += 8) {
@@ -936,7 +1069,6 @@ VOID ixheaacd_esbr_postradixcompute4(WORD32 *ptr_y, WORD32 *ptr_x,
WORD32 x_8, x_9, x_a, x_b, x_c, x_d, x_e, x_f;
WORD32 n00, n10, n20, n30, n01, n11, n21, n31;
WORD32 n02, n12, n22, n32, n03, n13, n23, n33;
- WORD32 n0, j0;
WORD32 *x2, *x0;
WORD32 *y0, *y1, *y2, *y3;
@@ -948,9 +1080,6 @@ VOID ixheaacd_esbr_postradixcompute4(WORD32 *ptr_y, WORD32 *ptr_x,
y1 = y0 + (WORD32)(npoints >> 1);
y3 = y2 + (WORD32)(npoints >> 1);
- j0 = 4;
- n0 = npoints >> 2;
-
for (k = 0; k < 2; k++) {
for (i = 0; i<npoints>> 1; i += 8) {
h2 = *p_dig_rev_tbl++ >> 2;
@@ -1386,8 +1515,8 @@ VOID ixheaacd_sbr_qmfsyn64_winadd(WORD16 *tmp1, WORD16 *tmp2, WORD16 *inp1,
for (k = 0; k < 64; k++) {
WORD32 syn_out = rounding_fac;
- syn_out = ixheaacd_add32_sat(syn_out,
- ixheaacd_mult16x16in32(tmp1[0 + k], inp1[k + 0]));
+ syn_out = ixheaacd_add32_sat(
+ syn_out, ixheaacd_mult16x16in32(tmp1[0 + k], inp1[k + 0]));
syn_out = ixheaacd_add32_sat(
syn_out, ixheaacd_mult16x16in32(tmp1[256 + k], inp1[k + 128]));
syn_out = ixheaacd_add32_sat(
@@ -1583,9 +1712,6 @@ VOID ixheaacd_radix4bfly(const WORD16 *w, WORD32 *x, WORD32 index1,
WORD32 mul_1, mul_2, mul_3, mul_4, mul_5, mul_6;
WORD32 mul_7, mul_8, mul_9, mul_10, mul_11, mul_12;
- WORD32 *x_l1;
- WORD32 *x_l2;
- WORD32 *x_h2;
const WORD16 *w_ptr = w;
WORD32 i1;
@@ -1593,10 +1719,6 @@ VOID ixheaacd_radix4bfly(const WORD16 *w, WORD32 *x, WORD32 index1,
l1 = index << 2;
l2 = (index << 2) + (index << 1);
- x_l1 = &(x[l1]);
- x_l2 = &(x[l2]);
- x_h2 = &(x[h2]);
-
fft_jmp = 6 * (index);
for (i1 = 0; i1 < index1; i1++) {
@@ -1685,7 +1807,6 @@ VOID ixheaacd_postradixcompute4(WORD32 *ptr_y, WORD32 *ptr_x,
WORD32 x_8, x_9, x_a, x_b, x_c, x_d, x_e, x_f;
WORD32 n00, n10, n20, n30, n01, n11, n21, n31;
WORD32 n02, n12, n22, n32, n03, n13, n23, n33;
- WORD32 n0, j0;
WORD32 *x2, *x0;
WORD32 *y0, *y1, *y2, *y3;
@@ -1697,9 +1818,6 @@ VOID ixheaacd_postradixcompute4(WORD32 *ptr_y, WORD32 *ptr_x,
y1 = y0 + (WORD32)(npoints >> 1);
y3 = y2 + (WORD32)(npoints >> 1);
- j0 = 4;
- n0 = npoints >> 2;
-
for (k = 0; k < 2; k++) {
for (i = 0; i<npoints>> 1; i += 8) {
h2 = *p_dig_rev_tbl++ >> 2;
@@ -1789,7 +1907,6 @@ VOID ixheaacd_postradixcompute2(WORD32 *ptr_y, WORD32 *ptr_x,
WORD32 x_8, x_9, x_a, x_b, x_c, x_d, x_e, x_f;
WORD32 n00, n10, n20, n30, n01, n11, n21, n31;
WORD32 n02, n12, n22, n32, n03, n13, n23, n33;
- WORD32 n0, j0;
WORD32 *x2, *x0;
WORD32 *y0, *y1, *y2, *y3;
@@ -1800,8 +1917,6 @@ VOID ixheaacd_postradixcompute2(WORD32 *ptr_y, WORD32 *ptr_x,
y1 = y0 + (WORD32)(npoints >> 2);
y3 = y2 + (WORD32)(npoints >> 2);
- j0 = 8;
- n0 = npoints >> 1;
for (k = 0; k < 2; k++) {
for (i = 0; i<npoints>> 1; i += 8) {
diff --git a/decoder/ixheaacd_aac_config.h b/decoder/ixheaacd_aac_config.h
index c57db29..6b10e7c 100644
--- a/decoder/ixheaacd_aac_config.h
+++ b/decoder/ixheaacd_aac_config.h
@@ -49,7 +49,6 @@
#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_DRC_TARGET_LEVEL 0x0019
#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_DRC_HEAVY_COMP 0x001A
#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_FRAMESIZE 0x001B
-#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_ELD_SBR_PRESENT 0x001C
#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_LD_TESTING 0x001D
#define IA_ENHAACPLUS_DEC_CONFIG_EXT_ELE_PTR 0x001E
@@ -61,5 +60,9 @@
#define IA_ENHAACPLUS_DEC_DRC_EFFECT_TYPE 0x0024
#define IA_ENHAACPLUS_DEC_DRC_TARGET_LOUDNESS 0x0025
#define IA_ENHAACPLUS_DEC_CONFIG_GET_NUM_PRE_ROLL_FRAMES 0x0026
+#define IA_ENHAACPLUS_DEC_DRC_IS_CONFIG_CHANGED 0x0027
+#define IA_ENHAACPLUS_DEC_DRC_APPLY_CROSSFADE 0x0028
+
+#define IA_ENHAACPLUS_DEC_CONFIG_PARAM_FRAMELENGTH_FLAG 0x0030
#endif /* IXHEAACD_AAC_CONFIG_H */
diff --git a/decoder/ixheaacd_aac_imdct.c b/decoder/ixheaacd_aac_imdct.c
index 6b158de..dc810e4 100644
--- a/decoder/ixheaacd_aac_imdct.c
+++ b/decoder/ixheaacd_aac_imdct.c
@@ -51,20 +51,29 @@
#define MPYHIRC(x, y) \
\
- (((WORD32)((short)(x >> 16) * (unsigned short)(y & 0x0000FFFF) + 0x4000) >> \
+ (((WORD32)((WORD16)(x >> 16) * (UWORD16)(y & 0x0000FFFF) + 0x4000) >> \
15) + \
- ((WORD32)((short)(x >> 16) * (short)((y) >> 16)) << 1))
+ ((WORD32)((WORD16)(x >> 16) * (WORD16)((y) >> 16)) << 1))
#define MPYLUHS(x, y) \
- ((WORD32)((unsigned short)(x & 0x0000FFFF) * (short)(y >> 16)))
+ ((WORD32)((UWORD16)(x & 0x0000FFFF) * (WORD16)(y >> 16)))
+
+#define MPYLIRC(x, y) \
+ (((WORD32)((WORD16)(x) * (UWORD16)(y & 0x0000FFFF) + 0x4000) >> 15)+ \
+((WORD32)((WORD16)(x) * (WORD16)((y) >> 16)) << 1))
+
+WORD32 rev_dig[] = { 0, 8, 2, 10 };
#define MDCT_LEN 480
#define FFT15X2 30
#define MDCT_LEN_BY2 240
#define FFT5 5
#define FFT16 16
+#define FFT4 4
+#define FFT3 3
#define FFT15 15
#define FFT16X2 32
+#define MDCT_LEN_960 960
WORD32 ixheaacd_fft5out[FFT15X2];
@@ -125,6 +134,59 @@ WORD16 ixheaacd_neg_expo_inc_dec(WORD16 neg_expo) { return (neg_expo + 2); }
WORD16 ixheaacd_neg_expo_inc_arm(WORD16 neg_expo) { return (neg_expo + 3); }
+VOID ixheaacd_pretwiddle_compute_960_dec(
+ WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) {
+
+ WORD32 i;
+ WORD32 tempr, tempi;
+
+ WORD16 c, c1, s, s1;
+ WORD32 *out_ptr1 = out_ptr + ((npoints4 << 2) - 1);
+ const WORD16 *cos_sin_ptr = ptr_imdct_tables->cosine_array_240;
+
+ for (i = 0; i < npoints4; i++) {
+ c = *cos_sin_ptr++;
+ s = *cos_sin_ptr++;
+
+ tempr = *spec_data1++;
+ tempi = *spec_data2--;
+
+ *out_ptr =
+ ixheaacd_mac32x16in32(ixheaacd_mult32x16in32(tempr, c), tempi, s);
+
+
+ *out_ptr = ixheaacd_shl32(*out_ptr, neg_expo);
+ out_ptr++;
+
+ *out_ptr = ixheaacd_sub32(ixheaacd_mult32x16in32(tempi, c),
+ ixheaacd_mult32x16in32(tempr, s));
+
+ *out_ptr = ixheaacd_shl32(*out_ptr, neg_expo);
+ out_ptr++;
+
+ c1 = *cos_sin_ptr++;
+ s1 = *cos_sin_ptr++;
+
+ tempi = *spec_data1++;
+ tempr = *spec_data2--;
+
+
+ *out_ptr1 = ixheaacd_sub32(ixheaacd_mult32x16in32(tempi, c1),
+ ixheaacd_mult32x16in32(tempr, s1));
+
+ *out_ptr1 = ixheaacd_shl32(*out_ptr1, neg_expo);
+ out_ptr1--;
+
+ *out_ptr1 =
+ ixheaacd_mac32x16in32(ixheaacd_mult32x16in32(tempr, c1), tempi, s1);
+
+ *out_ptr1 = ixheaacd_shl32(*out_ptr1, neg_expo);
+ out_ptr1--;
+ }
+}
+
VOID ixheaacd_pretwiddle_compute_dec(
WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
@@ -1584,6 +1646,39 @@ VOID ixheaacd_imdct_using_fft_dec(
}
}
+VOID ixheaacd_inverse_transform_960(
+ WORD32 spec_data[], WORD32 scratch[],
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
+ WORD32 *imdct_scale) {
+
+ WORD32 n;
+ WORD32 Nd2;
+ WORD16 const_mltfac;
+ WORD32 neg_expo;
+
+ WORD32 i;
+
+ n = 120;
+ Nd2 = n >> 1;
+ neg_expo = 4;
+
+ ixheaacd_pre_twiddle_120(spec_data, scratch, n, ptr_imdct_tables->cosine_array_240,
+ neg_expo - expo);
+
+ ixheaacd_fft_120(ptr_imdct_tables, Nd2, spec_data, scratch);
+
+ neg_expo += 2;
+ *imdct_scale = neg_expo + 1;
+
+ ixheaacd_post_twiddle_120(spec_data, scratch, ptr_imdct_tables->cosine_array_240,
+ n);
+ const_mltfac = 17476;
+ for (i = 0; i < 120; i++)
+ {
+ spec_data[i] = ixheaacd_mult32x16in32_shl(spec_data[i], const_mltfac);
+ }
+}
+
WORD32 ixheaacd_inverse_transform(
WORD32 spec_data[], WORD32 scratch[],
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
@@ -1599,6 +1694,41 @@ WORD32 ixheaacd_inverse_transform(
return expo;
}
+VOID ixheaacd_mdct_960(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
+ WORD32 mdct_flag,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr) {
+ WORD32 expo, neg_expo = 0, k;
+
+ WORD16 const_mltfac = 17476;
+
+ expo = (*ixheaacd_calc_max_spectral_line)(inp, MDCT_LEN_960) - 1;
+ ;
+
+ memcpy(scratch, inp, sizeof(WORD32) * MDCT_LEN_960);
+
+ neg_expo = 7 - expo;
+
+ ixheaacd_pre_twiddle_960(inp, scratch, MDCT_LEN_960, imdct_tables_ptr->cosine_array_1920,
+ neg_expo);
+
+ ixheaacd_fft_960(inp, scratch, imdct_tables_ptr);
+
+ ixheaacd_post_twiddle_960(inp, scratch, imdct_tables_ptr->cosine_array_1920,
+ MDCT_LEN_960);
+
+ if (0 == mdct_flag) {
+ WORD32 *data = inp;
+
+ for (k = MDCT_LEN_960 - 1; k >= 0; k -= 2) {
+ *data = ixheaacd_mult32x16in32_shl(*data, const_mltfac);
+ data++;
+ *data = ixheaacd_mult32x16in32_shl(*data, const_mltfac);
+ data++;
+ }
+ }
+ *mdct_scale = neg_expo + 1 + 1 + 1;
+}
+
VOID ixheaacd_mdct_480_ld(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
WORD32 mdct_flag,
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
@@ -1684,6 +1814,676 @@ VOID ixheaacd_inverse_transform_512(
ixheaacd_post_twiddle_ld((data), temp, cos_sin_ptr, n);
}
+VOID ixheaacd_fft_960(WORD32 *inp, WORD32 *op,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr) {
+ WORD32 i;
+ WORD32 *buf1, *buf2;
+ WORD16 *re_arr_tab_sml_480_ptr;
+
+ (*ixheaacd_aac_ld_dec_rearrange_960)(inp, op, 480,
+ imdct_tables_ptr->re_arr_tab_32);
+
+ buf1 = op;
+ buf2 = inp;
+
+ for (i = 0; i < FFT15; i++) {
+ ixheaacd_fft_32_points(imdct_tables_ptr->w_32,
+ 32, buf1, buf2);
+
+ buf1 += (FFT16X2 * 2);
+ buf2 += (FFT16X2 * 2);
+ }
+
+ re_arr_tab_sml_480_ptr = imdct_tables_ptr->re_arr_tab_sml_480;
+ buf1 = inp;
+
+ for (i = 0; i < FFT16 * 2; i++) {
+ ixheaacd_ld_dec_fft_15_opt(buf1, op,
+ ixheaacd_fft5out, re_arr_tab_sml_480_ptr);
+ buf1 += 2;
+ re_arr_tab_sml_480_ptr += FFT15;
+ }
+}
+
+VOID ixheaacd_fft_32_points(WORD16 *ptr_w, WORD32 npoints,
+ WORD32* ptr_x, WORD32* ptr_y) {
+ WORD32 i, j, l1, l2, h2, predj, tw_offset, stride, fft_jmp;
+ WORD32 xt0_0, yt0_0, xt1_0, yt1_0, xt2_0, yt2_0;
+ WORD32 xh0_0, xh1_0, xh20_0, xh21_0, xl0_0, xl1_0, xl20_0, xl21_0;
+ WORD32 x_0, x_1, x_l1_0, x_l1_1, x_l2_0, x_l2_1;
+ WORD32 x_h2_0, x_h2_1;
+ WORD16 si10, si20, si30, co10, co20, co30;
+ WORD16 *w;
+ WORD32 *x, *x2, *x0;
+ WORD32 *y0, *y1, *y2, *y3;
+ WORD32 n0, j0;
+ WORD32 radix;
+ WORD32 norm;
+
+ radix = 2;
+ norm = 25;
+
+ stride = 32;
+ tw_offset = 0;
+ fft_jmp = 192;
+
+ while (stride > radix) {
+ j = 0;
+ fft_jmp >>= 2;
+
+ h2 = stride >> 1;
+ l1 = stride;
+ l2 = stride + (stride >> 1);
+
+ x = ptr_x;
+ w = ptr_w + tw_offset;
+ tw_offset += fft_jmp;
+
+ for (i = 0; i < npoints; i += 4) {
+ co10 = w[j + 1]; si10 = w[j + 0];
+ co20 = w[j + 3]; si20 = w[j + 2];
+ co30 = w[j + 5]; si30 = w[j + 4];
+
+ x_0 = x[0]; x_1 = x[1];
+ x_l1_0 = x[l1]; x_l1_1 = x[l1 + 1];
+ x_l2_0 = x[l2]; x_l2_1 = x[l2 + 1];
+ x_h2_0 = x[h2]; x_h2_1 = x[h2 + 1];
+
+ xh0_0 = ixheaacd_add32_sat(x_0, x_l1_0);
+ xh1_0 = ixheaacd_add32_sat(x_1, x_l1_1);
+ xl0_0 = ixheaacd_sub32_sat(x_0, x_l1_0);
+ xl1_0 = ixheaacd_sub32_sat(x_1, x_l1_1);
+ xh20_0 = ixheaacd_add32_sat(x_h2_0, x_l2_0);
+ xh21_0 = ixheaacd_add32_sat(x_h2_1, x_l2_1);
+ xl20_0 = ixheaacd_sub32_sat(x_h2_0, x_l2_0);
+ xl21_0 = ixheaacd_sub32_sat(x_h2_1, x_l2_1);
+
+ x0 = x;
+ x2 = x0;
+
+ j += 6;
+ x += 2;
+ predj = (j - fft_jmp);
+ if (!predj) x += fft_jmp;
+ if (!predj) j = 0;
+
+ x0[0] = ixheaacd_add32_sat(xh0_0, xh20_0);
+ x0[1] = ixheaacd_add32_sat(xh1_0, xh21_0);
+ xt0_0 = ixheaacd_sub32_sat(xh0_0, xh20_0);
+ yt0_0 = ixheaacd_sub32_sat(xh1_0, xh21_0);
+ xt1_0 = ixheaacd_add32_sat(xl0_0, xl21_0);
+ yt2_0 = ixheaacd_add32_sat(xl1_0, xl20_0);
+ xt2_0 = ixheaacd_sub32_sat(xl0_0, xl21_0);
+ yt1_0 = ixheaacd_sub32_sat(xl1_0, xl20_0);
+
+ x2[h2] = ixheaacd_add32_sat(MPYLIRC(si10, yt1_0), MPYLIRC(co10, xt1_0));
+
+ x2[h2 + 1] = ixheaacd_sub32_sat(MPYLIRC(co10, yt1_0), MPYLIRC(si10, xt1_0));
+
+ x2[l1] = ixheaacd_add32_sat(MPYLIRC(si20, yt0_0), MPYLIRC(co20, xt0_0));
+
+ x2[l1 + 1] = ixheaacd_sub32_sat(MPYLIRC(co20, yt0_0), MPYLIRC(si20, xt0_0));
+ yt0_0 = MPYLIRC(si20, yt0_0);
+
+ x2[l2] = ixheaacd_add32_sat(MPYLIRC(si30, yt2_0), MPYLIRC(co30, xt2_0));
+
+ x2[l2 + 1] = ixheaacd_sub32_sat(MPYLIRC(co30, yt2_0), MPYLIRC(si30, xt2_0));
+ yt2_0 = MPYLIRC(si30, yt2_0);
+
+ }
+ stride >>= 2;
+ }
+
+ y0 = ptr_y;
+ y2 = ptr_y + (int)npoints;
+ x0 = ptr_x;
+ x2 = ptr_x + (int)(npoints >> 1);
+
+ y1 = y0 + (int)(npoints >> 2);
+ y3 = y2 + (int)(npoints >> 2);
+ l1 = norm + 1;
+ j0 = 8;
+ n0 = npoints >> 1;
+
+ j = 0;
+ for (i = 0; i < 4; i++) {
+ int t1, t2;
+ h2 = rev_dig[i];
+
+ t1 = h2 << 1;
+ t2 = t1 + 1;
+
+ y0[t1] = ixheaacd_add32_sat(x0[0], x0[2]);
+ y2[t1] = ixheaacd_sub32_sat(x0[0], x0[2]);
+ y0[t2] = ixheaacd_add32_sat(x0[1], x0[3]);
+ y2[t2] = ixheaacd_sub32_sat(x0[1], x0[3]);
+ y1[t1] = ixheaacd_add32_sat(x0[4], x0[6]);
+ y3[t1] = ixheaacd_sub32_sat(x0[4], x0[6]);
+ y1[t2] = ixheaacd_add32_sat(x0[5], x0[7]);
+ y3[t2] = ixheaacd_sub32_sat(x0[5], x0[7]);
+ x0 += 8;
+
+ t1 += 2;
+ t2 += 2;
+
+ y0[t1] = ixheaacd_add32_sat(x2[0], x2[2]);
+ y2[t1] = ixheaacd_sub32_sat(x2[0], x2[2]);
+ y0[t2] = ixheaacd_add32_sat(x2[1], x2[3]);
+ y2[t2] = ixheaacd_sub32_sat(x2[1], x2[3]);
+ y1[t1] = ixheaacd_add32_sat(x2[4], x2[6]);
+ y3[t1] = ixheaacd_sub32_sat(x2[4], x2[6]);
+ y1[t2] = ixheaacd_add32_sat(x2[5], x2[7]);
+ y3[t2] = ixheaacd_sub32_sat(x2[5], x2[7]);
+ x2 += 8;
+
+ j += j0;
+
+ if (j == n0)
+ {
+ j += n0;
+ x0 += (int)npoints >> 1;
+ x2 += (int)npoints >> 1;
+ }
+ }
+}
+
+VOID ixheaacd_dec_rearrange_short(WORD32 *ip, WORD32 *op, WORD32 N,
+ WORD16 *re_arr_tab) {
+ WORD32 n, i = 0;
+
+ for (n = 0; n < N; n++) {
+ WORD32 idx = re_arr_tab[n] << 1;
+ op[i++] = ip[idx];
+ op[i++] = ip[idx + 1];
+ }
+}
+
+VOID ixheaacd_ld_dec_fft_15_opt(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
+ WORD16 *ptr_re_arr_tab_sml_240) {
+ WORD32 i, n, idx;
+ WORD32 *buf1, *buf2, *buf1a;
+ WORD32 add_r, sub_r;
+ WORD32 add_i, sub_i;
+ WORD32 x_01_r, x_01_i, temp;
+ WORD32 p1, p2, p3, p4;
+
+ WORD32 sinmu = 1859775393;
+ WORD32 c_51 = 2042378317;
+ WORD32 c_52 = -1652318768;
+ WORD32 c_53 = -780119100;
+ WORD32 c_54 = 1200479854;
+ WORD32 c_55 = -1342177280;
+
+ WORD32 r1, r2, r3, r4;
+ WORD32 s1, s2, s3, s4, t, temp1, temp2;
+ WORD32 *fft3outptr = fft3out;
+
+ WORD32 xr_0, xr_1, xr_2;
+ WORD32 xi_0, xi_1, xi_2;
+
+ buf2 = fft3out;
+ buf1 = buf1a = fft3out;
+ n = 0;
+
+ {
+ *buf1++ = inp[0];
+ *buf1++ = inp[1];
+
+ *buf1++ = inp[192];
+ *buf1++ = inp[193];
+
+ *buf1++ = inp[384];
+ *buf1++ = inp[385];
+
+ *buf1++ = inp[576];
+ *buf1++ = inp[577];
+
+ *buf1++ = inp[768];
+ *buf1++ = inp[769];
+
+ r1 = ixheaacd_add32_sat(buf1a[2], buf1a[8]);
+ r4 = ixheaacd_sub32_sat(buf1a[2], buf1a[8]);
+ r3 = ixheaacd_add32_sat(buf1a[4], buf1a[6]);
+ r2 = ixheaacd_sub32_sat(buf1a[4], buf1a[6]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(r1, r3), c_54);
+
+ r1 = ixheaacd_add32_sat(r1, r3);
+
+ temp1 = ixheaacd_add32_sat(buf1a[0], r1);
+
+ r1 = ixheaacd_add32_sat(temp1, (ixheaacd_mult32_shl(r1, c_55) << 1));
+
+ r3 = ixheaacd_sub32_sat(r1, t);
+ r1 = ixheaacd_add32_sat(r1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(r4, r2), c_51);
+ r4 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(r4, c_52) << 1));
+ r2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(r2, c_53));
+
+ s1 = ixheaacd_add32_sat(buf1a[3], buf1a[9]);
+ s4 = ixheaacd_sub32_sat(buf1a[3], buf1a[9]);
+ s3 = ixheaacd_add32_sat(buf1a[5], buf1a[7]);
+ s2 = ixheaacd_sub32_sat(buf1a[5], buf1a[7]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(s1, s3), c_54);
+
+ s1 = ixheaacd_add32_sat(s1, s3);
+
+ temp2 = ixheaacd_add32_sat(buf1a[1], s1);
+
+
+ s1 = ixheaacd_add32_sat(temp2, (ixheaacd_mult32_shl(s1, c_55) << 1));
+
+ s3 = ixheaacd_sub32_sat(s1, t);
+ s1 = ixheaacd_add32_sat(s1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(s4, s2), c_51);
+ s4 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(s4, c_52) << 1));
+ s2 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(s2, c_53)));
+
+ *buf2++ = temp1;
+ *buf2++ = temp2;
+ *buf2++ = ixheaacd_add32_sat(r1, s2);
+ *buf2++ = ixheaacd_sub32_sat(s1, r2);
+ *buf2++ = ixheaacd_sub32_sat(r3, s4);
+ *buf2++ = ixheaacd_add32_sat(s3, r4);
+ *buf2++ = ixheaacd_add32_sat(r3, s4);
+ *buf2++ = ixheaacd_sub32_sat(s3, r4);
+ *buf2++ = ixheaacd_sub32_sat(r1, s2);
+ *buf2++ = ixheaacd_add32_sat(s1, r2);
+ buf1a = buf1;
+
+ *buf1++ = inp[320];
+ *buf1++ = inp[321];
+
+ *buf1++ = inp[512];
+ *buf1++ = inp[513];
+
+ *buf1++ = inp[704];
+ *buf1++ = inp[705];
+
+ *buf1++ = inp[896];
+ *buf1++ = inp[897];
+
+ *buf1++ = inp[128];
+ *buf1++ = inp[129];
+
+ r1 = ixheaacd_add32_sat(buf1a[2], buf1a[8]);
+ r4 = ixheaacd_sub32_sat(buf1a[2], buf1a[8]);
+ r3 = ixheaacd_add32_sat(buf1a[4], buf1a[6]);
+ r2 = ixheaacd_sub32_sat(buf1a[4], buf1a[6]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(r1, r3), c_54);
+
+ r1 = ixheaacd_add32_sat(r1, r3);
+
+ temp1 = ixheaacd_add32_sat(buf1a[0], r1);
+
+ r1 = ixheaacd_add32_sat(temp1, (ixheaacd_mult32_shl(r1, c_55) << 1));
+
+ r3 = ixheaacd_sub32_sat(r1, t);
+ r1 = ixheaacd_add32_sat(r1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(r4, r2), c_51);
+ r4 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(r4, c_52) << 1));
+ r2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(r2, c_53));
+
+ s1 = ixheaacd_add32_sat(buf1a[3], buf1a[9]);
+ s4 = ixheaacd_sub32_sat(buf1a[3], buf1a[9]);
+ s3 = ixheaacd_add32_sat(buf1a[5], buf1a[7]);
+ s2 = ixheaacd_sub32_sat(buf1a[5], buf1a[7]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(s1, s3), c_54);
+
+ s1 = ixheaacd_add32_sat(s1, s3);
+
+ temp2 = ixheaacd_add32_sat(buf1a[1], s1);
+
+ s1 = ixheaacd_add32_sat(temp2, (ixheaacd_mult32_shl(s1, c_55) << 1));
+
+ s3 = ixheaacd_sub32_sat(s1, t);
+ s1 = ixheaacd_add32_sat(s1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(s4, s2), c_51);
+ s4 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(s4, c_52) << 1));
+ s2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(s2, c_53));
+
+ *buf2++ = temp1;
+ *buf2++ = temp2;
+ *buf2++ = ixheaacd_add32_sat(r1, s2);
+ *buf2++ = ixheaacd_sub32_sat(s1, r2);
+ *buf2++ = ixheaacd_sub32_sat(r3, s4);
+ *buf2++ = ixheaacd_add32_sat(s3, r4);
+ *buf2++ = ixheaacd_add32_sat(r3, s4);
+ *buf2++ = ixheaacd_sub32_sat(s3, r4);
+ *buf2++ = ixheaacd_sub32_sat(r1, s2);
+ *buf2++ = ixheaacd_add32_sat(s1, r2);
+ buf1a = buf1;
+
+ *buf1++ = inp[640];
+ *buf1++ = inp[641];
+
+ *buf1++ = inp[832];
+ *buf1++ = inp[833];
+
+ *buf1++ = inp[64];
+ *buf1++ = inp[65];
+
+ *buf1++ = inp[256];
+ *buf1++ = inp[257];
+
+ *buf1++ = inp[448];
+ *buf1++ = inp[449];
+
+ r1 = ixheaacd_add32_sat(buf1a[2], buf1a[8]);
+ r4 = ixheaacd_sub32_sat(buf1a[2], buf1a[8]);
+ r3 = ixheaacd_add32_sat(buf1a[4], buf1a[6]);
+ r2 = ixheaacd_sub32_sat(buf1a[4], buf1a[6]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(r1, r3), c_54);
+
+ r1 = ixheaacd_add32_sat(r1, r3);
+
+ temp1 = ixheaacd_add32_sat(buf1a[0], r1);
+
+ r1 = ixheaacd_add32_sat(temp1, (ixheaacd_mult32_shl(r1, c_55) << 1));
+
+ r3 = ixheaacd_sub32_sat(r1, t);
+ r1 = ixheaacd_add32_sat(r1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(r4, r2), c_51);
+ r4 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(r4, c_52) << 1);
+ r2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(r2, c_53));
+
+ s1 = ixheaacd_add32_sat(buf1a[3], buf1a[9]);
+ s4 = ixheaacd_sub32_sat(buf1a[3], buf1a[9]);
+ s3 = ixheaacd_add32_sat(buf1a[5], buf1a[7]);
+ s2 = ixheaacd_sub32_sat(buf1a[5], buf1a[7]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(s1, s3), c_54);
+
+ s1 = ixheaacd_add32_sat(s1, s3);
+
+ temp2 = ixheaacd_add32_sat(buf1a[1], s1);
+
+ s1 = ixheaacd_add32_sat(temp2, (ixheaacd_mult32_shl(s1, c_55) << 1));
+
+ s3 = ixheaacd_sub32_sat(s1, t);
+ s1 = ixheaacd_add32_sat(s1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(s4, s2), c_51);
+ s4 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(s4, c_52) << 1));
+ s2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(s2, c_53));
+
+ *buf2++ = temp1;
+ *buf2++ = temp2;
+ *buf2++ = ixheaacd_add32_sat(r1, s2);
+ *buf2++ = ixheaacd_sub32_sat(s1, r2);
+ *buf2++ = ixheaacd_sub32_sat(r3, s4);
+ *buf2++ = ixheaacd_add32_sat(s3, r4);
+ *buf2++ = ixheaacd_add32_sat(r3, s4);
+ *buf2++ = ixheaacd_sub32_sat(s3, r4);
+ *buf2++ = ixheaacd_sub32_sat(r1, s2);
+ *buf2++ = ixheaacd_add32_sat(s1, r2);
+ buf1a = buf1;
+ }
+
+ n = 0;
+ for (i = 0; i < FFT5; i++) {
+ xr_0 = fft3outptr[0];
+ xi_0 = fft3outptr[1];
+
+ xr_1 = fft3outptr[10];
+ xi_1 = fft3outptr[11];
+
+ xr_2 = fft3outptr[20];
+ xi_2 = fft3outptr[21];
+
+ x_01_r = ixheaacd_add32_sat(xr_0, xr_1);
+ x_01_i = ixheaacd_add32_sat(xi_0, xi_1);
+
+ add_r = ixheaacd_add32_sat(xr_1, xr_2);
+ add_i = ixheaacd_add32_sat(xi_1, xi_2);
+
+ sub_r = ixheaacd_sub32_sat(xr_1, xr_2);
+ sub_i = ixheaacd_sub32_sat(xi_1, xi_2);
+
+ p1 = add_r >> 1;
+
+ p2 = ixheaacd_mult32_shl(sub_i, sinmu);
+ p3 = ixheaacd_mult32_shl(sub_r, sinmu);
+
+ p4 = add_i >> 1;
+
+ temp = ixheaacd_sub32_sat(xr_0, p1);
+ temp1 = ixheaacd_add32_sat(xi_0, p3);
+ temp2 = ixheaacd_sub32_sat(xi_0, p3);
+
+ idx = ptr_re_arr_tab_sml_240[n++] << 1;
+ op[idx] = ixheaacd_add32_sat(x_01_r, xr_2);
+ op[idx + 1] = ixheaacd_add32_sat(x_01_i, xi_2);
+
+ idx = ptr_re_arr_tab_sml_240[n++] << 1;
+ op[idx] = ixheaacd_add32_sat(temp, p2);
+ op[idx + 1] = ixheaacd_sub32_sat(temp2, p4);
+
+ idx = ptr_re_arr_tab_sml_240[n++] << 1;
+ op[idx] = ixheaacd_sub32_sat(temp, p2);
+ op[idx + 1] = ixheaacd_sub32_sat(temp1, p4);
+ fft3outptr += 2;
+ }
+ return;
+}
+
+VOID ixheaacd_fft_120(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
+ WORD32 npoints, WORD32* ptr_x, WORD32* ptr_y) {
+ WORD32 i;
+ WORD32 *buf1, *buf2;
+ WORD32 *inp, *op;
+
+ inp = ptr_x;
+ op = ptr_y;
+
+ ixheaacd_dec_rearrange_short(inp, op, 60, imdct_tables_ptr->re_arr_tab_4);
+ buf1 = op;
+ buf2 = inp;
+
+ for (i = 0; i < FFT15; i++) {
+ {
+ WORD32 x_0, x_1, x_2, x_3, x_4, x_5, x_6, x_7;
+ WORD32 *y0, *y1, *y2, *y3;
+ WORD32 *x0;
+ WORD32 xh0_0, xh1_0, xh0_1, xh1_1, xl0_0, xl1_0, xl0_1, xl1_1;
+ WORD32 h2;
+ WORD32 n00, n01, n10, n11, n20, n21, n30, n31;
+
+ ptr_x = buf1;
+ ptr_y = buf2;
+ npoints = 4;
+ h2 = 0;
+
+ y0 = ptr_y;
+ y2 = ptr_y + (WORD32)npoints;
+ x0 = ptr_x;
+
+ y1 = y0 + (WORD32)(npoints >> 1);
+ y3 = y2 + (WORD32)(npoints >> 1);
+
+ x_0 = x0[0]; x_1 = x0[1];
+ x_2 = x0[2]; x_3 = x0[3];
+ x_4 = x0[4]; x_5 = x0[5];
+ x_6 = x0[6]; x_7 = x0[7];
+ x0 += 8;
+
+ xh0_0 = ixheaacd_add32_sat(x_0, x_4);
+ xh1_0 = ixheaacd_add32_sat(x_1, x_5);
+ xl0_0 = ixheaacd_sub32_sat(x_0, x_4);
+ xl1_0 = ixheaacd_sub32_sat(x_1, x_5);
+ xh0_1 = ixheaacd_add32_sat(x_2, x_6);
+ xh1_1 = ixheaacd_add32_sat(x_3, x_7);
+ xl0_1 = ixheaacd_sub32_sat(x_2, x_6);
+ xl1_1 = ixheaacd_sub32_sat(x_3, x_7);
+
+ n00 = ixheaacd_add32_sat(xh0_0, xh0_1);
+ n01 = ixheaacd_add32_sat(xh1_0, xh1_1);
+ n10 = ixheaacd_add32_sat(xl0_0, xl1_1);
+ n11 = ixheaacd_sub32_sat(xl1_0, xl0_1);
+ n20 = ixheaacd_sub32_sat(xh0_0, xh0_1);
+ n21 = ixheaacd_sub32_sat(xh1_0, xh1_1);
+ n30 = ixheaacd_sub32_sat(xl0_0, xl1_1);
+ n31 = ixheaacd_add32_sat(xl1_0, xl0_1);
+
+ y0[2 * h2] = n00; y0[2 * h2 + 1] = n01;
+ y1[2 * h2] = n10; y1[2 * h2 + 1] = n11;
+ y2[2 * h2] = n20; y2[2 * h2 + 1] = n21;
+ y3[2 * h2] = n30; y3[2 * h2 + 1] = n31;
+ }
+ buf1 += (FFT4 * 2);
+ buf2 += (FFT4 * 2);
+ }
+
+ ixheaacd_dec_rearrange_short(inp, op, 60, imdct_tables_ptr->re_arr_tab_15_4);
+
+ buf1 = op;
+ buf2 = inp;
+
+ for (i = 0; i < FFT4; i++) {
+ ixheaacd_fft_960_15(buf1, buf2, imdct_tables_ptr);
+ buf1 += (FFT15 * 2);
+ buf2 += (FFT15 * 2);
+ }
+
+ ixheaacd_dec_rearrange_short(inp, op, 60, imdct_tables_ptr->re_arr_tab_120);
+}
+
+VOID ixheaacd_fft_960_15(WORD32 *inp, WORD32 *op,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr) {
+ WORD32 i;
+ WORD32 *buf1, *buf2;
+
+ ixheaacd_dec_rearrange_short(inp, op, FFT15, imdct_tables_ptr->re_arr_tab_5);
+
+ buf1 = op;
+ buf2 = inp;
+
+ for (i = 0; i < FFT3; i++) {
+ ixheaacd_fft_5(buf1, buf2);
+
+ buf1 += (FFT5 * 2);
+ buf2 += (FFT5 * 2);
+ }
+
+ ixheaacd_dec_rearrange_short(inp, op, FFT15, imdct_tables_ptr->re_arr_tab_3);
+
+ buf1 = op;
+ buf2 = inp;
+
+ for (i = 0; i < FFT5; i++) {
+ ixheaacd_fft_3(buf1, buf2);
+
+ buf1 += (FFT3 * 2);
+ buf2 += (FFT3 * 2);
+ }
+
+ ixheaacd_dec_rearrange_short(inp, op, FFT15, imdct_tables_ptr->re_arr_tab_sml);
+}
+
+VOID ixheaacd_fft_3(WORD32 *inp, WORD32 *op) {
+ WORD32 add_r, sub_r;
+ WORD32 add_i, sub_i;
+ WORD32 x_01_r, x_01_i, temp;
+
+ WORD32 p1, p2, p3, p4;
+ WORD32 sinmu = 1859775393;
+
+ x_01_r = ixheaacd_add32_sat(inp[0], inp[2]);
+ x_01_i = ixheaacd_add32_sat(inp[1], inp[3]);
+
+ add_r = ixheaacd_add32_sat(inp[2], inp[4]);
+ add_i = ixheaacd_add32_sat(inp[3], inp[5]);
+
+ sub_r = ixheaacd_sub32_sat(inp[2], inp[4]);
+ sub_i = ixheaacd_sub32_sat(inp[3], inp[5]);
+
+ p1 = add_r >> 1;
+ p2 = ixheaacd_mult32_shl(sub_i, sinmu);
+ p3 = ixheaacd_mult32_shl(sub_r, sinmu);
+ p4 = add_i >> 1;
+
+ temp = ixheaacd_sub32_sat(inp[0], p1);
+
+ op[0] = ixheaacd_add32_sat(x_01_r, inp[4]);
+ op[1] = ixheaacd_add32_sat(x_01_i, inp[5]);
+ op[2] = ixheaacd_add32_sat(temp, p2);
+ op[3] = ixheaacd_sub32_sat(ixheaacd_sub32_sat(inp[1], p3), p4);
+ op[4] = ixheaacd_sub32_sat(temp, p2);
+ op[5] = ixheaacd_sub32_sat(ixheaacd_add32_sat(inp[1], p3), p4);
+}
+
+VOID ixheaacd_fft_5(WORD32 *inp, WORD32 *op) {
+ WORD32 c_51 = 2042378317;
+ WORD32 c_52 = -1652318768;
+ WORD32 c_53 = -780119100;
+ WORD32 c_54 = 1200479854;
+ WORD32 c_55 = -1342177280;
+
+ WORD32 r1, r2, r3, r4;
+ WORD32 s1, s2, s3, s4, t, temp1, temp2;
+
+ r1 = ixheaacd_add32_sat(inp[2], inp[8]);
+ r4 = ixheaacd_sub32_sat(inp[2], inp[8]);
+ r3 = ixheaacd_add32_sat(inp[4], inp[6]);
+ r2 = ixheaacd_sub32_sat(inp[4], inp[6]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(r1, r3), c_54);
+ r1 = ixheaacd_add32_sat(r1, r3);
+
+ temp1 = ixheaacd_add32_sat(inp[0], r1);
+ r1 = ixheaacd_add32_sat(
+ temp1, ixheaacd_shl32_sat((ixheaacd_mult32_shl(r1, c_55)), 1));
+
+ r3 = ixheaacd_sub32_sat(r1, t);
+ r1 = ixheaacd_add32_sat(r1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(r4, r2), c_51);
+ r4 = ixheaacd_add32_sat(
+ t, ixheaacd_shl32_sat(ixheaacd_mult32_shl(r4, c_52), 1));
+ r2 = ixheaacd_add32_sat(t, ixheaacd_mult32_shl(r2, c_53));
+
+ s1 = ixheaacd_add32_sat(inp[3], inp[9]);
+ s4 = ixheaacd_sub32_sat(inp[3], inp[9]);
+ s3 = ixheaacd_add32_sat(inp[5], inp[7]);
+ s2 = ixheaacd_sub32_sat(inp[5], inp[7]);
+
+ t = ixheaacd_mult32_shl(ixheaacd_sub32_sat(s1, s3), c_54);
+ s1 = ixheaacd_add32_sat(s1, s3);
+
+ temp2 = ixheaacd_add32_sat(inp[1], s1);
+
+ s1 = ixheaacd_add32_sat(
+ temp2, ixheaacd_shl32_sat((ixheaacd_mult32_shl(s1, c_55)), 1));
+
+ s3 = ixheaacd_sub32_sat(s1, t);
+ s1 = ixheaacd_add32_sat(s1, t);
+
+ t = ixheaacd_mult32_shl(ixheaacd_add32_sat(s4, s2), c_51);
+ s4 = ixheaacd_add32_sat(
+ t, ixheaacd_shl32_sat((ixheaacd_mult32_shl(s4, c_52)), 1));
+ s2 = ixheaacd_add32_sat(t, (ixheaacd_mult32_shl(s2, c_53)));
+
+ op[0] = temp1;
+ op[1] = temp2;
+ op[2] = ixheaacd_add32_sat(r1, s2);
+ op[3] = ixheaacd_sub32_sat(s1, r2);
+ op[4] = ixheaacd_sub32_sat(r3, s4);
+ op[5] = ixheaacd_add32_sat(s3, r4);
+ op[6] = ixheaacd_add32_sat(r3, s4);
+ op[7] = ixheaacd_sub32_sat(s3, r4);
+ op[8] = ixheaacd_sub32_sat(r1, s2);
+ op[9] = ixheaacd_add32_sat(s1, r2);
+}
+
VOID ixheaacd_fft_480_ld(WORD32 *inp, WORD32 *op,
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr) {
WORD32 i;
@@ -1712,6 +2512,94 @@ VOID ixheaacd_fft_480_ld(WORD32 *inp, WORD32 *op,
}
}
+VOID ixheaacd_pre_twiddle_960(WORD32 *xptr, WORD32 *data, WORD32 n,
+ WORD32 *cos_sin_ptr, WORD32 neg_expo) {
+ WORD npoints_4, i;
+ WORD32 tempr, tempi, temp;
+ WORD32 c, c1, s, s1;
+ WORD32 *in_ptr1, *in_ptr2;
+ WORD32 *xprt1 = xptr + (n - 1);
+
+ npoints_4 = n >> 2;
+
+ in_ptr1 = data;
+ in_ptr2 = data + n - 1;
+
+ for (i = 0; i < npoints_4; i++) {
+ c = *cos_sin_ptr++;
+ s = *cos_sin_ptr++;
+
+ tempr = *in_ptr1++;
+ tempi = *in_ptr2--;
+
+ temp = -ixheaacd_add32(ixheaacd_mult32x32in32(tempr, c),
+ ixheaacd_mult32x32in32(tempi, s));
+ *xptr++ = shr32_dir_sat(temp, neg_expo);
+
+ temp = -ixheaacd_sub32(ixheaacd_mult32x32in32(tempi, c),
+ ixheaacd_mult32x32in32(tempr, s));
+ *xptr++ = shr32_dir_sat(temp, neg_expo);
+
+ c1 = *cos_sin_ptr++;
+ s1 = *cos_sin_ptr++;
+
+ tempi = *in_ptr1++;
+ tempr = *in_ptr2--;
+
+ temp = -ixheaacd_sub32(ixheaacd_mult32x32in32(tempi, c1),
+ ixheaacd_mult32x32in32(tempr, s1));
+ *xprt1-- = shr32_dir_sat(temp, neg_expo);
+
+ temp = -ixheaacd_add32(ixheaacd_mult32x32in32(tempr, c1),
+ ixheaacd_mult32x32in32(tempi, s1));
+ *xprt1-- = shr32_dir_sat(temp, neg_expo);
+ }
+}
+
+VOID ixheaacd_pre_twiddle_120(WORD32 *xptr, WORD32 *data, WORD32 n,
+ WORD16 *cos_sin_ptr, WORD32 neg_expo) {
+ WORD npoints_4, i;
+ WORD32 tempr, tempi, temp;
+ WORD16 c, c1, s, s1;
+ WORD32 *in_ptr1, *in_ptr2;
+ WORD32 *xprt1 = xptr + (n - 1);
+
+ npoints_4 = n >> 2;
+
+ in_ptr1 = data;
+ in_ptr2 = data + n - 1;
+
+ for (i = 0; i < npoints_4; i++) {
+ c = *cos_sin_ptr++;
+ s = *cos_sin_ptr++;
+
+ tempr = *in_ptr1++;
+ tempi = *in_ptr2--;
+
+ temp = -ixheaacd_add32(ixheaacd_mult32x16in32(tempr, c),
+ ixheaacd_mult32x16in32(tempi, s));
+ *xptr++ = shr32_dir_sat(temp, neg_expo);
+
+ temp = -ixheaacd_sub32(ixheaacd_mult32x16in32(tempi, c),
+ ixheaacd_mult32x16in32(tempr, s));
+ *xptr++ = shr32_dir_sat(temp, neg_expo);
+
+ c1 = *cos_sin_ptr++;
+ s1 = *cos_sin_ptr++;
+
+ tempi = *in_ptr1++;
+ tempr = *in_ptr2--;
+
+ temp = -ixheaacd_sub32(ixheaacd_mult32x16in32(tempi, c1),
+ ixheaacd_mult32x16in32(tempr, s1));
+ *xprt1-- = shr32_dir_sat(temp, neg_expo);
+
+ temp = -ixheaacd_add32(ixheaacd_mult32x16in32(tempr, c1),
+ ixheaacd_mult32x16in32(tempi, s1));
+ *xprt1-- = shr32_dir_sat(temp, neg_expo);
+ }
+}
+
VOID ixheaacd_pre_twiddle(WORD32 *xptr, WORD32 *data, WORD32 n,
WORD32 *cos_sin_ptr, WORD32 neg_expo) {
WORD npoints_4, i;
@@ -1799,6 +2687,86 @@ VOID ixheaacd_pre_twiddle(WORD32 *xptr, WORD32 *data, WORD32 n,
}
}
+VOID ixheaacd_post_twiddle_120(WORD32 out[], WORD32 x[],
+ const WORD16 *cos_sin_ptr, WORD m) {
+ WORD i;
+ WORD16 c, c1, s, s1;
+ WORD32 tempr, tempi, temp;
+ WORD32 *in_ptr2 = x + (m - 1);
+ WORD32 *in_ptr1 = x;
+ WORD32 *xptr = out;
+ WORD32 *xptr1 = out + (m - 1);
+
+ for (i = 0; i < m; i += 4) {
+ c = *cos_sin_ptr++;
+ s = *cos_sin_ptr++;
+ c1 = *cos_sin_ptr++;
+ s1 = *cos_sin_ptr++;
+
+ tempr = *in_ptr1++;
+ tempi = *in_ptr1++;
+
+ temp = -ixheaacd_sub32_sat(ixheaacd_mult32x16in32(tempr, s),
+ ixheaacd_mult32x16in32(tempi, c));
+ *xptr1-- = temp;
+
+ temp = -ixheaacd_add32_sat(ixheaacd_mult32x16in32(tempr, c),
+ ixheaacd_mult32x16in32(tempi, s));
+ *xptr++ = temp;
+
+ tempi = *in_ptr2--;
+ tempr = *in_ptr2--;
+
+ temp = -ixheaacd_sub32_sat(ixheaacd_mult32x16in32(tempr, s1),
+ ixheaacd_mult32x16in32(tempi, c1));
+ *xptr++ = temp;
+
+ temp = -ixheaacd_add32_sat(ixheaacd_mult32x16in32(tempr, c1),
+ ixheaacd_mult32x16in32(tempi, s1));
+ *xptr1-- = temp;
+ }
+}
+
+VOID ixheaacd_post_twiddle_960(WORD32 out[], WORD32 x[],
+ const WORD32 *cos_sin_ptr, WORD m) {
+ WORD i;
+ WORD32 c, c1, s, s1;
+ WORD32 tempr, tempi, temp;
+ WORD32 *in_ptr2 = x + (m - 1);
+ WORD32 *in_ptr1 = x;
+ WORD32 *xptr = out;
+ WORD32 *xptr1 = out + (m - 1);
+
+ for (i = 0; i < m; i += 4) {
+ c = *cos_sin_ptr++;
+ s = *cos_sin_ptr++;
+ c1 = *cos_sin_ptr++;
+ s1 = *cos_sin_ptr++;
+
+ tempr = *in_ptr1++;
+ tempi = *in_ptr1++;
+
+ temp = -ixheaacd_sub32_sat(ixheaacd_mult32x32in32(tempr, s),
+ ixheaacd_mult32x32in32(tempi, c));
+ *xptr1-- = temp;
+
+ temp = -ixheaacd_add32_sat(ixheaacd_mult32x32in32(tempr, c),
+ ixheaacd_mult32x32in32(tempi, s));
+ *xptr++ = temp;
+
+ tempi = *in_ptr2--;
+ tempr = *in_ptr2--;
+
+ temp = -ixheaacd_sub32_sat(ixheaacd_mult32x32in32(tempr, s1),
+ ixheaacd_mult32x32in32(tempi, c1));
+ *xptr++ = temp;
+
+ temp = -ixheaacd_add32_sat(ixheaacd_mult32x32in32(tempr, c1),
+ ixheaacd_mult32x32in32(tempi, s1));
+ *xptr1-- = temp;
+ }
+}
+
VOID ixheaacd_post_twiddle_ld(WORD32 out[], WORD32 x[],
const WORD32 *cos_sin_ptr, WORD m) {
WORD i;
@@ -1951,7 +2919,7 @@ VOID ixheaacd_post_twiddle_eld(WORD32 out[], WORD32 x[],
VOID ixheaacd_fft32x32_ld_dec(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
WORD32 npoints, WORD32 *ptr_x, WORD32 *ptr_y) {
- WORD32 i, j, l1, l2, h2, predj, tw_offset, stride, fft_jmp;
+ WORD32 i, j, l1, l2, h2, predj, tw_offset, stride, fft_jmp, k;
WORD32 xt0_0, yt0_0, xt1_0, yt1_0, xt2_0, yt2_0;
WORD32 xh0_0, xh1_0, xh20_0, xh21_0, xl0_0, xl1_0, xl20_0, xl21_0;
WORD32 xh0_1, xh1_1, xl0_1, xl1_1;
@@ -1973,6 +2941,8 @@ VOID ixheaacd_fft32x32_ld_dec(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
if (npoints == 256)
ptr_w = imdct_tables_ptr->w_256;
+ else if (npoints == 32)
+ ptr_w = (WORD32*)imdct_tables_ptr->w_32;
else
ptr_w = imdct_tables_ptr->w_16;
@@ -2089,9 +3059,13 @@ VOID ixheaacd_fft32x32_ld_dec(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
}
j = 0;
+ k = 0;
for (i = 0; i < npoints; i += 8) {
- DIG_REV(j, l1, h2);
+ if (npoints == 32)
+ h2 = rev_dig[k++];
+ else
+ DIG_REV(j, l1, h2);
x_0 = x0[0];
x_1 = x0[1];
diff --git a/decoder/ixheaacd_aac_imdct.h b/decoder/ixheaacd_aac_imdct.h
index 950eef9..ddba1a8 100644
--- a/decoder/ixheaacd_aac_imdct.h
+++ b/decoder/ixheaacd_aac_imdct.h
@@ -25,6 +25,11 @@ WORD32 ixheaacd_inverse_transform(
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
WORD32 npoints);
+VOID ixheaacd_inverse_transform_960(
+ WORD32 spec_data[], WORD32 scratch[],
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
+ WORD32 *imdct_scale);
+
VOID ixheaacd_post_twiddle_dec(WORD32 out_ptr[], WORD32 spec_data[],
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables,
WORD32 npoints);
@@ -60,6 +65,11 @@ VOID ixheaacd_pretwiddle_compute_dec(
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
WORD32 neg_expo);
+VOID ixheaacd_pretwiddle_compute_960_dec(
+ WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo);
+
VOID ixheaacd_pretwiddle_compute_armv7(
WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
@@ -85,12 +95,46 @@ VOID ixheaacd_imdct_using_fft_armv8(
VOID ixheaacd_fft_480_ld(WORD32 *inp, WORD32 *op,
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
+VOID ixheaacd_fft_5(WORD32 *inp, WORD32 *op);
+
+VOID ixheaacd_fft_3(WORD32 *inp, WORD32 *op);
+
+VOID ixheaacd_fft_960_15(WORD32 *inp, WORD32 *op,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
+
+VOID ixheaacd_fft_960(WORD32 *inp, WORD32 *op,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
+
+VOID ixheaacd_fft_120(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
+ WORD32 npoints, WORD32* ptr_x, WORD32* ptr_y);
+
+VOID ixheaacd_fft_32_points(WORD16 *ptr_w, WORD32 npoints,
+ WORD32* ptr_x, WORD32* ptr_y);
+
+VOID ixheaacd_ld_dec_fft_15_opt(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
+ WORD16 *re_arr_tab_sml_240_ptr);
+
+VOID ixheaacd_dec_rearrange_short(WORD32 *ip, WORD32 *op, WORD32 n,
+ WORD16 *re_arr_tab);
+
VOID ixheaacd_pre_twiddle(WORD32 *xptr, WORD32 *data, WORD32 n,
WORD32 *cos_array_ptr, WORD32 neg_expo);
+VOID ixheaacd_pre_twiddle_960(WORD32 *xptr, WORD32 *data, WORD32 n,
+ WORD32 *cos_array_ptr, WORD32 neg_expo);
+
+VOID ixheaacd_pre_twiddle_120(WORD32 *xptr, WORD32 *data, WORD32 n,
+ WORD16 *cos_array_ptr, WORD32 neg_expo);
+
VOID ixheaacd_post_twiddle_ld(WORD32 out[], WORD32 x[],
const WORD32 *cos_sin_ptr, WORD m);
+VOID ixheaacd_post_twiddle_960(WORD32 out[], WORD32 x[],
+ const WORD32 *cos_sin_ptr, WORD m);
+
+VOID ixheaacd_post_twiddle_120(WORD32 out[], WORD32 x[],
+ const WORD16 *cos_sin_ptr, WORD m);
+
VOID ixheaacd_post_twiddle_eld(WORD32 out[], WORD32 x[],
const WORD32 *cos_sin_ptr, WORD m);
@@ -125,6 +169,10 @@ VOID ixheaacd_inverse_transform_512(
WORD32 data[], WORD32 temp[], WORD32 *imdct_scale, WORD32 *cos_sin_ptr,
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 object_type);
+VOID ixheaacd_mdct_960(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
+ WORD32 mdct_flag,
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
+
VOID ixheaacd_mdct_480_ld(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
WORD32 mdct_flag,
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
diff --git a/decoder/ixheaacd_aac_rom.c b/decoder/ixheaacd_aac_rom.c
index 8c3d426..9e07777 100644
--- a/decoder/ixheaacd_aac_rom.c
+++ b/decoder/ixheaacd_aac_rom.c
@@ -395,6 +395,122 @@ const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables = {
12, 16, 20, 24, 28, 32, 32, 32, 32, 32, 32, 32, 32, 32, -1,
},
+ // static const WORD16 sfb_96_960[41] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 8, 8, 8, 8,
+ 8, 12, 12, 12, 12, 12,
+ 16, 16, 24, 28, 36, 44,
+ 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, -1
+},
+
+/* 13 scfbands */
+
+// static const WORD16 sfb_96_120[13] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 8, 8, 8, 16, 28, 28,
+ -1
+},
+
+/* 47 scfbands*/
+// static const WORD16 sfb_64_960[47] =
+{
+ 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4,
+ 8, 8, 8, 8, 12, 12, 12,
+ 16, 16, 16, 20, 24, 24, 28,
+ 36, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 16, -1
+},
+
+/* 49 scfbands */
+// static const WORD16 sfb_48_960[50] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 8, 8,
+ 8, 8, 8, 8, 8, 12,
+ 12, 12, 12, 16, 16, 20,
+ 20, 24, 24, 28, 28, 32,
+ 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,
+ 32, -1
+},
+
+/* 14 scfbands */
+// static const WORD16 sfb_48_120[15] =
+{
+ 4, 4, 4, 4, 4, 8,
+ 8, 8, 12, 12, 12, 16,
+ 16, 8, -1
+},
+
+
+/* 47 scfbands */
+// static const WORD16 sfb_24_960[47] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 8,
+ 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 12, 12, 12,
+ 12, 16, 16, 16, 20, 20,
+ 24, 24, 28, 28, 32, 36,
+ 36, 40, 44, 48, 52, 52,
+ 64, 64, 64, 64, -1
+},
+
+/* 15 scfbands */
+// static const WORD16 sfb_24_120[16] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 8, 8, 8, 12, 12,
+ 16, 16, 12, -1
+},
+
+/* 43 scfbands */
+// static const WORD16 sfb_16_960[43] =
+{
+ 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 12,
+ 12, 12, 12, 12, 12, 12,
+ 12, 12, 16, 16, 16, 16,
+ 20, 20, 20, 24, 24, 28,
+ 28, 32, 36, 40, 40, 44,
+ 48, 52, 56, 60, 64, 64,
+ -1
+},
+
+/* 15 scfbands */
+// static const WORD16 sfb_16_120[16] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 8, 8, 12, 12,
+ 16, 20, 12, -1
+},
+
+/* 40 scfbands */
+// static const WORD16 sfb_8_960[41] =
+{
+ 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12,
+ 12, 16, 16, 16, 16, 16,
+ 16, 16, 20, 20, 20, 20,
+ 24, 24, 24, 28, 28, 32,
+ 36, 36, 40, 44, 48, 52,
+ 56, 60, 64, 16, -1
+},
+
+/* 15 scfbands */
+// static const WORD16 sfb_8_120[16] =
+{
+ 4, 4, 4, 4, 4, 4,
+ 4, 8, 8, 8, 8, 12,
+ 16, 20, 12, -1
+},
}; // end of ia_aac_dec_huffman_tables_struct
const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables = {
@@ -539,7 +655,7 @@ const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables = {
0, 0,
}},
- // const Word8 tns_max_bands_tbl_ld[12][4] =
+ // const WORD8 tns_max_bands_tbl_ld[12][4] =
{
/*{*/ 31, /* 96000 */
/*{*/ 31, /* 88200 */
@@ -554,7 +670,7 @@ const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables = {
/*{*/ 31, /* 11025 */
/*{*/ 31, /* 8000 */
},
- // const Word8 tns_max_bands_tbl_480[12][4] =
+ // const WORD8 tns_max_bands_tbl_480[12][4] =
{
/*{*/ 31, /* 96000 */
/*{*/ 31, /* 88200 */
@@ -568,8 +684,13 @@ const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables = {
/*{*/ 30, /* 12000 */
/*{*/ 30, /* 11025 */
/*{*/ 30, /* 8000 */
- }
-
+ },
+ // const WORD16 scale_table_960[4] =
+ {
+ /* Q14 format */
+ /* table of 2^(r/4) for r=0, 1, 2, 3 */
+ 16385, 19486, 23172, 27557
+ },
}; // end of ia_aac_dec_block_tables_struct */
const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables = {
@@ -2260,6 +2381,666 @@ const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables = {
-23, -23, -23, -23, -23, -23, -23, -23, -23, -22,
-22, -22, -22, -22, -22, -22, -22, -21, -21, -21,
-21, -21, -21, -20, -20, -20, -20, -20, -20, -19,
- -19, -19, -19, -18, -18, -18, -18, -18}
+ -19, -19, -19, -18, -18, -18, -18, -18},
+
+ // const WORD16 only_long_window_sine_960[960] =
+ {
+ 0x001B, 0x7FFF, 0x0050, 0x7FFF, 0x0086, 0x7FFF, 0x00BC, 0x7FFE, 0x00F1, 0x7FFE,
+ 0x0127, 0x7FFE, 0x015C, 0x7FFD, 0x0192, 0x7FFD, 0x01C8, 0x7FFC, 0x01FD, 0x7FFB,
+ 0x0233, 0x7FFA, 0x0269, 0x7FF9, 0x029E, 0x7FF8, 0x02D4, 0x7FF7, 0x0309, 0x7FF6,
+ 0x033F, 0x7FF4, 0x0375, 0x7FF3, 0x03AA, 0x7FF2, 0x03E0, 0x7FF0, 0x0415, 0x7FEE,
+ 0x044B, 0x7FED, 0x0480, 0x7FEB, 0x04B6, 0x7FE9, 0x04EC, 0x7FE7, 0x0521, 0x7FE5,
+ 0x0557, 0x7FE2, 0x058C, 0x7FE0, 0x05C2, 0x7FDE, 0x05F7, 0x7FDB, 0x062D, 0x7FD9,
+ 0x0663, 0x7FD6, 0x0698, 0x7FD3, 0x06CE, 0x7FD1, 0x0703, 0x7FCE, 0x0739, 0x7FCB,
+ 0x076E, 0x7FC8, 0x07A4, 0x7FC5, 0x07D9, 0x7FC1, 0x080F, 0x7FBE, 0x0844, 0x7FBB,
+ 0x087A, 0x7FB7, 0x08AF, 0x7FB3, 0x08E5, 0x7FB0, 0x091A, 0x7FAC, 0x0950, 0x7FA8,
+ 0x0985, 0x7FA4, 0x09BB, 0x7FA0, 0x09F0, 0x7F9C, 0x0A26, 0x7F98, 0x0A5B, 0x7F94,
+ 0x0A90, 0x7F8F, 0x0AC6, 0x7F8B, 0x0AFB, 0x7F86, 0x0B31, 0x7F82, 0x0B66, 0x7F7D,
+ 0x0B9C, 0x7F78, 0x0BD1, 0x7F73, 0x0C06, 0x7F6E, 0x0C3C, 0x7F69, 0x0C71, 0x7F64,
+ 0x0CA6, 0x7F5F, 0x0CDC, 0x7F59, 0x0D11, 0x7F54, 0x0D46, 0x7F4E, 0x0D7C, 0x7F49,
+ 0x0DB1, 0x7F43, 0x0DE6, 0x7F3D, 0x0E1C, 0x7F37, 0x0E51, 0x7F31, 0x0E86, 0x7F2B,
+ 0x0EBB, 0x7F25, 0x0EF1, 0x7F1F, 0x0F26, 0x7F19, 0x0F5B, 0x7F12, 0x0F90, 0x7F0C,
+ 0x0FC6, 0x7F05, 0x0FFB, 0x7EFF, 0x1030, 0x7EF8, 0x1065, 0x7EF1, 0x109A, 0x7EEA,
+ 0x10D0, 0x7EE3, 0x1105, 0x7EDC, 0x113A, 0x7ED5, 0x116F, 0x7ECE, 0x11A4, 0x7EC6,
+ 0x11D9, 0x7EBF, 0x120E, 0x7EB7, 0x1243, 0x7EB0, 0x1278, 0x7EA8, 0x12AD, 0x7EA0,
+ 0x12E2, 0x7E98, 0x1317, 0x7E90, 0x134C, 0x7E88, 0x1381, 0x7E80, 0x13B6, 0x7E78,
+ 0x13EB, 0x7E70, 0x1420, 0x7E67, 0x1455, 0x7E5F, 0x148A, 0x7E56, 0x14BF, 0x7E4E,
+ 0x14F4, 0x7E45, 0x1529, 0x7E3C, 0x155E, 0x7E33, 0x1593, 0x7E2A, 0x15C7, 0x7E21,
+ 0x15FC, 0x7E18, 0x1631, 0x7E0F, 0x1666, 0x7E05, 0x169B, 0x7DFC, 0x16CF, 0x7DF2,
+ 0x1704, 0x7DE9, 0x1739, 0x7DDF, 0x176E, 0x7DD5, 0x17A2, 0x7DCC, 0x17D7, 0x7DC2,
+ 0x180C, 0x7DB8, 0x1840, 0x7DAD, 0x1875, 0x7DA3, 0x18AA, 0x7D99, 0x18DE, 0x7D8F,
+ 0x1913, 0x7D84, 0x1947, 0x7D7A, 0x197C, 0x7D6F, 0x19B0, 0x7D64, 0x19E5, 0x7D59,
+ 0x1A19, 0x7D4F, 0x1A4E, 0x7D44, 0x1A82, 0x7D39, 0x1AB7, 0x7D2D, 0x1AEB, 0x7D22,
+ 0x1B20, 0x7D17, 0x1B54, 0x7D0B, 0x1B88, 0x7D00, 0x1BBD, 0x7CF4, 0x1BF1, 0x7CE9,
+ 0x1C25, 0x7CDD, 0x1C5A, 0x7CD1, 0x1C8E, 0x7CC5, 0x1CC2, 0x7CB9, 0x1CF6, 0x7CAD,
+ 0x1D2B, 0x7CA1, 0x1D5F, 0x7C95, 0x1D93, 0x7C88, 0x1DC7, 0x7C7C, 0x1DFB, 0x7C6F,
+ 0x1E2F, 0x7C63, 0x1E64, 0x7C56, 0x1E98, 0x7C49, 0x1ECC, 0x7C3C, 0x1F00, 0x7C30,
+ 0x1F34, 0x7C22, 0x1F68, 0x7C15, 0x1F9C, 0x7C08, 0x1FD0, 0x7BFB, 0x2004, 0x7BEE,
+ 0x2037, 0x7BE0, 0x206B, 0x7BD3, 0x209F, 0x7BC5, 0x20D3, 0x7BB7, 0x2107, 0x7BA9,
+ 0x213B, 0x7B9C, 0x216E, 0x7B8E, 0x21A2, 0x7B80, 0x21D6, 0x7B71, 0x220A, 0x7B63,
+ 0x223D, 0x7B55, 0x2271, 0x7B47, 0x22A4, 0x7B38, 0x22D8, 0x7B29, 0x230C, 0x7B1B,
+ 0x233F, 0x7B0C, 0x2373, 0x7AFD, 0x23A6, 0x7AEE, 0x23DA, 0x7ADF, 0x240D, 0x7AD0,
+ 0x2441, 0x7AC1, 0x2474, 0x7AB2, 0x24A7, 0x7AA3, 0x24DB, 0x7A93, 0x250E, 0x7A84,
+ 0x2541, 0x7A74, 0x2575, 0x7A65, 0x25A8, 0x7A55, 0x25DB, 0x7A45, 0x260E, 0x7A35,
+ 0x2642, 0x7A25, 0x2675, 0x7A15, 0x26A8, 0x7A05, 0x26DB, 0x79F5, 0x270E, 0x79E4,
+ 0x2741, 0x79D4, 0x2774, 0x79C4, 0x27A7, 0x79B3, 0x27DA, 0x79A2, 0x280D, 0x7992,
+ 0x2840, 0x7981, 0x2873, 0x7970, 0x28A6, 0x795F, 0x28D8, 0x794E, 0x290B, 0x793D,
+ 0x293E, 0x792B, 0x2971, 0x791A, 0x29A3, 0x7909, 0x29D6, 0x78F7, 0x2A09, 0x78E6,
+ 0x2A3B, 0x78D4, 0x2A6E, 0x78C2, 0x2AA1, 0x78B0, 0x2AD3, 0x789F, 0x2B06, 0x788D,
+ 0x2B38, 0x787B, 0x2B6B, 0x7868, 0x2B9D, 0x7856, 0x2BCF, 0x7844, 0x2C02, 0x7831,
+ 0x2C34, 0x781F, 0x2C66, 0x780C, 0x2C99, 0x77FA, 0x2CCB, 0x77E7, 0x2CFD, 0x77D4,
+ 0x2D2F, 0x77C1, 0x2D61, 0x77AE, 0x2D94, 0x779B, 0x2DC6, 0x7788, 0x2DF8, 0x7775,
+ 0x2E2A, 0x7762, 0x2E5C, 0x774E, 0x2E8E, 0x773B, 0x2EC0, 0x7727, 0x2EF1, 0x7714,
+ 0x2F23, 0x7700, 0x2F55, 0x76EC, 0x2F87, 0x76D8, 0x2FB9, 0x76C4, 0x2FEA, 0x76B0,
+ 0x301C, 0x769C, 0x304E, 0x7688, 0x307F, 0x7674, 0x30B1, 0x765F, 0x30E3, 0x764B,
+ 0x3114, 0x7636, 0x3146, 0x7622, 0x3177, 0x760D, 0x31A9, 0x75F8, 0x31DA, 0x75E4,
+ 0x320B, 0x75CF, 0x323D, 0x75BA, 0x326E, 0x75A5, 0x329F, 0x758F, 0x32D0, 0x757A,
+ 0x3302, 0x7565, 0x3333, 0x754F, 0x3364, 0x753A, 0x3395, 0x7524, 0x33C6, 0x750F,
+ 0x33F7, 0x74F9, 0x3428, 0x74E3, 0x3459, 0x74CD, 0x348A, 0x74B7, 0x34BB, 0x74A1,
+ 0x34EC, 0x748B, 0x351C, 0x7475, 0x354D, 0x745F, 0x357E, 0x7448, 0x35AF, 0x7432,
+ 0x35DF, 0x741B, 0x3610, 0x7405, 0x3640, 0x73EE, 0x3671, 0x73D7, 0x36A1, 0x73C0,
+ 0x36D2, 0x73AA, 0x3702, 0x7393, 0x3733, 0x737B, 0x3763, 0x7364, 0x3793, 0x734D,
+ 0x37C4, 0x7336, 0x37F4, 0x731E, 0x3824, 0x7307, 0x3854, 0x72EF, 0x3884, 0x72D8,
+ 0x38B5, 0x72C0, 0x38E5, 0x72A8, 0x3915, 0x7290, 0x3945, 0x7278, 0x3974, 0x7260,
+ 0x39A4, 0x7248, 0x39D4, 0x7230, 0x3A04, 0x7218, 0x3A34, 0x71FF, 0x3A64, 0x71E7,
+ 0x3A93, 0x71CF, 0x3AC3, 0x71B6, 0x3AF2, 0x719D, 0x3B22, 0x7185, 0x3B52, 0x716C,
+ 0x3B81, 0x7153, 0x3BB1, 0x713A, 0x3BE0, 0x7121, 0x3C0F, 0x7108, 0x3C3F, 0x70EF,
+ 0x3C6E, 0x70D5, 0x3C9D, 0x70BC, 0x3CCC, 0x70A2, 0x3CFB, 0x7089, 0x3D2B, 0x706F,
+ 0x3D5A, 0x7056, 0x3D89, 0x703C, 0x3DB8, 0x7022, 0x3DE7, 0x7008, 0x3E16, 0x6FEE,
+ 0x3E44, 0x6FD4, 0x3E73, 0x6FBA, 0x3EA2, 0x6FA0, 0x3ED1, 0x6F86, 0x3EFF, 0x6F6B,
+ 0x3F2E, 0x6F51, 0x3F5D, 0x6F36, 0x3F8B, 0x6F1C, 0x3FBA, 0x6F01, 0x3FE8, 0x6EE6,
+ 0x4017, 0x6ECC, 0x4045, 0x6EB1, 0x4073, 0x6E96, 0x40A2, 0x6E7B, 0x40D0, 0x6E60,
+ 0x40FE, 0x6E44, 0x412C, 0x6E29, 0x415A, 0x6E0E, 0x4189, 0x6DF2, 0x41B7, 0x6DD7,
+ 0x41E5, 0x6DBB, 0x4213, 0x6DA0, 0x4240, 0x6D84, 0x426E, 0x6D68, 0x429C, 0x6D4C,
+ 0x42CA, 0x6D30, 0x42F8, 0x6D14, 0x4325, 0x6CF8, 0x4353, 0x6CDC, 0x4380, 0x6CC0,
+ 0x43AE, 0x6CA4, 0x43DB, 0x6C87, 0x4409, 0x6C6B, 0x4436, 0x6C4E, 0x4464, 0x6C32,
+ 0x4491, 0x6C15, 0x44BE, 0x6BF8, 0x44EB, 0x6BDB, 0x4519, 0x6BBE, 0x4546, 0x6BA1,
+ 0x4573, 0x6B84, 0x45A0, 0x6B67, 0x45CD, 0x6B4A, 0x45FA, 0x6B2D, 0x4626, 0x6B0F,
+ 0x4653, 0x6AF2, 0x4680, 0x6AD5, 0x46AD, 0x6AB7, 0x46D9, 0x6A99, 0x4706, 0x6A7C,
+ 0x4733, 0x6A5E, 0x475F, 0x6A40, 0x478C, 0x6A22, 0x47B8, 0x6A04, 0x47E4, 0x69E6,
+ 0x4811, 0x69C8, 0x483D, 0x69AA, 0x4869, 0x698B, 0x4896, 0x696D, 0x48C2, 0x694F,
+ 0x48EE, 0x6930, 0x491A, 0x6911, 0x4946, 0x68F3, 0x4972, 0x68D4, 0x499E, 0x68B5,
+ 0x49C9, 0x6896, 0x49F5, 0x6877, 0x4A21, 0x6858, 0x4A4D, 0x6839, 0x4A78, 0x681A,
+ 0x4AA4, 0x67FB, 0x4ACF, 0x67DC, 0x4AFB, 0x67BC, 0x4B26, 0x679D, 0x4B52, 0x677D,
+ 0x4B7D, 0x675E, 0x4BA8, 0x673E, 0x4BD3, 0x671E, 0x4BFF, 0x66FF, 0x4C2A, 0x66DF,
+ 0x4C55, 0x66BF, 0x4C80, 0x669F, 0x4CAB, 0x667F, 0x4CD6, 0x665E, 0x4D01, 0x663E,
+ 0x4D2B, 0x661E, 0x4D56, 0x65FE, 0x4D81, 0x65DD, 0x4DAB, 0x65BD, 0x4DD6, 0x659C,
+ 0x4E01, 0x657B, 0x4E2B, 0x655B, 0x4E55, 0x653A, 0x4E80, 0x6519, 0x4EAA, 0x64F8,
+ 0x4ED4, 0x64D7, 0x4EFF, 0x64B6, 0x4F29, 0x6495, 0x4F53, 0x6474, 0x4F7D, 0x6453,
+ 0x4FA7, 0x6431, 0x4FD1, 0x6410, 0x4FFB, 0x63EE, 0x5025, 0x63CD, 0x504E, 0x63AB,
+ 0x5078, 0x638A, 0x50A2, 0x6368, 0x50CB, 0x6346, 0x50F5, 0x6324, 0x511E, 0x6302,
+ 0x5148, 0x62E0, 0x5171, 0x62BE, 0x519B, 0x629C, 0x51C4, 0x627A, 0x51ED, 0x6257,
+ 0x5216, 0x6235, 0x523F, 0x6213, 0x5268, 0x61F0, 0x5291, 0x61CE, 0x52BA, 0x61AB,
+ 0x52E3, 0x6188, 0x530C, 0x6166, 0x5335, 0x6143, 0x535E, 0x6120, 0x5386, 0x60FD,
+ 0x53AF, 0x60DA, 0x53D7, 0x60B7, 0x5400, 0x6094, 0x5428, 0x6070, 0x5451, 0x604D,
+ 0x5479, 0x602A, 0x54A1, 0x6006, 0x54C9, 0x5FE3, 0x54F2, 0x5FBF, 0x551A, 0x5F9C,
+ 0x5542, 0x5F78, 0x556A, 0x5F54, 0x5591, 0x5F31, 0x55B9, 0x5F0D, 0x55E1, 0x5EE9,
+ 0x5609, 0x5EC5, 0x5630, 0x5EA1, 0x5658, 0x5E7D, 0x5680, 0x5E58, 0x56A7, 0x5E34,
+ 0x56CF, 0x5E10, 0x56F6, 0x5DEB, 0x571D, 0x5DC7, 0x5745, 0x5DA2, 0x576C, 0x5D7E,
+ 0x5793, 0x5D59, 0x57BA, 0x5D34, 0x57E1, 0x5D10, 0x5808, 0x5CEB, 0x582F, 0x5CC6,
+ 0x5856, 0x5CA1, 0x587C, 0x5C7C, 0x58A3, 0x5C57, 0x58CA, 0x5C32, 0x58F0, 0x5C0C,
+ 0x5917, 0x5BE7, 0x593D, 0x5BC2, 0x5964, 0x5B9C, 0x598A, 0x5B77, 0x59B0, 0x5B51,
+ 0x59D7, 0x5B2C, 0x59FD, 0x5B06, 0x5A23, 0x5AE0, 0x5A49, 0x5ABB, 0x5A6F, 0x5A95
+ },
+ // const WORD16 only_long_window_kbd_960[960] =
+ {
+ 0x000A, 0x7FFF, 0x000F, 0x7FFF, 0x0013, 0x7FFF, 0x0016, 0x7FFF, 0x001A, 0x7FFF,
+ 0x001D, 0x7FFF, 0x0021, 0x7FFF, 0x0025, 0x7FFF, 0x0028, 0x7FFF, 0x002C, 0x7FFF,
+ 0x002F, 0x7FFF, 0x0033, 0x7FFF, 0x0037, 0x7FFF, 0x003B, 0x7FFF, 0x003F, 0x7FFF,
+ 0x0043, 0x7FFF, 0x0047, 0x7FFF, 0x004B, 0x7FFF, 0x0050, 0x7FFF, 0x0054, 0x7FFF,
+ 0x0059, 0x7FFF, 0x005D, 0x7FFF, 0x0062, 0x7FFF, 0x0067, 0x7FFF, 0x006C, 0x7FFF,
+ 0x0071, 0x7FFF, 0x0076, 0x7FFF, 0x007B, 0x7FFF, 0x0080, 0x7FFF, 0x0086, 0x7FFF,
+ 0x008C, 0x7FFF, 0x0091, 0x7FFF, 0x0097, 0x7FFF, 0x009D, 0x7FFF, 0x00A3, 0x7FFF,
+ 0x00A9, 0x7FFF, 0x00B0, 0x7FFF, 0x00B6, 0x7FFE, 0x00BD, 0x7FFE, 0x00C3, 0x7FFE,
+ 0x00CA, 0x7FFE, 0x00D1, 0x7FFE, 0x00D8, 0x7FFE, 0x00E0, 0x7FFE, 0x00E7, 0x7FFE,
+ 0x00EF, 0x7FFE, 0x00F6, 0x7FFE, 0x00FE, 0x7FFE, 0x0106, 0x7FFE, 0x010E, 0x7FFE,
+ 0x0116, 0x7FFE, 0x011F, 0x7FFE, 0x0127, 0x7FFE, 0x0130, 0x7FFE, 0x0139, 0x7FFE,
+ 0x0142, 0x7FFD, 0x014B, 0x7FFD, 0x0154, 0x7FFD, 0x015E, 0x7FFD, 0x0167, 0x7FFD,
+ 0x0171, 0x7FFD, 0x017B, 0x7FFD, 0x0185, 0x7FFD, 0x018F, 0x7FFD, 0x019A, 0x7FFC,
+ 0x01A4, 0x7FFC, 0x01AF, 0x7FFC, 0x01BA, 0x7FFC, 0x01C5, 0x7FFC, 0x01D0, 0x7FFC,
+ 0x01DC, 0x7FFC, 0x01E7, 0x7FFB, 0x01F3, 0x7FFB, 0x01FF, 0x7FFB, 0x020B, 0x7FFB,
+ 0x0218, 0x7FFB, 0x0224, 0x7FFA, 0x0231, 0x7FFA, 0x023E, 0x7FFA, 0x024B, 0x7FFA,
+ 0x0258, 0x7FFA, 0x0265, 0x7FF9, 0x0273, 0x7FF9, 0x0281, 0x7FF9, 0x028F, 0x7FF8,
+ 0x029D, 0x7FF8, 0x02AC, 0x7FF8, 0x02BA, 0x7FF8, 0x02C9, 0x7FF7, 0x02D8, 0x7FF7,
+ 0x02E7, 0x7FF7, 0x02F7, 0x7FF6, 0x0306, 0x7FF6, 0x0316, 0x7FF5, 0x0326, 0x7FF5,
+ 0x0336, 0x7FF5, 0x0347, 0x7FF4, 0x0357, 0x7FF4, 0x0368, 0x7FF3, 0x0379, 0x7FF3,
+ 0x038A, 0x7FF2, 0x039C, 0x7FF2, 0x03AE, 0x7FF1, 0x03BF, 0x7FF1, 0x03D2, 0x7FF0,
+ 0x03E4, 0x7FF0, 0x03F7, 0x7FEF, 0x0409, 0x7FEF, 0x041C, 0x7FEE, 0x0430, 0x7FED,
+ 0x0443, 0x7FED, 0x0457, 0x7FEC, 0x046B, 0x7FEB, 0x047F, 0x7FEB, 0x0493, 0x7FEA,
+ 0x04A8, 0x7FE9, 0x04BD, 0x7FE9, 0x04D2, 0x7FE8, 0x04E7, 0x7FE7, 0x04FD, 0x7FE6,
+ 0x0513, 0x7FE5, 0x0529, 0x7FE4, 0x053F, 0x7FE3, 0x0555, 0x7FE3, 0x056C, 0x7FE2,
+ 0x0583, 0x7FE1, 0x059A, 0x7FE0, 0x05B2, 0x7FDF, 0x05CA, 0x7FDD, 0x05E2, 0x7FDC,
+ 0x05FA, 0x7FDB, 0x0612, 0x7FDA, 0x062B, 0x7FD9, 0x0644, 0x7FD8, 0x065D, 0x7FD6,
+ 0x0677, 0x7FD5, 0x0690, 0x7FD4, 0x06AA, 0x7FD3, 0x06C5, 0x7FD1, 0x06DF, 0x7FD0,
+ 0x06FA, 0x7FCE, 0x0715, 0x7FCD, 0x0730, 0x7FCB, 0x074C, 0x7FCA, 0x0768, 0x7FC8,
+ 0x0784, 0x7FC6, 0x07A0, 0x7FC5, 0x07BD, 0x7FC3, 0x07D9, 0x7FC1, 0x07F6, 0x7FC0,
+ 0x0814, 0x7FBE, 0x0832, 0x7FBC, 0x084F, 0x7FBA, 0x086E, 0x7FB8, 0x088C, 0x7FB6,
+ 0x08AB, 0x7FB4, 0x08CA, 0x7FB2, 0x08E9, 0x7FB0, 0x0909, 0x7FAD, 0x0928, 0x7FAB,
+ 0x0949, 0x7FA9, 0x0969, 0x7FA6, 0x098A, 0x7FA4, 0x09AA, 0x7FA1, 0x09CC, 0x7F9F,
+ 0x09ED, 0x7F9C, 0x0A0F, 0x7F9A, 0x0A31, 0x7F97, 0x0A53, 0x7F94, 0x0A76, 0x7F91,
+ 0x0A99, 0x7F8F, 0x0ABC, 0x7F8C, 0x0ADF, 0x7F89, 0x0B03, 0x7F86, 0x0B27, 0x7F82,
+ 0x0B4B, 0x7F7F, 0x0B70, 0x7F7C, 0x0B94, 0x7F79, 0x0BBA, 0x7F75, 0x0BDF, 0x7F72,
+ 0x0C05, 0x7F6E, 0x0C2B, 0x7F6B, 0x0C51, 0x7F67, 0x0C77, 0x7F63, 0x0C9E, 0x7F5F,
+ 0x0CC5, 0x7F5B, 0x0CED, 0x7F58, 0x0D14, 0x7F53, 0x0D3C, 0x7F4F, 0x0D65, 0x7F4B,
+ 0x0D8D, 0x7F47, 0x0DB6, 0x7F42, 0x0DDF, 0x7F3E, 0x0E08, 0x7F39, 0x0E32, 0x7F35,
+ 0x0E5C, 0x7F30, 0x0E86, 0x7F2B, 0x0EB1, 0x7F26, 0x0EDC, 0x7F21, 0x0F07, 0x7F1C,
+ 0x0F32, 0x7F17, 0x0F5E, 0x7F12, 0x0F8A, 0x7F0D, 0x0FB6, 0x7F07, 0x0FE3, 0x7F02,
+ 0x1010, 0x7EFC, 0x103D, 0x7EF6, 0x106A, 0x7EF0, 0x1098, 0x7EEA, 0x10C6, 0x7EE4,
+ 0x10F4, 0x7EDE, 0x1123, 0x7ED8, 0x1152, 0x7ED2, 0x1181, 0x7ECB, 0x11B0, 0x7EC5,
+ 0x11E0, 0x7EBE, 0x1210, 0x7EB7, 0x1240, 0x7EB0, 0x1271, 0x7EA9, 0x12A2, 0x7EA2,
+ 0x12D3, 0x7E9B, 0x1304, 0x7E93, 0x1336, 0x7E8C, 0x1368, 0x7E84, 0x139A, 0x7E7C,
+ 0x13CD, 0x7E75, 0x1400, 0x7E6D, 0x1433, 0x7E64, 0x1466, 0x7E5C, 0x149A, 0x7E54,
+ 0x14CE, 0x7E4B, 0x1502, 0x7E43, 0x1537, 0x7E3A, 0x156C, 0x7E31, 0x15A1, 0x7E28,
+ 0x15D6, 0x7E1F, 0x160C, 0x7E15, 0x1642, 0x7E0C, 0x1678, 0x7E02, 0x16AE, 0x7DF8,
+ 0x16E5, 0x7DEF, 0x171C, 0x7DE4, 0x1754, 0x7DDA, 0x178B, 0x7DD0, 0x17C3, 0x7DC5,
+ 0x17FB, 0x7DBB, 0x1833, 0x7DB0, 0x186C, 0x7DA5, 0x18A5, 0x7D9A, 0x18DE, 0x7D8F,
+ 0x1918, 0x7D83, 0x1952, 0x7D78, 0x198C, 0x7D6C, 0x19C6, 0x7D60, 0x1A00, 0x7D54,
+ 0x1A3B, 0x7D48, 0x1A76, 0x7D3B, 0x1AB1, 0x7D2F, 0x1AED, 0x7D22, 0x1B29, 0x7D15,
+ 0x1B65, 0x7D08, 0x1BA1, 0x7CFA, 0x1BDE, 0x7CED, 0x1C1B, 0x7CDF, 0x1C58, 0x7CD2,
+ 0x1C95, 0x7CC4, 0x1CD3, 0x7CB5, 0x1D11, 0x7CA7, 0x1D4F, 0x7C98, 0x1D8D, 0x7C8A,
+ 0x1DCC, 0x7C7B, 0x1E0B, 0x7C6C, 0x1E4A, 0x7C5C, 0x1E89, 0x7C4D, 0x1EC9, 0x7C3D,
+ 0x1F08, 0x7C2D, 0x1F48, 0x7C1D, 0x1F89, 0x7C0D, 0x1FC9, 0x7BFD, 0x200A, 0x7BEC,
+ 0x204B, 0x7BDB, 0x208C, 0x7BCA, 0x20CE, 0x7BB9, 0x210F, 0x7BA7, 0x2151, 0x7B95,
+ 0x2193, 0x7B84, 0x21D6, 0x7B71, 0x2218, 0x7B5F, 0x225B, 0x7B4D, 0x229E, 0x7B3A,
+ 0x22E1, 0x7B27, 0x2325, 0x7B14, 0x2369, 0x7B00, 0x23AC, 0x7AED, 0x23F1, 0x7AD9,
+ 0x2435, 0x7AC5, 0x2479, 0x7AB0, 0x24BE, 0x7A9C, 0x2503, 0x7A87, 0x2548, 0x7A72,
+ 0x258D, 0x7A5D, 0x25D3, 0x7A48, 0x2619, 0x7A32, 0x265F, 0x7A1C, 0x26A5, 0x7A06,
+ 0x26EB, 0x79F0, 0x2731, 0x79D9, 0x2778, 0x79C2, 0x27BF, 0x79AB, 0x2806, 0x7994,
+ 0x284D, 0x797C, 0x2895, 0x7965, 0x28DC, 0x794C, 0x2924, 0x7934, 0x296C, 0x791C,
+ 0x29B4, 0x7903, 0x29FC, 0x78EA, 0x2A45, 0x78D1, 0x2A8E, 0x78B7, 0x2AD6, 0x789D,
+ 0x2B1F, 0x7883, 0x2B68, 0x7869, 0x2BB2, 0x784F, 0x2BFB, 0x7834, 0x2C45, 0x7819,
+ 0x2C8E, 0x77FE, 0x2CD8, 0x77E2, 0x2D22, 0x77C6, 0x2D6D, 0x77AA, 0x2DB7, 0x778E,
+ 0x2E01, 0x7771, 0x2E4C, 0x7754, 0x2E97, 0x7737, 0x2EE2, 0x771A, 0x2F2D, 0x76FC,
+ 0x2F78, 0x76DE, 0x2FC3, 0x76C0, 0x300F, 0x76A2, 0x305A, 0x7683, 0x30A6, 0x7664,
+ 0x30F2, 0x7645, 0x313D, 0x7625, 0x318A, 0x7606, 0x31D6, 0x75E5, 0x3222, 0x75C5,
+ 0x326E, 0x75A4, 0x32BB, 0x7584, 0x3307, 0x7562, 0x3354, 0x7541, 0x33A1, 0x751F,
+ 0x33EE, 0x74FD, 0x343B, 0x74DB, 0x3488, 0x74B8, 0x34D5, 0x7496, 0x3522, 0x7472,
+ 0x356F, 0x744F, 0x35BD, 0x742B, 0x360A, 0x7407, 0x3658, 0x73E3, 0x36A5, 0x73BF,
+ 0x36F3, 0x739A, 0x3741, 0x7375, 0x378F, 0x734F, 0x37DD, 0x732A, 0x382B, 0x7304,
+ 0x3879, 0x72DD, 0x38C7, 0x72B7, 0x3915, 0x7290, 0x3963, 0x7269, 0x39B1, 0x7242,
+ 0x3A00, 0x721A, 0x3A4E, 0x71F2, 0x3A9C, 0x71CA, 0x3AEB, 0x71A1, 0x3B39, 0x7178,
+ 0x3B88, 0x714F, 0x3BD7, 0x7126, 0x3C25, 0x70FC, 0x3C74, 0x70D2, 0x3CC2, 0x70A8,
+ 0x3D11, 0x707D, 0x3D60, 0x7052, 0x3DAE, 0x7027, 0x3DFD, 0x6FFC, 0x3E4C, 0x6FD0,
+ 0x3E9B, 0x6FA4, 0x3EEA, 0x6F78, 0x3F38, 0x6F4B, 0x3F87, 0x6F1E, 0x3FD6, 0x6EF1,
+ 0x4025, 0x6EC4, 0x4073, 0x6E96, 0x40C2, 0x6E68, 0x4111, 0x6E39, 0x4160, 0x6E0B,
+ 0x41AF, 0x6DDC, 0x41FD, 0x6DAD, 0x424C, 0x6D7D, 0x429B, 0x6D4D, 0x42E9, 0x6D1D,
+ 0x4338, 0x6CED, 0x4387, 0x6CBC, 0x43D5, 0x6C8B, 0x4424, 0x6C5A, 0x4472, 0x6C28,
+ 0x44C1, 0x6BF7, 0x450F, 0x6BC4, 0x455E, 0x6B92, 0x45AC, 0x6B5F, 0x45FA, 0x6B2C,
+ 0x4648, 0x6AF9, 0x4697, 0x6AC6, 0x46E5, 0x6A92, 0x4733, 0x6A5E, 0x4781, 0x6A29,
+ 0x47CF, 0x69F5, 0x481D, 0x69C0, 0x486B, 0x698A, 0x48B8, 0x6955, 0x4906, 0x691F,
+ 0x4954, 0x68E9, 0x49A1, 0x68B3, 0x49EF, 0x687C, 0x4A3C, 0x6845, 0x4A89, 0x680E,
+ 0x4AD7, 0x67D6, 0x4B24, 0x679F, 0x4B71, 0x6767, 0x4BBE, 0x672E, 0x4C0B, 0x66F6,
+ 0x4C57, 0x66BD, 0x4CA4, 0x6684, 0x4CF0, 0x664A, 0x4D3D, 0x6611, 0x4D89, 0x65D7,
+ 0x4DD5, 0x659D, 0x4E21, 0x6562, 0x4E6D, 0x6527, 0x4EB9, 0x64EC, 0x4F05, 0x64B1,
+ 0x4F51, 0x6476, 0x4F9C, 0x643A, 0x4FE8, 0x63FE, 0x5033, 0x63C1, 0x507E, 0x6385,
+ 0x50C9, 0x6348, 0x5114, 0x630B, 0x515E, 0x62CE, 0x51A9, 0x6290, 0x51F3, 0x6252,
+ 0x523E, 0x6214, 0x5288, 0x61D6, 0x52D2, 0x6197, 0x531C, 0x6158, 0x5365, 0x6119,
+ 0x53AF, 0x60DA, 0x53F8, 0x609A, 0x5441, 0x605B, 0x548A, 0x601B, 0x54D3, 0x5FDA,
+ 0x551C, 0x5F9A, 0x5564, 0x5F59, 0x55AD, 0x5F18, 0x55F5, 0x5ED7, 0x563D, 0x5E95,
+ 0x5685, 0x5E53, 0x56CD, 0x5E12, 0x5714, 0x5DCF, 0x575B, 0x5D8D, 0x57A3, 0x5D4A,
+ 0x57E9, 0x5D08, 0x5830, 0x5CC4, 0x5877, 0x5C81, 0x58BD, 0x5C3E, 0x5903, 0x5BFA,
+ 0x5949, 0x5BB6, 0x598F, 0x5B72, 0x59D5, 0x5B2E, 0x5A1A, 0x5AE9, 0x5A5F, 0x5AA4
+ },
+
+ // const WORD16 only_short_window_sine_120[120] =
+ {
+ 0x00D6, 0x7FFE, 0x0283, 0x7FF9, 0x0430, 0x7FED, 0x05DD, 0x7FDD, 0x0789, 0x7FC6,
+ 0x0935, 0x7FAA, 0x0AE1, 0x7F88, 0x0C8C, 0x7F61, 0x0E36, 0x7F34, 0x0FE0, 0x7F02,
+ 0x1189, 0x7ECA, 0x1332, 0x7E8C, 0x14DA, 0x7E49, 0x1680, 0x7E01, 0x1826, 0x7DB3,
+ 0x19CB, 0x7D5F, 0x1B6E, 0x7D06, 0x1D11, 0x7CA7, 0x1EB2, 0x7C43, 0x2051, 0x7BD9,
+ 0x21F0, 0x7B6A, 0x238D, 0x7AF6, 0x2528, 0x7A7C, 0x26C1, 0x79FD, 0x2859, 0x7978,
+ 0x29EF, 0x78EE, 0x2B84, 0x785F, 0x2D16, 0x77CB, 0x2EA7, 0x7731, 0x3035, 0x7692,
+ 0x31C1, 0x75EE, 0x334B, 0x7545, 0x34D3, 0x7496, 0x3659, 0x73E3, 0x37DC, 0x732A,
+ 0x395D, 0x726C, 0x3ADB, 0x71AA, 0x3C56, 0x70E2, 0x3DCF, 0x7015, 0x3F45, 0x6F44,
+ 0x40B9, 0x6E6D, 0x4229, 0x6D92, 0x4397, 0x6CB2, 0x4502, 0x6BCD, 0x466A, 0x6AE3,
+ 0x47CE, 0x69F5, 0x4930, 0x6902, 0x4A8E, 0x680B, 0x4BE9, 0x670E, 0x4D41, 0x660E,
+ 0x4E95, 0x6509, 0x4FE6, 0x63FF, 0x5133, 0x62F1, 0x527D, 0x61DF, 0x53C3, 0x60C8,
+ 0x5506, 0x5FAE, 0x5644, 0x5E8F, 0x577F, 0x5D6B, 0x58B6, 0x5C44, 0x59EA, 0x5B19
+ },
+
+ // const WORD16 only_short_window_kbd_120[120] =
+ {
+ 0x0001, 0x7FFF, 0x0004, 0x7FFF, 0x0008, 0x7FFF, 0x000E, 0x7FFF, 0x0016, 0x7FFF,
+ 0x0021, 0x7FFF, 0x0030, 0x7FFF, 0x0042, 0x7FFF, 0x0059, 0x7FFF, 0x0075, 0x7FFF,
+ 0x0097, 0x7FFF, 0x00C1, 0x7FFE, 0x00F2, 0x7FFE, 0x012D, 0x7FFE, 0x0171, 0x7FFD,
+ 0x01C1, 0x7FFC, 0x021D, 0x7FFB, 0x0286, 0x7FF9, 0x02FE, 0x7FF6, 0x0385, 0x7FF3,
+ 0x041E, 0x7FEE, 0x04C9, 0x7FE8, 0x0586, 0x7FE0, 0x0658, 0x7FD7, 0x0740, 0x7FCA,
+ 0x083E, 0x7FBB, 0x0953, 0x7FA8, 0x0A80, 0x7F91, 0x0BC7, 0x7F74, 0x0D27, 0x7F52,
+ 0x0EA0, 0x7F28, 0x1035, 0x7EF7, 0x11E3, 0x7EBD, 0x13AD, 0x7E7A, 0x1591, 0x7E2A,
+ 0x1790, 0x7DCF, 0x19A8, 0x7D66, 0x1BDA, 0x7CEE, 0x1E25, 0x7C65, 0x2087, 0x7BCB,
+ 0x2300, 0x7B1E, 0x258E, 0x7A5D, 0x2830, 0x7986, 0x2AE5, 0x7898, 0x2DA9, 0x7793,
+ 0x307D, 0x7675, 0x335D, 0x753D, 0x3647, 0x73EB, 0x393A, 0x727E, 0x3C33, 0x70F5,
+ 0x3F2F, 0x6F50, 0x422D, 0x6D90, 0x452A, 0x6BB4, 0x4823, 0x69BC, 0x4B16, 0x67A9,
+ 0x4E01, 0x657B, 0x50E2, 0x6334, 0x53B5, 0x60D4, 0x567A, 0x5E5D, 0x592F, 0x5BD0
+ },
+
+ // WORD16 re_arr_tab_32[480];
+ {
+ 0, 15, 30, 45, 60, 75, 90, 105, 120, 135,
+ 150, 165, 180, 195, 210, 225, 240, 255, 270, 285,
+ 300, 315, 330, 345, 360, 375, 390, 405, 420, 435,
+ 450, 465, 32, 47, 62, 77, 92, 107, 122, 137,
+ 152, 167, 182, 197, 212, 227, 242, 257, 272, 287,
+ 302, 317, 332, 347, 362, 377, 392, 407, 422, 437,
+ 452, 467, 2, 17, 64, 79, 94, 109, 124, 139,
+ 154, 169, 184, 199, 214, 229, 244, 259, 274, 289,
+ 304, 319, 334, 349, 364, 379, 394, 409, 424, 439,
+ 454, 469, 4, 19, 34, 49, 96, 111, 126, 141,
+ 156, 171, 186, 201, 216, 231, 246, 261, 276, 291,
+ 306, 321, 336, 351, 366, 381, 396, 411, 426, 441,
+ 456, 471, 6, 21, 36, 51, 66, 81, 128, 143,
+ 158, 173, 188, 203, 218, 233, 248, 263, 278, 293,
+ 308, 323, 338, 353, 368, 383, 398, 413, 428, 443,
+ 458, 473, 8, 23, 38, 53, 68, 83, 98, 113,
+ 160, 175, 190, 205, 220, 235, 250, 265, 280, 295,
+ 310, 325, 340, 355, 370, 385, 400, 415, 430, 445,
+ 460, 475, 10, 25, 40, 55, 70, 85, 100, 115,
+ 130, 145, 192, 207, 222, 237, 252, 267, 282, 297,
+ 312, 327, 342, 357, 372, 387, 402, 417, 432, 447,
+ 462, 477, 12, 27, 42, 57, 72, 87, 102, 117,
+ 132, 147, 162, 177, 224, 239, 254, 269, 284, 299,
+ 314, 329, 344, 359, 374, 389, 404, 419, 434, 449,
+ 464, 479, 14, 29, 44, 59, 74, 89, 104, 119,
+ 134, 149, 164, 179, 194, 209, 256, 271, 286, 301,
+ 316, 331, 346, 361, 376, 391, 406, 421, 436, 451,
+ 466, 1, 16, 31, 46, 61, 76, 91, 106, 121,
+ 136, 151, 166, 181, 196, 211, 226, 241, 288, 303,
+ 318, 333, 348, 363, 378, 393, 408, 423, 438, 453,
+ 468, 3, 18, 33, 48, 63, 78, 93, 108, 123,
+ 138, 153, 168, 183, 198, 213, 228, 243, 258, 273,
+ 320, 335, 350, 365, 380, 395, 410, 425, 440, 455,
+ 470, 5, 20, 35, 50, 65, 80, 95, 110, 125,
+ 140, 155, 170, 185, 200, 215, 230, 245, 260, 275,
+ 290, 305, 352, 367, 382, 397, 412, 427, 442, 457,
+ 472, 7, 22, 37, 52, 67, 82, 97, 112, 127,
+ 142, 157, 172, 187, 202, 217, 232, 247, 262, 277,
+ 292, 307, 322, 337, 384, 399, 414, 429, 444, 459,
+ 474, 9, 24, 39, 54, 69, 84, 99, 114, 129,
+ 144, 159, 174, 189, 204, 219, 234, 249, 264, 279,
+ 294, 309, 324, 339, 354, 369, 416, 431, 446, 461,
+ 476, 11, 26, 41, 56, 71, 86, 101, 116, 131,
+ 146, 161, 176, 191, 206, 221, 236, 251, 266, 281,
+ 296, 311, 326, 341, 356, 371, 386, 401, 448, 463,
+ 478, 13, 28, 43, 58, 73, 88, 103, 118, 133,
+ 148, 163, 178, 193, 208, 223, 238, 253, 268, 283,
+ 298, 313, 328, 343, 358, 373, 388, 403, 418, 433
+ },
+
+ // const WORD16 re_arr_tab_sml[FFT15 + 1] =
+ {
+ 0, 4, 8, 9, 13, 2, 3, 7,
+ 11, 12, 1, 5, 6, 10, 14, 0
+ },
+
+ // const WORD16 re_arr_tab_4[60] =
+ {
+ 0, 15, 30, 45, 4, 19, 34, 49, 8, 23,
+ 38, 53, 12, 27, 42, 57, 16, 31, 46, 1,
+ 20, 35, 50, 5, 24, 39, 54, 9, 28, 43,
+ 58, 13, 32, 47, 2, 17, 36, 51, 6, 21,
+ 40, 55, 10, 25, 44, 59, 14, 29, 48, 3,
+ 18, 33, 52, 7, 22, 37, 56, 11, 26, 41
+ },
+
+ // const WORD16 re_arr_tab_15_4[60] =
+ {
+ 0, 4, 8, 12, 16, 20, 24, 28, 32, 36,
+ 40, 44, 48, 52, 56, 1, 5, 9, 13, 17,
+ 21, 25, 29, 33, 37, 41, 45, 49, 53, 57,
+ 2, 6, 10, 14, 18, 22, 26, 30, 34, 38,
+ 42, 46, 50, 54, 58, 3, 7, 11, 15, 19,
+ 23, 27, 31, 35, 39, 43, 47, 51, 55, 59
+ },
+
+ // const WORD16 re_arr_tab_120[60] =
+ {
+ 0, 16, 32, 48, 4, 20, 36, 52, 8, 24,
+ 40, 56, 12, 28, 44, 45, 1, 17, 33, 49,
+ 5, 21, 37, 53, 9, 25, 41, 57, 13, 29,
+ 30, 46, 2, 18, 34, 50, 6, 22, 38, 54,
+ 10, 26, 42, 58, 14, 15, 31, 47, 3, 19,
+ 35, 51, 7, 23, 39, 55, 11, 27, 43, 59
+ },
+
+ // WORD16 re_arr_tab_5[FFT15 + 1] =
+ {
+ 0, 3, 6, 9, 12, 5, 8, 11,
+ 14, 2, 10, 13, 1, 4, 7, 0
+ },
+
+ // WORD16 re_arr_tab_3[FFT15 + 1] =
+ {
+ 0, 5, 10, 1, 6, 11, 2, 7,
+ 12, 3, 8, 13, 4, 9, 14, 0
+ },
+
+ // WORD16 re_arr_tab_sml_480[480] =
+ {
+ 0, 160, 320, 96, 256, 416, 192, 352,
+ 32, 288, 448, 128, 384, 64, 224, 225,
+ 385, 65, 321, 1, 161, 417, 97, 257,
+ 33, 193, 353, 129, 289, 449, 450, 130,
+ 290, 66, 226, 386, 162, 322, 2, 258,
+ 418, 98, 354, 34, 194, 195, 355, 35,
+ 291, 451, 131, 387, 67, 227, 3, 163,
+ 323, 99, 259, 419, 420, 100, 260, 36,
+ 196, 356, 132, 292, 452, 228, 388, 68,
+ 324, 4, 164, 165, 325, 5, 261, 421,
+ 101, 357, 37, 197, 453, 133, 293, 69,
+ 229, 389, 390, 70, 230, 6, 166, 326,
+ 102, 262, 422, 198, 358, 38, 294, 454,
+ 134, 135, 295, 455, 231, 391, 71, 327,
+ 7, 167, 423, 103, 263, 39, 199, 359,
+ 360, 40, 200, 456, 136, 296, 72, 232,
+ 392, 168, 328, 8, 264, 424, 104, 105,
+ 265, 425, 201, 361, 41, 297, 457, 137,
+ 393, 73, 233, 9, 169, 329, 330, 10,
+ 170, 426, 106, 266, 42, 202, 362, 138,
+ 298, 458, 234, 394, 74, 75, 235, 395,
+ 171, 331, 11, 267, 427, 107, 363, 43,
+ 203, 459, 139, 299, 300, 460, 140, 396,
+ 76, 236, 12, 172, 332, 108, 268, 428,
+ 204, 364, 44, 45, 205, 365, 141, 301,
+ 461, 237, 397, 77, 333, 13, 173, 429,
+ 109, 269, 270, 430, 110, 366, 46, 206,
+ 462, 142, 302, 78, 238, 398, 174, 334,
+ 14, 15, 175, 335, 111, 271, 431, 207,
+ 367, 47, 303, 463, 143, 399, 79, 239,
+ 240, 400, 80, 336, 16, 176, 432, 112,
+ 272, 48, 208, 368, 144, 304, 464, 465,
+ 145, 305, 81, 241, 401, 177, 337, 17,
+ 273, 433, 113, 369, 49, 209, 210, 370,
+ 50, 306, 466, 146, 402, 82, 242, 18,
+ 178, 338, 114, 274, 434, 435, 115, 275,
+ 51, 211, 371, 147, 307, 467, 243, 403,
+ 83, 339, 19, 179, 180, 340, 20, 276,
+ 436, 116, 372, 52, 212, 468, 148, 308,
+ 84, 244, 404, 405, 85, 245, 21, 181,
+ 341, 117, 277, 437, 213, 373, 53, 309,
+ 469, 149, 150, 310, 470, 246, 406, 86,
+ 342, 22, 182, 438, 118, 278, 54, 214,
+ 374, 375, 55, 215, 471, 151, 311, 87,
+ 247, 407, 183, 343, 23, 279, 439, 119,
+ 120, 280, 440, 216, 376, 56, 312, 472,
+ 152, 408, 88, 248, 24, 184, 344, 345,
+ 25, 185, 441, 121, 281, 57, 217, 377,
+ 153, 313, 473, 249, 409, 89, 90, 250,
+ 410, 186, 346, 26, 282, 442, 122, 378,
+ 58, 218, 474, 154, 314, 315, 475, 155,
+ 411, 91, 251, 27, 187, 347, 123, 283,
+ 443, 219, 379, 59, 60, 220, 380, 156,
+ 316, 476, 252, 412, 92, 348, 28, 188,
+ 444, 124, 284, 285, 445, 125, 381, 61,
+ 221, 477, 157, 317, 93, 253, 413, 189,
+ 349, 29, 30, 190, 350, 126, 286, 446,
+ 222, 382, 62, 318, 478, 158, 414, 94,
+ 254, 255, 415, 95, 351, 31, 191, 447,
+ 127, 287, 63, 223, 383, 159, 319, 479
+ },
+
+ // WORD32 cosine_array_1920[960] =
+ {
+ 32767, 13, 94, 32767, 32767, 121, 201, 32767,
+ 32767, 228, 308, 32767, 32766, 335, 416, 32765,
+ 32765, 442, 523, 32764, 32763, 550, 630, 32762,
+ 32761, 657, 737, 32760, 32759, 764, 844, 32757,
+ 32756, 871, 952, 32754, 32753, 978, 1059, 32751,
+ 32750, 1086, 1166, 32747, 32746, 1193, 1273, 32743,
+ 32742, 1300, 1380, 32739, 32738, 1407, 1487, 32734,
+ 32733, 1514, 1594, 32729, 32728, 1621, 1702, 32724,
+ 32722, 1728, 1809, 32718, 32717, 1835, 1916, 32712,
+ 32710, 1942, 2023, 32706, 32704, 2049, 2130, 32699,
+ 32697, 2157, 2237, 32692, 32690, 2263, 2344, 32684,
+ 32682, 2370, 2451, 32676, 32674, 2477, 2558, 32668,
+ 32666, 2584, 2664, 32659, 32657, 2691, 2771, 32651,
+ 32648, 2798, 2878, 32641, 32639, 2905, 2985, 32632,
+ 32629, 3012, 3092, 32622, 32619, 3118, 3198, 32612,
+ 32609, 3225, 3305, 32601, 32598, 3332, 3412, 32590,
+ 32587, 3439, 3518, 32579, 32576, 3545, 3625, 32567,
+ 32564, 3652, 3732, 32555, 32552, 3758, 3838, 32542,
+ 32539, 3865, 3945, 32530, 32526, 3971, 4051, 32517,
+ 32513, 4078, 4157, 32503, 32500, 4184, 4264, 32489,
+ 32486, 4290, 4370, 32475, 32472, 4397, 4476, 32461,
+ 32457, 4503, 4583, 32446, 32442, 4609, 4689, 32431,
+ 32427, 4715, 4795, 32415, 32411, 4821, 4901, 32399,
+ 32395, 4927, 5007, 32383, 32379, 5033, 5113, 32367,
+ 32362, 5139, 5219, 32350, 32345, 5245, 5325, 32333,
+ 32328, 5351, 5430, 32315, 32310, 5457, 5536, 32297,
+ 32292, 5562, 5642, 32279, 32274, 5668, 5747, 32260,
+ 32255, 5774, 5853, 32241, 32236, 5879, 5958, 32222,
+ 32217, 5985, 6064, 32202, 32197, 6090, 6169, 32182,
+ 32177, 6195, 6274, 32162, 32157, 6301, 6380, 32141,
+ 32136, 6406, 6485, 32120, 32115, 6511, 6590, 32099,
+ 32093, 6616, 6695, 32077, 32071, 6721, 6800, 32055,
+ 32049, 6826, 6905, 32032, 32027, 6931, 7009, 32010,
+ 32004, 7036, 7114, 31986, 31981, 7140, 7219, 31963,
+ 31957, 7245, 7323, 31939, 31933, 7349, 7428, 31915,
+ 31909, 7454, 7532, 31891, 31884, 7558, 7637, 31866,
+ 31859, 7663, 7741, 31841, 31834, 7767, 7845, 31815,
+ 31809, 7871, 7949, 31789, 31783, 7975, 8053, 31763,
+ 31756, 8079, 8157, 31737, 31730, 8183, 8261, 31710,
+ 31703, 8287, 8364, 31682, 31676, 8390, 8468, 31655,
+ 31648, 8494, 8572, 31627, 31620, 8597, 8675, 31599,
+ 31592, 8701, 8778, 31570, 31563, 8804, 8882, 31541,
+ 31534, 8907, 8985, 31512, 31505, 9011, 9088, 31483,
+ 31475, 9114, 9191, 31453, 31445, 9217, 9294, 31422,
+ 31415, 9319, 9397, 31392, 31384, 9422, 9499, 31361,
+ 31353, 9525, 9602, 31330, 31322, 9627, 9704, 31298,
+ 31290, 9730, 9807, 31266, 31258, 9832, 9909, 31234,
+ 31226, 9934, 10011, 31201, 31193, 10037, 10113, 31168,
+ 31160, 10139, 10215, 31135, 31127, 10241, 10317, 31102,
+ 31093, 10342, 10419, 31068, 31059, 10444, 10520, 31033,
+ 31025, 10546, 10622, 30999, 30990, 10647, 10723, 30964,
+ 30955, 10748, 10824, 30929, 30920, 10850, 10926, 30893,
+ 30884, 10951, 11027, 30857, 30848, 11052, 11128, 30821,
+ 30812, 11153, 11228, 30784, 30775, 11253, 11329, 30747,
+ 30738, 11354, 11430, 30710, 30701, 11455, 11530, 30672,
+ 30663, 11555, 11630, 30635, 30625, 11655, 11730, 30596,
+ 30587, 11756, 11831, 30558, 30548, 11856, 11930, 30519,
+ 30509, 11955, 12030, 30480, 30470, 12055, 12130, 30440,
+ 30430, 12155, 12230, 30400, 30390, 12254, 12329, 30360,
+ 30350, 12354, 12428, 30320, 30309, 12453, 12527, 30279,
+ 30269, 12552, 12626, 30238, 30227, 12651, 12725, 30196,
+ 30186, 12750, 12824, 30154, 30144, 12849, 12923, 30112,
+ 30102, 12947, 13021, 30070, 30059, 13046, 13119, 30027,
+ 30016, 13144, 13218, 29984, 29973, 13242, 13316, 29941,
+ 29930, 13340, 13414, 29897, 29886, 13438, 13511, 29853,
+ 29842, 13536, 13609, 29808, 29797, 13633, 13706, 29764,
+ 29752, 13731, 13804, 29719, 29707, 13828, 13901, 29673,
+ 29662, 13925, 13998, 29628, 29616, 14022, 14095, 29582,
+ 29570, 14119, 14192, 29535, 29524, 14216, 14288, 29489,
+ 29477, 14312, 14385, 29442, 29430, 14409, 14481, 29395,
+ 29383, 14505, 14577, 29347, 29335, 14601, 14673, 29299,
+ 29287, 14697, 14769, 29251, 29239, 14793, 14864, 29203,
+ 29190, 14888, 14960, 29154, 29142, 14984, 15055, 29105,
+ 29092, 15079, 15150, 29055, 29043, 15174, 15245, 29006,
+ 28993, 15269, 15340, 28955, 28943, 15364, 15435, 28905,
+ 28892, 15459, 15529, 28854, 28842, 15553, 15624, 28803,
+ 28791, 15647, 15718, 28752, 28739, 15741, 15812, 28701,
+ 28688, 15835, 15906, 28649, 28636, 15929, 15999, 28596,
+ 28583, 16023, 16093, 28544, 28531, 16116, 16186, 28491,
+ 28478, 16210, 16279, 28438, 28425, 16303, 16372, 28385,
+ 28371, 16396, 16465, 28331, 28317, 16488, 16558, 28277,
+ 28263, 16581, 16650, 28223, 28209, 16673, 16743, 28168,
+ 28154, 16766, 16835, 28113, 28099, 16858, 16927, 28058,
+ 28044, 16949, 17018, 28002, 27988, 17041, 17110, 27946,
+ 27932, 17133, 17201, 27890, 27876, 17224, 17292, 27834,
+ 27820, 17315, 17383, 27777, 27763, 17406, 17474, 27720,
+ 27706, 17497, 17565, 27663, 27648, 17587, 17655, 27605,
+ 27591, 17678, 17745, 27547, 27533, 17768, 17835, 27489,
+ 27474, 17858, 17925, 27430, 27416, 17948, 18015, 27372,
+ 27357, 18037, 18104, 27312, 27298, 18127, 18194, 27253,
+ 27238, 18216, 18283, 27193, 27178, 18305, 18372, 27133,
+ 27118, 18394, 18460, 27073, 27058, 18483, 18549, 27013,
+ 26997, 18571, 18637, 26952, 26936, 18659, 18725, 26891,
+ 26875, 18747, 18813, 26829, 26814, 18835, 18901, 26767,
+ 26752, 18923, 18988, 26705, 26690, 19010, 19076, 26643,
+ 26628, 19098, 19163, 26581, 26565, 19185, 19250, 26518,
+ 26502, 19271, 19336, 26455, 26439, 19358, 19423, 26391,
+ 26375, 19444, 19509, 26327, 26312, 19531, 19595, 26264,
+ 26247, 19617, 19681, 26199, 26183, 19702, 19767, 26135,
+ 26119, 19788, 19852, 26070, 26054, 19873, 19937, 26005,
+ 25988, 19959, 20022, 25939, 25923, 20043, 20107, 25874,
+ 25857, 20128, 20192, 25808, 25791, 20213, 20276, 25742,
+ 25725, 20297, 20360, 25675, 25658, 20381, 20444, 25608,
+ 25592, 20465, 20528, 25541, 25524, 20549, 20611, 25474,
+ 25457, 20632, 20694, 25406, 25389, 20715, 20777, 25339,
+ 25322, 20798, 20860, 25270, 25253, 20881, 20943, 25202,
+ 25185, 20963, 21025, 25133, 25116, 21046, 21107, 25064,
+ 25047, 21128, 21189, 24995, 24978, 21210, 21271, 24926,
+ 24908, 21291, 21352, 24856, 24838, 21373, 21434, 24786,
+ 24768, 21454, 21515, 24716, 24698, 21535, 21595, 24645,
+ 24627, 21616, 21676, 24574, 24557, 21696, 21756, 24503,
+ 24485, 21776, 21836, 24432, 24414, 21856, 21916, 24360,
+ 24342, 21936, 21996, 24288, 24270, 22016, 22075, 24216,
+ 24198, 22095, 22154, 24144, 24126, 22174, 22233, 24071,
+ 24053, 22253, 22312, 23998, 23980, 22331, 22390, 23925,
+ 23907, 22410, 22468, 23852, 23834, 22488, 22546, 23778,
+ 23760, 22566, 22624, 23704, 23686, 22643, 22701, 23630,
+ 23612, 22721, 22779, 23556, 23537, 22798, 22856, 23481,
+ 23462, 22875, 22932, 23406, 23387, 22951, 23009, 23331,
+ 23312, 23028, 23085, 23256, 23237, 23104, 23161, 23180
+ },
+
+
+ // const WORD16 w_512[2 * 510] =
+ {
+ 0, 32767, 0, 32767, 0, 32767, 402, 32766, 804, 32758,
+ 1206, 32746, 804, 32758, 1608, 32729, 2411, 32679, 1206, 32746,
+ 2411, 32679, 3612, 32568, 1608, 32729, 3212, 32610, 4808, 32413,
+ 2009, 32706, 4011, 32522, 5998, 32214, 2411, 32679, 4808, 32413,
+ 7180, 31972, 2811, 32647, 5602, 32286, 8351, 31686, 3212, 32610,
+ 6393, 32138, 9512, 31357, 3612, 32568, 7180, 31972, 10660, 30986,
+ 4011, 32522, 7962, 31786, 11793, 30572, 4410, 32470, 8740, 31581,
+ 12910, 30118, 4808, 32413, 9512, 31357, 14010, 29622, 5205, 32352,
+ 10279, 31114, 15091, 29086, 5602, 32286, 11039, 30853, 16151, 28511,
+ 5998, 32214, 11793, 30572, 17190, 27897, 6393, 32138, 12540, 30274,
+ 18205, 27246, 6787, 32058, 13279, 29957, 19195, 26557, 7180, 31972,
+ 14010, 29622, 20160, 25833, 7571, 31881, 14733, 29269, 21097, 25073,
+ 7962, 31786, 15447, 28899, 22006, 24279, 8351, 31686, 16151, 28511,
+ 22884, 23453, 8740, 31581, 16846, 28106, 23732, 22595, 9127, 31471,
+ 17531, 27684, 24548, 21706, 9512, 31357, 18205, 27246, 25330, 20788,
+ 9896, 31238, 18868, 26791, 26078, 19841, 10279, 31114, 19520, 26320,
+ 26791, 18868, 10660, 30986, 20160, 25833, 27467, 17869, 11039, 30853,
+ 20788, 25330, 28106, 16846, 11417, 30715, 21403, 24812, 28707, 15800,
+ 11793, 30572, 22006, 24279, 29269, 14733, 12167, 30425, 22595, 23732,
+ 29792, 13646, 12540, 30274, 23170, 23170, 30274, 12540, 12910, 30118,
+ 23732, 22595, 30715, 11417, 13279, 29957, 24279, 22006, 31114, 10279,
+ 13646, 29792, 24812, 21403, 31471, 9127, 14010, 29622, 25330, 20788,
+ 31786, 7962, 14373, 29448, 25833, 20160, 32058, 6787, 14733, 29269,
+ 26320, 19520, 32286, 5602, 15091, 29086, 26791, 18868, 32470, 4410,
+ 15447, 28899, 27246, 18205, 32610, 3212, 15800, 28707, 27684, 17531,
+ 32706, 2009, 16151, 28511, 28106, 16846, 32758, 804, 16500, 28311,
+ 28511, 16151, 32766, -402, 16846, 28106, 28899, 15447, 32729, -1608,
+ 17190, 27897, 29269, 14733, 32647, -2811, 17531, 27684, 29622, 14010,
+ 32522, -4011, 17869, 27467, 29957, 13279, 32352, -5205, 18205, 27246,
+ 30274, 12540, 32138, -6393, 18538, 27020, 30572, 11793, 31881, -7571,
+ 18868, 26791, 30853, 11039, 31581, -8740, 19195, 26557, 31114, 10279,
+ 31238, -9896, 19520, 26320, 31357, 9512, 30853, -11039, 19841, 26078,
+ 31581, 8740, 30425, -12167, 20160, 25833, 31786, 7962, 29957, -13279,
+ 20475, 25583, 31972, 7180, 29448, -14373, 20788, 25330, 32138, 6393,
+ 28899, -15447, 21097, 25073, 32286, 5602, 28311, -16500, 21403, 24812,
+ 32413, 4808, 27684, -17531, 21706, 24548, 32522, 4011, 27020, -18538,
+ 22006, 24279, 32610, 3212, 26320, -19520, 22302, 24008, 32679, 2411,
+ 25583, -20475, 22595, 23732, 32729, 1608, 24812, -21403, 22884, 23453,
+ 32758, 804, 24008, -22302, 23170, 23170, 32767, 0, 23170, -23170,
+ 23453, 22884, 32758, -804, 22302, -24008, 23732, 22595, 32729, -1608,
+ 21403, -24812, 24008, 22302, 32679, -2411, 20475, -25583, 24279, 22006,
+ 32610, -3212, 19520, -26320, 24548, 21706, 32522, -4011, 18538, -27020,
+ 24812, 21403, 32413, -4808, 17531, -27684, 25073, 21097, 32286, -5602,
+ 16500, -28311, 25330, 20788, 32138, -6393, 15447, -28899, 25583, 20475,
+ 31972, -7180, 14373, -29448, 25833, 20160, 31786, -7962, 13279, -29957,
+ 26078, 19841, 31581, -8740, 12167, -30425, 26320, 19520, 31357, -9512,
+ 11039, -30853, 26557, 19195, 31114, -10279, 9896, -31238, 26791, 18868,
+ 30853, -11039, 8740, -31581, 27020, 18538, 30572, -11793, 7571, -31881,
+ 27246, 18205, 30274, -12540, 6393, -32138, 27467, 17869, 29957, -13279,
+ 5205, -32352, 27684, 17531, 29622, -14010, 4011, -32522, 27897, 17190,
+ 29269, -14733, 2811, -32647, 28106, 16846, 28899, -15447, 1608, -32729,
+ 28311, 16500, 28511, -16151, 402, -32766, 28511, 16151, 28106, -16846,
+ - 804, -32758, 28707, 15800, 27684, -17531, -2009, -32706, 28899, 15447,
+ 27246, -18205, -3212, -32610, 29086, 15091, 26791, -18868, -4410, -32470,
+ 29269, 14733, 26320, -19520, -5602, -32286, 29448, 14373, 25833, -20160,
+ - 6787, -32058, 29622, 14010, 25330, -20788, -7962, -31786, 29792, 13646,
+ 24812, -21403, -9127, -31471, 29957, 13279, 24279, -22006, -10279, -31114,
+ 30118, 12910, 23732, -22595, -11417, -30715, 30274, 12540, 23170, -23170,
+ - 12540, -30274, 30425, 12167, 22595, -23732, -13646, -29792, 30572, 11793,
+ 22006, -24279, -14733, -29269, 30715, 11417, 21403, -24812, -15800, -28707,
+ 30853, 11039, 20788, -25330, -16846, -28106, 30986, 10660, 20160, -25833,
+ - 17869, -27467, 31114, 10279, 19520, -26320, -18868, -26791, 31238, 9896,
+ 18868, -26791, -19841, -26078, 31357, 9512, 18205, -27246, -20788, -25330,
+ 31471, 9127, 17531, -27684, -21706, -24548, 31581, 8740, 16846, -28106,
+ - 22595, -23732, 31686, 8351, 16151, -28511, -23453, -22884, 31786, 7962,
+ 15447, -28899, -24279, -22006, 31881, 7571, 14733, -29269, -25073, -21097,
+ 31972, 7180, 14010, -29622, -25833, -20160, 32058, 6787, 13279, -29957,
+ - 26557, -19195, 32138, 6393, 12540, -30274, -27246, -18205, 32214, 5998,
+ 11793, -30572, -27897, -17190, 32286, 5602, 11039, -30853, -28511, -16151,
+ 32352, 5205, 10279, -31114, -29086, -15091, 32413, 4808, 9512, -31357,
+ - 29622, -14010, 32470, 4410, 8740, -31581, -30118, -12910, 32522, 4011,
+ 7962, -31786, -30572, -11793, 32568, 3612, 7180, -31972, -30986, -10660,
+ 32610, 3212, 6393, -32138, -31357, -9512, 32647, 2811, 5602, -32286,
+ - 31686, -8351, 32679, 2411, 4808, -32413, -31972, -7180, 32706, 2009,
+ 4011, -32522, -32214, -5998, 32729, 1608, 3212, -32610, -32413, -4808,
+ 32746, 1206, 2411, -32679, -32568, -3612, 32758, 804, 1608, -32729,
+ - 32679, -2411, 32766, 402, 804, -32758, -32746, -1206, 0, 32767,
+ 0, 32767, 0, 32767, 1608, 32729, 3212, 32610, 4808, 32413,
+ 3212, 32610, 6393, 32138, 9512, 31357, 4808, 32413, 9512, 31357,
+ 14010, 29622, 6393, 32138, 12540, 30274, 18205, 27246, 7962, 31786,
+ 15447, 28899, 22006, 24279, 9512, 31357, 18205, 27246, 25330, 20788,
+ 11039, 30853, 20788, 25330, 28106, 16846, 12540, 30274, 23170, 23170,
+ 30274, 12540, 14010, 29622, 25330, 20788, 31786, 7962, 15447, 28899,
+ 27246, 18205, 32610, 3212, 16846, 28106, 28899, 15447, 32729, -1608,
+ 18205, 27246, 30274, 12540, 32138, -6393, 19520, 26320, 31357, 9512,
+ 30853, -11039, 20788, 25330, 32138, 6393, 28899, -15447, 22006, 24279,
+ 32610, 3212, 26320, -19520, 23170, 23170, 32767, 0, 23170, -23170,
+ 24279, 22006, 32610, -3212, 19520, -26320, 25330, 20788, 32138, -6393,
+ 15447, -28899, 26320, 19520, 31357, -9512, 11039, -30853, 27246, 18205,
+ 30274, -12540, 6393, -32138, 28106, 16846, 28899, -15447, 1608, -32729,
+ 28899, 15447, 27246, -18205, -3212, -32610, 29622, 14010, 25330, -20788,
+ - 7962, -31786, 30274, 12540, 23170, -23170, -12540, -30274, 30853, 11039,
+ 20788, -25330, -16846, -28106, 31357, 9512, 18205, -27246, -20788, -25330,
+ 31786, 7962, 15447, -28899, -24279, -22006, 32138, 6393, 12540, -30274,
+ - 27246, -18205, 32413, 4808, 9512, -31357, -29622, -14010, 32610, 3212,
+ 6393, -32138, -31357, -9512, 32729, 1608, 3212, -32610, -32413, -4808,
+ 0, 32767, 0, 32767, 0, 32767, 6393, 32138, 12540, 30274,
+ 18205, 27246, 12540, 30274, 23170, 23170, 30274, 12540, 18205, 27246,
+ 30274, 12540, 32138, -6393, 23170, 23170, 32767, 0, 23170, -23170,
+ 27246, 18205, 30274, -12540, 6393, -32138, 30274, 12540, 23170, -23170,
+ - 12540, -30274, 32138, 6393, 12540, -30274, -27246, -18205, 0, 32767,
+ 0, 32767, 0, 32767, 23170, 23170, 32767, 0, 23170, -23170,
+ },
+
+
+ // WORD16 w_32[60]=
+ {
+ 0, 32767, 0, 32767, 0, 32767,
+ 6393, 32137, 12539, 30273, 18204, 27245,
+ 12539, 30273, 23170, 23170, 30273, 12539,
+ 18204, 27245, 30273, 12539, 32137, -6392,
+ 23170, 23170, 32767, 0, 23170, -23169,
+ 27245, 18204, 30273, -12538, 6393, -32136,
+ 30273, 12539, 23170, -23169, -12538, -30272,
+ 32137, 6393, 12539, -30272, -27244, -18203,
+ 0, 32767, 0, 32767, 0, 32767,
+ 23170, 23170, 32767, 0, 23170, -23169
+ },
+
+ // const WORD16 cosine_array_240[120] =
+ {
+ 32767, 107, 751, 32759, 32754, 965, 1608, 32729,
+ 32717, 1822, 2464, 32675, 32658, 2678, 3319, 32600,
+ 32577, 3532, 4171, 32501, 32473, 4383, 5020, 32381,
+ 32348, 5232, 5866, 32239, 32200, 6077, 6708, 32074,
+ 32029, 6918, 7545, 31887, 31837, 7754, 8377, 31679,
+ 31624, 8585, 9204, 31449, 31388, 9409, 10024, 31197,
+ 31131, 10228, 10837, 30924, 30853, 11039, 11643, 30630,
+ 30553, 11843, 12441, 30315, 30232, 12639, 13230, 29979,
+ 29891, 13426, 14010, 29622, 29530, 14204, 14781, 29245,
+ 29148, 14972, 15541, 28848, 28746, 15730, 16291, 28431,
+ 28324, 16477, 17030, 27995, 27883, 17213, 17757, 27540,
+ 27423, 17937, 18472, 27066, 26944, 18648, 19174, 26573,
+ 26447, 19347, 19863, 26062, 25931, 20033, 20538, 25533,
+ 25398, 20705, 21199, 24986, 24847, 21363, 21846, 24423,
+ 24279, 22006, 22478, 23843, 23695, 22634, 23095, 23246
+ },
};
diff --git a/decoder/ixheaacd_aac_rom.h b/decoder/ixheaacd_aac_rom.h
index a6a8142..d4afbaa 100644
--- a/decoder/ixheaacd_aac_rom.h
+++ b/decoder/ixheaacd_aac_rom.h
@@ -40,7 +40,7 @@ typedef struct {
WORD8 tns_max_bands_tbl_ld[12];
WORD8 tns_max_bands_tbl_480[12];
-
+ WORD32 scale_table_960[4];
} ia_aac_dec_block_tables_struct;
extern const ia_aac_dec_block_tables_struct ixheaacd_aac_block_tables;
@@ -95,6 +95,17 @@ typedef struct {
WORD8 ixheaacd_sfb_32_480[38];
WORD8 ixheaacd_sfb_24_480[31];
+ WORD8 ixheaacd_sfb_96_960[41];
+ WORD8 ixheaacd_sfb_96_120[13];
+ WORD8 ixheaacd_sfb_64_960[47];
+ WORD8 ixheaacd_sfb_48_960[50];
+ WORD8 ixheaacd_sfb_48_120[15];
+ WORD8 ixheaacd_sfb_24_960[47];
+ WORD8 ixheaacd_sfb_24_120[16];
+ WORD8 ixheaacd_sfb_16_960[43];
+ WORD8 ixheaacd_sfb_16_120[16];
+ WORD8 ixheaacd_sfb_8_960[41];
+ WORD8 ixheaacd_sfb_8_120[16];
} ia_aac_dec_huffman_tables_struct;
extern const ia_aac_dec_huffman_tables_struct ixheaacd_aac_huffmann_tables;
@@ -133,6 +144,26 @@ typedef struct {
WORD16 window_sine_480_eld[1920];
WORD16 window_sine_512_eld[2048];
+ WORD16 only_long_window_sine_960[960];
+ WORD16 only_long_window_kbd_960[960];
+ WORD16 only_short_window_sine_120[120];
+ WORD16 only_short_window_kbd_120[120];
+
+ WORD16 re_arr_tab_32[480];
+ WORD16 re_arr_tab_sml[16];
+ WORD16 re_arr_tab_4[60];
+ WORD16 re_arr_tab_15_4[60];
+ WORD16 re_arr_tab_120[60];
+ WORD16 re_arr_tab_5[16];
+ WORD16 re_arr_tab_3[16];
+
+ WORD16 re_arr_tab_sml_480[480];
+
+ WORD32 cosine_array_1920[960];
+
+ WORD16 w_512[2 * 510];
+ WORD16 w_32[60];
+ WORD16 cosine_array_240[120];
} ia_aac_dec_imdct_tables_struct;
extern const ia_aac_dec_imdct_tables_struct ixheaacd_imdct_tables;
@@ -149,8 +180,8 @@ typedef struct {
ia_aac_dec_imdct_tables_struct *pstr_imdct_tables;
ia_aac_sfb_info str_aac_sfb_info[4];
- WORD8 *scale_factor_bands_long[12];
- WORD8 *scale_factor_bands_short[12];
+ WORD8 *scale_factor_bands_long[24];
+ WORD8 *scale_factor_bands_short[24];
WORD16 sfb_long_table[52];
WORD16 sfb_short_table[16];
diff --git a/decoder/ixheaacd_aac_tns.c b/decoder/ixheaacd_aac_tns.c
index 641fdc7..646e009 100644
--- a/decoder/ixheaacd_aac_tns.c
+++ b/decoder/ixheaacd_aac_tns.c
@@ -215,7 +215,6 @@ VOID ixheaacd_tns_ar_filter_fixed_dec(WORD32 *spectrum, WORD32 size, WORD32 inc,
order = ((order & 0xfffffffc) + 4);
}
{
- WORD32 temp_lo = 0;
for (i = 0; i < order; i++) {
y = ixheaacd_shl32_sat((*spectrum), scale_spec);
acc = 0;
@@ -230,7 +229,6 @@ VOID ixheaacd_tns_ar_filter_fixed_dec(WORD32 *spectrum, WORD32 size, WORD32 inc,
*spectrum = y >> scale_spec;
spectrum += inc;
}
- temp_lo = 0;
for (i = order; i < size; i++) {
y = ixheaacd_shl32_sat((*spectrum), scale_spec);
acc = 0;
@@ -264,7 +262,6 @@ VOID ixheaacd_tns_ar_filter_fixed_non_neon_armv7(WORD32 *spectrum, WORD32 size,
order = ((order & 0xfffffffc) + 4);
}
{
- WORD32 temp_lo = 0;
for (i = 0; i < order; i++) {
y = ixheaacd_shl32_sat((*spectrum), scale_spec);
acc = 0;
@@ -279,7 +276,6 @@ VOID ixheaacd_tns_ar_filter_fixed_non_neon_armv7(WORD32 *spectrum, WORD32 size,
*spectrum = y >> scale_spec;
spectrum += inc;
}
- temp_lo = 0;
for (i = order; i < size; i++) {
WORD64 acc = 0;
WORD32 acc1;
@@ -314,7 +310,6 @@ VOID ixheaacd_tns_ar_filter_fixed_armv8(WORD32 *spectrum, WORD32 size,
order = ((order & 0xfffffffc) + 4);
}
{
- WORD32 temp_lo = 0;
for (i = 0; i < order; i++) {
y = ixheaacd_shl32_sat((*spectrum), scale_spec);
acc = 0;
@@ -329,7 +324,6 @@ VOID ixheaacd_tns_ar_filter_fixed_armv8(WORD32 *spectrum, WORD32 size,
*spectrum = y >> scale_spec;
spectrum += inc;
}
- temp_lo = 0;
for (i = order; i < size; i++) {
WORD64 acc = 0;
WORD32 acc1;
diff --git a/decoder/ixheaacd_aacdecoder.c b/decoder/ixheaacd_aacdecoder.c
index c9c1547..3ecc037 100644
--- a/decoder/ixheaacd_aacdecoder.c
+++ b/decoder/ixheaacd_aacdecoder.c
@@ -72,11 +72,13 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_headerdecode.h"
#include "ixheaacd_multichannel.h"
#include "ixheaacd_adts_crc_check.h"
+#include "ixheaacd_ld_mps_dec.h"
#include "ixheaacd_hcr.h"
@@ -84,6 +86,8 @@
#define EXT_FILL_DATA 1
#define EXT_FIL 0
+#define EXT_DATA_LENGTH 3
+#define EXT_LDSAC_DATA 9
#define MIN(x, y) ((x) > (y) ? (y) : (x))
@@ -96,7 +100,7 @@ WORD32 ixheaacd_aacdec_decodeframe(
WORD32 frame_length, WORD32 frame_size, ia_drc_dec_struct *pstr_drc_dec,
WORD32 object_type, WORD32 ch_config,
ia_eld_specific_config_struct eld_specific_config, WORD16 adtsheader,
- ia_drc_dec_struct *drc_dummy, UWORD8 *slot_pos)
+ ia_drc_dec_struct *drc_dummy, WORD32 ldmps_present, UWORD8 *slot_pos)
{
WORD ch, ele_type;
@@ -179,23 +183,43 @@ WORD32 ixheaacd_aacdec_decodeframe(
pstr_imdct_tables = aac_dec_handle->pstr_aac_tables->pstr_imdct_tables;
- aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[0] =
- pstr_imdct_tables->only_long_window_sine;
- aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[0] =
- pstr_imdct_tables->only_short_window_sine;
- aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[1] =
- pstr_imdct_tables->only_long_window_kbd;
- aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[1] =
- pstr_imdct_tables->only_short_window_kbd;
-
- aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[0] =
- pstr_imdct_tables->only_long_window_sine;
- aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[0] =
- pstr_imdct_tables->only_short_window_sine;
- aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[1] =
- pstr_imdct_tables->only_long_window_kbd;
- aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[1] =
- pstr_imdct_tables->only_short_window_kbd;
+ if (960 != frame_length) {
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[0] =
+ pstr_imdct_tables->only_long_window_sine;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[0] =
+ pstr_imdct_tables->only_short_window_sine;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[1] =
+ pstr_imdct_tables->only_long_window_kbd;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[1] =
+ pstr_imdct_tables->only_short_window_kbd;
+
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[0] =
+ pstr_imdct_tables->only_long_window_sine;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[0] =
+ pstr_imdct_tables->only_short_window_sine;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[1] =
+ pstr_imdct_tables->only_long_window_kbd;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[1] =
+ pstr_imdct_tables->only_short_window_kbd;
+ } else {
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[0] =
+ pstr_imdct_tables->only_long_window_sine_960;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[0] =
+ pstr_imdct_tables->only_short_window_sine_120;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_long_window[1] =
+ pstr_imdct_tables->only_long_window_kbd_960;
+ aac_dec_handle->pstr_aac_dec_overlap_info[ch]->ptr_short_window[1] =
+ pstr_imdct_tables->only_short_window_kbd_120;
+
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[0] =
+ pstr_imdct_tables->only_long_window_sine_960;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[0] =
+ pstr_imdct_tables->only_short_window_sine_120;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_long_window[1] =
+ pstr_imdct_tables->only_long_window_kbd_960;
+ aac_dec_handle->ptr_aac_dec_static_channel_info[ch]->ptr_short_window[1] =
+ pstr_imdct_tables->only_short_window_kbd_120;
+ }
if (object_type == AOT_ER_AAC_ELD || object_type == AOT_ER_AAC_LD ||
object_type == AOT_AAC_LTP) {
@@ -294,6 +318,14 @@ WORD32 ixheaacd_aacdec_decodeframe(
0;
}
+ for (ch = 0; ch < channel; ch++) {
+ if (object_type == AOT_ER_AAC_ELD || object_type == AOT_ER_AAC_LD)
+ aac_dec_handle->pstr_aac_dec_ch_info[ch]->granule_len =
+ aac_dec_handle->samples_per_frame;
+ if (object_type == AOT_ER_AAC_LC)
+ aac_dec_handle->pstr_aac_dec_ch_info[ch]->granule_len =
+ aac_dec_handle->samples_per_frame / 8;
+ }
previous_element = ID_END;
aac_dec_handle->pstr_sbr_bitstream->no_elements = 0;
@@ -302,8 +334,8 @@ WORD32 ixheaacd_aacdec_decodeframe(
cnt_bits = it_bit_buff->cnt_bits;
- if (((object_type != AOT_ER_AAC_ELD) && (object_type != AOT_ER_AAC_LD)) ||
- (object_type < ER_OBJECT_START)) {
+ if (((object_type != AOT_ER_AAC_ELD) && (object_type != AOT_ER_AAC_LD) &&
+ (object_type != AOT_ER_AAC_LC)) || (object_type < ER_OBJECT_START)) {
while (ele_type != ID_END && aac_dec_handle->frame_status) {
ele_type = (WORD)ixheaacd_read_bits_buf(it_bit_buff, 3);
ixheaacd_read_bidirection(it_bit_buff, -3);
@@ -638,6 +670,9 @@ WORD32 ixheaacd_aacdec_decodeframe(
object_type, pstr_aac_dec_ch_info->common_window,
aac_dec_handle->samples_per_frame);
if (error_code) {
+ aac_dec_handle->pstr_aac_dec_ch_info[RIGHT]->str_ics_info =
+ aac_dec_handle->pstr_aac_dec_ch_info[LEFT]->str_ics_info;
+
if (it_bit_buff->cnt_bits < 0) {
error_code = (WORD16)(
(WORD32)
@@ -709,13 +744,42 @@ WORD32 ixheaacd_aacdec_decodeframe(
break;
}
- if ((object_type != AOT_ER_AAC_ELD) || (!eld_sbr_flag)) {
+ if ((object_type == AOT_ER_AAC_LC) || (!eld_sbr_flag)) {
+ WORD32 cnt_bits;
+ cnt_bits = it_bit_buff->cnt_bits;
+ p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle.ldmps_config.no_ldsbr_present = 1;
+
+ if (cnt_bits >= 8) {
+ error_code = ixheaacd_extension_payload(
+ it_bit_buff, &cnt_bits,
+ &p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle);
+ if (error_code) return error_code;
+ }
+
+ if (it_bit_buff->cnt_bits) {
+ WORD32 alignment = it_bit_buff->bit_pos & 0x07;
+ it_bit_buff->cnt_bits = (it_bit_buff->cnt_bits + alignment) & 7;
+ it_bit_buff->bit_pos = 7;
+ it_bit_buff->ptr_read_next++;
+ }
+ }
+
+ else if ((object_type != AOT_ER_AAC_ELD) || (!eld_sbr_flag)) {
WORD32 bits_decoded, cnt_bits;
bits_decoded = (it_bit_buff->size - it_bit_buff->cnt_bits);
cnt_bits = (frame_size * 8 - bits_decoded);
+
+ if (object_type == AOT_ER_AAC_LC)
+ cnt_bits = it_bit_buff->cnt_bits;
+
+ p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle.ldmps_config
+ .no_ldsbr_present = 1;
+
if (cnt_bits >= 8) {
- error_code = ixheaacd_extension_payload(it_bit_buff, cnt_bits);
+ error_code = ixheaacd_extension_payload(
+ it_bit_buff, &cnt_bits,
+ &p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle);
if (error_code) return error_code;
}
@@ -812,12 +876,17 @@ WORD32 ixheaacd_aacdec_decodeframe(
str_ics_info[ch].frame_length);
}
if (skip_full_decode == 0) {
- ixheaacd_imdct_process(
- aac_dec_handle->pstr_aac_dec_overlap_info[ch], spec_coef[ch],
- &str_ics_info[ch], time_data + slot_element, ch_fac, scratch[ch],
- aac_dec_handle->pstr_aac_tables, object_type, slot_element);
+ ixheaacd_imdct_process(aac_dec_handle->pstr_aac_dec_overlap_info[ch],
+ spec_coef[ch], &str_ics_info[ch],
+ time_data + slot_element, ch_fac, scratch[ch],
+ aac_dec_handle->pstr_aac_tables, object_type,
+ ldmps_present, slot_element);
if (slot_pos != NULL) *slot_pos = slot_element;
+ if (p_obj_exhaacplus_dec->p_state_aac->qshift_cnt > 15)
+ {
+ return IA_FATAL_ERROR;
+ }
p_obj_exhaacplus_dec->p_state_aac
->qshift_adj[p_obj_exhaacplus_dec->p_state_aac->qshift_cnt++] =
@@ -867,8 +936,10 @@ WORD32 ixheaacd_aacdec_decodeframe(
return error_code;
}
-WORD32 ixheaacd_extension_payload(ia_bit_buf_struct *it_bit_buff, WORD32 cnt) {
- WORD16 extension_type, discard;
+WORD32 ixheaacd_extension_payload(ia_bit_buf_struct *it_bit_buff, WORD32 *cnt,
+ ia_mps_dec_state_struct *self) {
+ WORD16 extension_type;
+ WORD32 len, add_len;
WORD32 i;
WORD32 fill_nibble;
@@ -880,18 +951,55 @@ WORD32 ixheaacd_extension_payload(ia_bit_buf_struct *it_bit_buff, WORD32 cnt) {
fill_nibble = ixheaacd_read_bits_buf(it_bit_buff, 4);
if (fill_nibble == 0) {
- for (i = 0; i < (cnt >> 3) - 1; i++) {
+ for (i = 0; i < (*cnt >> 3) - 1; i++) {
+ if (it_bit_buff->cnt_bits >= 8)
ixheaacd_read_bits_buf(it_bit_buff, 8);
+ else
+ ixheaacd_read_bits_buf(it_bit_buff, it_bit_buff->cnt_bits);
}
} else
- err = -1;
+ err = -1;
+ *cnt = it_bit_buff->cnt_bits;
+ break;
+
+ case EXT_DATA_LENGTH:
+
+ len = (WORD32)ixheaacd_read_bits_buf(it_bit_buff, 4);
+
+ if (len == 15) {
+ add_len = ixheaacd_read_bits_buf(it_bit_buff, 8);
+ len += add_len;
+
+ if (add_len == 255) {
+ len += ixheaacd_read_bits_buf(it_bit_buff, 16);
+ }
+ }
+ len <<= 3;
+
+ ixheaacd_extension_payload(it_bit_buff, cnt, self);
+ break;
+
+ case EXT_LDSAC_DATA:
+
+ self->parse_nxt_frame = 1;
+ ixheaacd_read_bits_buf(it_bit_buff, 2);/*anc_type*/
+ ixheaacd_read_bits_buf(it_bit_buff, 2);/*anc_start_stop*/
+
+ err = ixheaacd_ld_mps_frame_parsing(self, it_bit_buff);
+ if (err) return err;
+
+ *cnt = it_bit_buff->cnt_bits;
break;
case EXT_FIL:
default:
- for (i = 0; i < ((cnt)-8) + 4; i++) {
- discard = (WORD16)ixheaacd_read_bits_buf(it_bit_buff, 1);
+
+ for (i = 0; i < (*cnt) - 4; i++) {
+ ixheaacd_skip_bits_buf(it_bit_buff, 1);/*discard*/
}
+
+ *cnt = it_bit_buff->cnt_bits;
+ break;
}
return err;
diff --git a/decoder/ixheaacd_acelp_tools.c b/decoder/ixheaacd_acelp_tools.c
index b3d752f..daa7259 100644
--- a/decoder/ixheaacd_acelp_tools.c
+++ b/decoder/ixheaacd_acelp_tools.c
@@ -39,9 +39,6 @@ WORD16 ixheaacd_rand_gen(WORD16 *seed) {
VOID ixheaacd_preemphsis_tool(WORD32 *signal, WORD32 mu, WORD32 len,
WORD32 mem) {
WORD32 i;
- WORD32 temp;
-
- temp = signal[len - 1];
for (i = len - 1; i > 0; i--) {
signal[i] -= (WORD32)ixheaacd_mul32_sh(mu, signal[i - 1], 16);
}
@@ -52,8 +49,6 @@ VOID ixheaacd_preemphsis_tool(WORD32 *signal, WORD32 mu, WORD32 len,
VOID ixheaacd_preemphsis_tool_float(FLOAT32 *signal, FLOAT32 mu, WORD32 len,
FLOAT32 mem) {
WORD32 i;
- FLOAT32 temp;
- temp = signal[len - 1];
for (i = len - 1; i > 0; i--) {
signal[i] = signal[i] - mu * signal[i - 1];
}
diff --git a/decoder/ixheaacd_adts_crc_check.c b/decoder/ixheaacd_adts_crc_check.c
index b908332..bcb82c0 100644
--- a/decoder/ixheaacd_adts_crc_check.c
+++ b/decoder/ixheaacd_adts_crc_check.c
@@ -24,6 +24,7 @@
#include "ixheaacd_aac_rom.h"
#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
#include "ixheaacd_sbr_rom.h"
@@ -48,8 +49,12 @@
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_aacdec.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
diff --git a/decoder/ixheaacd_api.c b/decoder/ixheaacd_api.c
index 8e9a2a6..71e3982 100644
--- a/decoder/ixheaacd_api.c
+++ b/decoder/ixheaacd_api.c
@@ -107,6 +107,7 @@
#include "ixheaacd_arith_dec.h"
#include "ixheaacd_create.h"
#include "ixheaacd_function_selector.h"
+#include "ixheaacd_ld_mps_dec.h"
#define MAX_TRACKS_PER_LAYER 50
@@ -208,6 +209,24 @@ VOID ixheaacd_updatebytesconsumed(
}
}
+static VOID copy_qmf_to_ldmps(ia_mps_dec_state_struct *mps_dec_handle,
+ VOID *sbr_persistent_mem_v) {
+ ia_sbr_pers_struct *sbr_persistent_mem =
+ (ia_sbr_pers_struct *)sbr_persistent_mem_v;
+ memcpy(&mps_dec_handle->str_mps_qmf_bank,
+ &sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_channel[0]
+ ->str_sbr_dec.str_codec_qmf_bank,
+ sizeof(ia_sbr_qmf_filter_bank_struct));
+
+ mps_dec_handle->sbr_tables_ptr =
+ sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_tables;
+ mps_dec_handle->qmf_dec_tables_ptr =
+ sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_tables->qmf_dec_tables_ptr;
+ mps_dec_handle->str_sbr_scale_fact =
+ &sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_channel[0]
+ ->str_sbr_dec.str_sbr_scale_fact;
+}
+
WORD32 ixheaacd_readifadts(ia_aac_dec_state_struct *p_state_enhaacplus_dec,
struct ia_bit_buf_struct *it_bit_buff,
ia_adts_header_struct *adts) {
@@ -435,6 +454,7 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_enhaacplus_dec_obj, WORD32 i_cmd,
p_obj_exhaacplus_dec->aac_config.ui_disable_sync = 0;
p_obj_exhaacplus_dec->aac_config.ui_auto_sbr_upsample = 1;
p_obj_exhaacplus_dec->aac_config.ui_samp_freq = 0;
+ p_obj_exhaacplus_dec->aac_config.ui_frame_size = 0;
p_obj_exhaacplus_dec->aac_config.ui_channel_mode = 3;
p_obj_exhaacplus_dec->aac_config.ui_sbr_mode = 0;
p_obj_exhaacplus_dec->aac_config.ui_effect_type = 0;
@@ -532,6 +552,13 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_enhaacplus_dec_obj, WORD32 i_cmd,
p_obj_exhaacplus_dec->aac_config.ui_samp_freq = *pui_value;
break;
}
+ case IA_ENHAACPLUS_DEC_CONFIG_PARAM_FRAMELENGTH_FLAG: {
+ if ((*pui_value != 1) && (*pui_value != 0)) {
+ return(IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMELENGTHFLAG);
+ }
+ p_obj_exhaacplus_dec->aac_config.ui_frame_size = *pui_value;
+ break;
+ }
case IA_ENHAACPLUS_DEC_CONFIG_PARAM_PCM_WDSZ: {
if ((*pui_value != 16) && (*pui_value != 24)) {
p_obj_exhaacplus_dec->aac_config.ui_pcm_wdsz = 16;
@@ -691,16 +718,6 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_enhaacplus_dec_obj, WORD32 i_cmd,
break;
}
- case IA_ENHAACPLUS_DEC_CONFIG_PARAM_ELD_SBR_PRESENT: {
- if (*pui_value == 1) {
- p_obj_exhaacplus_dec->aac_config.eld_sbr_present = 1;
- } else if (*pui_value == 0) {
- p_obj_exhaacplus_dec->aac_config.eld_sbr_present = 0;
- } else {
- return (IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_ELDSBR);
- }
- break;
- }
case IA_ENHAACPLUS_DEC_CONFIG_PARAM_COUP_CHANNEL: {
if (*pui_value > 16) {
p_obj_exhaacplus_dec->aac_config.ui_coupling_channel = 1;
@@ -769,7 +786,7 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_enhaacplus_dec_obj, WORD32 i_cmd,
} else if (IA_ENHAACPLUS_DEC_CONFIG_EXT_ELE_PTR == i_idx) {
ia_audio_specific_config_struct *ptr_audio_specific_config =
((ia_audio_specific_config_struct *)
- p_obj_exhaacplus_dec->p_state_aac->ia_audio_specific_config);
+ p_obj_exhaacplus_dec->p_state_aac->ia_audio_specific_config);
for (i = 0; i < ptr_audio_specific_config->str_usac_config
.str_usac_dec_config.num_config_extensions;
@@ -807,6 +824,10 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_enhaacplus_dec_obj, WORD32 i_cmd,
.usac_ext_ele_payload_len[i];
}
+ } else if (IA_ENHAACPLUS_DEC_DRC_IS_CONFIG_CHANGED == i_idx) {
+ *pui_value = p_obj_exhaacplus_dec->p_state_aac->drc_config_changed;
+ } else if (IA_ENHAACPLUS_DEC_DRC_APPLY_CROSSFADE == i_idx) {
+ *pui_value = p_obj_exhaacplus_dec->p_state_aac->apply_crossfade;
} else if (IA_ENHAACPLUS_DEC_CONFIG_NUM_ELE == i_idx) {
UWORD32 *ptri_value = (UWORD32 *)pv_value;
ia_audio_specific_config_struct *ptr_audio_specific_config =
@@ -1117,23 +1138,23 @@ ixheaacd_persistent_buffer_sizes(WORD32 num_channel) {
max_channels = 2;
}
size_buffers +=
- (max_channels)*2 * ALIGN_SIZE64(sizeof(ia_aac_dec_sbr_bitstream_struct));
+ (max_channels) * 2 * ALIGN_SIZE64(sizeof(ia_aac_dec_sbr_bitstream_struct));
size_buffers += ALIGN_SIZE64(MAXSBRBYTES) * num_channel * sizeof(WORD8);
- size_buffers += num_channel *
+ size_buffers += 2 * num_channel *
(QMF_FILTER_STATE_ANA_SIZE + 2 * NO_ANALYSIS_CHANNELS) *
sizeof(WORD16);
- size_buffers += num_channel *
+ size_buffers += 2 * num_channel *
(QMF_FILTER_STATE_ANA_SIZE + 2 * NO_ANALYSIS_CHANNELS) *
sizeof(WORD32);
- size_buffers += num_channel *
+ size_buffers += 2 * num_channel *
(QMF_FILTER_STATE_SYN_SIZE + 2 * NO_SYNTHESIS_CHANNELS) *
sizeof(WORD16);
- size_buffers += num_channel *
+ size_buffers += 2 * num_channel *
(QMF_FILTER_STATE_SYN_SIZE + 2 * NO_SYNTHESIS_CHANNELS) *
sizeof(WORD32);
@@ -1153,12 +1174,12 @@ ixheaacd_persistent_buffer_sizes(WORD32 num_channel) {
LPC_ORDER * num_channel * NO_ANALYSIS_CHANNELS * sizeof(WORD32);
}
- size_buffers += num_channel * 3 * MAX_FREQ_COEFFS * sizeof(WORD16);
+ size_buffers += num_channel * 3 * 2 * MAX_FREQ_COEFFS * sizeof(WORD16);
temp = sizeof(ia_freq_band_data_struct) +
sizeof(ia_sbr_prev_frame_data_struct) + sizeof(ia_sbr_channel_struct) +
sizeof(ia_sbr_header_data_struct);
- size_buffers += num_channel * ALIGN_SIZE64(temp);
+ size_buffers += 2 * num_channel * ALIGN_SIZE64(temp);
size_buffers += MAX_BS_ELEMENT * sizeof(ixheaac_drc_bs_data_struct *);
@@ -1354,6 +1375,30 @@ IA_ERRORCODE ixheaacd_dec_table_api(
return IA_NO_ERROR;
}
+VOID ixheaacd_mps_payload(ia_handle_sbr_dec_inst_struct self,
+ ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec) {
+ struct ia_bit_buf_struct local_bit_buff;
+ struct ia_bit_buf_struct *it_bit_buff;
+ if (self->ptr_mps_data != NULL) {
+ ixheaacd_create_init_bit_buf(&local_bit_buff, (UWORD8 *)self->ptr_mps_data,
+ (self->left_mps_bits >> 3) + 1);
+ }
+
+ local_bit_buff.xaac_jmp_buf =
+ &p_obj_exhaacplus_dec->p_state_aac->xaac_jmp_buf;
+
+ it_bit_buff = &local_bit_buff;
+
+ it_bit_buff->bit_pos = self->mps_bits_pos;
+ it_bit_buff->cnt_bits = self->left_mps_bits;
+
+ while (self->left_mps_bits >= 8) {
+ ixheaacd_extension_payload(
+ it_bit_buff, &self->left_mps_bits,
+ &p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle);
+ }
+}
+
IA_ERRORCODE ixheaacd_dec_init(
ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec) {
FLAG frame_status = 1;
@@ -1377,6 +1422,11 @@ IA_ERRORCODE ixheaacd_dec_init(
p_obj_exhaacplus_dec->p_state_aac =
p_obj_exhaacplus_dec->pp_mem_aac[IA_ENHAACPLUS_DEC_PERSIST_IDX];
+ if (p_obj_exhaacplus_dec->p_state_aac->ui_init_done)
+ {
+ return IA_NO_ERROR;
+ }
+
p_obj_exhaacplus_dec->p_state_aac->preroll_config_present = 0;
if (p_obj_exhaacplus_dec->p_state_aac != NULL) {
@@ -1410,6 +1460,10 @@ IA_ERRORCODE ixheaacd_dec_init(
->huffman_code_book_scl_index;
p_state_enhaacplus_dec->pstr_aac_tables = &p_obj_exhaacplus_dec->aac_tables;
+ if (p_obj_exhaacplus_dec->p_state_aac->header_dec_done == 0)
+ {
+ p_obj_exhaacplus_dec->aac_config.header_dec_done = 0;
+ }
if (p_obj_exhaacplus_dec->aac_config.header_dec_done == 0) {
WORD32 channels;
@@ -1526,6 +1580,15 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->i_bytes_consumed = 0;
return IA_NO_ERROR;
}
+
+ if (1 == p_obj_exhaacplus_dec->aac_config.ui_frame_size) {
+ p_state_enhaacplus_dec->frame_len_flag = 1;
+ p_state_enhaacplus_dec->frame_length = 960;
+ } else {
+ p_state_enhaacplus_dec->frame_len_flag = 0;
+ p_state_enhaacplus_dec->frame_length = 1024;
+ }
+
p_state_enhaacplus_dec->ui_init_done = 0;
memset(&(p_state_enhaacplus_dec->eld_specific_config), 0,
sizeof(ia_eld_specific_config_struct));
@@ -1534,7 +1597,8 @@ IA_ERRORCODE ixheaacd_dec_init(
aac_persistent_mem->str_aac_decoder.pstr_aac_tables
->pstr_huffmann_tables);
if (p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LD ||
- p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_ELD) {
+ p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_ELD ||
+ p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LC) {
*sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_header[0] =
p_obj_exhaacplus_dec->p_state_aac->str_sbr_config;
*sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_header[1] =
@@ -1573,6 +1637,7 @@ IA_ERRORCODE ixheaacd_dec_init(
p_obj_exhaacplus_dec->pp_mem_aac[IA_ENHAACPLUS_DEC_OUTPUT_IDX];
WORD32 out_bytes = 0;
WORD32 frames_done = p_obj_exhaacplus_dec->p_state_aac->frame_counter;
+ p_obj_exhaacplus_dec->p_state_aac->decode_create_done = 0;
if (p_obj_exhaacplus_dec->p_state_aac->ui_input_over == 0) {
error_code = ixheaacd_dec_main(
@@ -1620,6 +1685,14 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->sampling_rate =
p_obj_exhaacplus_dec->aac_config.ui_samp_freq;
+
+ if (1 == p_obj_exhaacplus_dec->aac_config.ui_frame_size) {
+ p_state_enhaacplus_dec->frame_len_flag = 1;
+ p_state_enhaacplus_dec->frame_length = 960;
+ } else {
+ p_state_enhaacplus_dec->frame_len_flag = 0;
+ p_state_enhaacplus_dec->frame_length = 1024;
+ }
}
p_state_enhaacplus_dec->pstr_bit_buf = ixheaacd_create_bit_buf(
@@ -1864,6 +1937,7 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->eld_specific_config,
p_state_enhaacplus_dec->s_adts_hdr_present,
&p_state_enhaacplus_dec->drc_dummy,
+ p_state_enhaacplus_dec->ldmps_present,
&p_state_enhaacplus_dec->slot_pos);
if (p_state_enhaacplus_dec->pstr_drc_dec->drc_element_found == 1) {
@@ -1894,11 +1968,8 @@ IA_ERRORCODE ixheaacd_dec_init(
0, sizeof(ltp_info));
{
- if ((p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_LD) &&
- (p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_ELD))
- frame_size_1 = 1024;
- else
- frame_size_1 = p_state_enhaacplus_dec->frame_length;
+
+ frame_size_1 = p_state_enhaacplus_dec->frame_length;
sample_rate_1 =
p_state_enhaacplus_dec->pstr_aac_dec_info[ch_idx]->sampling_rate;
num_channels_1 =
@@ -1951,7 +2022,11 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->ptr_overlap_buf, MAXNRSBRCHANNELS, (WORD)1,
1, frame_size_1 * 2, NULL, NULL,
p_state_enhaacplus_dec->str_sbr_config,
- p_state_enhaacplus_dec->audio_object_type);
+ p_state_enhaacplus_dec->audio_object_type,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .no_ldsbr_present);
if (p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]) {
p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]->xaac_jmp_buf =
&(p_state_enhaacplus_dec->xaac_jmp_buf);
@@ -1975,13 +2050,19 @@ IA_ERRORCODE ixheaacd_dec_init(
p_obj_exhaacplus_dec->aac_config.down_sample_flag, 0,
&sbr_scratch_struct, 1, 1, 0, NULL, NULL,
p_state_enhaacplus_dec->eld_specific_config.ld_sbr_flag_present,
- p_state_enhaacplus_dec->audio_object_type) != SBRDEC_OK) {
+ p_state_enhaacplus_dec->audio_object_type, 1,
+ p_state_enhaacplus_dec->ldmps_present, frame_size_1) != SBRDEC_OK) {
p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx] = 0;
return -1;
} else {
if (!p_obj_exhaacplus_dec->aac_config.down_sample_flag) {
sample_rate_1 *= 2;
}
+ if (p_state_enhaacplus_dec->eld_specific_config.ld_sbr_flag_present ==
+ 1)
+ ixheaacd_mps_payload(
+ p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx],
+ p_obj_exhaacplus_dec);
}
if (p_obj_exhaacplus_dec->aac_config.flag_downmix) {
@@ -2014,7 +2095,11 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->ptr_overlap_buf, MAXNRSBRCHANNELS, 1, 1,
frame_size_2 * 2, NULL, NULL,
p_state_enhaacplus_dec->str_sbr_config,
- p_state_enhaacplus_dec->audio_object_type);
+ p_state_enhaacplus_dec->audio_object_type,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .no_ldsbr_present);
}
if (p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]) {
p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]->xaac_jmp_buf =
@@ -2028,7 +2113,8 @@ IA_ERRORCODE ixheaacd_dec_init(
if (p_state_enhaacplus_dec->audio_object_type >= ER_OBJECT_START &&
(p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_ELD ||
- p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LD))
+ p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LD ||
+ p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LC))
break;
}
@@ -2155,19 +2241,32 @@ IA_ERRORCODE ixheaacd_dec_init(
p_state_enhaacplus_dec->ptr_overlap_buf, channel, ps_enable, 1,
frame_size_2 * 2, NULL, NULL,
p_state_enhaacplus_dec->str_sbr_config,
- p_state_enhaacplus_dec->audio_object_type);
+ p_state_enhaacplus_dec->audio_object_type,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .no_ldsbr_present);
if (p_state_enhaacplus_dec->str_sbr_dec_info[i]) {
p_state_enhaacplus_dec->str_sbr_dec_info[i]->xaac_jmp_buf =
&(p_state_enhaacplus_dec->xaac_jmp_buf);
}
- if (sbr_present_flag &&
+ if ((sbr_present_flag &&
((p_obj_exhaacplus_dec->p_state_aac->audio_object_type ==
AOT_AAC_LC) ||
(p_obj_exhaacplus_dec->p_state_aac->audio_object_type ==
AOT_SBR) ||
- (p_obj_exhaacplus_dec->p_state_aac->audio_object_type == AOT_PS)))
- p_obj_exhaacplus_dec->aac_config.flag_to_stereo = 1;
-
+ (p_obj_exhaacplus_dec->p_state_aac->audio_object_type ==
+ AOT_PS))) ||
+ ((p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag == 1) &&
+ (p_obj_exhaacplus_dec->p_state_aac->audio_object_type ==
+ AOT_ER_AAC_ELD)))
+ p_obj_exhaacplus_dec->aac_config.flag_to_stereo = 1;
+ if (p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag == 1) {
+ copy_qmf_to_ldmps(&p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle,
+ p_state_enhaacplus_dec->sbr_persistent_mem_v);
+ }
i++;
}
p_state_enhaacplus_dec->pers_mem_ptr =
@@ -2303,6 +2402,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
SIZE_T bytes_for_sync;
WORD32 audio_mux_length_bytes_last = 0;
WORD32 ret_val;
+ WORD32 mps_out_samples;
p_obj_exhaacplus_dec->aac_config.ui_sbr_mode = 0;
@@ -2430,7 +2530,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_obj_exhaacplus_dec->p_state_aac->ui_out_bytes = 0;
if (p_state_enhaacplus_dec->ui_in_bytes == 0) {
- WORD32 i, j;
+ UWORD32 i;
+ WORD32 j;
if (p_state_enhaacplus_dec->peak_lim_init == 1) {
p_obj_exhaacplus_dec->p_state_aac->ui_out_bytes =
(p_state_enhaacplus_dec->peak_limiter.attack_time_samples) *
@@ -2442,7 +2543,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->peak_limiter.delayed_input_index);
i++) {
*(time_data + total_channels * i + j) = ixheaacd_round16(
- *(p_state_enhaacplus_dec->peak_limiter.delayed_input +
+ (WORD32)*(p_state_enhaacplus_dec->peak_limiter.delayed_input +
(p_state_enhaacplus_dec->peak_limiter.delayed_input_index) *
total_channels +
total_channels * i + j));
@@ -2459,8 +2560,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
total_channels +
total_channels * i + j) =
ixheaacd_round16(
- *(p_state_enhaacplus_dec->peak_limiter.delayed_input +
- total_channels * i + j));
+ (WORD32)*(p_state_enhaacplus_dec->peak_limiter.delayed_input +
+ total_channels * i + j));
}
}
@@ -2495,6 +2596,11 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->frame_size = p_state_enhaacplus_dec->ui_in_bytes;
}
+ if (p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LC) {
+ if (p_obj_exhaacplus_dec->aac_config.ui_mp4_flag)
+ p_state_enhaacplus_dec->frame_size = 1024;
+ }
+
{
ixheaacd_create_init_bit_buf(it_bit_buff, in_buffer,
p_state_enhaacplus_dec->ui_in_bytes);
@@ -2612,6 +2718,11 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->frame_size = adts.aac_frame_length;
}
+ if (p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LC) {
+ if (p_state_enhaacplus_dec->s_adts_hdr_present)
+ p_state_enhaacplus_dec->frame_size = 1024;
+ }
+
if (p_state_enhaacplus_dec->pstr_drc_dec) {
p_state_enhaacplus_dec->pstr_drc_dec->num_drc_elements = 0;
@@ -2630,7 +2741,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
if (p_state_enhaacplus_dec->audio_object_type < ER_OBJECT_START ||
(p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_LD &&
- p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_ELD)) {
+ p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_ELD &&
+ p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_LC)) {
error_code = ixheaacd_get_element_index_tag(
p_obj_exhaacplus_dec, ch_idx1, &ch_idx, &channel,
p_obj_exhaacplus_dec->aac_config.element_instance_order,
@@ -2733,6 +2845,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->eld_specific_config,
p_state_enhaacplus_dec->s_adts_hdr_present,
&p_state_enhaacplus_dec->drc_dummy,
+ p_state_enhaacplus_dec->ldmps_present,
&p_state_enhaacplus_dec->slot_pos);
p_state_enhaacplus_dec->slot_pos -= (channel - 1);
@@ -2750,7 +2863,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
if (p_state_enhaacplus_dec->audio_object_type < ER_OBJECT_START ||
(p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_LD &&
- p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_ELD)) {
+ p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_ELD &&
+ p_state_enhaacplus_dec->audio_object_type != AOT_ER_AAC_LC)) {
if ((error_code == 0) && ((ch_idx1 + 1) == total_elements) &&
(type != ID_END)) {
{
@@ -2767,8 +2881,9 @@ IA_ERRORCODE ixheaacd_dec_execute(
if (p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_ELD ||
p_state_enhaacplus_dec->audio_object_type == AOT_ER_AAC_LD)
frame_size = p_state_enhaacplus_dec->frame_length;
- else
- frame_size = 1024;
+ else {
+ frame_size = p_state_enhaacplus_dec->frame_length;
+ }
sample_rate_dec =
p_state_enhaacplus_dec->pstr_aac_dec_info[ch_idx]->sampling_rate;
@@ -2813,7 +2928,10 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->ptr_overlap_buf, ps_enable ? 2 : channel,
ps_enable, 1, frame_size * 2, NULL, NULL,
p_state_enhaacplus_dec->str_sbr_config,
- p_state_enhaacplus_dec->audio_object_type);
+ p_state_enhaacplus_dec->audio_object_type,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag,
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config.no_ldsbr_present);
if (p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]) {
p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]->xaac_jmp_buf =
&(p_state_enhaacplus_dec->xaac_jmp_buf);
@@ -2843,7 +2961,8 @@ IA_ERRORCODE ixheaacd_dec_execute(
esbr_mono_downmix, &sbr_scratch_struct, ps_enable, ch_fac,
slot_ele, NULL, &p_state_enhaacplus_dec->str_drc_dec_info,
p_state_enhaacplus_dec->eld_specific_config.ld_sbr_flag_present,
- p_state_enhaacplus_dec->audio_object_type) != SBRDEC_OK) {
+ p_state_enhaacplus_dec->audio_object_type, 0,
+ p_state_enhaacplus_dec->ldmps_present, frame_size) != SBRDEC_OK) {
p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx] = 0;
return -1;
} else {
@@ -2851,8 +2970,25 @@ IA_ERRORCODE ixheaacd_dec_execute(
frame_size = (WORD16)(frame_size * 2);
sample_rate_dec *= 2;
}
+ if (p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag == 1) {
+ ixheaacd_mps_payload(
+ p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx],
+ p_obj_exhaacplus_dec);
+ }
}
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config.no_ldsbr_present =
+ 0;
+ } else
+ p_state_enhaacplus_dec->mps_dec_handle.ldmps_config.no_ldsbr_present =
+ 1;
}
+
+ if (p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag == 1 &&
+ p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx] &&
+ p_state_enhaacplus_dec->mps_dec_handle.mps_init_done == 1) {
+ ixheaacd_ld_mps_apply(p_obj_exhaacplus_dec, actual_out_buffer);
}
if (sample_rate < sample_rate_dec) {
sample_rate = sample_rate_dec;
@@ -2865,7 +3001,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
} else {
num_of_out_samples =
frame_size -
- MIN(p_obj_exhaacplus_dec->p_state_aac->delay_in_samples, frame_size);
+ MIN((WORD16)p_obj_exhaacplus_dec->p_state_aac->delay_in_samples, frame_size);
}
p_obj_exhaacplus_dec->aac_config.ui_samp_freq = sample_rate;
@@ -2873,11 +3009,23 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_state_enhaacplus_dec->num_channel_last = num_ch;
p_state_enhaacplus_dec->num_of_out_samples = num_of_out_samples;
- if (p_obj_exhaacplus_dec->aac_config.element_type[ch_idx] != 2)
-
- {
- if (p_obj_exhaacplus_dec->aac_config.flag_to_stereo == 1 &&
- channel == 1 && total_elements == 1 && num_ch == 1) {
+ if (p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag == 1 &&
+ p_state_enhaacplus_dec->mps_dec_handle.mps_init_done == 1 &&
+ p_state_enhaacplus_dec->str_sbr_dec_info[ch_idx]) {
+ ixheaacd_samples_sat(
+ (WORD8 *)actual_out_buffer, num_of_out_samples,
+ p_obj_exhaacplus_dec->aac_config.ui_pcm_wdsz,
+ p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle.output_buffer,
+ &mps_out_samples, 2);
+ num_ch = p_obj_exhaacplus_dec->p_state_aac->mps_dec_handle.out_ch_count;
+ p_obj_exhaacplus_dec->p_state_aac->ui_out_bytes = mps_out_samples;
+ } else {
+ if (p_obj_exhaacplus_dec->aac_config.element_type[ch_idx] != 2) {
+ if (p_obj_exhaacplus_dec->aac_config.flag_to_stereo == 1 &&
+ channel == 1 && total_elements == 1 && num_ch == 1 &&
+ (!p_state_enhaacplus_dec->mps_dec_handle.ldmps_config
+ .ldmps_present_flag)) {
num_ch = 2;
p_obj_exhaacplus_dec->aac_config.dup_stereo_flag = 1;
@@ -2890,11 +3038,10 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_obj_exhaacplus_dec->p_state_aac->ui_out_bytes +=
p_state_enhaacplus_dec->num_of_out_samples * num_ch * sizeof(WORD16);
- }
-
- else {
+ } else {
channel_coupling_flag = 1;
}
+ }
if (p_state_enhaacplus_dec->sbr_present && total_channels > 2) {
for (int j = 0; j < channel; j++) {
@@ -2981,7 +3128,7 @@ IA_ERRORCODE ixheaacd_dec_execute(
p_obj_exhaacplus_dec->p_state_aac->delay_in_samples =
p_obj_exhaacplus_dec->p_state_aac->delay_in_samples -
- MIN(p_obj_exhaacplus_dec->p_state_aac->delay_in_samples, frame_size);
+ MIN(p_obj_exhaacplus_dec->p_state_aac->delay_in_samples, (UWORD16)frame_size);
}
if ((total_channels > 2) && (1 == p_obj_exhaacplus_dec->aac_config.downmix)) {
diff --git a/decoder/ixheaacd_basic_ops32.h b/decoder/ixheaacd_basic_ops32.h
index 365bfbe..f6b0de0 100644
--- a/decoder/ixheaacd_basic_ops32.h
+++ b/decoder/ixheaacd_basic_ops32.h
@@ -131,12 +131,22 @@ static PLATFORM_INLINE WORD32 ixheaacd_mult16x16in32(WORD16 a, WORD16 b) {
return product;
}
-static PLATFORM_INLINE WORD32 mult16x16in32_32(WORD32 a, WORD32 b) {
- WORD32 product;
+static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_sat(WORD32 a, WORD16 b) {
+ WORD32 result;
+ WORD64 temp_result;
- product = (WORD32)a * (WORD32)b;
+ temp_result = (WORD64)a * (WORD64)b;
- return product;
+ if (temp_result < (WORD64)MIN_32)
+ result = MIN_32;
+
+ else if (temp_result > (WORD64)MAX_32)
+ result = MAX_32;
+
+ else
+ result = (WORD32)(temp_result);
+
+ return(result);
}
static PLATFORM_INLINE WORD32 ixheaacd_mult16x16in32_shl(WORD16 a, WORD16 b) {
diff --git a/decoder/ixheaacd_basic_ops40.h b/decoder/ixheaacd_basic_ops40.h
index c8a308c..ae684fb 100644
--- a/decoder/ixheaacd_basic_ops40.h
+++ b/decoder/ixheaacd_basic_ops40.h
@@ -72,7 +72,7 @@ static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_shl(WORD32 a, WORD16 b) {
return (result << 1);
}
-static PLATFORM_INLINE WORD32 mult32x16hin32_shl(WORD32 a, WORD32 b) {
+static PLATFORM_INLINE WORD32 mult32x32hin32_shl(WORD32 a, WORD32 b) {
WORD32 product;
WORD64 temp_product;
@@ -93,6 +93,17 @@ static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32(WORD32 a, WORD16 b) {
return (result);
}
+static PLATFORM_INLINE WORD32 ixheaacd_mult32x32in32(WORD32 a, WORD32 b) {
+ WORD32 result;
+ WORD64 temp_result;
+
+ temp_result = (WORD64)a * (WORD64)b;
+
+ result = (WORD32)(temp_result >> 16);
+
+ return (result);
+}
+
static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_shl_sat(WORD32 a,
WORD16 b) {
WORD32 result;
diff --git a/decoder/ixheaacd_block.c b/decoder/ixheaacd_block.c
index 2424676..18df3ce 100644
--- a/decoder/ixheaacd_block.c
+++ b/decoder/ixheaacd_block.c
@@ -75,28 +75,11 @@ static PLATFORM_INLINE WORD32 ixheaacd_shr32_drc(WORD32 a, WORD32 b) {
return out_val;
}
-static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_drc(WORD32 a, WORD16 b) {
- WORD32 result;
- WORD64 temp_result;
-
- temp_result = (WORD64)a * (WORD64)b;
-
- if (temp_result < (WORD64)MIN_32)
- result = MIN_32;
-
- else if (temp_result > (WORD64)MAX_32)
- result = MAX_32;
-
- else
- result = (WORD32)(temp_result);
-
- return (result);
-}
-static PLATFORM_INLINE WORD32 ixheaacd_mac32x16in32_drc(WORD32 a, WORD32 b,
+static PLATFORM_INLINE WORD32 ixheaacd_mac32x16in32_sat(WORD32 a, WORD32 b,
WORD16 c) {
WORD32 acc;
- acc = ixheaacd_mult32x16in32_drc(b, c);
+ acc = ixheaacd_mult32x16in32_sat(b, c);
acc = ixheaacd_add32_sat(a, acc);
@@ -162,7 +145,7 @@ VOID ixheaacd_inverse_quantize(WORD32 *x_invquant, WORD no_band,
static PLATFORM_INLINE WORD ixheaacd_huffman_dec_word1(
ia_bit_buf_struct *it_bit_buff, WORD32 *spec_coef, WORD16 *offsets,
WORD no_bands, WORD group_len, const UWORD16 *code_book_tbl,
- WORD32 *ixheaacd_pow_table_Q13, const UWORD32 *idx_table) {
+ WORD32 *ixheaacd_pow_table_Q13, const UWORD32 *idx_table, WORD32 maximum_bins_short) {
WORD32 sp1, sp2;
WORD32 flush_cw;
WORD32 i, value, norm_val, off;
@@ -318,12 +301,29 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_word1(
idx -= 2;
} while (idx != 0);
- spec_coef += (MAX_BINS_SHORT - offsets[1]);
+ if (maximum_bins_short == 120)
+ {
+ spec_coef += (maximum_bins_short - offsets[1]);
+ }
+ else
+ {
+ spec_coef += (MAX_BINS_SHORT - offsets[1]);
+ }
+
grp_idx--;
} while (grp_idx != 0);
offsets++;
- spec_coef -= (MAX_BINS_SHORT * group_len);
+
+ if (maximum_bins_short == 120)
+ {
+ spec_coef -= (maximum_bins_short * group_len);
+ }
+ else
+ {
+ spec_coef -= (MAX_BINS_SHORT * group_len);
+ }
+
no_bands--;
} while (no_bands >= 0);
@@ -501,7 +501,8 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_word2_11(
static PLATFORM_INLINE WORD ixheaacd_huffman_dec_quad(
ia_bit_buf_struct *it_bit_buff, WORD32 *spec_coef, WORD16 *offsets,
WORD no_bands, WORD group_len, const UWORD16 *code_book_tbl,
- WORD32 *ixheaacd_pow_table_Q13, WORD32 tbl_sign, const UWORD32 *idx_table) {
+ WORD32 *ixheaacd_pow_table_Q13, WORD32 tbl_sign, const UWORD32 *idx_table,
+ WORD32 maximum_bins_short) {
WORD idx, grp_idx;
WORD idx_len;
WORD32 *spec_orig;
@@ -624,7 +625,15 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_quad(
idx -= 4;
} while (idx != 0);
- spec_coef += (MAX_BINS_SHORT - offsets[1]);
+ if (maximum_bins_short == 120)
+ {
+ spec_coef += (maximum_bins_short - offsets[1]);
+ }
+ else
+ {
+ spec_coef += (MAX_BINS_SHORT - offsets[1]);
+ }
+
grp_idx--;
} while (grp_idx != 0);
offsets++;
@@ -807,7 +816,7 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_pair(
ia_bit_buf_struct *it_bit_buff, WORD32 *spec_coef, WORD16 *offsets,
WORD no_bands, WORD group_len, const UWORD16 *code_book_tbl,
WORD32 *ixheaacd_pow_table_Q13, WORD32 tbl_sign, const UWORD32 *idx_table,
- WORD32 huff_mode)
+ WORD32 huff_mode, WORD32 maximum_bins_short)
{
WORD idx, grp_idx;
@@ -887,7 +896,11 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_pair(
idx -= 2;
} while (idx != 0);
- spec_coef += (MAX_BINS_SHORT - offsets[1]);
+ if (maximum_bins_short == 120)
+ spec_coef += (maximum_bins_short - offsets[1]);
+ else
+ spec_coef += (MAX_BINS_SHORT - offsets[1]);
+
grp_idx--;
} while (grp_idx != 0);
@@ -1012,7 +1025,8 @@ static PLATFORM_INLINE WORD ixheaacd_huffman_dec_word2_pair(
WORD ixheaacd_decode_huffman(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
WORD32 *spec_coef, WORD16 *sfb_offset, WORD start,
WORD sfb, WORD group_len,
- ia_aac_dec_tables_struct *ptr_aac_tables) {
+ ia_aac_dec_tables_struct *ptr_aac_tables,
+ WORD32 maximum_bins_short) {
WORD ret_val = 0;
WORD start_bit_pos = it_bit_buff->bit_pos;
UWORD8 *start_read_pos = it_bit_buff->ptr_read_next;
@@ -1032,7 +1046,7 @@ WORD ixheaacd_decode_huffman(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
ret_val = ixheaacd_huffman_dec_word1(it_bit_buff, spec_coef, band_offset,
no_bands, group_len, cb_table,
- pow_table, idx_table);
+ pow_table, idx_table, maximum_bins_short);
} else if (cb_no <= 4) {
WORD32 tbl_sign = 0;
@@ -1042,7 +1056,7 @@ WORD ixheaacd_decode_huffman(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
}
ret_val = ixheaacd_huffman_dec_quad(it_bit_buff, spec_coef, band_offset,
no_bands, group_len, cb_table,
- pow_table, tbl_sign, idx_table);
+ pow_table, tbl_sign, idx_table, maximum_bins_short);
}
else if (cb_no <= 10) {
@@ -1057,7 +1071,7 @@ WORD ixheaacd_decode_huffman(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
}
ret_val = ixheaacd_huffman_dec_pair(
it_bit_buff, spec_coef, band_offset, no_bands, group_len, cb_table,
- pow_table, tbl_sign, idx_table, huff_mode);
+ pow_table, tbl_sign, idx_table, huff_mode, maximum_bins_short);
}
{
@@ -1119,12 +1133,17 @@ WORD ixheaacd_huffman_dec_word2(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
if (it_bit_buff->bit_pos <= 7) {
bits_cons = ((it_bit_buff->ptr_read_next - start_read_pos) << 3) +
(it_bit_buff->bit_pos - start_bit_pos);
+ if (bits_cons > cnt_bits)
+ {
+ return IA_ENHAACPLUS_DEC_EXE_NONFATAL_INSUFFICIENT_INPUT_BYTES;
+ }
it_bit_buff->cnt_bits = cnt_bits - bits_cons;
} else {
it_bit_buff->ptr_read_next += (it_bit_buff->bit_pos) >> 3;
it_bit_buff->bit_pos = it_bit_buff->bit_pos & 0x7;
if ((SIZE_T)(it_bit_buff->ptr_read_next) > (SIZE_T)(it_bit_buff->ptr_bit_buf_end + 1))
{
+ it_bit_buff->ptr_read_next = it_bit_buff->ptr_bit_buf_end + 1;
return IA_ENHAACPLUS_DEC_EXE_NONFATAL_INSUFFICIENT_INPUT_BYTES;
}
@@ -1136,11 +1155,18 @@ WORD ixheaacd_huffman_dec_word2(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
return ret_val;
}
-void ixheaacd_lap1_512_480(WORD32 *coef, WORD32 *prev, VOID *out_tmp,
+VOID ixheaacd_dec_copy_outsample(WORD32 *out_samples, WORD32 *p_overlap_buffer,
+ WORD32 size, WORD16 stride) {
+ WORD32 i;
+
+ for (i = 0; i < size; i++) {
+ out_samples[stride*i] = (ixheaacd_shl16_sat((WORD16)(p_overlap_buffer[i]), 1) << 14);
+ }
+}
+
+VOID ixheaacd_lap1_512_480(WORD32 *coef, WORD32 *prev, VOID *out_tmp,
const WORD16 *window, WORD16 q_shift, WORD16 size,
WORD16 stride , WORD slot_element) {
-
-
WORD32 accu;
WORD32 i;
WORD16 rounding_fac = -0x2000;
@@ -1206,14 +1232,14 @@ VOID ixheaacd_over_lap_add1_dec(WORD32 *coef, WORD32 *prev, WORD32 *out,
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(
ixheaacd_mult32x16in32(coef[size * 2 - 1 - i], window2), q_shift),
- ixheaacd_mac32x16in32_drc(rounding_fac, prev[i], window1));
+ ixheaacd_mac32x16in32_sat(rounding_fac, prev[i], window1));
out[ch_fac * (size - i - 1)] = accu;
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(
- ixheaacd_mult32x16in32(ixheaacd_negate32(coef[size * 2 - 1 - i]),
+ ixheaacd_mult32x16in32(ixheaacd_negate32_sat(coef[size * 2 - 1 - i]),
window1),
q_shift),
- ixheaacd_mac32x16in32_drc(rounding_fac, prev[i], window2));
+ ixheaacd_mac32x16in32_sat(rounding_fac, prev[i], window2));
out[ch_fac * (size + i)] = accu;
}
}
@@ -1344,7 +1370,7 @@ VOID ixheaacd_scale_factor_process_dec(WORD32 *x_invquant, WORD16 *scale_fact,
}
}
-void ixheaacd_right_shift_block(WORD32 *p_spectrum, WORD32 length,
+VOID ixheaacd_right_shift_block(WORD32 *p_spectrum, WORD32 length,
WORD32 shift_val) {
WORD32 i;
WORD32 temp1, temp2;
diff --git a/decoder/ixheaacd_block.h b/decoder/ixheaacd_block.h
index 51a1d9f..cc7119e 100644
--- a/decoder/ixheaacd_block.h
+++ b/decoder/ixheaacd_block.h
@@ -47,13 +47,14 @@ VOID ixheaacd_scale_factor_process_armv8(WORD32 *x_invquant, WORD16 *scale_fact,
WORD32 object_type,
WORD32 aac_sf_data_resil_flag);
-void ixheaacd_right_shift_block(WORD32 *p_spectrum, WORD length,
+VOID ixheaacd_right_shift_block(WORD32 *p_spectrum, WORD length,
WORD shift_val);
WORD ixheaacd_decode_huffman(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
WORD32 *spec_coef, WORD16 *sfb_offset, WORD start,
WORD sfb, WORD group_len,
- ia_aac_dec_tables_struct *ptr_aac_tables);
+ ia_aac_dec_tables_struct *ptr_aac_tables,
+ WORD32 maximum_bins_short);
WORD ixheaacd_huffman_dec_word2(ia_bit_buf_struct *it_bit_buff, WORD32 cb_no,
WORD32 width,
@@ -131,15 +132,18 @@ WORD32 ixheaacd_inv_quant(WORD32 *x_quant, WORD32 *ixheaacd_pow_table_Q13);
VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
WORD32 *ptr_spec_coeff,
- ia_ics_info_struct *ptr_ics_info,
- VOID* out_samples, const WORD16 ch_fac,
- WORD32 *scratch,
+ ia_ics_info_struct *ptr_ics_info, VOID *out_samples,
+ const WORD16 ch_fac, WORD32 *scratch,
ia_aac_dec_tables_struct *ptr_aac_tables,
- WORD32 object_type , WORD slot_element);
+ WORD32 object_type, WORD32 ld_mps_present,
+ WORD slot_element);
VOID ixheaacd_neg_shift_spec_dec(WORD32 *coef, WORD32 *out, WORD16 q_shift,
WORD16 ch_fac);
+VOID ixheaacd_nolap_dec(WORD32 *coef, WORD32 *out, WORD16 q_shift,
+ WORD16 ch_fac, WORD16 size_01);
+
VOID ixheaacd_neg_shift_spec_armv7(WORD32 *coef, WORD32 *out, WORD16 q_shift,
WORD16 ch_fac);
@@ -147,11 +151,11 @@ VOID ixheaacd_neg_shift_spec_armv8(WORD32 *coef, WORD32 *out, WORD16 q_shift,
WORD16 ch_fac);
VOID ixheaacd_nolap1_32(WORD32 *coef, WORD32 *out, WORD16 cu_scale,
- WORD16 stride);
+ WORD16 stride, WORD16 size_01);
VOID ixheaacd_overlap_out_copy_dec(WORD32 *out_samples, WORD32 *ptr_overlap_buf,
WORD32 *ptr_overlap_buf1,
- const WORD16 ch_fac);
+ const WORD16 ch_fac, WORD16 size_01);
VOID ixheaacd_overlap_out_copy_armv7(WORD32 *out_samples,
WORD32 *ptr_overlap_buf,
@@ -162,7 +166,7 @@ VOID ixheaacd_long_short_win_seq(WORD32 *current, WORD32 *prev, WORD32 *out,
const WORD16 *short_window,
const WORD16 *short_window_prev,
const WORD16 *long_window_prev, WORD16 q_shift,
- WORD16 ch_fac);
+ WORD16 ch_fac, WORD16 size_01);
WORD32 ixheaacd_cnt_leading_ones(WORD32 a);
@@ -170,20 +174,26 @@ VOID ixheaacd_huffman_decode(WORD32 it_bit_buff, WORD16 *huff_index,
WORD16 *len, const UWORD16 *input_table,
const UWORD32 *idx_table);
-void ixheaacd_eld_dec_windowing(WORD32 *ptr_spect_coeff, const WORD16 *ptr_win,
+VOID ixheaacd_eld_dec_windowing(WORD32 *ptr_spect_coeff, const WORD16 *ptr_win,
WORD32 framesize, WORD16 q_shift,
WORD32 *ptr_overlap_buf, const WORD16 stride,
VOID *out_samples, WORD slot_element);
-WORD32 ixheaacd_extension_payload(ia_bit_buf_struct *it_bit_buff, WORD32 cnt);
+VOID ixheaacd_eld_dec_windowing_32bit(WORD32 *ptr_spect_coeff,
+ const WORD16 *ptr_win, WORD32 framesize,
+ WORD16 q_shift, WORD32 *ptr_overlap_buf,
+ const WORD16 stride, WORD32 *out_samples);
VOID ixheaacd_process_single_scf(WORD32 scale_factor, WORD32 *x_invquant,
WORD32 width, WORD32 *ptr_scale_table,
WORD32 total_channels, WORD32 object_type,
WORD32 aac_sf_data_resil_flag);
-void ixheaacd_lap1_512_480(WORD32 *coef, WORD32 *prev, VOID *out_tmp,
+VOID ixheaacd_lap1_512_480(WORD32 *coef, WORD32 *prev, VOID *out_tmp,
const WORD16 *window, WORD16 q_shift, WORD16 size,
- WORD16 stride , WORD slot_element);
+ WORD16 stride, WORD slot_element);
+
+VOID ixheaacd_dec_copy_outsample(WORD32 *out_samples, WORD32 *p_overlap_buffer,
+ WORD32 size, WORD16 stride);
#endif /* #ifndef IXHEAACD_BLOCK_H */
diff --git a/decoder/ixheaacd_channel.c b/decoder/ixheaacd_channel.c
index ddbe43d..10e9a1b 100644
--- a/decoder/ixheaacd_channel.c
+++ b/decoder/ixheaacd_channel.c
@@ -71,8 +71,11 @@
#include "ixheaacd_audioobjtypes.h"
#include "ixheaacd_sbrdecoder.h"
#include "ixheaacd_memory_standards.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_adts_crc_check.h"
@@ -122,6 +125,11 @@ WORD8 *ixheaacd_getscalefactorbandwidth(
WORD8 *)(&ptr_aac_tables
->scale_fac_bands_512[ptr_ics_info->sampling_rate_index]
[0]);
+ } else if (ptr_ics_info->frame_length == 1024) {
+ return (
+ WORD8 *)(&ptr_aac_tables
+ ->scale_factor_bands_long[ptr_ics_info->sampling_rate_index]
+ [0]);
} else {
return (
WORD8 *)(&ptr_aac_tables
@@ -138,33 +146,33 @@ void ixheaacd_cblock_scale_spect_data(
ia_aac_dec_channel_info_struct *ptr_aac_dec_channel_info,
ia_aac_dec_tables_struct *ptr_aac_tables, WORD32 total_channels,
WORD32 object_type, WORD32 aac_sf_data_resil_flag) {
- int grp_win, group = 0;
WORD32 *ptr_spect_coeff = ptr_aac_dec_channel_info->ptr_spec_coeff;
WORD8 *ptr_sfb_width = (WORD8 *)(ixheaacd_getscalefactorbandwidth(
&(ptr_aac_dec_channel_info->str_ics_info), ptr_aac_tables));
- int max_band;
WORD16 *ptr_scale_fac = ptr_aac_dec_channel_info->ptr_scale_factor;
WORD tot_bands = ptr_aac_dec_channel_info->str_ics_info.max_sfb;
- WORD tot_groups = ptr_aac_dec_channel_info->str_ics_info.num_window_groups;
- WORD32 *scale_table_ptr = ptr_aac_tables->pstr_block_tables->scale_table;
-
- max_band = ptr_aac_dec_channel_info->str_ics_info.max_sfb;
-
- do {
- grp_win =
- ptr_aac_dec_channel_info->str_ics_info.window_group_length[group++];
- do {
- (*ixheaacd_scale_factor_process)(&ptr_spect_coeff[0], &ptr_scale_fac[0],
- tot_bands, (WORD8 *)ptr_sfb_width,
- scale_table_ptr, total_channels,
+
+ WORD num_win_grp, group_len;
+ WORD32 *ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table;
+ ia_ics_info_struct *ptr_ics_info = &ptr_aac_dec_channel_info->str_ics_info;
+
+ if (object_type == AOT_ER_AAC_LC)
+ ptr_sfb_width = ptr_aac_tables->str_aac_sfb_info[ptr_ics_info->window_sequence]
+ .sfb_width;
+ for (num_win_grp = 0; num_win_grp < ptr_ics_info->num_window_groups;
+ num_win_grp++) {
+ for (group_len = 0;
+ group_len < ptr_ics_info->window_group_length[num_win_grp];
+ group_len++) {
+ (*ixheaacd_scale_factor_process)(
+ &ptr_spect_coeff[0], &ptr_scale_fac[0], tot_bands,
+ (WORD8 *)ptr_sfb_width, ptr_scale_table, total_channels,
object_type, aac_sf_data_resil_flag);
- ptr_spect_coeff += 128;
- grp_win--;
- } while (grp_win != 0);
- ptr_scale_fac += 16;
- tot_groups--;
- } while (tot_groups != 0);
+ ptr_spect_coeff += MAX_BINS_SHORT;
+ }
+ ptr_scale_fac += MAX_SCALE_FACTOR_BANDS_SHORT;
+ }
}
WORD32 ixheaacd_read_pulse_data(ia_bit_buf_struct *it_bit_buff,
@@ -277,7 +285,8 @@ static IA_ERRORCODE ixheaacd_read_block_data(
}
if (aac_spect_data_resil_flag &&
- ((object_type == AOT_ER_AAC_ELD) || (object_type == AOT_ER_AAC_LD)))
+ ((object_type == AOT_ER_AAC_ELD) || (object_type == AOT_ER_AAC_LD)
+ || (object_type == AOT_ER_AAC_LC)))
ixheaacd_hcr_read(it_bit_buff, ptr_aac_dec_channel_info, ele_type);
if (aac_sf_data_resil_flag &&
@@ -289,7 +298,7 @@ static IA_ERRORCODE ixheaacd_read_block_data(
it_bit_buff->bit_pos = 7 - it_bit_buff->bit_pos;
}
- if (object_type == AOT_ER_AAC_LD) {
+ if (object_type == AOT_ER_AAC_LD || object_type == AOT_ER_AAC_LC) {
if (ptr_aac_dec_channel_info->str_tns_info.tns_data_present)
error_code =
ixheaacd_read_tns_data(it_bit_buff, ptr_aac_dec_channel_info);
@@ -351,8 +360,12 @@ WORD16 ixheaacd_ics_read(ia_bit_buf_struct *it_bit_buff,
ptr_ics_info->window_sequence = 0;
ptr_ics_info->window_shape = 1;
} else {
- if (object_type != AOT_ER_AAC_LD) {
- ptr_ics_info->frame_length = 1024;
+ if (object_type != AOT_ER_AAC_LD)
+ {
+ if (frame_size == 960)
+ ptr_ics_info->frame_length = 960;
+ else
+ ptr_ics_info->frame_length = 1024;
}
value = ixheaacd_read_bits_buf(it_bit_buff, 4);
ptr_ics_info->window_sequence = (WORD16)((value & 0x6) >> 1);
@@ -591,7 +604,8 @@ IA_ERRORCODE ixheaacd_channel_pair_process(
IA_ERRORCODE err = IA_NO_ERROR;
ia_aac_decoder_struct *self = self_ptr;
if (aac_spect_data_resil_flag &&
- ((object_type == AOT_ER_AAC_LD) || (object_type == AOT_ER_AAC_ELD))) {
+ ((object_type == AOT_ER_AAC_LD) || (object_type == AOT_ER_AAC_ELD) ||
+ (object_type == AOT_ER_AAC_LC))) {
for (channel = 0; channel < num_ch; channel++) {
err = ixheaacd_cblock_inv_quant_spect_data(
ptr_aac_dec_channel_info[channel], ptr_aac_tables);
@@ -612,8 +626,10 @@ IA_ERRORCODE ixheaacd_channel_pair_process(
ixheaacd_ms_stereo_process(ptr_aac_dec_channel_info, ptr_aac_tables);
}
- ixheaacd_intensity_stereo_process(ptr_aac_dec_channel_info, ptr_aac_tables,
- object_type, aac_sf_data_resil_flag);
+ ixheaacd_intensity_stereo_process(
+ ptr_aac_dec_channel_info, ptr_aac_tables, object_type,
+ aac_sf_data_resil_flag,
+ ptr_aac_dec_channel_info[LEFT]->str_ics_info.frame_length);
}
for (channel = 0; channel < num_ch; channel++) {
@@ -736,12 +752,14 @@ IA_ERRORCODE ixheaacd_read_spectral_data(
WORD num_win_grp, group_len, grp_offset;
WORD index;
- WORD8 *ptr_code_book, *ptr_code_book_no;
+ WORD8 *ptr_code_book;
WORD16 *ptr_scale_factor;
WORD32 *ptr_spec_coef;
ia_ics_info_struct *ptr_ics_info = &ptr_aac_dec_channel_info->str_ics_info;
WORD16 *swb_offset;
+ WORD32 maximum_bins_short = ptr_ics_info->frame_length >> 3;
+
WORD32 *ptr_spec_coef_out;
ptr_code_book = ptr_aac_dec_channel_info->ptr_code_book;
@@ -773,7 +791,8 @@ IA_ERRORCODE ixheaacd_read_spectral_data(
WORD32 sfb_width;
WORD32 sect_cb = ptr_code_book[sfb];
WORD start = sfb;
- if ((object_type == AOT_ER_AAC_ELD) || (object_type == AOT_ER_AAC_LD)) {
+ if ((object_type == AOT_ER_AAC_ELD) || (object_type == AOT_ER_AAC_LD)
+ || (object_type == AOT_ER_AAC_LC)) {
if ((sect_cb >= 16) && (sect_cb <= 31)) {
ptr_code_book[sfb] = sect_cb = 11;
}
@@ -822,23 +841,33 @@ IA_ERRORCODE ixheaacd_read_spectral_data(
for (num_win_grp = 0; num_win_grp < ptr_ics_info->num_window_groups;
num_win_grp++) {
WORD grp_len = ptr_ics_info->window_group_length[num_win_grp];
- ptr_code_book_no =
- &ptr_code_book[num_win_grp * MAX_SCALE_FACTOR_BANDS_SHORT];
- ptr_spec_coef_out = &ptr_spec_coef[grp_offset * MAX_BINS_SHORT];
+ if (maximum_bins_short == 120)
+ ptr_spec_coef_out = &ptr_spec_coef[grp_offset * maximum_bins_short];
+ else
+ ptr_spec_coef_out = &ptr_spec_coef[grp_offset * MAX_BINS_SHORT];
+
+ WORD bands = num_win_grp * MAX_SCALE_FACTOR_BANDS_SHORT;
for (sfb = 0; sfb < max_sfb;) {
- WORD sect_cb = *ptr_code_book_no;
+ WORD sect_cb = ptr_code_book[bands];
WORD start = sfb;
WORD ret_val;
- for (; sfb < max_sfb && (*ptr_code_book_no == sect_cb);
- sfb++, ptr_code_book_no++)
+ if ((object_type == AOT_ER_AAC_ELD) || (object_type == AOT_ER_AAC_LD)
+ || (object_type == AOT_ER_AAC_LC)) {
+ if ((sect_cb >= 16) && (sect_cb <= 31)) {
+ ptr_code_book[bands] = sect_cb = 11;
+ }
+ }
+
+ for (; sfb < max_sfb && (ptr_code_book[bands] == sect_cb);
+ sfb++, bands++)
;
if (sect_cb > ZERO_HCB && (sect_cb < NOISE_HCB)) {
ret_val = ixheaacd_decode_huffman(
it_bit_buff, sect_cb, ptr_spec_coef_out, (WORD16 *)swb_offset,
- start, sfb, grp_len, ptr_aac_tables);
+ start, sfb, grp_len, ptr_aac_tables, maximum_bins_short);
if (ret_val != 0) {
return (WORD16)(
@@ -851,7 +880,13 @@ IA_ERRORCODE ixheaacd_read_spectral_data(
}
}
{
- WORD32 *ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table;
+ WORD32 *ptr_scale_table;
+
+ if (maximum_bins_short != 120)
+ ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table;
+ else
+ ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table_960;
+
WORD8 *ptr_sfb_width =
ptr_aac_tables->str_aac_sfb_info[ptr_ics_info->window_sequence]
.sfb_width;
@@ -866,7 +901,10 @@ IA_ERRORCODE ixheaacd_read_spectral_data(
(WORD8 *)ptr_sfb_width, ptr_scale_table, total_channels,
object_type, aac_sf_data_resil_flag);
- ptr_spec_coef += MAX_BINS_SHORT;
+ if (maximum_bins_short == 120)
+ ptr_spec_coef += maximum_bins_short;
+ else
+ ptr_spec_coef += MAX_BINS_SHORT;
}
ptr_scale_factor += MAX_SCALE_FACTOR_BANDS_SHORT;
diff --git a/decoder/ixheaacd_common_initfuncs.c b/decoder/ixheaacd_common_initfuncs.c
index d315f1c..a10783d 100644
--- a/decoder/ixheaacd_common_initfuncs.c
+++ b/decoder/ixheaacd_common_initfuncs.c
@@ -66,8 +66,11 @@
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_aacdec.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_headerdecode.h"
diff --git a/decoder/ixheaacd_common_lpfuncs.c b/decoder/ixheaacd_common_lpfuncs.c
index c9ab2dd..1059cf6 100644
--- a/decoder/ixheaacd_common_lpfuncs.c
+++ b/decoder/ixheaacd_common_lpfuncs.c
@@ -67,8 +67,12 @@
#include "ixheaacd_audioobjtypes.h"
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_aacdec.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_headerdecode.h"
diff --git a/decoder/ixheaacd_config.h b/decoder/ixheaacd_config.h
index c78ce8f..29a6a90 100644
--- a/decoder/ixheaacd_config.h
+++ b/decoder/ixheaacd_config.h
@@ -51,6 +51,23 @@
#define ID_CONFIG_EXT_FILL 0
#define ID_CONFIG_EXT_LOUDNESS_INFO (2)
+#define MAX_PARAMETER_BANDS (40)
+#define MAX_PARAMETER_BANDS_MPS (28)
+#define MAX_NUM_OTT (5)
+#define MAX_NUM_TTT (1)
+#define MAX_INPUT_CHANNELS (2)
+#define MAX_RESIDUAL_CHANNELS (3)
+#define MAX_OUTPUT_CHANNELS (7)
+#define MAX_NUM_EXT_TYPES (8)
+#define MAX_M_INPUT (2)
+#define MAX_M_OUTPUT (2)
+#define QMF_BANDS_TO_HYBRID (3)
+#define MAX_HYBRID_ONLY_BANDS_PER_QMF (8)
+#define MAX_ARBITRARY_TREE_LEVELS (2)
+#define MAX_OUTPUT_CHANNELS_AT \
+ (MAX_OUTPUT_CHANNELS * (1 << MAX_ARBITRARY_TREE_LEVELS))
+#define MAX_ARBITRARY_TREE_INDEX ((1 << (MAX_ARBITRARY_TREE_LEVELS + 1)) - 1)
+
typedef UWORD8 UINT8;
typedef UWORD32 UINT32;
@@ -83,6 +100,66 @@ typedef struct {
UINT32 bs_residual_bands;
UINT32 bs_pseudo_lr;
UINT32 bs_env_quant_mode;
+ UINT32 ldmps_present_flag;
+
+ UINT32 bs_sampling_freq_index;
+ UINT32 bs_fampling_frequency;
+ UINT32 bs_frame_length;
+ UINT32 bs_tree_config;
+ UINT32 bs_quant_mode;
+ UINT32 bs_one_icc;
+ UINT32 bs_arbitrary_downmix;
+ UINT32 bs_residual_coding;
+ UINT32 bs_fixed_gain_sur;
+ UINT32 bs_fixed_gain_LFE;
+ UINT32 bs_matrix_mode;
+ UINT32 bs_3D_audio_mode;
+ UINT32 bs_3D_audio_HRTF_set;
+ UINT32 bs_HRTF_freq_res;
+ UINT32 HRTF_num_band;
+ UINT32 HRTF_num_phase; // new
+ UINT32 bs_HRTF_num_chan;
+ UINT32 bs_HRTF_asymmetric;
+ UINT32 bs_HRTF_level_left[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS];
+ UINT32 bs_HRTF_level_right[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS];
+ UINT32 bs_HRTF_phase[MAX_OUTPUT_CHANNELS];
+ UINT32 bs_HRTF_phase_LR[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS];
+ UINT32 bs_HRTF_icc[MAX_OUTPUT_CHANNELS];
+ UINT32 bs_HRTF_icc_LR[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS];
+ UINT32 bs_ott_bands[MAX_NUM_OTT];
+ UINT32 bs_ttt_dual_mode[MAX_NUM_TTT];
+ UINT32 bs_ttt_mode_low[MAX_NUM_TTT];
+ UINT32 bs_ttt_mode_high[MAX_NUM_TTT];
+ UINT32 bs_ttt_bands_low[MAX_NUM_TTT];
+ UINT32 bs_ttt_bands_high[MAX_NUM_TTT];
+
+ UINT32 bs_sac_ext_type[MAX_NUM_EXT_TYPES];
+ UINT32 sac_ext_cnt;
+
+ UINT32 bs_residual_present[MAX_RESIDUAL_CHANNELS];
+ UINT32 bs_residual_sampling_freq_index;
+ UINT32 bs_residual_frames_per_spatial_frame;
+
+ UINT32 bs_residual_bands_ld_mps[MAX_RESIDUAL_CHANNELS];
+
+ UINT32 bs_arbitrary_downmix_residual_sampling_freq_index;
+ UINT32 bs_arbitrary_downmix_residual_frames_per_spatial_frame;
+ UINT32 bs_arbitrary_downmix_residual_bands;
+
+ UINT32 num_out_chan_AT;
+ UINT32 num_ott_boxes_AT;
+ UINT32 bs_output_channel_pos_AT[MAX_OUTPUT_CHANNELS_AT];
+ UINT32 bs_ott_box_present_AT[MAX_OUTPUT_CHANNELS][MAX_ARBITRARY_TREE_INDEX];
+ UINT32 bs_ott_default_cld_AT[MAX_OUTPUT_CHANNELS * MAX_ARBITRARY_TREE_INDEX];
+ UINT32 bs_ott_mode_lfe_AT[MAX_OUTPUT_CHANNELS * MAX_ARBITRARY_TREE_INDEX];
+ UINT32 bs_ott_bands_AT[MAX_OUTPUT_CHANNELS * MAX_ARBITRARY_TREE_INDEX];
+
+ WORD32 num_ott_boxes;
+ WORD32 num_ttt_boxes;
+ WORD32 num_input_channels;
+ WORD32 num_output_channels;
+ WORD32 ott_mode_lfe[MAX_NUM_OTT]; // new
+ WORD32 no_ldsbr_present;
} ia_usac_dec_mps_config_struct;
#define BS_OUTPUT_CHANNEL_POS_NA -1 /* n/a */
diff --git a/decoder/ixheaacd_create.c b/decoder/ixheaacd_create.c
index 6990399..7ac27e7 100644
--- a/decoder/ixheaacd_create.c
+++ b/decoder/ixheaacd_create.c
@@ -369,9 +369,6 @@ WORD32 ixheaacd_dec_data_init(VOID *handle,
ia_usac_data_struct *usac_data) {
ia_audio_specific_config_struct *pstr_stream_config, *layer_config;
WORD32 err_code = 0;
-
- WORD32 num_out_chan = 0;
-
WORD32 i_ch, i, ele_id;
WORD32 num_elements;
@@ -422,8 +419,6 @@ WORD32 ixheaacd_dec_data_init(VOID *handle,
usac_data->esbr_bit_str[0].no_elements = 0;
usac_data->esbr_bit_str[1].no_elements = 0;
- num_out_chan = ptr_usac_config->num_out_channels;
-
if (usac_data->ccfl == 768)
pstr_frame_data->str_layer.sample_rate_layer =
4 * pstr_frame_data->str_layer.sample_rate_layer / 3;
@@ -579,7 +574,6 @@ WORD32 ixheaacd_decode_create(ia_exhaacplus_dec_api_struct *handle,
handle->aac_config.ui_sbr_mode = 0;
}
-
break;
default:
@@ -602,9 +596,6 @@ WORD32 ixheaacd_decode_create(ia_exhaacplus_dec_api_struct *handle,
ia_usac_config_struct *ptr_usac_config =
&(pstr_frame_data->str_audio_specific_config.str_usac_config);
- WORD32 inter_tes[MAX_NUM_ELEMENTS] = {0};
- WORD32 bs_pvc[MAX_NUM_ELEMENTS] = {0};
- WORD32 harmonic_sbr[MAX_NUM_ELEMENTS] = {0};
WORD32 inter_test_flag = 0;
WORD32 bs_pvc_flag = 0;
WORD32 harmonic_Sbr_flag = 0;
@@ -626,12 +617,6 @@ WORD32 ixheaacd_decode_create(ia_exhaacplus_dec_api_struct *handle,
ia_usac_dec_sbr_config_struct *ptr_usac_sbr_config =
&(ptr_usac_dec_config->str_usac_element_config[elem_idx]
.str_usac_sbr_config);
- inter_tes[elem_idx] =
- (ptr_usac_sbr_config != NULL) ? ptr_usac_sbr_config->bs_inter_tes : 0;
- bs_pvc[elem_idx] =
- (ptr_usac_sbr_config != NULL) ? ptr_usac_sbr_config->bs_pvc : 0;
- harmonic_sbr[elem_idx] =
- (ptr_usac_sbr_config != NULL) ? ptr_usac_sbr_config->harmonic_sbr : 0;
if (ptr_usac_sbr_config->bs_inter_tes) inter_test_flag = 1;
if (ptr_usac_sbr_config->bs_pvc) bs_pvc_flag = 1;
@@ -686,7 +671,7 @@ WORD32 ixheaacd_decode_create(ia_exhaacplus_dec_api_struct *handle,
pstr_dec_data->str_usac_data.sbr_ratio_idx,
pstr_dec_data->str_usac_data.output_samples, &harmonic_Sbr_flag,
(void *)&usac_def_header, aac_dec_handle->str_sbr_config,
- pstr_dec_data->str_usac_data.audio_object_type);
+ pstr_dec_data->str_usac_data.audio_object_type, 0, 0);
pstr_dec_data->str_usac_data.sbr_scratch_mem_base =
aac_dec_handle->sbr_scratch_mem_u;
if (num_ele)
diff --git a/decoder/ixheaacd_create.h b/decoder/ixheaacd_create.h
index 05f125e..9bd7e6b 100644
--- a/decoder/ixheaacd_create.h
+++ b/decoder/ixheaacd_create.h
@@ -39,7 +39,7 @@ ia_handle_sbr_dec_inst_struct ixheaacd_init_sbr(
VOID *sbr_persistent_mem_v, WORD32 *ptr_overlap_buf, WORD channel,
WORD ps_enable, WORD sbr_ratio_idx, WORD output_frame_size, WORD *use_hbe,
VOID *p_usac_dflt_header, ia_sbr_header_data_struct str_sbr_config,
- WORD audio_object_type);
+ WORD audio_object_type, WORD32 ldmps_present, WORD32 ldsbr_present);
VOID ixheaacd_setesbr_flags(VOID *sbr_persistent_mem_v, FLAG pvc_flag,
FLAG hbe_flag, FLAG inter_tes_flag);
diff --git a/decoder/ixheaacd_decode_main.c b/decoder/ixheaacd_decode_main.c
index cc1a971..60b61b4 100644
--- a/decoder/ixheaacd_decode_main.c
+++ b/decoder/ixheaacd_decode_main.c
@@ -24,6 +24,7 @@
#include "ixheaacd_error_standards.h"
#include "ixheaacd_memory_standards.h"
#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
#include "ixheaacd_defines.h"
#include "ixheaacd_aac_rom.h"
@@ -35,6 +36,8 @@
#include "ixheaacd_lt_predict.h"
#include "ixheaacd_channelinfo.h"
#include "ixheaacd_sbr_common.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_drc_data_struct.h"
#include "ixheaacd_drc_dec.h"
#include "ixheaacd_channel.h"
@@ -46,6 +49,7 @@
#include "ixheaacd_sbr_common.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_bitbuffer.h"
@@ -117,16 +121,14 @@ VOID ixheaacd_samples_sat(WORD8 *outbuffer, WORD32 num_samples_out,
/* audio pre roll frame parsing*/
static WORD32 ixheaacd_audio_preroll_parsing(
ia_dec_data_struct *pstr_dec_data, UWORD8 *conf_buf, WORD32 *preroll_units,
- WORD32 *preroll_frame_offset, ia_aac_dec_state_struct *aac_dec_handle) {
+ WORD32 *preroll_frame_offset, ia_aac_dec_state_struct *aac_dec_handle,
+ WORD32 *config_changed, WORD32 *apply_crossfade) {
ia_bit_buf_struct *temp_buff =
(ia_bit_buf_struct *)&(pstr_dec_data->dec_bit_buf);
- WORD32 independency_flag = 0;
+
WORD32 ext_ele_present = 0;
WORD32 ext_ele_use_dflt_len = 0;
WORD32 ext_ele_payload_len = 0;
-
- WORD32 apply_crossfade = 0;
- WORD32 un_used_val = 0;
WORD32 num_pre_roll_frames = 0;
WORD32 frame_idx = 0;
@@ -138,14 +140,13 @@ static WORD32 ixheaacd_audio_preroll_parsing(
if (pstr_dec_data->str_frame_data.str_audio_specific_config.str_usac_config
.str_usac_dec_config.usac_element_type[0] == ID_USAC_EXT) {
temp = ixheaacd_show_bits_buf(temp_buff, 3);
- independency_flag = (temp >> 2) & 0x1;
ext_ele_present = (temp >> 1) & 0x1;
if (ext_ele_present) {
- ext_ele_use_dflt_len = temp & 0x1; // ixheaacd_read_bit(&temp_buff, 1);
+ ext_ele_use_dflt_len = temp & 0x1;
if (ext_ele_use_dflt_len != 0) return 0;
- un_used_val = ixheaacd_read_bits_buf(temp_buff, 3);
+ ixheaacd_read_bits_buf(temp_buff, 3);
ext_ele_payload_len = ixheaacd_read_bits_buf(temp_buff, 8);
@@ -156,7 +157,6 @@ static WORD32 ixheaacd_audio_preroll_parsing(
(UWORD32)((WORD32)ext_ele_payload_len + val_add - 2);
}
- // escapedValue(4, 4, 8);
config_len = ixheaacd_read_bits_buf(temp_buff, 4);
if (config_len == 15) {
WORD32 val_add = 0;
@@ -174,18 +174,23 @@ static WORD32 ixheaacd_audio_preroll_parsing(
if (aac_dec_handle->preroll_config_present == 1) {
if (!(memcmp(aac_dec_handle->preroll_config_prev, conf_buf,
- sizeof(aac_dec_handle->preroll_config_prev)))) {
+ sizeof(UWORD8) * config_len))) {
config_len = 0;
}
+ if (memcmp(aac_dec_handle->preroll_config_prev, conf_buf,
+ sizeof(UWORD8) * config_len) != 0) {
+ *config_changed = 1;
+ } else {
+ *config_changed = 0;
+ }
}
aac_dec_handle->preroll_config_present = 1;
memcpy(aac_dec_handle->preroll_config_prev, conf_buf,
- sizeof(aac_dec_handle->preroll_config_prev));
+ sizeof(UWORD8) * config_len);
- apply_crossfade = ixheaacd_read_bits_buf(temp_buff, 1);
- un_used_val = ixheaacd_read_bits_buf(temp_buff, 1); // reserverd
+ *apply_crossfade = ixheaacd_read_bits_buf(temp_buff, 1);
+ ixheaacd_read_bits_buf(temp_buff, 1);
- // escapedValue(2, 4, 0);
num_pre_roll_frames = ixheaacd_read_bits_buf(temp_buff, 2);
if (num_pre_roll_frames == 3) {
WORD32 val_add = 0;
@@ -196,7 +201,7 @@ static WORD32 ixheaacd_audio_preroll_parsing(
if (num_pre_roll_frames > MAX_AUDIO_PREROLLS) return IA_FATAL_ERROR;
for (frame_idx = 0; frame_idx < num_pre_roll_frames; frame_idx++) {
- WORD32 au_len = 0; // escapedValued(16,16,0)
+ WORD32 au_len = 0;
au_len = ixheaacd_read_bits_buf(temp_buff, 16);
if (au_len == 65535) {
WORD32 val_add = ixheaacd_read_bits_buf(temp_buff, 16);
@@ -287,7 +292,6 @@ WORD32 ixheaacd_dec_main(VOID *temp_handle, WORD8 *inbuffer, WORD8 *outbuffer,
pstr_dec_data->dec_bit_buf.bit_pos = 7;
pstr_dec_data->dec_bit_buf.cnt_bits = pstr_dec_data->dec_bit_buf.size;
pstr_dec_data->dec_bit_buf.xaac_jmp_buf = &(aac_dec_handle->xaac_jmp_buf);
-
pstr_dec_data->str_usac_data.usac_flag = aac_dec_handle->usac_flag;
if (pstr_dec_data->dec_bit_buf.size > pstr_dec_data->dec_bit_buf.max_size)
pstr_dec_data->dec_bit_buf.max_size = pstr_dec_data->dec_bit_buf.size;
@@ -300,7 +304,8 @@ WORD32 ixheaacd_dec_main(VOID *temp_handle, WORD8 *inbuffer, WORD8 *outbuffer,
.preroll_flag) {
config_len = ixheaacd_audio_preroll_parsing(
pstr_dec_data, &config[0], &preroll_units, &preroll_frame_offset[0],
- aac_dec_handle);
+ aac_dec_handle, &aac_dec_handle->drc_config_changed,
+ &aac_dec_handle->apply_crossfade);
if (config_len == IA_FATAL_ERROR) return IA_FATAL_ERROR;
}
@@ -364,7 +369,6 @@ WORD32 ixheaacd_dec_main(VOID *temp_handle, WORD8 *inbuffer, WORD8 *outbuffer,
(preroll_frame_offset[access_units] / 8);
}
- // temp_read=ixheaacd_show_bits_buf(pstr_dec_data->dec_bit_buf,preroll_frame_offset[access_unit]);
if (!aac_dec_handle->decode_create_done) return IA_FATAL_ERROR;
err =
@@ -440,6 +444,25 @@ WORD32 ixheaacd_dec_main(VOID *temp_handle, WORD8 *inbuffer, WORD8 *outbuffer,
pstr_dec_data->str_frame_data.str_audio_specific_config.str_usac_config
.str_usac_dec_config.preroll_counter = preroll_counter;
+
+ ia_usac_decoder_config_struct *pstr_usac_dec_config_state =
+ &pstr_audio_specific_config->str_usac_config.str_usac_dec_config;
+ ia_usac_decoder_config_struct *pstr_usac_dec_config_dec_data =
+ &pstr_dec_data->str_frame_data.str_audio_specific_config.str_usac_config
+ .str_usac_dec_config;
+ pstr_usac_dec_config_state->num_config_extensions =
+ pstr_usac_dec_config_dec_data->num_config_extensions;
+ pstr_usac_dec_config_state->num_elements =
+ pstr_usac_dec_config_dec_data->num_elements;
+ memcpy(pstr_usac_dec_config_state->usac_cfg_ext_info_buf,
+ pstr_usac_dec_config_dec_data->usac_cfg_ext_info_buf,
+ sizeof(pstr_usac_dec_config_state->usac_cfg_ext_info_buf));
+ memcpy(pstr_usac_dec_config_state->usac_ext_ele_payload_present,
+ pstr_usac_dec_config_dec_data->usac_ext_ele_payload_present,
+ sizeof(pstr_usac_dec_config_dec_data->usac_ext_ele_payload_present));
+ memcpy(pstr_usac_dec_config_state->usac_ext_ele_payload_buf,
+ pstr_usac_dec_config_dec_data->usac_ext_ele_payload_buf,
+ sizeof(pstr_usac_dec_config_state->usac_ext_ele_payload_buf));
}
access_units++;
diff --git a/decoder/ixheaacd_defines.h b/decoder/ixheaacd_defines.h
index ed85be2..99d0753 100644
--- a/decoder/ixheaacd_defines.h
+++ b/decoder/ixheaacd_defines.h
@@ -42,21 +42,7 @@
#define CHANNELS 2
#define SIZE01 (MAX_BINS_LONG / 16)
-#define SIZE02 2 * SIZE01
-#define SIZE03 3 * SIZE01
-#define SIZE04 4 * SIZE01
-#define SIZE05 5 * SIZE01
-#define SIZE06 6 * SIZE01
#define SIZE07 7 * SIZE01
-#define SIZE08 8 * SIZE01
-#define SIZE09 9 * SIZE01
-#define SIZE10 10 * SIZE01
-#define SIZE11 11 * SIZE01
-#define SIZE12 12 * SIZE01
-#define SIZE13 13 * SIZE01
-#define SIZE14 14 * SIZE01
-#define SIZE15 15 * SIZE01
-#define SIZE16 16 * SIZE01
typedef struct { WORD32 sampling_frequency; } ia_sampling_rate_info_struct;
diff --git a/decoder/ixheaacd_drc_freq_dec.c b/decoder/ixheaacd_drc_freq_dec.c
index cd6b81d..e94861c 100644
--- a/decoder/ixheaacd_drc_freq_dec.c
+++ b/decoder/ixheaacd_drc_freq_dec.c
@@ -76,6 +76,7 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_config.h"
#include "ixheaacd_mps_polyphase.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -600,8 +601,6 @@ static WORD32 ixheaacd_drc_element_read(
ia_handle_bit_buf_struct bs, ixheaac_drc_bs_data_struct *pstr_bs_data) {
WORD32 ich, idrc, nbyte = 1;
WORD32 pce_tag_present, drc_bands_present;
- WORD32 pce_instance_tag, drc_tag_reserved_bits;
- WORD32 prog_ref_level_reserved_bits;
WORD32 excluded_chns_present;
UWORD8 drc_band_incr;
WORD8 max_dyn_rng_dlbl = -128;
@@ -610,8 +609,8 @@ static WORD32 ixheaacd_drc_element_read(
pce_tag_present = ixheaacd_read_bits_buf(bs, 1);
if (pce_tag_present) {
- pce_instance_tag = ixheaacd_read_bits_buf(bs, 4);
- drc_tag_reserved_bits = ixheaacd_read_bits_buf(bs, 4);
+ ixheaacd_read_bits_buf(bs, 4);/*pce_instance_tag*/
+ ixheaacd_read_bits_buf(bs, 4);/*drc_tag_reserved_bits*/
nbyte++;
}
@@ -645,7 +644,7 @@ static WORD32 ixheaacd_drc_element_read(
if (pstr_bs_data->prog_ref_level_present) {
pstr_bs_data->prog_ref_level = ixheaacd_read_bits_buf(bs, 7);
- prog_ref_level_reserved_bits = ixheaacd_read_bits_buf(bs, 1);
+ ixheaacd_read_bits_buf(bs, 1);/*prog_ref_level_reserved_bits*/
nbyte++;
}
@@ -764,13 +763,12 @@ WORD32 ixheaacd_dec_drc_read_element(ia_drc_dec_struct *pstr_drc_dec,
ia_drc_dec_struct *drc_dummy,
ia_handle_bit_buf_struct bs) {
WORD32 bits_read = 0;
- WORD32 bits_parse = 0;
if (pstr_drc_dec->num_drc_elements < pstr_drc_dec->max_audio_channels) {
bits_read = ixheaacd_drc_element_read(
bs, &pstr_drc_dec->str_drc_bs_data[pstr_drc_dec->num_drc_elements]);
if (pstr_drc_dec->dvb_anc_data_present) {
- bits_parse = ixheaacd_drc_read_compression(
+ ixheaacd_drc_read_compression(
bs, pstr_drc_dec, pstr_drc_dec->dvb_anc_data_pos);
}
pstr_drc_dec->num_drc_elements++;
@@ -780,7 +778,7 @@ WORD32 ixheaacd_dec_drc_read_element(ia_drc_dec_struct *pstr_drc_dec,
bits_read = ixheaacd_drc_element_read(bs, &drc_ele_dummy);
if (pstr_drc_dec->dvb_anc_data_present) {
- bits_parse = ixheaacd_drc_read_compression(
+ ixheaacd_drc_read_compression(
bs, drc_dummy, pstr_drc_dec->dvb_anc_data_pos);
}
}
diff --git a/decoder/ixheaacd_env_calc.c b/decoder/ixheaacd_env_calc.c
index dd873a8..c132476 100644
--- a/decoder/ixheaacd_env_calc.c
+++ b/decoder/ixheaacd_env_calc.c
@@ -474,7 +474,7 @@ static PLATFORM_INLINE VOID ixheaacd_adapt_noise_gain_calc(
WORD32 sub_band_start, WORD32 lb_scale, FLAG noise_absc_flag,
WORD32 smooth_length, WORD32 **anal_buf_real_mant,
WORD32 **anal_buf_imag_mant, WORD32 low_pow_flag,
- ia_sbr_tables_struct *ptr_sbr_tables) {
+ ia_sbr_tables_struct *ptr_sbr_tables, WORD16 max_cols) {
WORD32 l, k;
WORD32 scale_change;
WORD32 bands = num_sub_bands - skip_bands;
@@ -506,15 +506,35 @@ static PLATFORM_INLINE VOID ixheaacd_adapt_noise_gain_calc(
}
for (l = start_pos; l < end_pos; l++) {
- if ((l < MAX_COLS)) {
- scale_change = (adj_e - input_e);
- } else {
- scale_change = (final_e - input_e);
- if (((l == MAX_COLS)) && ((start_pos < MAX_COLS))) {
- WORD32 diff = final_e - noise_e;
- noise_e = final_e;
- ixheaacd_noise_level_rescaling(noise_level_mant, diff, bands, 2);
+ if (max_cols != 30)
+ {
+ if ((l < MAX_COLS)) {
+ scale_change = (adj_e - input_e);
+ }
+ else {
+ scale_change = (final_e - input_e);
+
+ if (((l == MAX_COLS)) && ((start_pos < MAX_COLS))) {
+ WORD32 diff = final_e - noise_e;
+ noise_e = final_e;
+ ixheaacd_noise_level_rescaling(noise_level_mant, diff, bands, 2);
+ }
+ }
+ }
+ else
+ {
+ if ((l < max_cols)) {
+ scale_change = (adj_e - input_e);
+ }
+ else {
+ scale_change = (final_e - input_e);
+
+ if (((l == max_cols)) && ((start_pos < max_cols))) {
+ WORD32 diff = final_e - noise_e;
+ noise_e = final_e;
+ ixheaacd_noise_level_rescaling(noise_level_mant, diff, bands, 2);
+ }
}
}
@@ -694,6 +714,10 @@ IA_ERRORCODE ixheaacd_calc_sbrenvelope(
WORD32 sub_band_start = pstr_freq_band_data->sub_band_start;
WORD32 sub_band_end = pstr_freq_band_data->sub_band_end;
+
+ WORD16 num_timeslots = ptr_header_data->num_time_slots;
+ WORD16 max_cols = ptr_header_data->num_time_slots * 2;
+
WORD32 num_sub_bands;
WORD32 skip_bands;
WORD32 bands;
@@ -783,15 +807,32 @@ IA_ERRORCODE ixheaacd_calc_sbrenvelope(
temp_val = ((max_sfb_nrg_exp + 13) >> 1);
- if ((ptr_border_vec[i] < SBR_TIME_SLOTS)) {
- if ((temp_val > adj_e)) {
- adj_e = (WORD16)temp_val;
+ if (num_timeslots != 15)
+ {
+ if ((ptr_border_vec[i] < SBR_TIME_SLOTS)) {
+ if ((temp_val > adj_e)) {
+ adj_e = (WORD16)temp_val;
+ }
+ }
+
+ if ((ptr_border_vec[i + 1] > SBR_TIME_SLOTS)) {
+ if ((temp_val > final_e)) {
+ final_e = (WORD16)temp_val;
+ }
}
}
+ else
+ {
+ if ((ptr_border_vec[i] < num_timeslots)) {
+ if ((temp_val > adj_e)) {
+ adj_e = (WORD16)temp_val;
+ }
+ }
- if ((ptr_border_vec[i + 1] > SBR_TIME_SLOTS)) {
- if ((temp_val > final_e)) {
- final_e = (WORD16)temp_val;
+ if ((ptr_border_vec[i + 1] > num_timeslots)) {
+ if ((temp_val > final_e)) {
+ final_e = (WORD16)temp_val;
+ }
}
}
}
@@ -867,10 +908,23 @@ IA_ERRORCODE ixheaacd_calc_sbrenvelope(
pstr_common_tables);
}
- if ((start_pos < MAX_COLS)) {
- noise_e = adj_e;
- } else {
- noise_e = final_e;
+ if (max_cols != 30)
+ {
+ if ((start_pos < MAX_COLS)) {
+ noise_e = adj_e;
+ }
+ else {
+ noise_e = final_e;
+ }
+ }
+ else
+ {
+ if ((start_pos < max_cols)) {
+ noise_e = adj_e;
+ }
+ else {
+ noise_e = final_e;
+ }
}
bands = num_sub_bands - skip_bands;
@@ -894,7 +948,7 @@ IA_ERRORCODE ixheaacd_calc_sbrenvelope(
noise_level_mant, nrg_sine, start_pos, end_pos, input_e, adj_e, final_e,
ptr_frame_data->max_qmf_subband_aac, lb_scale, noise_absc_flag,
smooth_length, anal_buf_real_mant, anal_buf_imag_mant, low_pow_flag,
- ptr_sbr_tables);
+ ptr_sbr_tables, max_cols);
}
first_start = ptr_border_vec[0] * SBR_TIME_STEP;
@@ -910,10 +964,20 @@ IA_ERRORCODE ixheaacd_calc_sbrenvelope(
ptr_frame_data->max_qmf_subband_aac, sub_band_end, 0, first_start,
low_pow_flag);
- reserve = (*ixheaacd_ixheaacd_expsubbandsamples)(
+ if (max_cols != 30)
+ {
+ reserve = (*ixheaacd_ixheaacd_expsubbandsamples)(
anal_buf_real_mant, anal_buf_imag_mant,
ptr_frame_data->max_qmf_subband_aac, sub_band_end, first_start,
MAX_COLS, low_pow_flag);
+ }
+ else
+ {
+ reserve = (*ixheaacd_ixheaacd_expsubbandsamples)(
+ anal_buf_real_mant, anal_buf_imag_mant,
+ ptr_frame_data->max_qmf_subband_aac, sub_band_end, first_start,
+ max_cols, low_pow_flag);
+ }
}
}
@@ -994,7 +1058,7 @@ VOID ixheaacd_equalize_filt_buff_exp(WORD16 *ptr_filt_buf, WORD16 *nrg_gain,
}
}
-static PLATFORM_INLINE VOID ixheaacd_filt_buf_update(WORD16 *ptr_filt_buf,
+VOID ixheaacd_filt_buf_update(WORD16 *ptr_filt_buf,
WORD16 *ptr_filt_buf_noise,
WORD16 *nrg_gain,
WORD16 *noise_level_mant,
diff --git a/decoder/ixheaacd_env_calc.h b/decoder/ixheaacd_env_calc.h
index 139dae1..16e374c 100644
--- a/decoder/ixheaacd_env_calc.h
+++ b/decoder/ixheaacd_env_calc.h
@@ -50,15 +50,11 @@ VOID ixheaacd_derive_lim_band_tbl(
const ia_patch_param_struct *p_str_patch_param, WORD16 num_patches,
ixheaacd_misc_tables *pstr_common_tables);
-PLATFORM_INLINE VOID ixheaacd_equalize_filt_buff_exp(WORD16 *ptr_filt_buf,
- WORD16 *nrg_gain_mant,
- WORD32 subbands);
-
-static PLATFORM_INLINE VOID ixheaacd_filt_buf_update(WORD16 *filt_buf_mant,
- WORD16 *ptr_filt_buf_noise,
- WORD16 *nrg_gain_mant,
- WORD16 *noise_level_mant,
- WORD32 num_sub_bands);
+VOID ixheaacd_filt_buf_update(WORD16 *filt_buf_mant,
+ WORD16 *ptr_filt_buf_noise,
+ WORD16 *nrg_gain_mant,
+ WORD16 *noise_level_mant,
+ WORD32 num_sub_bands);
VOID ixheaacd_noise_level_rescaling(WORD16 *noise_level_mant, WORD32 diff,
WORD32 num_sub_bands,
@@ -180,7 +176,7 @@ VOID ixheaacd_subbandgain_calc(WORD16 e_orig_mant_matrix, WORD16 tmp_noise_mant,
WORD16 *ptr_nrg_sine_m,
ixheaacd_misc_tables *pstr_common_tables);
-PLATFORM_INLINE VOID ixheaacd_equalize_filt_buff_exp(WORD16 *ptr_filt_buf,
+VOID ixheaacd_equalize_filt_buff_exp(WORD16 *ptr_filt_buf,
WORD16 *nrg_gain,
WORD32 subbands);
diff --git a/decoder/ixheaacd_env_dec.c b/decoder/ixheaacd_env_dec.c
index ac8b3c9..c53ec8f 100644
--- a/decoder/ixheaacd_env_dec.c
+++ b/decoder/ixheaacd_env_dec.c
@@ -576,13 +576,14 @@ VOID ixheaacd_sbr_env_dequant_coup(
(1 + pow(2, temp_r - pan_offset[1])));
}
}
-WORD32 ixheaacd_dec_sbrdata(ia_sbr_header_data_struct *ptr_header_data_ch_0,
- ia_sbr_header_data_struct *ptr_header_data_ch_1,
- ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_0,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
- ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_1,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
- ixheaacd_misc_tables *ptr_common_tables) {
+IA_ERRORCODE ixheaacd_dec_sbrdata(
+ ia_sbr_header_data_struct *ptr_header_data_ch_0,
+ ia_sbr_header_data_struct *ptr_header_data_ch_1,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_0,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_1,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
+ ixheaacd_misc_tables *ptr_common_tables, WORD32 ldmps_present) {
FLAG error_code;
WORD32 err = 0;
WORD32 usac_flag = ptr_header_data_ch_0->usac_flag;
@@ -595,10 +596,8 @@ WORD32 ixheaacd_dec_sbrdata(ia_sbr_header_data_struct *ptr_header_data_ch_0,
err = ixheaacd_calc_noise_floor(ptr_header_data_ch_0, ptr_sbr_data_ch_0,
ptr_prev_data_ch_0);
-
- if (err == (WORD32)IA_FATAL_ERROR) return (WORD32)IA_FATAL_ERROR;
-
- if (!ptr_sbr_data_ch_0->coupling_mode && usac_flag) {
+ if (err) return err;
+ if ((!ptr_sbr_data_ch_0->coupling_mode && usac_flag) || ldmps_present) {
ptr_sbr_data_ch_0->num_noise_sfac =
ptr_header_data_ch_0->pstr_freq_band_data->num_nf_bands *
ptr_sbr_data_ch_0->str_frame_info_details.num_noise_env;
@@ -656,18 +655,20 @@ WORD32 ixheaacd_dec_sbrdata(ia_sbr_header_data_struct *ptr_header_data_ch_0,
return 0;
}
-WORD32 ixheaacd_dec_envelope(ia_sbr_header_data_struct *ptr_header_data,
- ia_sbr_frame_info_data_struct *ptr_sbr_data,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
- ixheaacd_misc_tables *pstr_common_tables) {
+IA_ERRORCODE ixheaacd_dec_envelope(
+ ia_sbr_header_data_struct *ptr_header_data,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
+ ixheaacd_misc_tables *pstr_common_tables) {
FLAG error_code;
WORD32 err;
WORD16 env_sf_local_arr[MAX_FREQ_COEFFS];
WORD32 usac_flag = ptr_header_data->usac_flag;
WORD32 temp_1 =
ptr_prev_data_ch_0->end_position - ptr_header_data->num_time_slots;
- if (temp_1 < 0) return -1;
+
+ if (temp_1 < 0) return IA_FATAL_ERROR;
temp_1 = ptr_sbr_data->str_frame_info_details.border_vec[0] - temp_1;
if ((!ptr_header_data->err_flag_prev) && (!ptr_header_data->err_flag) &&
diff --git a/decoder/ixheaacd_env_dec.h b/decoder/ixheaacd_env_dec.h
index b0eaa7e..2e9ad26 100644
--- a/decoder/ixheaacd_env_dec.h
+++ b/decoder/ixheaacd_env_dec.h
@@ -20,13 +20,14 @@
#ifndef IXHEAACD_ENV_DEC_H
#define IXHEAACD_ENV_DEC_H
-WORD32 ixheaacd_dec_sbrdata(ia_sbr_header_data_struct *ptr_header_data_ch_0,
- ia_sbr_header_data_struct *ptr_header_data_ch_1,
- ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_0,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
- ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_1,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
- ixheaacd_misc_tables *ptr_common_tables);
+IA_ERRORCODE ixheaacd_dec_sbrdata(
+ ia_sbr_header_data_struct *ptr_header_data_ch_0,
+ ia_sbr_header_data_struct *ptr_header_data_ch_1,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_0,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_0,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data_ch_1,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
+ ixheaacd_misc_tables *ptr_common_tables, WORD32 ldmps_present);
IA_ERRORCODE ixheaacd_dec_sbrdata_for_pvc(
ia_sbr_header_data_struct *ptr_header_data,
@@ -56,11 +57,12 @@ VOID ixheaacd_harm_idx_onethree(FLAG noise_absc_flag, WORD16 num_subband,
WORD16 *ptr_sine_level_buf, WORD16 noise_e,
WORD freq_inv_flag, WORD32 harm_index);
-WORD32 ixheaacd_dec_envelope(ia_sbr_header_data_struct *ptr_header_data,
- ia_sbr_frame_info_data_struct *ptr_sbr_data,
- ia_sbr_prev_frame_data_struct *ptr_prev_data,
- ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
- ixheaacd_misc_tables *pstr_common_tables);
+IA_ERRORCODE ixheaacd_dec_envelope(
+ ia_sbr_header_data_struct *ptr_header_data,
+ ia_sbr_frame_info_data_struct *ptr_sbr_data,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data,
+ ia_sbr_prev_frame_data_struct *ptr_prev_data_ch_1,
+ ixheaacd_misc_tables *pstr_common_tables);
VOID ixheaacd_lean_sbrconcealment(ia_sbr_header_data_struct *ptr_header_data,
ia_sbr_frame_info_data_struct *ptr_sbr_data,
diff --git a/decoder/ixheaacd_env_extr.c b/decoder/ixheaacd_env_extr.c
index 11d5660..5c0e3db 100644
--- a/decoder/ixheaacd_env_extr.c
+++ b/decoder/ixheaacd_env_extr.c
@@ -337,6 +337,8 @@ WORD32 ixheaacd_sbr_read_header_data(
ia_sbr_header_data_struct *pstr_sbr_header, ia_bit_buf_struct *it_bit_buff,
FLAG stereo_flag, ia_sbr_header_data_struct *pstr_sbr_dflt_header) {
ia_sbr_header_data_struct prev_header_info;
+ prev_header_info.start_freq = 0;
+ prev_header_info.noise_bands = 0;
FLAG header_extra_1 = 0, header_extra_2 = 0;
WORD32 tmp;
WORD32 usac_independency_flag = pstr_sbr_header->usac_independency_flag;
@@ -536,12 +538,26 @@ static WORD16 ixheaacd_validate_frame_info(
if (start_pos > SBR_OV_SLOTS) return 0;
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
- if (end_pos < SBR_TIME_SLOTS) return 0;
+ if (num_time_slots != 15)
+ {
+ if (end_pos < SBR_TIME_SLOTS) return 0;
+ }
+ else
+ {
+ if (end_pos < num_time_slots) return 0;
+ }
} else {
if (end_pos < num_time_slots) return 0;
}
- if (end_pos > add_d(SBR_TIME_SLOTS, SBR_OV_SLOTS)) return 0;
+ if (num_time_slots != 15)
+ {
+ if (end_pos > add_d(SBR_TIME_SLOTS, SBR_OV_SLOTS)) return 0;
+ }
+ else
+ {
+ if (end_pos > add_d(num_time_slots, SBR_OV_SLOTS)) return 0;
+ }
for (i = 0; i < num_env_sf; i++) {
if (pstr_frame_info->border_vec[i] > pstr_frame_info->border_vec[i + 1])
@@ -719,7 +735,8 @@ IA_ERRORCODE ixheaacd_sbr_read_sce(
}
} else {
if (!ixheaacd_sbr_time_freq_grid_info(it_bit_buff, ptr_frame_data,
- env_extr_tables_ptr))
+ env_extr_tables_ptr,
+ ptr_header_data->num_time_slots))
return 0;
}
@@ -746,7 +763,8 @@ IA_ERRORCODE ixheaacd_sbr_read_sce(
}
ptr_frame_data->num_time_slots = ptr_header_data->num_time_slots;
if (!ixheaacd_sbr_time_freq_grid_info(it_bit_buff, ptr_frame_data,
- env_extr_tables_ptr))
+ env_extr_tables_ptr,
+ ptr_header_data->num_time_slots))
return 0;
if (!ixheaacd_validate_frame_info(&ptr_frame_data->str_frame_info_details,
@@ -906,7 +924,8 @@ IA_ERRORCODE ixheaacd_sbr_read_cpe(
}
} else {
if (!ixheaacd_sbr_time_freq_grid_info(it_bit_buff, ptr_frame_data[i],
- env_extr_tables_ptr))
+ env_extr_tables_ptr,
+ ptr_header_data->num_time_slots))
return 0;
}
@@ -1242,14 +1261,12 @@ WORD16 ixheaacd_read_sbr_env_data(
WORD32 lav;
WORD32 i;
WORD16 no_band[MAX_ENVELOPES];
- WORD32 delta;
WORD32 amp_res, num_env, env_data_tbl_comp_factor, start_bits,
start_bits_balance;
WORD16 *p_freq_res = ptr_frame_data->str_frame_info_details.freq_res;
WORD16 *p_num_sf_bands = ptr_header_data->pstr_freq_band_data->num_sf_bands;
ia_huffman_data_type hcb_t, hcb_f;
- delta = 0;
amp_res = ptr_header_data->amp_res;
num_env = ptr_frame_data->str_frame_info_details.num_env;
@@ -1335,7 +1352,7 @@ WORD16 ixheaacd_read_sbr_env_data(
IA_ERRORCODE ixheaacd_extract_frame_info_ld(
ia_bit_buf_struct *it_bit_buff,
ia_sbr_frame_info_data_struct *h_frame_data) {
- int abs_bord_lead = 0, num_rel_lead = 0, num_rel_trail = 0, bs_num_env = 0,
+ int abs_bord_lead = 0, num_rel_lead = 0, bs_num_env = 0,
frame_class, temp, env, k, abs_bord_trail = 0, middle_bord = 0,
bs_num_noise, transient_env_temp = 0, bs_transient_position = 0;
@@ -1387,7 +1404,6 @@ IA_ERRORCODE ixheaacd_extract_frame_info_ld(
abs_bord_lead = 0;
abs_bord_trail = numTimeSlots;
num_rel_lead = bs_num_env - 1;
- num_rel_trail = 0;
for (k = 0; k < num_rel_lead; k++) {
rel_bord_lead[k] = ixheaacd_ld_env_table_time_slot[num_rel_lead - 1];
@@ -1554,7 +1570,7 @@ WORD32 ixheaacd_pvc_time_freq_grid_info(
WORD16 ixheaacd_sbr_time_freq_grid_info(
ia_bit_buf_struct *it_bit_buff,
ia_sbr_frame_info_data_struct *ptr_frame_data,
- ia_env_extr_tables_struct *env_extr_tables_ptr) {
+ ia_env_extr_tables_struct *env_extr_tables_ptr, WORD16 number_of_time_slots) {
WORD32 i, k, bs_num_rel = 0;
WORD32 bs_pointer_bits = 0, bs_num_env = 0, border, bs_pointer,
bs_var_bord = 0, temp = 0;
@@ -1572,7 +1588,16 @@ WORD16 ixheaacd_sbr_time_freq_grid_info(
temp =
ixheaacd_read_bits_buf(it_bit_buff, SBR_ENV_BITS + SBR_FRQ_RES_BITS);
bs_num_env = (temp & 0x6) >> SBR_FRQ_RES_BITS;
- p_fixfix_tab = &env_extr_tables_ptr->sbr_frame_info1_2_4_16[bs_num_env];
+
+ if (number_of_time_slots != 15)
+ {
+ p_fixfix_tab = &env_extr_tables_ptr->sbr_frame_info1_2_4_16[bs_num_env];
+ }
+ else
+ {
+ p_fixfix_tab = &env_extr_tables_ptr->sbr_frame_info1_2_4_16[bs_num_env + 4];
+ }
+
memcpy(p_frame_info, p_fixfix_tab, sizeof(ia_frame_info_struct));
bs_num_env = (1 << bs_num_env);
freq_res_0 = temp & 0x1;
@@ -1588,7 +1613,16 @@ WORD16 ixheaacd_sbr_time_freq_grid_info(
bs_var_bord = bs_var_bord >> SBR_NUM_BITS;
bs_num_env = bs_num_rel + 1;
p_frame_info->border_vec[0] = 0;
- border = bs_var_bord + SBR_TIME_SLOTS;
+
+ if (number_of_time_slots != 15)
+ {
+ border = bs_var_bord + SBR_TIME_SLOTS;
+ }
+ else
+ {
+ border = bs_var_bord + number_of_time_slots;
+ }
+
p_frame_info->border_vec[bs_num_env] = border;
for (k = bs_num_rel; k > 0; k--) {
temp = ixheaacd_read_bits_buf(it_bit_buff, SBR_REL_BITS);
@@ -1632,10 +1666,27 @@ WORD16 ixheaacd_sbr_time_freq_grid_info(
for (k = 1; k <= bs_num_rel; k++) {
temp = ixheaacd_read_bits_buf(it_bit_buff, SBR_REL_BITS);
border = border + ((temp << 1) + 2);
- if (border > SBR_TIME_SLOTS) border = SBR_TIME_SLOTS;
+
+ if (number_of_time_slots != 15)
+ {
+ if (border > SBR_TIME_SLOTS) border = SBR_TIME_SLOTS;
+ }
+ else
+ {
+ if (border > number_of_time_slots) border = number_of_time_slots;
+ }
+
p_frame_info->border_vec[k] = border;
}
- p_frame_info->border_vec[k] = SBR_TIME_SLOTS;
+
+ if (number_of_time_slots != 15)
+ {
+ p_frame_info->border_vec[k] = SBR_TIME_SLOTS;
+ }
+ else
+ {
+ p_frame_info->border_vec[k] = number_of_time_slots;
+ }
bs_pointer_bits = pointer_bits_array[bs_num_rel];
@@ -1673,8 +1724,18 @@ WORD16 ixheaacd_sbr_time_freq_grid_info(
case VARVAR:
abs_bord_lead = ixheaacd_read_bits_buf(
it_bit_buff, 2 * SBR_VAR_BORD_BITS + 2 * SBR_NUM_BITS);
- abs_bord_trail =
+
+ if (number_of_time_slots != 15)
+ {
+ abs_bord_trail =
(((abs_bord_lead & 0x30) >> (2 * SBR_NUM_BITS)) + SBR_TIME_SLOTS);
+ }
+ else
+ {
+ abs_bord_trail =
+ (((abs_bord_lead & 0x30) >> (2 * SBR_NUM_BITS)) + number_of_time_slots);
+ }
+
num_rel_trail = ((abs_bord_lead & 0xc) >> SBR_NUM_BITS);
num_rel_lead = (abs_bord_lead & 0x3);
abs_bord_lead = abs_bord_lead >> (SBR_VAR_BORD_BITS + 2 * SBR_NUM_BITS);
diff --git a/decoder/ixheaacd_env_extr.h b/decoder/ixheaacd_env_extr.h
index 4c79e95..b6eea96 100644
--- a/decoder/ixheaacd_env_extr.h
+++ b/decoder/ixheaacd_env_extr.h
@@ -149,7 +149,7 @@ WORD32 ixheaacd_pvc_time_freq_grid_info(
WORD16 ixheaacd_sbr_time_freq_grid_info(
ia_bit_buf_struct *it_bit_buff,
ia_sbr_frame_info_data_struct *ptr_frame_data,
- ia_env_extr_tables_struct *env_extr_tables_ptr);
+ ia_env_extr_tables_struct *env_extr_tables_ptr, WORD16 number_of_timeslots);
WORD16 ixheaacd_read_sbr_env_data(
ia_sbr_header_data_struct *ptr_header_data,
@@ -177,7 +177,7 @@ IA_ERRORCODE ixheaacd_createlimiterbands(
WORD32 b_patching_mode, WORD32 upsamp_4_flag,
struct ixheaacd_lpp_trans_patch *patch_param);
-VOID ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
+WORD32 ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
FLOAT32 *qmf_real, FLOAT32 *qmf_imag,
WORD32 num_sample, WORD32 sub_band_start,
WORD32 num_subband, WORD32 gamma_idx);
diff --git a/decoder/ixheaacd_error_codes.h b/decoder/ixheaacd_error_codes.h
index 4820704..4794b96 100644
--- a/decoder/ixheaacd_error_codes.h
+++ b/decoder/ixheaacd_error_codes.h
@@ -41,35 +41,33 @@
/* Non Fatal Errors */
#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_PCM_WDSZ 0x00000800
#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DOWNMIX 0x00000801
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_OUT08KHZ 0x00000802
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_OUT16KHZ 0x00000803
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_TOSTEREO 0x00000804
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DSAMPLE 0x00000805
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMEOK 0x00000806
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_MP4FLAG 0x00000807
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_MAX_CHANNEL 0x00000808
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_COUP_CHANNEL 0x00000809
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_FEATURE_NOT_SUPPORTED 0x0000080A
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_SYNCFLAG 0x0000080B
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_SBRUPFLAG 0x0000080C
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_TOSTEREO 0x00000802
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DSAMPLE 0x00000803
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMEOK 0x00000804
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_MP4FLAG 0x00000805
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_MAX_CHANNEL 0x00000806
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_COUP_CHANNEL 0x00000807
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_FEATURE_NOT_SUPPORTED 0x00000808
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_SYNCFLAG 0x00000809
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_SBRUPFLAG 0x0000080A
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_LOASFLAG 0x0000080D
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_LOASFLAG 0x0000080B
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRCFLAG 0x0000080E
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_CUT 0x0000080F
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_BOOST 0x00000810
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_TARGET 0x00000811
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMSZ 0x00000812
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_ELDSBR 0x00000813
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_LD_CONFIG 0x00000814
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_DELAY_MODE 0x00000815
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_DECODE_TYPE 0x00000816
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_PEAK_LIM_FLAG 0x00000817
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_CTRL_PARAM_IDX 0x00000818
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_GAIN_DELAY 0x00000819
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_CONST_DELAY_MODE 0x0000081A
-#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_EFFECT_TYPE 0x0000081B
-#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_TARGET_LOUDNESS 0x0000081C
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRCFLAG 0x0000080C
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_CUT 0x0000080D
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_BOOST 0x0000080E
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_DRC_TARGET 0x0000080F
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMSZ 0x00000810
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_LD_CONFIG 0x00000811
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_DELAY_MODE 0x00000812
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_DECODE_TYPE 0x00000813
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_PEAK_LIM_FLAG 0x00000814
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_CTRL_PARAM_IDX 0x00000815
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_GAIN_DELAY 0x00000816
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_CONST_DELAY_MODE 0x00000817
+#define IA_ENHAACPLUS_DEC_CONFIG_NON_FATAL_INVALID_EFFECT_TYPE 0x00000818
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_TARGET_LOUDNESS 0x00000819
+#define IA_ENHAACPLUS_DEC_CONFIG_NONFATAL_INVALID_FRAMELENGTHFLAG 0x0000081A
// Fatal Errors
#define IA_ENHAACPLUS_DEC_CONFIG_FATAL_INVALID_SAMPLE_RATE 0xFFFF8800
diff --git a/decoder/ixheaacd_esbr_envcal.c b/decoder/ixheaacd_esbr_envcal.c
index 492287d..da6aa2f 100644
--- a/decoder/ixheaacd_esbr_envcal.c
+++ b/decoder/ixheaacd_esbr_envcal.c
@@ -73,7 +73,9 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
FLOAT32 input_real1[][64],
FLOAT32 input_imag1[][64],
WORD32 x_over_qmf[MAX_NUM_PATCHES],
- FLOAT32 *scratch_buff, FLOAT32 *env_out) {
+ FLOAT32 *scratch_buff, FLOAT32 *env_out,
+ WORD32 ldmps_present) {
+ WORD32 error_code = 0;
WORD8 harmonics[64];
FLOAT32(*env_tmp)[48];
FLOAT32(*noise_level_pvc)[48];
@@ -151,6 +153,8 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
WORD32 rate = upsamp_4_flag ? 4 : 2;
+ if (ldmps_present == 1) rate = 1;
+
env_tmp = frame_data->env_tmp;
noise_level_pvc = frame_data->noise_level_pvc;
nrg_est_pvc = frame_data->nrg_est_pvc;
@@ -163,10 +167,10 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
freq_band_table[1] =
frame_data->pstr_sbr_header->pstr_freq_band_data->freq_band_table[1];
- if (reset) {
+ if (reset || (ldmps_present == 1)) {
esbr_start_up = 1;
esbr_start_up_pvc = 1;
- phase_index = 0;
+ if (reset) phase_index = 0;
if (ixheaacd_createlimiterbands(
(*lim_table), (*gate_mode),
frame_data->pstr_sbr_header->pstr_freq_band_data->freq_band_tbl_lo,
@@ -686,7 +690,7 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
}
}
- if (esbr_start_up) {
+ if (esbr_start_up && (ldmps_present != 1)) {
for (n = 0; n < 4; n++) {
memcpy((*e_gain)[n], nrg_gain, num_subbands * sizeof(FLOAT32));
memcpy((*noise_buf)[n], noise_level,
@@ -701,6 +705,9 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
ptr_real_buf = *(input_real + l) + sub_band_start;
ptr_imag_buf = *(input_imag + l) + sub_band_start;
+ freq_inv = 1;
+ if ((ldmps_present == 1) && (sub_band_start & 1)) freq_inv = -1;
+
for (k = 0; k < num_subbands; k++) {
(*e_gain)[4][k] = nrg_gain[k];
(*noise_buf)[4][k] = noise_level[k];
@@ -713,14 +720,27 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
phase_index = (phase_index + 1) & 511;
sb_noise = (nrg_tone[k] != 0 || noise_absc_flag) ? 0 : sb_noise;
- *ptr_real_buf = *ptr_real_buf * sb_gain +
+ if (ldmps_present == 1) {
+ *ptr_real_buf = *ptr_real_buf * sb_gain +
+ sb_noise * ixheaacd_random_phase[phase_index][0] +
+ nrg_tone[k] * ixheaacd_hphase_tbl[0][harm_index];
+ *ptr_imag_buf =
+ *ptr_imag_buf * sb_gain +
+ sb_noise * ixheaacd_random_phase[phase_index][1] +
+ nrg_tone[k] * freq_inv * ixheaacd_hphase_tbl[1][harm_index];
+
+ freq_inv = -freq_inv;
+ } else {
+ *ptr_real_buf = *ptr_real_buf * sb_gain +
sb_noise * ixheaacd_random_phase[phase_index][0];
- *ptr_imag_buf = *ptr_imag_buf * sb_gain +
+ *ptr_imag_buf = *ptr_imag_buf * sb_gain +
sb_noise * ixheaacd_random_phase[phase_index][1];
+ }
ptr_real_buf++;
ptr_imag_buf++;
}
+ if (ldmps_present == 1) harm_index = (harm_index + 1) & 3;
memcpy(temp, (*e_gain)[0], 64 * sizeof(FLOAT32));
for (n = 0; n < 4; n++)
@@ -732,7 +752,8 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
memcpy((*noise_buf)[4], temp, 64 * sizeof(FLOAT32));
}
- ixheaacd_apply_inter_tes(
+ if (ldmps_present != 1) {
+ error_code = ixheaacd_apply_inter_tes(
*(input_real1 + rate * p_frame_info->border_vec[i]),
*(input_imag1 + rate * p_frame_info->border_vec[i]),
*(input_real + rate * p_frame_info->border_vec[i]),
@@ -740,6 +761,10 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
rate * p_frame_info->border_vec[i + 1] -
rate * p_frame_info->border_vec[i],
sub_band_start, num_subbands, frame_data->inter_temp_shape_mode[i]);
+ if (error_code != 0)
+ {
+ return error_code;
+ }
for (l = rate * p_frame_info->border_vec[i];
l < rate * p_frame_info->border_vec[i + 1]; l++) {
@@ -762,6 +787,7 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
}
}
}
+}
for (i = 0; i < 64; i++) {
(*harm_flag_varlen_prev)[i] = (*harm_flag_prev)[i];
@@ -777,6 +803,7 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
frame_data->env_short_flag_prev = -1;
}
+ if (ldmps_present != 1) {
memcpy((VOID *)&frame_data->str_frame_info_prev,
(VOID *)&frame_data->str_frame_info_details,
sizeof(ia_frame_info_struct));
@@ -798,6 +825,7 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
num_nf_bands +
i];
}
+}
frame_data->harm_index = harm_index;
frame_data->phase_index = phase_index;
@@ -911,10 +939,10 @@ IA_ERRORCODE ixheaacd_createlimiterbands(
return IA_NO_ERROR;
}
-VOID ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
- FLOAT32 *qmf_real, FLOAT32 *qmf_imag,
- WORD32 num_sample, WORD32 sub_band_start,
- WORD32 num_subband, WORD32 gamma_idx) {
+WORD32 ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
+ FLOAT32 *qmf_real, FLOAT32 *qmf_imag,
+ WORD32 num_sample, WORD32 sub_band_start,
+ WORD32 num_subband, WORD32 gamma_idx) {
WORD32 sub_band_end = sub_band_start + num_subband;
FLOAT32 subsample_power_high[TIMESLOT_BUFFER_SIZE],
subsample_power_low[TIMESLOT_BUFFER_SIZE];
@@ -925,6 +953,10 @@ VOID ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
FLOAT32 gamma = ixheaacd_q_gamma_table[gamma_idx];
WORD32 i, j;
+ if (num_sample > TIMESLOT_BUFFER_SIZE)
+ {
+ return IA_FATAL_ERROR;
+ }
if (gamma > 0) {
for (i = 0; i < num_sample; i++) {
memcpy(&qmf_real[64 * i], &qmf_real1[64 * i],
@@ -978,4 +1010,5 @@ VOID ixheaacd_apply_inter_tes(FLOAT32 *qmf_real1, FLOAT32 *qmf_imag1,
}
}
}
+ return 0;
}
diff --git a/decoder/ixheaacd_esbr_fft.c b/decoder/ixheaacd_esbr_fft.c
index 8a5b616..97a6eff 100644
--- a/decoder/ixheaacd_esbr_fft.c
+++ b/decoder/ixheaacd_esbr_fft.c
@@ -36,8 +36,8 @@
} while (0)
extern const FLOAT32 ixheaacd_twiddle_table_fft_float[514];
-const FLOAT32 ixheaacd_twidle_tbl_48[64];
-const FLOAT32 ixheaacd_twidle_tbl_24[32];
+extern const FLOAT32 ixheaacd_twidle_tbl_48[64];
+extern const FLOAT32 ixheaacd_twidle_tbl_24[32];
void ixheaacd_real_synth_fft_p2(FLOAT32 *ptr_x, FLOAT32 *ptr_y,
WORD32 npoints) {
@@ -522,7 +522,6 @@ void ixheaacd_real_synth_fft_p2(FLOAT32 *ptr_x, FLOAT32 *ptr_y,
x1r = *ptr_y;
x1i = *(ptr_y + 1);
-
tmp = (FLOAT32)(((FLOAT32)x1r * W4) - ((FLOAT32)x1i * W1));
x1i = (FLOAT32)(((FLOAT32)x1r * W1) + ((FLOAT32)x1i * W4));
x1r = tmp;
diff --git a/decoder/ixheaacd_ext_ch_ele.c b/decoder/ixheaacd_ext_ch_ele.c
index f72526d..9c3f1ac 100644
--- a/decoder/ixheaacd_ext_ch_ele.c
+++ b/decoder/ixheaacd_ext_ch_ele.c
@@ -515,8 +515,8 @@ static VOID ixheaacd_cplx_pred_upmixing(
for (grp = 0, i = 0; grp < pstr_sfb_info->num_groups; grp++) {
for (grp_len = 0; grp_len < pstr_sfb_info->group_len[grp]; grp_len++) {
for (sfb = 0; sfb < pstr_sfb_info->sfb_per_sbk; sfb++) {
- alpha_q_re_temp = alpha_q_re[grp][sfb] * 1677722;
- alpha_q_im_temp = alpha_q_im[grp][sfb] * 1677722;
+ alpha_q_re_temp = ixheaacd_sat64_32(ixheaacd_mult32x32in64(alpha_q_re[grp][sfb], 1677722));
+ alpha_q_im_temp = ixheaacd_sat64_32(ixheaacd_mult32x32in64(alpha_q_im[grp][sfb], 1677722));
if (cplx_pred_used[grp][sfb]) {
for (k = 0; k < pstr_sfb_info->sfb_width[sfb]; k++, i++) {
WORD32 mid_side = ixheaacd_sub32_sat(
@@ -542,7 +542,7 @@ static VOID ixheaacd_cplx_pred_upmixing(
for (grp = 0, i = 0; grp < pstr_sfb_info->num_groups; grp++) {
for (grp_len = 0; grp_len < pstr_sfb_info->group_len[grp]; grp_len++) {
for (sfb = 0; sfb < pstr_sfb_info->sfb_per_sbk; sfb++) {
- alpha_q_re_temp = alpha_q_re[grp][sfb] * 1677722;
+ alpha_q_re_temp = ixheaacd_sat64_32(ixheaacd_mult32x32in64(alpha_q_re[grp][sfb], 1677722));
if (cplx_pred_used[grp][sfb]) {
for (k = 0; k < pstr_sfb_info->sfb_width[sfb]; k++, i++) {
WORD32 mid_side = ixheaacd_sub32_sat(
diff --git a/decoder/ixheaacd_fft.c b/decoder/ixheaacd_fft.c
index 60482d6..f6b9b09 100644
--- a/decoder/ixheaacd_fft.c
+++ b/decoder/ixheaacd_fft.c
@@ -28,6 +28,7 @@
#include "ixheaacd_function_selector.h"
extern const WORD32 ixheaacd_twiddle_table_fft_32x32[514];
+extern const FLOAT32 ixheaacd_twiddle_table_fft[514];
extern const FLOAT32 ixheaacd_twiddle_table_fft_flt[16];
extern const WORD32 ixheaacd_twiddle_table_3pr[1155];
extern const WORD32 ixheaacd_twiddle_table_3pi[1155];
@@ -864,6 +865,550 @@ VOID ixheaacd_mps_synth_calc_fft(FLOAT32 *ptr_xr, FLOAT32 *ptr_xi,
}
}
+VOID ixheaacd_mps_complex_fft(FLOAT32 *xr, FLOAT32 *xi, WORD32 nlength) {
+ WORD32 i, j, k, n_stages, h2;
+ FLOAT32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
+ WORD32 del, nodespacing, in_loop_cnt;
+ WORD32 dig_rev_shift;
+ WORD32 not_power_4;
+ FLOAT32 ptr_x[256];
+ FLOAT32 y[256];
+ WORD32 npoints = nlength;
+ FLOAT32 *ptr_y = y;
+ const FLOAT32 *ptr_w;
+ dig_rev_shift = ixheaacd_norm32(npoints) + 1 - 16;
+ n_stages = 30 - ixheaacd_norm32(npoints);
+ not_power_4 = n_stages & 1;
+
+ n_stages = n_stages >> 1;
+
+
+ for (i = 0; i<nlength; i++)
+ {
+ ptr_x[2 * i] = xr[i];
+ ptr_x[2 * i + 1] = xi[i];
+ }
+
+ ptr_w = ixheaacd_twiddle_table_fft;
+
+ for (i = 0; i<npoints; i += 4)
+ {
+ FLOAT32 *inp = ptr_x;
+
+ DIG_REV(i, dig_rev_shift, h2);
+ if (not_power_4)
+ {
+ h2 += 1;
+ h2 &= ~1;
+ }
+ inp += (h2);
+
+ x0r = *inp;
+ x0i = *(inp + 1);
+ inp += (npoints >> 1);
+
+ x1r = *inp;
+ x1i = *(inp + 1);
+ inp += (npoints >> 1);
+
+ x2r = *inp;
+ x2i = *(inp + 1);
+ inp += (npoints >> 1);
+
+ x3r = *inp;
+ x3i = *(inp + 1);
+
+ x0r = x0r + x2r;
+ x0i = x0i + x2i;
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i + x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i - (x3i * 2);
+
+ x0r = x0r + x1r;
+ x0i = x0i + x1i;
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + x3i;
+ x2i = x2i - x3r;
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *ptr_y++ = x0r;
+ *ptr_y++ = x0i;
+ *ptr_y++ = x2r;
+ *ptr_y++ = x2i;
+ *ptr_y++ = x1r;
+ *ptr_y++ = x1i;
+ *ptr_y++ = x3i;
+ *ptr_y++ = x3r;
+ }
+ ptr_y -= 2 * npoints;
+ del = 4;
+ nodespacing = 64;
+ in_loop_cnt = npoints >> 4;
+ for (i = n_stages - 1; i>0; i--)
+ {
+ const FLOAT32 *twiddles = ptr_w;
+ FLOAT32 *data = ptr_y;
+ FLOAT32 w1h, w2h, w3h, w1l, w2l, w3l;
+ WORD32 sec_loop_cnt;
+
+ for (k = in_loop_cnt; k != 0; k--)
+ {
+ x0r = (*data);
+ x0i = (*(data + 1));
+ data += (del << 1);
+
+ x1r = (*data);
+ x1i = (*(data + 1));
+ data += (del << 1);
+
+ x2r = (*data);
+ x2i = (*(data + 1));
+ data += (del << 1);
+
+ x3r = (*data);
+ x3i = (*(data + 1));
+ data -= 3 * (del << 1);
+
+ x0r = x0r + x2r;
+ x0i = x0i + x2i;
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i + x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i - (x3i * 2);
+
+ x0r = x0r + x1r;
+ x0i = x0i + x1i;
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + x3i;
+ x2i = x2i - x3r;
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *data = x0r;
+ *(data + 1) = x0i;
+ data += (del << 1);
+
+ *data = x2r;
+ *(data + 1) = x2i;
+ data += (del << 1);
+
+ *data = x1r;
+ *(data + 1) = x1i;
+ data += (del << 1);
+
+ *data = x3i;
+ *(data + 1) = x3r;
+ data += (del << 1);
+ }
+ data = ptr_y + 2;
+
+ sec_loop_cnt = (nodespacing * del);
+ sec_loop_cnt = (sec_loop_cnt / 4) + (sec_loop_cnt / 8) - (sec_loop_cnt / 16) \
+ + (sec_loop_cnt / 32) - (sec_loop_cnt / 64) + (sec_loop_cnt / 128) \
+ - (sec_loop_cnt / 256);
+ j = nodespacing;
+
+ for (j = nodespacing; j <= sec_loop_cnt; j += nodespacing)
+ {
+ w1h = *(twiddles + 2 * j);
+ w1l = *(twiddles + 2 * j + 1);
+ w2h = *(twiddles + 2 * (j << 1));
+ w2l = *(twiddles + 2 * (j << 1) + 1);
+ w3h = *(twiddles + 2 * j + 2 * (j << 1));
+ w3l = *(twiddles + 2 * j + 2 * (j << 1) + 1);
+
+ for (k = in_loop_cnt; k != 0; k--)
+ {
+ FLOAT32 tmp;
+ FLOAT32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
+
+ data += (del << 1);
+
+ x1r = *data;
+ x1i = *(data + 1);
+ data += (del << 1);
+
+ x2r = *data;
+ x2i = *(data + 1);
+ data += (del << 1);
+
+ x3r = *data;
+ x3i = *(data + 1);
+ data -= 3 * (del << 1);
+
+ tmp = (mult32X32float(x1r, w1l) - mult32X32float(x1i, w1h));
+ x1i = mac32X32float(mult32X32float(x1r, w1h), x1i, w1l);
+ x1r = tmp;
+
+ tmp = (mult32X32float(x2r, w2l) - mult32X32float(x2i, w2h));
+ x2i = mac32X32float(mult32X32float(x2r, w2h), x2i, w2l);
+ x2r = tmp;
+
+ tmp = (mult32X32float(x3r, w3l) - mult32X32float(x3i, w3h));
+ x3i = mac32X32float(mult32X32float(x3r, w3h), x3i, w3l);
+ x3r = tmp;
+
+ x0r = (*data);
+ x0i = (*(data + 1));
+
+ x0r = x0r + (x2r);
+ x0i = x0i + (x2i);
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i + x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i - (x3i * 2);
+
+ x0r = x0r + (x1r);
+ x0i = x0i + (x1i);
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + (x3i);
+ x2i = x2i - (x3r);
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *data = x0r;
+ *(data + 1) = x0i;
+ data += (del << 1);
+
+ *data = x2r;
+ *(data + 1) = x2i;
+ data += (del << 1);
+
+ *data = x1r;
+ *(data + 1) = x1i;
+ data += (del << 1);
+
+ *data = x3i;
+ *(data + 1) = x3r;
+ data += (del << 1);
+ }
+ data -= 2 * npoints;
+ data += 2;
+ }
+ for (; j <= (nodespacing * del) >> 1; j += nodespacing)
+ {
+ w1h = *(twiddles + 2 * j);
+ w2h = *(twiddles + 2 * (j << 1));
+ w3h = *(twiddles + 2 * j + 2 * (j << 1) - 512);
+ w1l = *(twiddles + 2 * j + 1);
+ w2l = *(twiddles + 2 * (j << 1) + 1);
+ w3l = *(twiddles + 2 * j + 2 * (j << 1) - 511);
+
+ for (k = in_loop_cnt; k != 0; k--)
+ {
+ FLOAT32 tmp;
+ FLOAT32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
+
+ data += (del << 1);
+
+ x1r = *data;
+ x1i = *(data + 1);
+ data += (del << 1);
+
+ x2r = *data;
+ x2i = *(data + 1);
+ data += (del << 1);
+
+ x3r = *data;
+ x3i = *(data + 1);
+ data -= 3 * (del << 1);
+
+ tmp = (mult32X32float(x1r, w1l) - mult32X32float(x1i, w1h));
+ x1i = mac32X32float(mult32X32float(x1r, w1h), x1i, w1l);
+ x1r = tmp;
+
+ tmp = (mult32X32float(x2r, w2l) - mult32X32float(x2i, w2h));
+ x2i = mac32X32float(mult32X32float(x2r, w2h), x2i, w2l);
+ x2r = tmp;
+
+ tmp = (mult32X32float(x3r, w3h) + mult32X32float(x3i, w3l));
+ x3i = -mult32X32float(x3r, w3l) + mult32X32float(x3i, w3h);
+ x3r = tmp;
+
+ x0r = (*data);
+ x0i = (*(data + 1));
+
+ x0r = x0r + (x2r);
+ x0i = x0i + (x2i);
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i + x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i - (x3i * 2);
+
+ x0r = x0r + (x1r);
+ x0i = x0i + (x1i);
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + (x3i);
+ x2i = x2i - (x3r);
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *data = x0r;
+ *(data + 1) = x0i;
+ data += (del << 1);
+
+ *data = x2r;
+ *(data + 1) = x2i;
+ data += (del << 1);
+
+ *data = x1r;
+ *(data + 1) = x1i;
+ data += (del << 1);
+
+ *data = x3i;
+ *(data + 1) = x3r;
+ data += (del << 1);
+ }
+ data -= 2 * npoints;
+ data += 2;
+ }
+ for (; j <= sec_loop_cnt * 2; j += nodespacing)
+ {
+ w1h = *(twiddles + 2 * j);
+ w2h = *(twiddles + 2 * (j << 1) - 512);
+ w3h = *(twiddles + 2 * j + 2 * (j << 1) - 512);
+ w1l = *(twiddles + 2 * j + 1);
+ w2l = *(twiddles + 2 * (j << 1) - 511);
+ w3l = *(twiddles + 2 * j + 2 * (j << 1) - 511);
+
+ for (k = in_loop_cnt; k != 0; k--)
+ {
+ FLOAT32 tmp;
+ FLOAT32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
+
+ data += (del << 1);
+
+ x1r = *data;
+ x1i = *(data + 1);
+ data += (del << 1);
+
+ x2r = *data;
+ x2i = *(data + 1);
+ data += (del << 1);
+
+ x3r = *data;
+ x3i = *(data + 1);
+ data -= 3 * (del << 1);
+
+ tmp = (mult32X32float(x1r, w1l) - mult32X32float(x1i, w1h));
+ x1i = mac32X32float(mult32X32float(x1r, w1h), x1i, w1l);
+ x1r = tmp;
+
+ tmp = (mult32X32float(x2r, w2h) + mult32X32float(x2i, w2l));
+ x2i = -mult32X32float(x2r, w2l) + mult32X32float(x2i, w2h);
+ x2r = tmp;
+
+ tmp = (mult32X32float(x3r, w3h) + mult32X32float(x3i, w3l));
+ x3i = -mult32X32float(x3r, w3l) + mult32X32float(x3i, w3h);
+ x3r = tmp;
+
+ x0r = (*data);
+ x0i = (*(data + 1));
+
+ x0r = x0r + (x2r);
+ x0i = x0i + (x2i);
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i + x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i - (x3i * 2);
+
+ x0r = x0r + (x1r);
+ x0i = x0i + (x1i);
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + (x3i);
+ x2i = x2i - (x3r);
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *data = x0r;
+ *(data + 1) = x0i;
+ data += (del << 1);
+
+ *data = x2r;
+ *(data + 1) = x2i;
+ data += (del << 1);
+
+ *data = x1r;
+ *(data + 1) = x1i;
+ data += (del << 1);
+
+ *data = x3i;
+ *(data + 1) = x3r;
+ data += (del << 1);
+ }
+ data -= 2 * npoints;
+ data += 2;
+ }
+ for (; j<nodespacing * del; j += nodespacing)
+ {
+ w1h = *(twiddles + 2 * j);
+ w2h = *(twiddles + 2 * (j << 1) - 512);
+ w3h = *(twiddles + 2 * j + 2 * (j << 1) - 1024);
+ w1l = *(twiddles + 2 * j + 1);
+ w2l = *(twiddles + 2 * (j << 1) - 511);
+ w3l = *(twiddles + 2 * j + 2 * (j << 1) - 1023);
+
+ for (k = in_loop_cnt; k != 0; k--)
+ {
+ FLOAT32 tmp;
+ FLOAT32 x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
+
+ data += (del << 1);
+
+ x1r = *data;
+ x1i = *(data + 1);
+ data += (del << 1);
+
+ x2r = *data;
+ x2i = *(data + 1);
+ data += (del << 1);
+
+ x3r = *data;
+ x3i = *(data + 1);
+ data -= 3 * (del << 1);
+
+ tmp = (mult32X32float(x1r, w1l) - mult32X32float(x1i, w1h));
+ x1i = mac32X32float(mult32X32float(x1r, w1h), x1i, w1l);
+ x1r = tmp;
+
+ tmp = (mult32X32float(x2r, w2h) + mult32X32float(x2i, w2l));
+ x2i = -mult32X32float(x2r, w2l) + mult32X32float(x2i, w2h);
+ x2r = tmp;
+
+ tmp = (-mult32X32float(x3r, w3l) + mult32X32float(x3i, w3h));
+ x3i = mac32X32float(mult32X32float(x3r, w3h), x3i, w3l);
+ x3r = tmp;
+
+ x0r = (*data);
+ x0i = (*(data + 1));
+
+ x0r = x0r + (x2r);
+ x0i = x0i + (x2i);
+ x2r = x0r - (x2r * 2);
+ x2i = x0i - (x2i * 2);
+ x1r = x1r + x3r;
+ x1i = x1i - x3i;
+ x3r = x1r - (x3r * 2);
+ x3i = x1i + (x3i * 2);
+
+ x0r = x0r + (x1r);
+ x0i = x0i + (x1i);
+ x1r = x0r - (x1r * 2);
+ x1i = x0i - (x1i * 2);
+ x2r = x2r + (x3i);
+ x2i = x2i - (x3r);
+ x3i = x2r - (x3i * 2);
+ x3r = x2i + (x3r * 2);
+
+ *data = x0r;
+ *(data + 1) = x0i;
+ data += (del << 1);
+
+ *data = x2r;
+ *(data + 1) = x2i;
+ data += (del << 1);
+
+ *data = x1r;
+ *(data + 1) = x1i;
+ data += (del << 1);
+
+ *data = x3i;
+ *(data + 1) = x3r;
+ data += (del << 1);
+ }
+ data -= 2 * npoints;
+ data += 2;
+ }
+ nodespacing >>= 2;
+ del <<= 2;
+ in_loop_cnt >>= 2;
+ }
+ if (not_power_4)
+ {
+ const FLOAT32 *twiddles = ptr_w;
+ nodespacing <<= 1;
+
+ for (j = del / 2; j != 0; j--)
+ {
+ FLOAT32 w1h = *twiddles;
+ FLOAT32 w1l = *(twiddles + 1);
+ FLOAT32 tmp;
+ twiddles += nodespacing * 2;
+
+ x0r = *ptr_y;
+ x0i = *(ptr_y + 1);
+ ptr_y += (del << 1);
+
+ x1r = *ptr_y;
+ x1i = *(ptr_y + 1);
+
+ tmp = (mult32X32float(x1r, w1l) - mult32X32float(x1i, w1h));
+ x1i = mac32X32float(mult32X32float(x1r, w1h), x1i, w1l);
+ x1r = tmp;
+
+ *ptr_y = (x0r) - (x1r);
+ *(ptr_y + 1) = (x0i) - (x1i);
+ ptr_y -= (del << 1);
+
+ *ptr_y = (x0r) + (x1r);
+ *(ptr_y + 1) = (x0i) + (x1i);
+ ptr_y += 2;
+ }
+ twiddles = ptr_w;
+ for (j = del / 2; j != 0; j--)
+ {
+ FLOAT32 w1h = *twiddles;
+ FLOAT32 w1l = *(twiddles + 1);
+ FLOAT32 tmp;
+ twiddles += nodespacing * 2;
+
+ x0r = *ptr_y;
+ x0i = *(ptr_y + 1);
+ ptr_y += (del << 1);
+
+ x1r = *ptr_y;
+ x1i = *(ptr_y + 1);
+
+ tmp = (mult32X32float(x1r, w1h) + mult32X32float(x1i, w1l));
+ x1i = -mult32X32float(x1r, w1l) + mult32X32float(x1i, w1h);
+ x1r = tmp;
+
+ *ptr_y = (x0r) - (x1r);
+ *(ptr_y + 1) = (x0i) - (x1i);
+ ptr_y -= (del << 1);
+
+ *ptr_y = (x0r) + (x1r);
+ *(ptr_y + 1) = (x0i) + (x1i);
+ ptr_y += 2;
+ }
+ }
+
+ for (i = 0; i<nlength; i++)
+ {
+ xr[i] = y[2 * i];
+ xi[i] = y[2 * i + 1];
+ }
+
+ return;
+}
+
VOID ixheaacd_complex_fft_p2_dec(WORD32 *xr, WORD32 *xi, WORD32 nlength,
WORD32 fft_mode, WORD32 *preshift) {
WORD32 i, j, k, n_stages;
diff --git a/decoder/ixheaacd_freq_sca.c b/decoder/ixheaacd_freq_sca.c
index f24e344..3895d2a 100644
--- a/decoder/ixheaacd_freq_sca.c
+++ b/decoder/ixheaacd_freq_sca.c
@@ -661,7 +661,7 @@ WORD32 ixheaacd_derive_noise_freq_bnd_tbl(
WORD32 ixheaacd_calc_frq_bnd_tbls(ia_sbr_header_data_struct *ptr_header_data,
ixheaacd_misc_tables *pstr_common_tables) {
WORD32 err;
- WORD16 num_lf_bands, num_hf_bands, lsb, usb;
+ WORD16 num_lf_bands, lsb, usb;
ia_freq_band_data_struct *pstr_freq_band_data =
ptr_header_data->pstr_freq_band_data;
@@ -676,7 +676,6 @@ WORD32 ixheaacd_calc_frq_bnd_tbls(ia_sbr_header_data_struct *ptr_header_data,
ixheaacd_derive_hi_lo_freq_bnd_tbls(pstr_freq_band_data, ptr_header_data);
num_lf_bands = pstr_freq_band_data->num_sf_bands[LOW];
- num_hf_bands = pstr_freq_band_data->num_sf_bands[HIGH];
if ((num_lf_bands <= 0) ||
(num_lf_bands > ixheaacd_shr16(MAX_FREQ_COEFFS, 1))) {
diff --git a/decoder/ixheaacd_function_selector.h b/decoder/ixheaacd_function_selector.h
index b2882f8..5003b6c 100644
--- a/decoder/ixheaacd_function_selector.h
+++ b/decoder/ixheaacd_function_selector.h
@@ -57,10 +57,15 @@
extern WORD32 (*ixheaacd_fix_div)(WORD32, WORD32);
extern VOID (*ixheaacd_covariance_matrix_calc)(WORD32 *,
- ixheaacd_lpp_trans_cov_matrix *,
- WORD32);
+ ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32);
+
+extern VOID(*ixheaacd_covariance_matrix_calc_960)(WORD32 *,
+ ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32);
+
extern VOID (*ixheaacd_covariance_matrix_calc_2)(
- ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32, WORD16);
+ ia_lpp_trans_cov_matrix *, WORD32 *, WORD32, WORD16);
extern VOID (*ixheaacd_over_lap_add1)(WORD32 *, WORD32 *, WORD32 *,
const WORD16 *, WORD16, WORD16, WORD16);
extern VOID (*ixheaacd_over_lap_add2)(WORD32 *, WORD32 *, WORD32 *,
@@ -132,12 +137,16 @@ extern VOID (*ixheaacd_overlap_buf_out)(WORD32 *, WORD32 *, WORD32,
const WORD16);
extern VOID (*ixheaacd_overlap_out_copy)(WORD32 *, WORD32 *, WORD32 *,
- const WORD16);
+ const WORD16, WORD16);
extern VOID (*ixheaacd_pretwiddle_compute)(WORD32 *, WORD32 *, WORD32 *,
ia_aac_dec_imdct_tables_struct *,
WORD, WORD32);
+extern VOID(*ixheaacd_pretwiddle_compute_960)(WORD32 *, WORD32 *, WORD32 *,
+ ia_aac_dec_imdct_tables_struct *,
+ WORD, WORD32);
+
extern VOID (*ixheaacd_imdct_using_fft)(ia_aac_dec_imdct_tables_struct *,
WORD32, WORD32 *, WORD32 *);
@@ -161,10 +170,17 @@ extern VOID (*ixheaacd_mps_synt_out_calc)(WORD32 resolution, FLOAT32 *out,
extern VOID (*ixheaacd_fft_15_ld)(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
UWORD8 *re_arr_tab_sml_240_ptr);
+extern VOID(*ixheaacd_fft_15_960_dec)(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
+ UWORD8 *re_arr_tab_sml_480_ptr);
+
extern VOID (*ixheaacd_aac_ld_dec_rearrange)(WORD32 *ip, WORD32 *op,
WORD32 mdct_len_2,
UWORD8 *re_arr_tab);
+extern VOID(*ixheaacd_aac_ld_dec_rearrange_960)(WORD32 *ip, WORD32 *op,
+ WORD32 mdct_len_2,
+ WORD16 *re_arr_tab);
+
extern VOID (*ixheaacd_fft32x32_ld)(
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
WORD32 *ptr_x, WORD32 *ptr_y);
@@ -173,6 +189,10 @@ extern VOID (*ixheaacd_fft32x32_ld2)(
ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
WORD32 *ptr_x, WORD32 *ptr_y);
+extern VOID(*ixheaacd_fft32_points_960)(
+ ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
+ WORD32 *ptr_x, WORD32 *ptr_y);
+
extern WORD16 (*ixheaacd_neg_expo_inc)(WORD16 neg_expo);
extern VOID (*ixheaacd_inv_dit_fft_8pt)(WORD32 *x, WORD32 *real, WORD32 *imag);
diff --git a/decoder/ixheaacd_headerdecode.c b/decoder/ixheaacd_headerdecode.c
index 2c38ec6..e291e1f 100644
--- a/decoder/ixheaacd_headerdecode.c
+++ b/decoder/ixheaacd_headerdecode.c
@@ -65,6 +65,7 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -76,11 +77,12 @@
#include "ixheaacd_interface.h"
#include "ixheaacd_info.h"
-
+#include "ixheaacd_mps_interface.h"
#include "ixheaacd_config.h"
#include "ixheaacd_struct.h"
#include "ixheaacd_function_selector.h"
+#include "ixheaacd_ld_mps_dec.h"
#include "ixheaacd_error_standards.h"
@@ -91,6 +93,9 @@
#undef FRAME_SIZE_SMALL
#define FRAME_SIZE_SMALL 960
#endif
+#define ELDEXT_SAOC 1
+#define ELDEXT_TERM 0
+#define ELDEXT_LDSAC 2
extern const WORD32 ixheaacd_sampl_freq_idx_table[17];
@@ -488,7 +493,6 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
struct ia_bit_buf_struct *it_bit_buff) {
WORD32 tmp;
WORD32 cnt_bits = it_bit_buff->cnt_bits;
- WORD32 dummy = 0;
UWORD32 aot_init;
UWORD32 tmp_aot;
@@ -506,6 +510,7 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
it_bit_buff->bit_pos;
aot_init = aac_state_struct->audio_object_type;
+ aac_state_struct->frame_length = FRAME_SIZE;
tmp_aot = ixheaacd_read_bits_buf(it_bit_buff, 5);
@@ -563,6 +568,7 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
aac_state_struct->audio_object_type == AOT_TWIN_VQ ||
aac_state_struct->audio_object_type == AOT_ER_AAC_LD ||
aac_state_struct->audio_object_type == AOT_ER_AAC_ELD ||
+ aac_state_struct->audio_object_type == AOT_ER_AAC_SCAL ||
aac_state_struct->audio_object_type == AOT_ER_AAC_LC) &&
aac_state_struct->audio_object_type != AOT_USAC)
@@ -587,7 +593,9 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
}
}
if (aac_state_struct->audio_object_type == AOT_ER_AAC_ELD ||
- aac_state_struct->audio_object_type == AOT_ER_AAC_LD) {
+ aac_state_struct->audio_object_type == AOT_ER_AAC_LD ||
+ aac_state_struct->audio_object_type == AOT_ER_AAC_LC ||
+ aac_state_struct->audio_object_type == AOT_ER_AAC_SCAL) {
aac_state_struct->eld_specific_config.aac_sect_data_resil_flag = 0;
aac_state_struct->eld_specific_config.aac_sf_data_resil_flag = 0;
aac_state_struct->eld_specific_config.aac_spect_data_resil_flag = 0;
@@ -601,10 +609,10 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
ixheaacd_read_bits_buf(it_bit_buff, 1);
aac_state_struct->eld_specific_config.aac_spect_data_resil_flag =
ixheaacd_read_bits_buf(it_bit_buff, 1);
- if (aac_state_struct->audio_object_type != AOT_ER_AAC_ELD)
+ if (aac_state_struct->audio_object_type == AOT_ER_AAC_LD)
aac_state_struct->eld_specific_config.ep_config =
ixheaacd_read_bits_buf(it_bit_buff, 2);
- else
+ if (aac_state_struct->audio_object_type == AOT_ER_AAC_ELD)
aac_state_struct->eld_specific_config.ld_sbr_flag_present =
ixheaacd_read_bits_buf(it_bit_buff, 1);
}
@@ -657,7 +665,7 @@ WORD32 ixheaacd_ga_hdr_dec(ia_aac_dec_state_struct *aac_state_struct,
}
{
- dummy = ixheaacd_skip_bits_buf(it_bit_buff, it_bit_buff->cnt_bits);
+ ixheaacd_skip_bits_buf(it_bit_buff, it_bit_buff->cnt_bits);
if ((SIZE_T)it_bit_buff->ptr_read_next ==
(SIZE_T)it_bit_buff->ptr_bit_buf_base) {
@@ -702,49 +710,103 @@ if (aac_state_struct->audio_object_type == AOT_ER_AAC_ELD) {
!aac_state_struct->eld_specific_config.ld_sbr_samp_rate;
}
+ {
+ UWORD16 len, eld_ext_type;
+ WORD32 err;
+ UWORD16 cnt;
+
+ if (ixheaacd_show_bits_buf(it_bit_buff, 4) != ELDEXT_TERM) {
+ while ((eld_ext_type = ixheaacd_read_bits_buf(it_bit_buff, 4)) !=
+ ELDEXT_TERM) {
+ len = ixheaacd_read_bits_buf(it_bit_buff, 4);
+ if (len == 15) {
+ len += ixheaacd_read_bits_buf(it_bit_buff, 8);
+ }
+ if (len == 15 + 255) {
+ len += ixheaacd_read_bits_buf(it_bit_buff, 16);
+ }
+
+ switch (eld_ext_type) {
+ case ELDEXT_SAOC:
+ break;
+ case ELDEXT_LDSAC:
+ aac_state_struct->ldmps_present = 1;
+ aac_state_struct->mps_dec_handle.ldmps_config.ldmps_present_flag =
+ 1;
+ aac_state_struct->mps_dec_handle.object_type =
+ aac_state_struct->audio_object_type;
+ err = ixheaacd_ld_spatial_specific_config(
+ &(aac_state_struct->mps_dec_handle.ldmps_config), it_bit_buff);
+ if (err) return err;
+
+ if (ixheaacd_mps_create(
+ &aac_state_struct->mps_dec_handle,
+ aac_state_struct->mps_dec_handle.ldmps_config
+ .bs_frame_length,
+ 0, &(aac_state_struct->mps_dec_handle.ldmps_config))) {
+ return -1;
+ }
+ break;
+ default:
+ for (cnt = 0; cnt < len; cnt++) {
+ ixheaacd_read_bits_buf(it_bit_buff, 8);
+ }
+
+ break;
+ }
+ break;
+ }
+ }
+ }
+ if (!((aac_state_struct->ldmps_present == 1) &&
+ !(it_bit_buff->cnt_bits >= 1)))
ixheaacd_read_bits_buf(it_bit_buff, 1);
}
-if (aac_state_struct->audio_object_type == AOT_ER_AAC_ELD) {
- int ep_config = ixheaacd_read_bits_buf(it_bit_buff, 2);
- if (ep_config == 2 || ep_config == 3) {
- }
- if (ep_config == 3) {
- int direct_map = ixheaacd_read_bits_buf(it_bit_buff, 1);
- if (!direct_map) {
+if (!((aac_state_struct->ldmps_present == 1) && !(it_bit_buff->cnt_bits > 0))) {
+ if (aac_state_struct->audio_object_type == AOT_ER_AAC_ELD ||
+ aac_state_struct->audio_object_type == AOT_ER_AAC_LC ||
+ aac_state_struct->audio_object_type == AOT_ER_AAC_SCAL) {
+ WORD32 ep_config = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ if (ep_config == 2 || ep_config == 3) {
+ }
+ if (ep_config == 3) {
+ WORD32 direct_map = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (!direct_map) {
+ }
}
}
-}
-
-tmp = (header_len * 8) - it_bit_buff->cnt_bits;
-if (aac_state_struct->audio_object_type != AOT_SBR &&
- (it_bit_buff->cnt_bits >= 16)) {
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 11);
-
- if (tmp == 0x2b7) {
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 5);
-
- if (tmp == AOT_SBR) {
- WORD32 sbr_present_flag = ixheaacd_read_bits_buf(it_bit_buff, 1);
- if (sbr_present_flag) {
- tmp = ixheaacd_get_samp_rate(it_bit_buff, pstr_samp_rate_info,
- pstr_audio_specific_config);
- if (tmp == -1) {
- *bytes_consumed = 1;
- return IA_ENHAACPLUS_DEC_INIT_FATAL_DEC_INIT_FAIL;
- } else
- aac_state_struct->extension_samp_rate = tmp;
-
- if (it_bit_buff->cnt_bits >= 12) {
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 11);
- if (tmp == 0x548) {
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ tmp = (header_len * 8) - it_bit_buff->cnt_bits;
+
+ if (aac_state_struct->audio_object_type != AOT_SBR &&
+ (it_bit_buff->cnt_bits >= 16)) {
+ tmp = ixheaacd_read_bits_buf(it_bit_buff, 11);
+
+ if (tmp == 0x2b7) {
+ tmp = ixheaacd_read_bits_buf(it_bit_buff, 5);
+
+ if (tmp == AOT_SBR) {
+ WORD32 sbr_present_flag = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (sbr_present_flag) {
+ tmp = ixheaacd_get_samp_rate(it_bit_buff, pstr_samp_rate_info,
+ pstr_audio_specific_config);
+ if (tmp == -1) {
+ *bytes_consumed = 1;
+ return IA_ENHAACPLUS_DEC_INIT_FATAL_DEC_INIT_FAIL;
+ } else
+ aac_state_struct->extension_samp_rate = tmp;
+
+ if (it_bit_buff->cnt_bits >= 12) {
+ tmp = ixheaacd_read_bits_buf(it_bit_buff, 11);
+ if (tmp == 0x548) {
+ tmp = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
}
}
}
+ } else if (aac_state_struct->bs_format == LOAS_BSFORMAT) {
+ ixheaacd_read_bidirection(it_bit_buff, -11);
}
- } else if (aac_state_struct->bs_format == LOAS_BSFORMAT) {
- ixheaacd_read_bidirection(it_bit_buff, -11);
}
}
@@ -975,6 +1037,13 @@ WORD32 ixheaacd_aac_headerdecode(
handle_bit_buff->pstr_adts_crc_info = &handle_bit_buff->str_adts_crc_info;
ixheaacd_adts_crc_open(handle_bit_buff->pstr_adts_crc_info);
+ aac_state_struct->ldmps_present = 0;
+ aac_state_struct->latm_initialized = 0;
+ memset(&aac_state_struct->mps_dec_handle, 0,
+ sizeof(aac_state_struct->mps_dec_handle));
+ memset(&aac_state_struct->eld_specific_config, 0,
+ sizeof(aac_state_struct->eld_specific_config));
+
if ((buffer[0] == 'A') && (buffer[1] == 'D') && (buffer[2] == 'I') &&
(buffer[3] == 'F')) {
adif.prog_config_present = 0;
diff --git a/decoder/ixheaacd_huff_code_reorder.c b/decoder/ixheaacd_huff_code_reorder.c
index 0cc07ed..71819aa 100644
--- a/decoder/ixheaacd_huff_code_reorder.c
+++ b/decoder/ixheaacd_huff_code_reorder.c
@@ -20,6 +20,7 @@
#include <string.h>
#include "ixheaacd_sbr_common.h"
#include "ixheaacd_type_def.h"
+#include "ixheaacd_error_standards.h"
#include "ixheaacd_constants.h"
#include "ixheaacd_basic_ops32.h"
@@ -49,7 +50,7 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_sbrdecsettings.h"
-
+#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
#include "ixheaacd_sbr_rom.h"
#include "ixheaacd_audioobjtypes.h"
@@ -57,6 +58,9 @@
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -1131,8 +1135,10 @@ static VOID ixheaacd_decode_pcw(ia_bit_buf_struct *itt_bit_buff,
if (codebook <= 4) {
WORD32 tbl_sign = 0;
- const UWORD16 *cb_table = (UWORD16 *)(ptr_aac_tables->code_book[codebook]);
- const UWORD32 *idx_table = (UWORD32 *)(ptr_aac_tables->index_table[codebook]);
+ const UWORD16 *cb_table =
+ (UWORD16 *)(ptr_aac_tables->code_book[codebook]);
+ const UWORD32 *idx_table =
+ (UWORD32 *)(ptr_aac_tables->index_table[codebook]);
if (codebook > 2) {
tbl_sign = 1;
@@ -1168,8 +1174,10 @@ static VOID ixheaacd_decode_pcw(ia_bit_buf_struct *itt_bit_buff,
{
WORD32 tbl_sign = 0;
WORD32 huff_mode = 9;
- const UWORD16 *cb_table = (UWORD16 *)(ptr_aac_tables->code_book[codebook]);
- const UWORD32 *idx_table = (UWORD32 *)(ptr_aac_tables->index_table[codebook]);
+ const UWORD16 *cb_table =
+ (UWORD16 *)(ptr_aac_tables->code_book[codebook]);
+ const UWORD32 *idx_table =
+ (UWORD32 *)(ptr_aac_tables->index_table[codebook]);
num_decoded_bits = 0;
if (codebook > 6) {
@@ -1360,11 +1368,12 @@ static PLATFORM_INLINE UWORD16 ixheaacd_huff_dec_word_hcr_non_pcw(
WORD32 read_word;
WORD32 increment;
+ UWORD8 *ptr_read_next;
read_word = ixheaacd_aac_showbits_32(itt_bit_buff->byte_ptr,
itt_bit_buff->bit_count, &increment);
- UWORD8 *ptr_read_next = itt_bit_buff->byte_ptr;
+ ptr_read_next = itt_bit_buff->byte_ptr;
ptr_read_next += increment;
ixheaacd_huff_sfb_table(read_word, &index, &length, code_book_tbl, idx_table);
diff --git a/decoder/ixheaacd_init_config.c b/decoder/ixheaacd_init_config.c
index fc2dd09..92ecee7 100644
--- a/decoder/ixheaacd_init_config.c
+++ b/decoder/ixheaacd_init_config.c
@@ -29,6 +29,7 @@
#include "ixheaacd_defines.h"
#include "ixheaacd_memory_standards.h"
#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_env_extr_part.h"
#include "ixheaacd_aac_rom.h"
#include "ixheaacd_common_rom.h"
@@ -51,6 +52,9 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_sbr_common.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
#include "ixheaacd_mps_dec.h"
@@ -330,7 +334,7 @@ IA_ERRORCODE ixheaacd_mps212_config(
pstr_usac_mps212_config->bs_residual_bands =
ixheaacd_read_bits_buf(it_bit_buff, 5);
- if (pstr_usac_mps212_config->bs_residual_bands > MAX_PARAMETER_BANDS)
+ if (pstr_usac_mps212_config->bs_residual_bands > MAX_PARAMETER_BANDS_MPS)
return IA_FATAL_ERROR;
pstr_usac_mps212_config->bs_ott_bands_phase =
@@ -470,7 +474,6 @@ WORD32 ixheaacd_config_extension(
USAC_MAX_CONFIG_EXTENSIONS * sizeof(WORD32));
for (j = 0; j < num_config_extensions; j++) {
- UWORD32 tmp;
UWORD32 fill_byte_val = 0xa5;
ixheaacd_read_escape_value(it_bit_buff, &(usac_config_ext_type), 4, 8, 16);
@@ -499,7 +502,7 @@ WORD32 ixheaacd_config_extension(
pstr_usac_decoder_config->usac_cfg_ext_info_present[j] = 1;
} else {
for (i = 0; i < usac_config_ext_len; i++)
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 8);
+ ixheaacd_read_bits_buf(it_bit_buff, 8);
}
break;
}
diff --git a/decoder/ixheaacd_initfuncs.c b/decoder/ixheaacd_initfuncs.c
index c00dc74..1955776 100644
--- a/decoder/ixheaacd_initfuncs.c
+++ b/decoder/ixheaacd_initfuncs.c
@@ -75,6 +75,7 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -217,6 +218,31 @@ VOID ixheaacd_huff_tables_create(ia_aac_dec_tables_struct *ptr_aac_tables) {
ptr_aac_tables->scale_factor_bands_short[11] =
ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_8_128;
+ ptr_aac_tables->scale_factor_bands_short[12] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_120;
+ ptr_aac_tables->scale_factor_bands_short[13] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_120;
+ ptr_aac_tables->scale_factor_bands_short[14] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_120;
+ ptr_aac_tables->scale_factor_bands_short[15] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_120;
+ ptr_aac_tables->scale_factor_bands_short[16] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_120;
+ ptr_aac_tables->scale_factor_bands_short[17] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_120;
+ ptr_aac_tables->scale_factor_bands_short[18] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_24_120;
+ ptr_aac_tables->scale_factor_bands_short[19] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_24_120;
+ ptr_aac_tables->scale_factor_bands_short[20] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_120;
+ ptr_aac_tables->scale_factor_bands_short[21] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_120;
+ ptr_aac_tables->scale_factor_bands_short[22] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_120;
+ ptr_aac_tables->scale_factor_bands_short[23] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_8_120;
+
ptr_aac_tables->scale_factor_bands_long[0] =
ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_1024;
ptr_aac_tables->scale_factor_bands_long[1] =
@@ -242,6 +268,31 @@ VOID ixheaacd_huff_tables_create(ia_aac_dec_tables_struct *ptr_aac_tables) {
ptr_aac_tables->scale_factor_bands_long[11] =
ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_8_1024;
+ ptr_aac_tables->scale_factor_bands_long[12] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_960;
+ ptr_aac_tables->scale_factor_bands_long[13] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_96_960;
+ ptr_aac_tables->scale_factor_bands_long[14] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_64_960;
+ ptr_aac_tables->scale_factor_bands_long[15] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_960;
+ ptr_aac_tables->scale_factor_bands_long[16] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_960;
+ ptr_aac_tables->scale_factor_bands_long[17] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_960;
+ ptr_aac_tables->scale_factor_bands_long[18] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_24_960;
+ ptr_aac_tables->scale_factor_bands_long[19] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_24_960;
+ ptr_aac_tables->scale_factor_bands_long[20] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_960;
+ ptr_aac_tables->scale_factor_bands_long[21] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_960;
+ ptr_aac_tables->scale_factor_bands_long[22] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_16_960;
+ ptr_aac_tables->scale_factor_bands_long[23] =
+ ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_8_960;
+
ptr_aac_tables->scale_fac_bands_512[0] =
ptr_aac_tables->pstr_huffmann_tables->ixheaacd_sfb_48_512;
ptr_aac_tables->scale_fac_bands_512[1] =
@@ -368,6 +419,7 @@ ia_aac_decoder_struct *ixheaacd_aac_decoder_init(
sizeof(ia_sampling_rate_info_struct);
WORD32 sampling_rate = p_state_enhaacplus_dec->sampling_rate;
+ WORD sfidx;
i = 0;
while ((i < num_entries) &&
@@ -382,18 +434,22 @@ ia_aac_decoder_struct *ixheaacd_aac_decoder_init(
if (i == num_entries) {
return NULL;
}
+ sfidx = i;
- if (frame_length == 1024) {
+ if (frame_length == 1024 || frame_length == 960) {
WORD16 *psfb_table_idx[2];
const WORD8 *psfb_width[2];
WORD width_idx;
WORD32 j;
+ if (frame_length == 960)
+ sfidx += 12;
+
psfb_table_idx[0] = ptr_aac_tables->sfb_long_table;
psfb_table_idx[1] = ptr_aac_tables->sfb_short_table;
- psfb_width[0] = ptr_aac_tables->scale_factor_bands_long[i];
- psfb_width[1] = ptr_aac_tables->scale_factor_bands_short[i];
+ psfb_width[0] = ptr_aac_tables->scale_factor_bands_long[sfidx];
+ psfb_width[1] = ptr_aac_tables->scale_factor_bands_short[sfidx];
for (j = 1; j >= 0; j--) {
const WORD8 *ptr_width = psfb_width[j];
@@ -428,7 +484,7 @@ ia_aac_decoder_struct *ixheaacd_aac_decoder_init(
}
} else {
WORD16 *ptr_sfb_idx[2];
- const WORD8 *ptr_sfb_width[2];
+ const WORD8 *ptr_sfb_width[2] = {0};
WORD width_idx;
WORD32 j;
diff --git a/decoder/ixheaacd_latmdemux.c b/decoder/ixheaacd_latmdemux.c
index ecceb04..b01d32b 100644
--- a/decoder/ixheaacd_latmdemux.c
+++ b/decoder/ixheaacd_latmdemux.c
@@ -71,6 +71,7 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -144,8 +145,8 @@ static UWORD32 ixheaacd_latm_get_value(ia_bit_buf_struct *it_bit_buff) {
if (bytes_read <= 3)
return ixheaacd_read_bits_buf(it_bit_buff, 8 * bytes_read);
else
- return (ixheaacd_read_bits_buf(it_bit_buff, 24) << 8) +
- ixheaacd_read_bits_buf(it_bit_buff, 8);
+ return ixheaacd_add32_sat(ixheaacd_shl32_sat(ixheaacd_read_bits_buf(it_bit_buff, 24), 8),
+ ixheaacd_read_bits_buf(it_bit_buff, 8));
}
IA_ERRORCODE ixheaacd_latm_stream_mux_config(
@@ -156,7 +157,6 @@ IA_ERRORCODE ixheaacd_latm_stream_mux_config(
UWORD32 lay;
WORD32 bytes_consumed;
WORD32 audio_mux_version_a;
- UWORD32 tara_buf_fullness;
IA_ERRORCODE error_code = AAC_DEC_OK;
ixheaacd_latm_layer_info *layer_info = 0;
@@ -169,7 +169,7 @@ IA_ERRORCODE ixheaacd_latm_stream_mux_config(
if (audio_mux_version_a == 0) {
if (latm_element->audio_mux_version == 1) {
- tara_buf_fullness = ixheaacd_latm_get_value(it_bit_buff);
+ ixheaacd_latm_get_value(it_bit_buff);/*tara_buf_fullness*/
}
latm_element->all_streams_same_time_framing =
ixheaacd_read_bits_buf(it_bit_buff, 1);
diff --git a/decoder/ixheaacd_ld_mps_config.c b/decoder/ixheaacd_ld_mps_config.c
new file mode 100644
index 0000000..fbcc373
--- /dev/null
+++ b/decoder/ixheaacd_ld_mps_config.c
@@ -0,0 +1,312 @@
+/******************************************************************************
+* *
+* Copyright (C) 2018 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at:
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*****************************************************************************
+* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
+*/
+#include "ixheaacd_type_def.h"
+#include <ixheaacd_constants.h>
+#include <ixheaacd_error_standards.h>
+
+#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_config.h"
+
+#include <assert.h>
+
+#ifndef sign
+#define sign(a) (((a) > 0) ? 1 : ((a) < 0) ? -1 : 0)
+#endif
+
+typedef struct {
+ WORD32 num_input_chan;
+ WORD32 num_output_chan;
+ WORD32 num_ott_boxes;
+ WORD32 num_ttt_boxes;
+ WORD32 ott_mode_lfe[MAX_NUM_OTT];
+} TREEPROPERTIES;
+
+static WORD32 ixheaacd_freq_res_table[] = {0, 23, 15, 12, 9, 7, 5, 4};
+
+static WORD32 ixheaacd_HRTF_freq_res_table[][8] = {{0, 28, 20, 14, 10, 7, 5, 4},
+ {0, 13, 13, 8, 7, 4, 3, 3}};
+
+static TREEPROPERTIES ixheaacd_tree_property_table[] = {
+ {1, 6, 5, 0, {0, 0, 0, 0, 1}}, {1, 6, 5, 0, {0, 0, 1, 0, 0}},
+ {2, 6, 3, 1, {1, 0, 0, 0, 0}}, {2, 8, 5, 1, {1, 0, 0, 0, 0}},
+ {2, 8, 5, 1, {1, 0, 0, 0, 0}}, {6, 8, 2, 0, {0, 0, 0, 0, 0}},
+ {6, 8, 2, 0, {0, 0, 0, 0, 0}}, {1, 2, 1, 0, {0, 0, 0, 0, 0}}};
+
+static IA_ERRORCODE ixheaacd_ld_spatial_extension_config(
+ ia_bit_buf_struct *it_bit_buff, ia_usac_dec_mps_config_struct *config,
+ WORD32 bits_available) {
+ WORD32 j, ch, idx, tmp, tmp_open, sac_ext_len, bits_read, n_fill_bits;
+ UWORD32 i;
+ WORD32 ba = bits_available;
+
+ config->sac_ext_cnt = 0;
+
+ tmp = it_bit_buff->cnt_bits;
+
+ while (ba >= 8) {
+ if (config->sac_ext_cnt >= MAX_NUM_EXT_TYPES) return IA_FATAL_ERROR;
+
+ config->bs_sac_ext_type[config->sac_ext_cnt] =
+ ixheaacd_read_bits_buf(it_bit_buff, 4);
+ ba -= 4;
+
+ sac_ext_len = ixheaacd_read_bits_buf(it_bit_buff, 4);
+ ba -= 4;
+
+ if ((ba >= 6) && (sac_ext_len > 0)) {
+ if (sac_ext_len == 15) {
+ sac_ext_len += ixheaacd_read_bits_buf(it_bit_buff, 8);
+ ba -= 8;
+ if (sac_ext_len == 15 + 255) {
+ sac_ext_len += ixheaacd_read_bits_buf(it_bit_buff, 16);
+ ba -= 16;
+ }
+ }
+
+ switch (config->bs_sac_ext_type[config->sac_ext_cnt]) {
+ case 0:
+ config->bs_residual_coding = 1;
+
+ config->bs_residual_sampling_freq_index =
+ ixheaacd_read_bits_buf(it_bit_buff, 4);
+ config->bs_residual_frames_per_spatial_frame =
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
+
+ if ((config->num_ott_boxes + config->num_ttt_boxes) >
+ MAX_RESIDUAL_CHANNELS)
+ return IA_FATAL_ERROR;
+ for (j = 0; j < config->num_ott_boxes + config->num_ttt_boxes; j++) {
+ config->bs_residual_present[j] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (config->bs_residual_present[j]) {
+ config->bs_residual_bands_ld_mps[j] =
+ ixheaacd_read_bits_buf(it_bit_buff, 5);
+ }
+ }
+ break;
+
+ case 1:
+ config->bs_arbitrary_downmix = 2;
+
+ config->bs_arbitrary_downmix_residual_sampling_freq_index =
+ ixheaacd_read_bits_buf(it_bit_buff, 4);
+ config->bs_arbitrary_downmix_residual_frames_per_spatial_frame =
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
+ config->bs_arbitrary_downmix_residual_bands =
+ ixheaacd_read_bits_buf(it_bit_buff, 5);
+
+ break;
+
+ case 2:
+ config->num_out_chan_AT = 0;
+ config->num_ott_boxes_AT = 0;
+ if (config->num_output_channels > MAX_OUTPUT_CHANNELS)
+ return IA_FATAL_ERROR;
+ for (ch = 0; ch < config->num_output_channels; ch++) {
+ tmp_open = 1;
+ idx = 0;
+ while ((tmp_open > 0) && (idx < MAX_ARBITRARY_TREE_INDEX)) {
+ config->bs_ott_box_present_AT[ch][idx] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (config->bs_ott_box_present_AT[ch][idx]) {
+ config->num_ott_boxes_AT++;
+ tmp_open++;
+ } else {
+ config->num_out_chan_AT++;
+ tmp_open--;
+ }
+ idx++;
+ }
+ }
+
+ for (i = 0; i < config->num_ott_boxes_AT; i++) {
+ config->bs_ott_default_cld_AT[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ config->bs_ott_mode_lfe_AT[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (config->bs_ott_mode_lfe_AT[i]) {
+ config->bs_ott_bands_AT[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 5);
+ } else {
+ config->bs_ott_bands_AT[i] = ixheaacd_freq_res_table[config->bs_freq_res];
+ }
+ }
+
+ for (i = 0; i < config->num_out_chan_AT; i++) {
+ config->bs_output_channel_pos_AT[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 5);
+ }
+
+ break;
+
+ default:;
+ }
+ }
+
+ bits_read = tmp - it_bit_buff->cnt_bits;
+ n_fill_bits = 8 * sac_ext_len - bits_read;
+
+ while (n_fill_bits > 7) {
+ ixheaacd_read_bits_buf(it_bit_buff, 8);
+ n_fill_bits -= 8;
+ }
+ if (n_fill_bits > 0) {
+ ixheaacd_read_bits_buf(it_bit_buff, n_fill_bits);
+ }
+
+ ba -= 8 * sac_ext_len;
+ config->sac_ext_cnt++;
+ }
+ return IA_NO_ERROR;
+}
+
+IA_ERRORCODE ixheaacd_ld_spatial_specific_config(
+ ia_usac_dec_mps_config_struct *config, ia_bit_buf_struct *it_bit_buff) {
+ WORD32 i, num_header_bits;
+ UWORD32 hc, hb;
+ WORD32 sac_header_len;
+ WORD32 bits_available;
+ WORD32 tmp = it_bit_buff->cnt_bits;
+ WORD32 err = 0;
+
+ sac_header_len = tmp;
+
+ bits_available = sac_header_len;
+ config->bs_sampling_freq_index = ixheaacd_read_bits_buf(it_bit_buff, 4);
+ if (config->bs_sampling_freq_index == 15) {
+ config->bs_fampling_frequency = ixheaacd_read_bits_buf(it_bit_buff, 24);
+ }
+
+ config->bs_frame_length = ixheaacd_read_bits_buf(it_bit_buff, 5);
+ config->bs_freq_res = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ config->bs_tree_config = ixheaacd_read_bits_buf(it_bit_buff, 4);
+
+ if (config->bs_tree_config > 7) return IA_FATAL_ERROR;
+
+ if (config->bs_tree_config != 15) {
+ config->num_ott_boxes =
+ ixheaacd_tree_property_table[config->bs_tree_config].num_ott_boxes;
+ config->num_ttt_boxes =
+ ixheaacd_tree_property_table[config->bs_tree_config].num_ttt_boxes;
+ config->num_input_channels =
+ ixheaacd_tree_property_table[config->bs_tree_config].num_input_chan;
+ config->num_output_channels =
+ ixheaacd_tree_property_table[config->bs_tree_config].num_output_chan;
+ for (i = 0; i < MAX_NUM_OTT; i++) {
+ config->ott_mode_lfe[i] =
+ ixheaacd_tree_property_table[config->bs_tree_config].ott_mode_lfe[i];
+ }
+ }
+ config->bs_quant_mode = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ if (config->bs_tree_config != 7) {
+ config->bs_one_icc = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+ config->bs_arbitrary_downmix = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (config->bs_tree_config != 7) {
+ config->bs_fixed_gain_sur = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ config->bs_fixed_gain_LFE = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ }
+ config->bs_fixed_gain_dmx = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ if (config->bs_tree_config != 7) {
+ config->bs_matrix_mode = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+ config->bs_temp_shape_config = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ config->bs_decorr_config = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ if (config->bs_tree_config != 7) {
+ config->bs_3D_audio_mode = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ } else {
+ config->bs_3D_audio_mode = 0;
+ }
+
+ // ott_config
+ for (i = 0; i < config->num_ott_boxes; i++) {
+ if (config->ott_mode_lfe[i]) {
+ config->bs_ott_bands[i] = ixheaacd_read_bits_buf(it_bit_buff, 5);
+ } else {
+ config->bs_ott_bands[i] = ixheaacd_freq_res_table[config->bs_freq_res];
+ }
+ }
+
+ // ttt_config
+ for (i = 0; i < config->num_ttt_boxes; i++) {
+ config->bs_ttt_dual_mode[i] = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ config->bs_ttt_mode_low[i] = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ if (config->bs_ttt_dual_mode[i]) {
+ config->bs_ttt_mode_high[i] = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ config->bs_ttt_bands_low[i] = ixheaacd_read_bits_buf(it_bit_buff, 5);
+ config->bs_ttt_bands_high[i] = ixheaacd_freq_res_table[config->bs_freq_res];
+ } else {
+ config->bs_ttt_bands_low[i] = ixheaacd_freq_res_table[config->bs_freq_res];
+ }
+ }
+
+ if (config->bs_temp_shape_config == 2) {
+ config->bs_env_quant_mode = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+
+ if (config->bs_3D_audio_mode) {
+ config->bs_3D_audio_HRTF_set = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ // param_HRTF_set
+ if (config->bs_3D_audio_HRTF_set == 0) {
+ config->bs_HRTF_freq_res = ixheaacd_read_bits_buf(it_bit_buff, 3);
+ config->bs_HRTF_num_chan = 5;
+ config->bs_HRTF_asymmetric = ixheaacd_read_bits_buf(it_bit_buff, 1);
+
+ config->HRTF_num_band = ixheaacd_HRTF_freq_res_table[0][config->bs_HRTF_freq_res];
+ config->HRTF_num_phase = ixheaacd_HRTF_freq_res_table[1][config->bs_HRTF_freq_res];
+
+ for (hc = 0; hc < config->bs_HRTF_num_chan; hc++) {
+ for (hb = 0; hb < config->HRTF_num_band; hb++) {
+ config->bs_HRTF_level_left[hc][hb] =
+ ixheaacd_read_bits_buf(it_bit_buff, 6);
+ }
+ for (hb = 0; hb < config->HRTF_num_band; hb++) {
+ config->bs_HRTF_level_right[hc][hb] =
+ config->bs_HRTF_asymmetric
+ ? ixheaacd_read_bits_buf(it_bit_buff, 6)
+ : config->bs_HRTF_level_left[hc][hb];
+ }
+ config->bs_HRTF_phase[hc] = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ for (hb = 0; hb < config->HRTF_num_phase; hb++) {
+ config->bs_HRTF_phase_LR[hc][hb] =
+ config->bs_HRTF_phase[hc] ? ixheaacd_read_bits_buf(it_bit_buff, 6)
+ : 0;
+ }
+ config->bs_HRTF_icc[hc] = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (config->bs_HRTF_icc[hc]) {
+ for (hb = 0; hb < config->HRTF_num_band; hb++)
+ config->bs_HRTF_icc_LR[hc][hb] =
+ ixheaacd_read_bits_buf(it_bit_buff, 3);
+ }
+ }
+ }
+ }
+
+ // byte_align
+ i = (it_bit_buff->cnt_bits & 0x7);
+ ixheaacd_read_bits_buf(it_bit_buff, i);
+
+ num_header_bits = tmp - (it_bit_buff->cnt_bits);
+ bits_available -= num_header_bits;
+
+ err =
+ ixheaacd_ld_spatial_extension_config(it_bit_buff, config, bits_available);
+ return err;
+}
diff --git a/decoder/ixheaacd_ld_mps_dec.c b/decoder/ixheaacd_ld_mps_dec.c
new file mode 100644
index 0000000..8b98283
--- /dev/null
+++ b/decoder/ixheaacd_ld_mps_dec.c
@@ -0,0 +1,207 @@
+/******************************************************************************
+* *
+* Copyright (C) 2018 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at:
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*****************************************************************************
+* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
+*/
+#include <stdio.h>
+#include <string.h>
+
+#include <math.h>
+
+#include "ixheaacd_sbr_common.h"
+#include "ixheaacd_type_def.h"
+
+#include "ixheaacd_constants.h"
+#include "ixheaacd_basic_ops32.h"
+#include "ixheaacd_basic_ops16.h"
+#include "ixheaacd_basic_ops40.h"
+#include "ixheaacd_basic_ops.h"
+#include "ixheaacd_bitbuffer.h"
+
+#include "ixheaacd_basic_op.h"
+#include "ixheaacd_intrinsics.h"
+#include "ixheaacd_sbr_const.h"
+
+#include "ixheaacd_defines.h"
+
+#include "ixheaacd_aac_rom.h"
+
+#include "ixheaacd_definitions.h"
+
+#include "ixheaacd_error_codes.h"
+
+#include "ixheaacd_pulsedata.h"
+
+#include "ixheaacd_pns.h"
+#include "ixheaacd_drc_data_struct.h"
+
+#include "ixheaacd_lt_predict.h"
+
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_cnst.h"
+#include "ixheaacd_drc_dec.h"
+#include "ixheaacd_sbrdecoder.h"
+#include "ixheaacd_block.h"
+#include "ixheaacd_channel.h"
+
+#include "ixheaacd_sbr_payload.h"
+#include "ixheaacd_common_rom.h"
+
+#include "ixheaacd_type_def.h"
+
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_stereo.h"
+#include "ixheaacd_lpp_tran.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_env_extr.h"
+#include "ixheaacd_adts.h"
+#
+#include "ixheaacd_audioobjtypes.h"
+#include "ixheaacd_memory_standards.h"
+#include "ixheaacd_latmdemux.h"
+#include "ixheaacd_aacdec.h"
+#include "ixheaacd_mps_polyphase.h"
+#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
+#include "ixheaacd_env_calc.h"
+
+#include "ixheaacd_pvc_dec.h"
+#include "ixheaacd_sbr_dec.h"
+#include "ixheaacd_mps_dec.h"
+#include "ixheaacd_struct_def.h"
+
+#include "ixheaacd_mps_process.h"
+
+#include "ixheaacd_ld_mps_dec.h"
+#include "ixheaacd_interface.h"
+#include "ixheaacd_info.h"
+#include "ixheaacd_tns_usac.h"
+#include "ixheaacd_acelp_info.h"
+#include "ixheaacd_main.h"
+#include "ixheaacd_struct.h"
+#include "ixheaacd_create.h"
+
+WORD32 ixheaacd_ld_qmf_analysis(ia_mps_dec_state_struct *self,
+ WORD16 *output_buf) {
+ WORD32 *p_arr_qmf_buf_real[MAX_ENV_COLS + MAX_ENV_COLS];
+ WORD32 **p_arr_qmf_buf_imag = &p_arr_qmf_buf_real[MAX_ENV_COLS];
+ WORD32 temp_arr[64 * 64];
+ WORD32 *ptr = &temp_arr[0];
+ float in_gain_n_q8_fac = self->input_gain * 0.00390625f;
+
+ int i;
+ WORD32 ts;
+
+ for (ts = 2; ts < self->time_slots + 2; ts++) {
+ p_arr_qmf_buf_real[ts] = ptr;
+ ptr += NO_SYNTHESIS_CHANNELS;
+
+ p_arr_qmf_buf_imag[ts] = ptr;
+ ptr += NO_SYNTHESIS_CHANNELS;
+ }
+
+ self->str_mps_qmf_bank.num_time_slots = self->time_slots;
+ self->str_mps_qmf_bank.no_channels = self->qmf_band_count;
+
+ ixheaacd_cplx_anal_qmffilt_32((WORD32 *)output_buf, self->str_sbr_scale_fact,
+ &p_arr_qmf_buf_real[0], &p_arr_qmf_buf_imag[0],
+ &self->str_mps_qmf_bank,
+ self->qmf_dec_tables_ptr, 2, 0);
+
+ for (ts = 0; ts < self->time_slots; ts++) {
+ for (i = 0; i < self->qmf_band_count; i++) {
+ self->qmf_in[0][ts][i].re =
+ (p_arr_qmf_buf_real[ts + 2][i] * in_gain_n_q8_fac);
+ self->qmf_in[0][ts][i].im =
+ (p_arr_qmf_buf_imag[ts + 2][i] * in_gain_n_q8_fac);
+ }
+ }
+
+ return 0;
+}
+
+WORD32 ixheaacd_ld_mps_apply(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
+ WORD16 *output_buf) {
+ ia_aac_dec_state_struct *aac_handle = p_obj_exhaacplus_dec->p_state_aac;
+ ia_mps_dec_state_struct *mps_handle = &(aac_handle->mps_dec_handle);
+ WORD32 err = 0;
+ WORD32 ts, i;
+ ia_dec_data_struct *pstr_dec_data =
+ (ia_dec_data_struct *)aac_handle->pstr_dec_data;
+ ia_usac_data_struct *pstr_usac_data = &(pstr_dec_data->str_usac_data);
+
+ mps_handle->hyb_band_count[0] = mps_handle->hyb_band_count_max;
+ mps_handle->hyb_band_count[1] = mps_handle->hyb_band_count_max;
+
+ err = ixheaacd_mps_frame_decode(mps_handle);
+ if (err != IA_NO_ERROR) return err;
+
+ if (mps_handle->ldmps_config.bs_tree_config == 7) {
+ ixheaacd_pre_and_mix_matrix_calculation(&(aac_handle->mps_dec_handle));
+ ixheaacd_mps_pre_matrix_mix_matrix_smoothing(&(aac_handle->mps_dec_handle));
+ }
+ mps_handle->output_buffer = pstr_usac_data->time_sample_vector;
+ if (mps_handle->ldmps_config.no_ldsbr_present)
+ ixheaacd_ld_qmf_analysis(mps_handle, output_buf);
+ else {
+ for (ts = 0; ts < mps_handle->time_slots; ts++) {
+ FLOAT32 *qmf_re = p_obj_exhaacplus_dec->p_state_aac->str_sbr_dec_info[0]
+ ->pstr_sbr_channel[0]
+ ->str_sbr_dec.mps_qmf_buf_real[ts + 2];
+ FLOAT32 *qmf_im = p_obj_exhaacplus_dec->p_state_aac->str_sbr_dec_info[0]
+ ->pstr_sbr_channel[0]
+ ->str_sbr_dec.mps_qmf_buf_imag[ts + 2];
+ for (i = 0; i < mps_handle->qmf_band_count; i++) {
+ mps_handle->qmf_in[0][ts][i].re = qmf_re[i] * mps_handle->input_gain;
+ mps_handle->qmf_in[0][ts][i].im = qmf_im[i] * mps_handle->input_gain;
+ }
+ }
+ }
+ ixheaacd_mps_qmf_hyb_analysis(mps_handle);
+
+ err = ixheaacd_mps_apply_pre_matrix(mps_handle);
+ if (err < 0) return err;
+
+ ixheaacd_mps_create_w(mps_handle);
+
+ if ((!(mps_handle->res_bands | mps_handle->pre_mix_req)) &&
+ (mps_handle->config->bs_phase_coding == 0)) {
+ err = ixheaacd_mps_apply_mix_matrix_type1(mps_handle);
+
+ } else if (mps_handle->pre_mix_req) {
+ err = ixheaacd_mps_apply_mix_matrix_type2(mps_handle);
+
+ } else {
+ err = ixheaacd_mps_apply_mix_matrix_type3(mps_handle);
+ }
+ if (err < 0) return err;
+
+ if (mps_handle->ldmps_config.bs_temp_shape_config == 2) {
+ ixheaacd_mps_time_env_shaping(mps_handle);
+ }
+
+ err = ixheaacd_mps_temp_process(mps_handle);
+ mps_handle->pre_mix_req = 0;
+ if (err)
+ return err;
+
+ return err;
+}
diff --git a/decoder/ixheaacd_ld_mps_dec.h b/decoder/ixheaacd_ld_mps_dec.h
new file mode 100644
index 0000000..1e4d459
--- /dev/null
+++ b/decoder/ixheaacd_ld_mps_dec.h
@@ -0,0 +1,31 @@
+/******************************************************************************
+* *
+* Copyright (C) 2018 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at:
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*****************************************************************************
+* Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
+*/
+
+WORD32 ixheaacd_ld_mps_apply(ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec,
+ WORD16 *output_buf);
+
+IA_ERRORCODE ixheaacd_ld_mps_frame_parsing(
+ ia_mps_dec_state_struct *self, ia_handle_bit_buf_struct it_bit_buff);
+
+WORD32 ixheaacd_extension_payload(ia_bit_buf_struct *it_bit_buff, WORD32 *cnt,
+ ia_mps_dec_state_struct *self);
+
+IA_ERRORCODE ixheaacd_ld_spatial_specific_config(
+ ia_usac_dec_mps_config_struct *config, ia_bit_buf_struct *it_bit_buff);
diff --git a/decoder/ixheaacd_longblock.c b/decoder/ixheaacd_longblock.c
index 1f41387..574941e 100644
--- a/decoder/ixheaacd_longblock.c
+++ b/decoder/ixheaacd_longblock.c
@@ -245,7 +245,7 @@ VOID ixheaacd_read_scale_factor_data(
}
if ((object_type != AOT_ER_AAC_ELD) &&
- (object_type != AOT_ER_AAC_LD)) {
+ (object_type != AOT_ER_AAC_LD) && (object_type != AOT_ER_AAC_LC)) {
if (sfb_cb > NOISE_HCB) {
position = position + norm_value;
*ptr_scale_fact_short++ = -position;
diff --git a/decoder/ixheaacd_lpc.c b/decoder/ixheaacd_lpc.c
index 6bbb902..b3bc304 100644
--- a/decoder/ixheaacd_lpc.c
+++ b/decoder/ixheaacd_lpc.c
@@ -356,7 +356,7 @@ WORD32 ixheaacd_lpd_dec(ia_usac_data_struct *usac_data,
WORD32 *ptr_scratch = &usac_data->scratch_buffer[0];
- WORD32 subfr_len, n_subfr;
+ WORD32 subfr_len = 0, n_subfr = 0;
WORD32 err = 0;
len_fr = usac_data->ccfl;
@@ -663,15 +663,13 @@ WORD32 ixheaacd_lpd_bpf_fix(ia_usac_data_struct *usac_data,
float *synth, synth_corr, synth_energy;
WORD32 pitch[NUM_SUBFR_SUPERFRAME_BY2 + 3];
float pitch_gain[NUM_SUBFR_SUPERFRAME_BY2 + 3];
- WORD32 len_fr, lpd_sbf_len, lpd_delay, num_subfr_by2, synth_delay, fac_length;
+ WORD32 len_fr, lpd_sbf_len, num_subfr_by2, synth_delay;
WORD32 err = 0;
len_fr = usac_data->ccfl;
lpd_sbf_len = (NUM_FRAMES * usac_data->num_subfrm) / 2;
- lpd_delay = lpd_sbf_len * LEN_SUBFR;
num_subfr_by2 = lpd_sbf_len - 1;
synth_delay = num_subfr_by2 * LEN_SUBFR;
- fac_length = (usac_data->len_subfrm) / 2;
ixheaacd_memset(synth_buf, MAX_PITCH + synth_delay + len_fr);
ixheaacd_mem_cpy(st->synth_prev, synth_buf, MAX_PITCH + synth_delay);
diff --git a/decoder/ixheaacd_lpc_dec.c b/decoder/ixheaacd_lpc_dec.c
index 3dda040..0a90d1d 100644
--- a/decoder/ixheaacd_lpc_dec.c
+++ b/decoder/ixheaacd_lpc_dec.c
@@ -65,7 +65,7 @@ VOID ixheaacd_lsf_weight_2st_flt(FLOAT32 *lsfq, FLOAT32 *w, WORD32 mode) {
}
static WORD32 ixheaacd_decoding_avq_tool(WORD32 *read_arr, WORD32 *nvecq) {
- WORD32 i, k, n, qn, nk, kv[8] = {0};
+ WORD32 i, k, qn, kv[8] = {0};
WORD32 code_book_idx;
WORD32 *ptr_kv = &kv[0];
@@ -74,13 +74,6 @@ static WORD32 ixheaacd_decoding_avq_tool(WORD32 *read_arr, WORD32 *nvecq) {
for (k = 0; k < 2; k++) {
qn = read_arr[k];
- nk = 0;
- n = qn;
- if (qn > 4) {
- nk = (qn - 3) >> 1;
- n = qn - nk * 2;
- }
-
if (qn > 0) {
code_book_idx = read_arr[position++];
@@ -104,7 +97,7 @@ static WORD32 ixheaacd_avq_first_approx_abs(FLOAT32 *lsf, WORD32 *indx) {
extern const FLOAT32 ixheaacd_weight_table_avq[];
WORD32 position = 0;
WORD32 avq[ORDER];
- FLOAT32 d[ORDER + 1], lsf_min;
+ FLOAT32 lsf_min;
const FLOAT32 *ptr_w;
ptr_w = &ixheaacd_weight_table_avq[(indx[0] * ORDER)];
@@ -117,12 +110,6 @@ static WORD32 ixheaacd_avq_first_approx_abs(FLOAT32 *lsf, WORD32 *indx) {
position += ixheaacd_decoding_avq_tool(&indx[position], avq);
- d[0] = lsf[0];
- d[ORDER] = FREQ_MAX - lsf[ORDER - 1];
- for (i = 1; i < ORDER; i++) {
- d[i] = lsf[i] - lsf[i - 1];
- }
-
lsf_min = LSF_GAP;
for (i = 0; i < ORDER; i++) {
lsf[i] += (ptr_w[i] * avq[i]);
diff --git a/decoder/ixheaacd_lpfuncs.c b/decoder/ixheaacd_lpfuncs.c
index c2828bf..14a0cfd 100644
--- a/decoder/ixheaacd_lpfuncs.c
+++ b/decoder/ixheaacd_lpfuncs.c
@@ -72,6 +72,7 @@
#include "ixheaacd_latmdemux.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_aacdec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
@@ -102,81 +103,69 @@ static PLATFORM_INLINE WORD32 ixheaacd_shr32_drc(WORD32 a, WORD32 b) {
return out_val;
}
-static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32_drc(WORD32 a, WORD16 b) {
- WORD32 result;
- WORD64 temp_result;
-
- temp_result = (WORD64)a * (WORD64)b;
-
- if (temp_result < (WORD64)MIN_32)
- result = MIN_32;
-
- else if (temp_result > (WORD64)MAX_32)
- result = MAX_32;
-
- else
- result = (WORD32)(temp_result);
-
- return (result);
-}
-
VOID ixheaacd_process_win_seq(WORD32 *coef, WORD32 *prev, WORD32 *out,
const WORD16 *window_long,
const WORD16 *window_short, WORD16 q_shift,
- WORD16 ch_fac, WORD16 flag) {
+ WORD16 ch_fac, WORD16 flag, WORD16 size_01) {
WORD32 i, accu;
WORD32 *coef_1;
const WORD16 *temp_win_sh, *temp_win_long;
WORD32 *out1, *out2;
WORD32 *temp_prev;
+ WORD16 size_07 = 7 * size_01;
+ WORD16 size_08 = 8 * size_01;
+ WORD16 size_09 = 9 * size_01;
+ WORD16 size_14 = 14 * size_01;
+ WORD16 size_15 = 15 * size_01;
+
if (flag == 1) {
- for (i = 0; i < SIZE07; i++) {
+ for (i = 0; i < size_07; i++) {
WORD32 temp1 = ixheaacd_shl32_dir_sat_limit(
- ixheaacd_mult32x16in32(coef[SIZE08 + i], window_long[2 * i]),
+ ixheaacd_mult32x16in32(coef[size_08 + i], window_long[2 * i]),
(q_shift + 1));
accu = ixheaacd_add32_sat(temp1, ((WORD32)prev[i] << 16));
out[ch_fac * i] = accu;
accu = ixheaacd_shl32_dir_sat_limit(
- ixheaacd_mult32x16in32(-(coef[SIZE15 - 1 - i]),
- window_long[2 * (SIZE07 - i) - 1]),
+ ixheaacd_mult32x16in32(-(coef[size_15 - 1 - i]),
+ window_long[2 * (size_07 - i) - 1]),
q_shift);
- out[ch_fac * (i + SIZE09)] = (accu << 1);
+ out[ch_fac * (i + size_09)] = (accu << 1);
}
temp_win_sh = &(window_short[0]);
- coef_1 = &(coef[SIZE15]);
- temp_win_long = &(window_long[SIZE14]);
- temp_prev = &(prev[SIZE08 - 1]);
- out1 = &(out[ch_fac * (SIZE07)]);
- out2 = &(out[ch_fac * (SIZE09 - 1)]);
+ coef_1 = &(coef[size_15]);
+ temp_win_long = &(window_long[size_14]);
+ temp_prev = &(prev[size_08 - 1]);
+ out1 = &(out[ch_fac * (size_07)]);
+ out2 = &(out[ch_fac * (size_09 - 1)]);
} else {
- for (i = 0; i < SIZE07; i++) {
- accu = ixheaacd_mult32x16in32_drc(
- prev[SIZE08 - 1 - i], ixheaacd_negate16(window_long[2 * i + 1]));
+ for (i = 0; i < size_07; i++) {
+ accu = ixheaacd_mult32x16in32_sat(
+ prev[size_08 - 1 - i], ixheaacd_negate16(window_long[2 * i + 1]));
out[ch_fac * i] = accu;
accu = ixheaacd_sub32_sat(
- ixheaacd_shl32_dir_sat_limit(-(coef[SIZE15 - 1 - i]), (q_shift - 1)),
- ixheaacd_mult32x16in32_drc(prev[i + SIZE01],
- window_long[2 * SIZE07 - 2 - 2 * i]));
+ ixheaacd_shl32_dir_sat_limit(-(coef[size_15 - 1 - i]), (q_shift - 1)),
+ ixheaacd_mult32x16in32_sat(prev[i + size_01],
+ window_long[2 * size_07 - 2 - 2 * i]));
- out[ch_fac * (SIZE09 + i)] = accu;
+ out[ch_fac * (size_09 + i)] = accu;
}
- temp_win_sh = &(window_long[SIZE14]);
- coef_1 = &(coef[SIZE15]);
+ temp_win_sh = &(window_long[size_14]);
+ coef_1 = &(coef[size_15]);
temp_win_long = &(window_short[0]);
- temp_prev = &(prev[SIZE01 - 1]);
- out1 = &(out[ch_fac * (SIZE07)]);
- out2 = &(out[ch_fac * (SIZE09 - 1)]);
+ temp_prev = &(prev[size_01 - 1]);
+ out1 = &(out[ch_fac * (size_07)]);
+ out2 = &(out[ch_fac * (size_09 - 1)]);
}
- for (i = SIZE01 - 1; i >= 0; i--) {
+ for (i = size_01 - 1; i >= 0; i--) {
WORD32 temp_coef = *coef_1++;
WORD16 win1 = *temp_win_long++;
WORD16 win2 = *temp_win_long++;
@@ -186,7 +175,7 @@ VOID ixheaacd_process_win_seq(WORD32 *coef, WORD32 *prev, WORD32 *out,
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(ixheaacd_mult32x16in32(temp_coef, win1),
q_shift),
- ixheaacd_mult32x16in32_drc(prev1, win3));
+ ixheaacd_mult32x16in32_sat(prev1, win3));
*out1 = accu << flag;
out1 += ch_fac;
@@ -194,7 +183,7 @@ VOID ixheaacd_process_win_seq(WORD32 *coef, WORD32 *prev, WORD32 *out,
ixheaacd_shl32_dir_sat_limit(
ixheaacd_mult32x16in32(ixheaacd_negate32_sat(temp_coef), win2),
q_shift),
- ixheaacd_mult32x16in32_drc(prev1, win4));
+ ixheaacd_mult32x16in32_sat(prev1, win4));
*out2 = accu << flag;
out2 -= ch_fac;
}
@@ -203,14 +192,17 @@ VOID ixheaacd_process_win_seq(WORD32 *coef, WORD32 *prev, WORD32 *out,
static PLATFORM_INLINE VOID ixheaacd_long_short_win_process(
WORD32 *current, WORD32 *prev, WORD32 *out, const WORD16 *short_window,
const WORD16 *long_window_prev, WORD16 q_shift, WORD16 ch_fac,
- WORD32 flag) {
+ WORD32 flag, WORD16 size_01) {
+
+ WORD16 size_02 = 2 * size_01;
+ WORD16 size_03 = 3 * size_01;
WORD i;
WORD32 accu;
- WORD32 *current_tmp1 = &(current[(SIZE03 - 1)]);
- WORD32 *current_tmp2 = &(current[-SIZE01]);
- const WORD16 *short_ptr = &(short_window[SIZE02 - 1]);
+ WORD32 *current_tmp1 = &(current[(size_03 - 1)]);
+ WORD32 *current_tmp2 = &(current[-size_01]);
+ const WORD16 *short_ptr = &(short_window[size_02 - 1]);
- for (i = SIZE01 - 1; i >= 0; i--) {
+ for (i = size_01 - 1; i >= 0; i--) {
WORD32 tmp1_cur = *current_tmp1--;
WORD32 tmp2_cur = *current_tmp2++;
WORD16 short1 = *short_ptr--;
@@ -219,18 +211,18 @@ static PLATFORM_INLINE VOID ixheaacd_long_short_win_process(
ixheaacd_shl32_dir_sat_limit((ixheaacd_mult32x16in32(tmp1_cur, short2) -
ixheaacd_mult32x16in32(tmp2_cur, short1)),
q_shift),
- ixheaacd_mult32x16in32_drc(prev[i], long_window_prev[0 - 2 - 2 * i]));
+ ixheaacd_mult32x16in32_sat(prev[i], long_window_prev[0 - 2 - 2 * i]));
out[ch_fac * (0 + i)] = accu;
if (flag) {
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(
- (ixheaacd_mult32x16in32(-(tmp1_cur), short1) -
+ (ixheaacd_mult32x16in32(ixheaacd_negate32_sat(tmp1_cur), short1) -
ixheaacd_mult32x16in32(tmp2_cur, short2)),
q_shift),
- ixheaacd_mult32x16in32_drc(prev[SIZE02 - 1 - i],
- long_window_prev[-2 * SIZE02 + 2 * i]));
- out[ch_fac * (SIZE02 - 1 - i)] = accu;
+ ixheaacd_mult32x16in32_sat(prev[size_02 - 1 - i],
+ long_window_prev[-2 * size_02 + 2 * i]));
+ out[ch_fac * (size_02 - 1 - i)] = accu;
}
}
}
@@ -239,71 +231,78 @@ VOID ixheaacd_long_short_win_seq(WORD32 *current, WORD32 *prev, WORD32 *out,
const WORD16 *short_window,
const WORD16 *short_window_prev,
const WORD16 *long_window_prev, WORD16 q_shift,
- WORD16 ch_fac) {
+ WORD16 ch_fac, WORD16 size_01) {
+
+ WORD16 size_02 = 2 * size_01;
+ WORD16 size_06 = 6 * size_01;
+ WORD16 size_07 = 7 * size_01;
+ WORD16 size_08 = 8 * size_01;
+ WORD16 size_09 = 9 * size_01;
+ WORD16 size_10 = 10 * size_01;
+ WORD16 size_16 = 16 * size_01;
+
WORD32 i, flag;
WORD32 accu;
- for (i = 0; i < SIZE07; i++) {
- accu = ixheaacd_mult32x16in32_drc(
- prev[SIZE08 - 1 - i], ixheaacd_negate16(long_window_prev[2 * i + 1]));
+ for (i = 0; i < size_07; i++) {
+ accu = ixheaacd_mult32x16in32_sat(
+ prev[size_08 - 1 - i], ixheaacd_negate16(long_window_prev[2 * i + 1]));
out[ch_fac * i] = accu;
}
- for (i = 0; i < SIZE01; i++) {
+ for (i = 0; i < size_01; i++) {
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(
- ixheaacd_mult32x16in32(current[SIZE01 + i],
+ ixheaacd_mult32x16in32(current[size_01 + i],
short_window_prev[2 * i]),
q_shift),
- ixheaacd_mult32x16in32_drc(prev[SIZE01 - 1 - i],
- long_window_prev[2 * SIZE07 + 1 + 2 * i]));
- out[ch_fac * (SIZE07 + i)] = accu;
+ ixheaacd_mult32x16in32_sat(prev[size_01 - 1 - i],
+ long_window_prev[2 * size_07 + 1 + 2 * i]));
+ out[ch_fac * (size_07 + i)] = accu;
}
- for (i = 0; i < SIZE01; i++) {
+ for (i = 0; i < size_01; i++) {
accu = ixheaacd_sub32_sat(
ixheaacd_shl32_dir_sat_limit(
- ixheaacd_mult32x16in32(-(current[SIZE02 - 1 - i]),
- short_window_prev[SIZE02 - 2 * i - 1]),
+ ixheaacd_mult32x16in32(ixheaacd_negate32_sat(current[size_02 - 1 - i]),
+ short_window_prev[size_02 - 2 * i - 1]),
q_shift),
- ixheaacd_mult32x16in32_drc(prev[i],
- long_window_prev[SIZE16 - 2 - (2 * i)]));
- out[ch_fac * (SIZE08 + i)] = accu;
+ ixheaacd_mult32x16in32_sat(prev[i],
+ long_window_prev[size_16 - 2 - (2 * i)]));
+ out[ch_fac * (size_08 + i)] = accu;
}
flag = 1;
for (i = 0; i < 4; i++) {
- WORD32 inc = i * SIZE02;
+ WORD32 inc = i * size_02;
if (i == 3) {
flag = 0;
}
- ixheaacd_long_short_win_process(&current[SIZE01 + inc], &prev[SIZE01 + inc],
- &out[ch_fac * (SIZE09 + inc)], short_window,
- &long_window_prev[2 * (SIZE07 - inc)],
- q_shift, ch_fac, flag);
+ ixheaacd_long_short_win_process(&current[size_01 + inc], &prev[size_01 + inc],
+ &out[ch_fac * (size_09 + inc)], short_window,
+ &long_window_prev[2 * (size_07 - inc)],
+ q_shift, ch_fac, flag, size_01);
}
- for (i = 0; i < SIZE01; i++) {
- accu = (ixheaacd_mult32x16in32(-(current[SIZE10 - 1 - i]),
- short_window[SIZE02 - 2 * i - 1]) -
- ixheaacd_mult32x16in32(current[SIZE06 + i],
- short_window[SIZE02 - 2 * i - 2]));
+ for (i = 0; i < size_01; i++) {
+ accu = (ixheaacd_mult32x16in32(-(current[size_10 - 1 - i]),
+ short_window[size_02 - 2 * i - 1]) -
+ ixheaacd_mult32x16in32(current[size_06 + i],
+ short_window[size_02 - 2 * i - 2]));
prev[i] =
ixheaacd_round16(ixheaacd_shl32_dir_sat_limit(accu, (q_shift + 1)));
}
}
-VOID ixheaacd_nolap1_32(WORD32 *coef,
-
- WORD32 *out,
-
- WORD16 q_shift, WORD16 ch_fac) {
+VOID ixheaacd_nolap1_32(WORD32 *coef, WORD32 *out, WORD16 q_shift,
+ WORD16 ch_fac, WORD16 size_01) {
+ WORD16 size_07 = 7 * size_01;
WORD32 i;
- for (i = 0; i < SIZE07; i++) {
+ for (i = 0; i < size_07; i++) {
out[ch_fac * i] = ixheaacd_shr32_drc(
- ixheaacd_negate32_sat(coef[SIZE07 - 1 - i]), 16 - q_shift);
+ ixheaacd_negate32_sat(coef[size_07 - 1 - i]), 16 - q_shift);
}
}
@@ -316,6 +315,16 @@ VOID ixheaacd_neg_shift_spec_dec(WORD32 *coef, WORD32 *out, WORD16 q_shift,
}
}
+VOID ixheaacd_Nolap_dec(WORD32 *coef, WORD32 *out, WORD16 q_shift,
+ WORD16 ch_fac, WORD16 size_01) {
+ WORD16 size_07 = 7 * size_01;
+ WORD32 i;
+ for (i = 0; i < size_07; i++) {
+ out[ch_fac * i] = ixheaacd_shl32_dir_sat_limit(
+ ixheaacd_negate32_sat(coef[size_07 - 1 - i]), q_shift);
+ }
+}
+
VOID ixheaacd_spec_to_overlapbuf_dec(WORD32 *ptr_overlap_buf,
WORD32 *ptr_spec_coeff, WORD32 q_shift,
WORD32 size) {
@@ -337,10 +346,10 @@ VOID ixheaacd_overlap_buf_out_dec(WORD32 *out_samples, WORD32 *ptr_overlap_buf,
VOID ixheaacd_overlap_out_copy_dec(WORD32 *out_samples, WORD32 *ptr_overlap_buf,
WORD32 *ptr_overlap_buf1,
- const WORD16 ch_fac) {
+ const WORD16 ch_fac, WORD16 size_01) {
WORD32 i;
- for (i = 0; i < SIZE01; i++) {
+ for (i = 0; i < size_01; i++) {
out_samples[ch_fac * i] =
ixheaacd_shl32_sat((WORD16)ptr_overlap_buf[i], 15);
ptr_overlap_buf[i] = ptr_overlap_buf1[i];
@@ -352,10 +361,26 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
ia_ics_info_struct *ptr_ics_info, VOID *out_samples,
const WORD16 ch_fac, WORD32 *scratch,
ia_aac_dec_tables_struct *ptr_aac_tables,
- WORD32 object_type, WORD slot_element) {
+ WORD32 object_type, WORD32 ld_mps_present,
+ WORD slot_element) {
WORD32 *ptr_overlap_buf;
const WORD16 *ptr_long_window;
const WORD16 *ptr_short_window;
+ WORD16 max_bin_long = ptr_ics_info->frame_length;
+ WORD16 size_01;
+ if (max_bin_long == 960)
+ size_01 = (max_bin_long / 16);
+ else
+ size_01 = (MAX_BINS_LONG / 16);
+ WORD16 size_02 = 2 * size_01;
+ WORD16 size_04 = 4 * size_01;
+ WORD16 size_06 = 6 * size_01;
+ WORD16 size_07 = 7 * size_01;
+ WORD16 size_08 = 8 * size_01;
+ WORD16 size_09 = 9 * size_01;
+ WORD16 size_10 = 10 * size_01;
+ WORD16 size_14 = 14 * size_01;
+ WORD16 size_15 = 15 * size_01;
ptr_overlap_buf = ptr_aac_dec_overlap_info->ptr_overlap_buf;
ptr_long_window =
@@ -394,9 +419,10 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
ptr_spec_coeff[i + N + N / 2] = -ptr_spec_coeff[i + N / 2];
}
}
- } else
-
- {
+ } else if (960 == ptr_ics_info->frame_length) {
+ ixheaacd_mdct_960(ptr_spec_coeff, scratch, &imdct_scale, 0,
+ ptr_aac_tables->pstr_imdct_tables);
+ } else {
expo = (*ixheaacd_calc_max_spectral_line)(ptr_spec_coeff, 1024) - 1;
expo = 8 - expo;
@@ -426,15 +452,28 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
ptr_ics_info->qshift_adj = 2;
ptr_ics_info = tmp_ptr_ics_info;
}
+
+ if (960 == ptr_ics_info->frame_length)
+ {
+ ixheaacd_over_lap_add1_dec(ptr_spec_coeff, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window, q_shift,
+ 480, ch_fac);
+
+ ixheaacd_spec_to_overlapbuf(ptr_overlap_buf, ptr_spec_coeff,
+ q_shift, 480);
+
+ ptr_ics_info->qshift_adj = 2;
+ }
+
if ((512 == ptr_ics_info->frame_length) ||
(480 == ptr_ics_info->frame_length)) {
if (object_type != AOT_ER_AAC_ELD) {
if (512 == ptr_ics_info->frame_length) {
ixheaacd_lap1_512_480(ptr_spec_coeff, ptr_overlap_buf,
(WORD16 *)out_samples, ptr_long_window,
- q_shift, SIZE04, ch_fac, slot_element);
+ q_shift, size_04, ch_fac, slot_element);
ixheaacd_spec_to_overlapbuf(ptr_overlap_buf, ptr_spec_coeff,
- q_shift, SIZE04);
+ q_shift, size_04);
} else if (480 == ptr_ics_info->frame_length) {
ixheaacd_lap1_512_480(ptr_spec_coeff, ptr_overlap_buf,
(WORD16 *)out_samples, ptr_long_window,
@@ -443,12 +482,18 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
q_shift, 240);
}
} else {
- ixheaacd_eld_dec_windowing(ptr_spec_coeff, ptr_long_window,
- ptr_ics_info->frame_length, q_shift,
- ptr_overlap_buf, ch_fac,
- (WORD16 *)out_samples, slot_element);
-
- ptr_ics_info->qshift_adj = -2;
+ if (ld_mps_present == 1) {
+ ixheaacd_eld_dec_windowing_32bit(
+ ptr_spec_coeff, ptr_long_window,
+ ptr_ics_info->frame_length, q_shift, ptr_overlap_buf,
+ ch_fac, (WORD32 *)out_samples);
+ } else {
+ ixheaacd_eld_dec_windowing(
+ ptr_spec_coeff, ptr_long_window,
+ ptr_ics_info->frame_length, q_shift, ptr_overlap_buf,
+ ch_fac, (WORD16 *)out_samples, slot_element);
+ ptr_ics_info->qshift_adj = -2;
+ }
}
}
break;
@@ -458,22 +503,32 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
if (1024 == ptr_ics_info->frame_length) {
(*ixheaacd_post_twiddle)(scratch, ptr_spec_coeff,
ptr_aac_tables->pstr_imdct_tables, 1024);
+ ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 1,
+ size_01);
+ (*ixheaacd_spec_to_overlapbuf)(ptr_overlap_buf, scratch, q_shift,
+ size_08);
+ }
+
+ if (960 == ptr_ics_info->frame_length) {
+ ixheaacd_process_win_seq(ptr_spec_coeff, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 1,
+ size_01);
+ ixheaacd_spec_to_overlapbuf(ptr_overlap_buf, ptr_spec_coeff,
+ q_shift, 480);
}
- ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
- (WORD32 *)out_samples, ptr_long_window,
- ptr_short_window, q_shift, ch_fac, 1);
ptr_ics_info->qshift_adj = 1;
if (512 == ptr_ics_info->frame_length) {
ixheaacd_spec_to_overlapbuf(ptr_overlap_buf, ptr_spec_coeff,
- q_shift, SIZE04);
- } else if (480 == ptr_ics_info->frame_length) {
+ q_shift, size_04);
+ }
+ if (480 == ptr_ics_info->frame_length) {
ixheaacd_spec_to_overlapbuf(ptr_overlap_buf, ptr_spec_coeff,
q_shift, 240);
- } else {
- (*ixheaacd_spec_to_overlapbuf)(ptr_overlap_buf, scratch, q_shift,
- SIZE08);
}
break;
}
@@ -489,28 +544,51 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
case ONLY_LONG_SEQUENCE:
case LONG_STOP_SEQUENCE:
- (*ixheaacd_over_lap_add1)(scratch, ptr_overlap_buf,
- (WORD32 *)out_samples, ptr_long_window,
- q_shift, SIZE08, ch_fac);
-
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_over_lap_add1)(scratch, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ q_shift, size_08, ch_fac);
+ } else {
+ ixheaacd_over_lap_add1_dec(ptr_spec_coeff, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ q_shift, size_08, ch_fac);
+ }
ptr_ics_info->qshift_adj = 2;
break;
case LONG_START_SEQUENCE:
case EIGHT_SHORT_SEQUENCE:
- ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
- (WORD32 *)out_samples, ptr_long_window,
- ptr_short_window, q_shift, ch_fac, 1);
+ if (1024 == ptr_ics_info->frame_length) {
+ ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 1,
+ size_01);
+ } else {
+ ixheaacd_process_win_seq(ptr_spec_coeff, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 1,
+ size_01);
+ }
+
ptr_ics_info->qshift_adj = 1;
break;
}
- ixheaacd_nolap1_32(&scratch[SIZE01], ptr_overlap_buf, q_shift, 1);
+ if (960 != ptr_ics_info->frame_length) {
+ ixheaacd_nolap1_32(&scratch[size_01], ptr_overlap_buf, q_shift, 1,
+ size_01);
- (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[SIZE07], scratch,
- q_shift, SIZE01);
+ (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[size_07], scratch,
+ q_shift, size_01);
+ } else {
+ ixheaacd_nolap1_32(&ptr_spec_coeff[size_01], ptr_overlap_buf,
+ q_shift, 1, size_01);
+
+ (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[size_07],
+ ptr_spec_coeff, q_shift, size_01);
+ }
break;
@@ -524,20 +602,36 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
case EIGHT_SHORT_SEQUENCE:
case LONG_START_SEQUENCE:
- (*ixheaacd_overlap_buf_out)((WORD32 *)out_samples, ptr_overlap_buf,
- SIZE07, ch_fac);
-
- (*ixheaacd_over_lap_add1)(
- &scratch[SIZE14], &ptr_overlap_buf[SIZE07],
- ((WORD32 *)out_samples + ch_fac * (SIZE07)), ptr_short_window,
- q_shift, SIZE01, ch_fac);
+ if (960 != ptr_ics_info->frame_length) {
+ (*ixheaacd_overlap_buf_out)((WORD32*)out_samples,
+ ptr_overlap_buf, size_07, ch_fac);
+ (*ixheaacd_over_lap_add1)(
+ &scratch[size_14], &ptr_overlap_buf[size_07],
+ ((WORD32*)out_samples + ch_fac * (size_07)),
+ ptr_short_window, q_shift, size_01, ch_fac);
+ } else {
+ ixheaacd_dec_copy_outsample((WORD32*)out_samples,
+ ptr_overlap_buf, size_07, ch_fac);
+ ixheaacd_over_lap_add1_dec(&ptr_spec_coeff[size_14],
+ &ptr_overlap_buf[size_07],
+ ((WORD32*)out_samples + ch_fac * (size_07)),
+ ptr_short_window, q_shift, size_01,
+ ch_fac);
+ }
{
- WORD16 q_shift1 = q_shift - 1;
+ if (960 != ptr_ics_info->frame_length) {
- (*ixheaacd_neg_shift_spec)(
- &scratch[SIZE08], ((WORD32 *)out_samples + ch_fac * SIZE09),
- q_shift1, ch_fac);
+ WORD16 q_shift1 = q_shift - 1;
+ (*ixheaacd_neg_shift_spec)(&scratch[size_08],
+ ((WORD32*)out_samples + ch_fac * size_09),
+ q_shift1, ch_fac);
+ } else {
+ WORD16 q_shift1 = q_shift - 1;
+ ixheaacd_Nolap_dec(&ptr_spec_coeff[size_08],
+ ((WORD32*)out_samples + ch_fac * size_09),
+ q_shift1, ch_fac, size_01);
+ }
}
ptr_ics_info->qshift_adj = 2;
@@ -545,16 +639,29 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
case ONLY_LONG_SEQUENCE:
case LONG_STOP_SEQUENCE:
- ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
- (WORD32 *)out_samples, ptr_long_window,
- ptr_short_window, q_shift, ch_fac, 0);
+ if (1024 == ptr_ics_info->frame_length) {
+ ixheaacd_process_win_seq(scratch, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 0,
+ size_01);
+ } else {
+ ixheaacd_process_win_seq(ptr_spec_coeff, ptr_overlap_buf,
+ (WORD32*)out_samples, ptr_long_window,
+ ptr_short_window, q_shift, ch_fac, 0,
+ size_01);
+ }
ptr_ics_info->qshift_adj = 2;
break;
}
- (*ixheaacd_spec_to_overlapbuf)(ptr_overlap_buf, scratch, q_shift,
- SIZE08);
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_spec_to_overlapbuf)(ptr_overlap_buf, scratch, q_shift,
+ size_08);
+ } else {
+ (*ixheaacd_spec_to_overlapbuf)(ptr_overlap_buf, ptr_spec_coeff,
+ q_shift, size_08);
+ }
break;
}
@@ -570,56 +677,91 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
{
WORD32 expo;
- expo = (*ixheaacd_calc_max_spectral_line)(ptr_spec_coeff, 1024) - 1;
+ if (1024 == ptr_ics_info->frame_length) {
+ expo = (*ixheaacd_calc_max_spectral_line)(ptr_spec_coeff, 1024) - 1;
- expo = 5 - expo;
+ expo = 5 - expo;
- for (i = 0; i < MAX_WINDOWS; i++) {
- imdct_scale[i] = ixheaacd_inverse_transform(
- &ptr_spec_coeff[i * SIZE02], &scratch[i * SIZE02],
- ptr_aac_tables->pstr_imdct_tables, expo, 128);
+ for (i = 0; i < MAX_WINDOWS; i++) {
+ imdct_scale[i] = ixheaacd_inverse_transform(
+ &ptr_spec_coeff[i * size_02], &scratch[i * size_02],
+ ptr_aac_tables->pstr_imdct_tables, expo, 128);
- (*ixheaacd_post_twiddle)(&scratch[i * SIZE02],
- &ptr_spec_coeff[i * SIZE02],
+ (*ixheaacd_post_twiddle)(&scratch[i * size_02],
+ &ptr_spec_coeff[i * size_02],
ptr_aac_tables->pstr_imdct_tables, 128);
- }
- }
+ }
+ max_scale = 31 + imdct_scale[0];
+ q_shift = max_scale + (-16 - 6 - 1);
+ } else {
+ expo = (*ixheaacd_calc_max_spectral_line)(ptr_spec_coeff, 960) - 1;
+ memcpy(scratch, ptr_spec_coeff, sizeof(WORD32) * 960);
- max_scale = 31 + imdct_scale[0];
+ for (i = 0; i < MAX_WINDOWS; i++) {
+ ixheaacd_inverse_transform_960(
+ &ptr_spec_coeff[i * size_02], &scratch[i * size_02],
+ ptr_aac_tables->pstr_imdct_tables, expo, &imdct_scale[i]);
- q_shift = max_scale + (-16 - 6 - 1);
+ imdct_scale[i] -= expo;
+ }
+ max_scale = 31 + imdct_scale[0];
+ q_shift = max_scale + (-16 - 6 - 1);
+ }
+ }
switch (ptr_aac_dec_overlap_info->window_sequence) {
- WORD32 overlap_buf_loc[SIZE01];
+ WORD32 overlap_buf_loc[64];
case EIGHT_SHORT_SEQUENCE:
case LONG_START_SEQUENCE:
(*ixheaacd_overlap_buf_out)((WORD32 *)out_samples, ptr_overlap_buf,
- SIZE07, ch_fac);
+ size_07, ch_fac);
- (*ixheaacd_over_lap_add1)(&scratch[0], &ptr_overlap_buf[SIZE07],
- ((WORD32 *)out_samples + ch_fac * SIZE07),
- ptr_short_window, q_shift, SIZE01, ch_fac);
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_over_lap_add1)(&scratch[0], &ptr_overlap_buf[size_07],
+ ((WORD32*)out_samples + ch_fac * size_07),
+ ptr_short_window, q_shift, size_01, ch_fac);
+ } else {
+ ixheaacd_over_lap_add1_dec(&ptr_spec_coeff[0], &ptr_overlap_buf[size_07],
+ ((WORD32*)out_samples + ch_fac * size_07),
+ ptr_short_window, q_shift, size_01, ch_fac);
+ }
for (i = 0; i < 3; i++) {
- WORD32 inc = (i * SIZE02);
- (*ixheaacd_spec_to_overlapbuf)(overlap_buf_loc, &scratch[inc],
- q_shift, SIZE01);
-
- (*ixheaacd_over_lap_add1)(
- &scratch[SIZE02 + inc], overlap_buf_loc,
- ((WORD32 *)out_samples + ch_fac * (SIZE09 + inc)), short_window,
- q_shift, SIZE01, ch_fac);
+ WORD32 inc = (i * size_02);
+
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_spec_to_overlapbuf)(overlap_buf_loc, &scratch[inc],
+ q_shift, size_01);
+
+ (*ixheaacd_over_lap_add1)(&scratch[size_02 + inc], overlap_buf_loc,
+ ((WORD32*)out_samples + ch_fac * (size_09 + inc)),
+ short_window, q_shift, size_01, ch_fac);
+ } else {
+ (*ixheaacd_spec_to_overlapbuf)(overlap_buf_loc, &ptr_spec_coeff[inc],
+ q_shift, size_01);
+
+ ixheaacd_over_lap_add1_dec(&ptr_spec_coeff[size_02 + inc], overlap_buf_loc,
+ ((WORD32*)out_samples + ch_fac * (size_09 + inc)),
+ short_window, q_shift, size_01, ch_fac);
+ }
+ }
+
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_over_lap_add2)(&scratch[size_08], &scratch[size_06],
+ ptr_overlap_buf, short_window, q_shift,
+ size_01, 1);
+ } else {
+ ixheaacd_over_lap_add2_dec(&ptr_spec_coeff[size_08], &ptr_spec_coeff[size_06],
+ ptr_overlap_buf, short_window, q_shift,
+ size_01, 1);
}
- (*ixheaacd_over_lap_add2)(&scratch[SIZE08], &scratch[SIZE06],
- ptr_overlap_buf, short_window, q_shift,
- SIZE01, 1);
- (*ixheaacd_overlap_out_copy)(((WORD32 *)out_samples + ch_fac * SIZE15),
- ptr_overlap_buf, &ptr_overlap_buf[SIZE01],
- ch_fac);
+ (*ixheaacd_overlap_out_copy)(((WORD32 *)out_samples + ch_fac * size_15),
+ ptr_overlap_buf, &ptr_overlap_buf[size_01],
+ ch_fac, size_01);
ptr_ics_info->qshift_adj = 2;
@@ -628,35 +770,53 @@ VOID ixheaacd_imdct_process(ia_aac_dec_overlap_info *ptr_aac_dec_overlap_info,
case ONLY_LONG_SEQUENCE:
case LONG_STOP_SEQUENCE:
- ixheaacd_long_short_win_seq(
- scratch, ptr_overlap_buf, (WORD32 *)out_samples, short_window,
- ptr_short_window, ptr_long_window, q_shift, ch_fac);
+ if (1024 == ptr_ics_info->frame_length) {
- ptr_ics_info->qshift_adj = 2;
+ ixheaacd_long_short_win_seq(
+ scratch, ptr_overlap_buf, (WORD32*)out_samples, short_window,
+ ptr_short_window, ptr_long_window, q_shift, ch_fac, size_01);
+ } else {
+ ixheaacd_long_short_win_seq(
+ ptr_spec_coeff, ptr_overlap_buf, (WORD32*)out_samples, short_window,
+ ptr_short_window, ptr_long_window, q_shift, ch_fac, size_01);
+ }
+ ptr_ics_info->qshift_adj = 2;
break;
}
for (i = 0; i < 3; i++) {
- WORD32 inc = (i * SIZE02);
- (*ixheaacd_over_lap_add2)(&scratch[SIZE10 + inc], &scratch[SIZE08 + inc],
- &ptr_overlap_buf[SIZE01 + inc], short_window,
- q_shift, SIZE01, 1);
+ WORD32 inc = (i * size_02);
+
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_over_lap_add2)(&scratch[size_10 + inc], &scratch[size_08 + inc],
+ &ptr_overlap_buf[size_01 + inc], short_window,
+ q_shift, size_01, 1);
+ } else {
+ ixheaacd_over_lap_add2_dec(&ptr_spec_coeff[size_10 + inc],
+ &ptr_spec_coeff[size_08 + inc],
+ &ptr_overlap_buf[size_01 + inc],
+ short_window, q_shift, size_01, 1);
+ }
}
- (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[SIZE07], &scratch[SIZE14],
- q_shift, SIZE01);
+ if (1024 == ptr_ics_info->frame_length) {
+ (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[size_07], &scratch[size_14],
+ q_shift, size_01);
+ } else {
+ (*ixheaacd_spec_to_overlapbuf)(&ptr_overlap_buf[size_07], &ptr_spec_coeff[size_14],
+ q_shift, size_01);
+ }
}
ptr_aac_dec_overlap_info->window_shape = ptr_ics_info->window_shape;
ptr_aac_dec_overlap_info->window_sequence = ptr_ics_info->window_sequence;
}
+
void ixheaacd_eld_dec_windowing(WORD32 *ptr_spect_coeff, const WORD16 *p_win,
WORD32 framesize, WORD16 q_shift,
WORD32 *p_overlap_buffer, const WORD16 stride,
- VOID *out_samples_t, WORD slot_element)
-
-{
+ VOID *out_samples_t, WORD slot_element) {
int i = 0;
int loop_size;
WORD32 *ptr_z = ptr_spect_coeff;
@@ -860,3 +1020,201 @@ void ixheaacd_eld_dec_windowing(WORD32 *ptr_spect_coeff, const WORD16 *p_win,
}
}
}
+
+void ixheaacd_eld_dec_windowing_32bit(WORD32 *ptr_spect_coeff,
+ const WORD16 *p_win, WORD32 framesize,
+ WORD16 q_shift, WORD32 *p_overlap_buffer,
+ const WORD16 stride, WORD32 *out_samples)
+
+{
+ WORD32 i = 0;
+ WORD32 loop_size;
+ WORD32 *ptr_z = ptr_spect_coeff;
+
+ WORD32 *ptr_out, *p_out2;
+ WORD32 *p_overlap_buffer32 = (WORD32 *)p_overlap_buffer;
+ WORD32 delay = framesize >> 2;
+
+ ptr_z = ptr_spect_coeff + delay;
+ p_win += delay;
+ ptr_out = p_overlap_buffer32;
+
+ q_shift = q_shift + 2;
+
+ if (q_shift >= 0) {
+ for (i = (delay)-1; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+
+ win_val = *p_win++;
+
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+
+ win_val = *p_win++;
+
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+ win_val = *p_win++;
+
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+
+ win_val = *p_win++;
+
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+ }
+
+ p_out2 = p_overlap_buffer32;
+ loop_size = (((framesize * 3) - framesize) >> 2) - 1;
+
+ for (i = loop_size; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shl32(win_op, q_shift), *ptr_out++);
+ }
+
+ loop_size = ((((framesize << 2) - delay) - (framesize * 3)) >> 2) - 1;
+ for (i = loop_size; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shl32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shl32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shl32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shl32(win_op, q_shift);
+ }
+ } else {
+ q_shift = -q_shift;
+
+ for (i = (delay)-1; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+
+ *out_samples =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ out_samples += stride;
+ }
+
+ p_out2 = p_overlap_buffer32;
+ loop_size = (((framesize * 3) - framesize) >> 2) - 1;
+
+ for (i = loop_size; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ =
+ ixheaacd_add32_sat(ixheaacd_shr32(win_op, q_shift), *ptr_out++);
+ }
+ loop_size = ((((framesize << 2) - delay) - (framesize * 3)) >> 2) - 1;
+ for (i = loop_size; i >= 0; i--) {
+ WORD32 win_op;
+ WORD16 win_val;
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shr32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shr32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shr32(win_op, q_shift);
+
+ win_val = *p_win++;
+ win_op = ixheaacd_mult32x16in32(*ptr_z++, (win_val));
+ *p_out2++ = ixheaacd_shr32(win_op, q_shift);
+ }
+ }
+}
diff --git a/decoder/ixheaacd_lpp_tran.c b/decoder/ixheaacd_lpp_tran.c
index f096825..8af8ca9 100644
--- a/decoder/ixheaacd_lpp_tran.c
+++ b/decoder/ixheaacd_lpp_tran.c
@@ -74,6 +74,9 @@
#define LPC_SCALE_FACTOR 2
+#define AUTO_CORR_LEN_1024 38
+#define AUTO_CORR_LEN_960 36
+
#define SHIFT 5
static PLATFORM_INLINE WORD32 ixheaacd_mult32x16hin32(WORD32 a, WORD32 b) {
@@ -171,17 +174,17 @@ VOID ixheaacd_filterstep3(WORD16 a0r, WORD16 a0i, WORD16 a1r, WORD16 a1i,
}
}
-VOID ixheaacd_covariance_matrix_calc_dec(
- WORD32 *sub_sign_xlow, ixheaacd_lpp_trans_cov_matrix *cov_matrix,
- WORD32 count) {
+VOID ixheaacd_covariance_matrix_calc_dec_960(
+ WORD32 *sub_sign_xlow, ia_lpp_trans_cov_matrix *cov_matrix,
+ WORD32 count, WORD32 len) {
WORD32 j, k;
WORD32 ixheaacd_drc_offset = 2;
- WORD32 len = 38;
WORD32 factor;
WORD32 max_val, q_factor;
WORD32 temp1, temp2, temp3, temp4;
WORD32 *temp_buf_ptr = sub_sign_xlow;
+ temp3 = 0;
for (k = count; k > 0; k--) {
WORD32 t_phi_01 = 0, t_phi_02 = 0, t_phi_11 = 0;
WORD32 t_phi_12 = 0, t_phi_22 = 0;
@@ -196,7 +199,7 @@ VOID ixheaacd_covariance_matrix_calc_dec(
temp2 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
sub_sign_xlow += 64;
- for (; (j = j + 3) < ixheaacd_drc_offset + len;) {
+ for (; (j = j + 3) <= ixheaacd_drc_offset + len;) {
temp3 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
sub_sign_xlow += 64;
@@ -219,19 +222,128 @@ VOID ixheaacd_covariance_matrix_calc_dec(
t_phi_11 += ixheaacd_mult32x16hin32(temp1, temp1);
}
- temp3 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
- sub_sign_xlow += 64;
+ if (AUTO_CORR_LEN_1024 == len) {
+ temp3 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp3, temp2);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp3, temp1);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp2, temp2);
+
+ temp1 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp1, temp3);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp1, temp2);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp3, temp3);
+ }
+
+ temp2 = ixheaacd_shl32_dir(*temp_buf_ptr, factor);
+ temp4 = ixheaacd_shl32_dir(*(temp_buf_ptr + 64), factor);
+
+ if (AUTO_CORR_LEN_960 == len) {
+ temp3 = ixheaacd_shl32_dir(sub_sign_xlow[-128], factor);
+ temp1 = ixheaacd_shl32_dir(sub_sign_xlow[-64], factor);
+ }
+
+ t_phi_12 = (t_phi_01 - ixheaacd_mult32x16hin32(temp1, temp3) +
+ ixheaacd_mult32x16hin32(temp4, temp2));
+
+ t_phi_22 = (t_phi_11 - ixheaacd_mult32x16hin32(temp3, temp3) +
+ ixheaacd_mult32x16hin32(temp2, temp2));
+
+ max_val = ixheaacd_abs32_nrm(t_phi_01);
+ max_val = max_val | ixheaacd_abs32_nrm(t_phi_02);
+ max_val = max_val | ixheaacd_abs32_nrm(t_phi_12);
+ max_val = max_val | (t_phi_11);
+ max_val = max_val | (t_phi_22);
+
+ q_factor = ixheaacd_pnorm32(max_val);
+
+ cov_matrix->phi_11 = (t_phi_11 << q_factor);
+ cov_matrix->phi_22 = (t_phi_22 << q_factor);
+ cov_matrix->phi_01 = (t_phi_01 << q_factor);
+ cov_matrix->phi_02 = (t_phi_02 << q_factor);
+ cov_matrix->phi_12 = (t_phi_12 << q_factor);
+
+ cov_matrix->d = ixheaacd_sub32_sat(
+ ixheaacd_mult32(cov_matrix->phi_22, cov_matrix->phi_11),
+ ixheaacd_mult32(cov_matrix->phi_12, cov_matrix->phi_12));
+
+ cov_matrix++;
+ temp_buf_ptr++;
+ }
+ return;
+}
+
+VOID ixheaacd_covariance_matrix_calc_dec(
+ WORD32 *sub_sign_xlow, ia_lpp_trans_cov_matrix *cov_matrix,
+ WORD32 count, WORD32 len) {
+ WORD32 j, k;
+ WORD32 ixheaacd_drc_offset = 2;
+ WORD32 factor;
+ WORD32 max_val, q_factor;
+ WORD32 temp1, temp2, temp3, temp4;
+ WORD32 *temp_buf_ptr = sub_sign_xlow;
- t_phi_01 += ixheaacd_mult32x16hin32(temp3, temp2);
- t_phi_02 += ixheaacd_mult32x16hin32(temp3, temp1);
- t_phi_11 += ixheaacd_mult32x16hin32(temp2, temp2);
+ for (k = count; k > 0; k--) {
+ WORD32 t_phi_01 = 0, t_phi_02 = 0, t_phi_11 = 0;
+ WORD32 t_phi_12 = 0, t_phi_22 = 0;
+
+ factor = -3;
+ j = ixheaacd_drc_offset;
+ sub_sign_xlow = temp_buf_ptr;
temp1 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
sub_sign_xlow += 64;
- t_phi_01 += ixheaacd_mult32x16hin32(temp1, temp3);
- t_phi_02 += ixheaacd_mult32x16hin32(temp1, temp2);
- t_phi_11 += ixheaacd_mult32x16hin32(temp3, temp3);
+ temp2 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ for (; (j = j + 3) <= ixheaacd_drc_offset + len;) {
+ temp3 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp3, temp2);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp3, temp1);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp2, temp2);
+
+ temp1 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp1, temp3);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp1, temp2);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp3, temp3);
+
+ temp2 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp2, temp1);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp2, temp3);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp1, temp1);
+ }
+
+ if (AUTO_CORR_LEN_960 != len) {
+ temp3 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp3, temp2);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp3, temp1);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp2, temp2);
+
+ temp1 = ixheaacd_shl32_dir(*sub_sign_xlow, factor);
+ sub_sign_xlow += 64;
+
+ t_phi_01 += ixheaacd_mult32x16hin32(temp1, temp3);
+ t_phi_02 += ixheaacd_mult32x16hin32(temp1, temp2);
+ t_phi_11 += ixheaacd_mult32x16hin32(temp3, temp3);
+ }
+ if (AUTO_CORR_LEN_960 == len) {
+ temp3 = ixheaacd_shl32_dir(sub_sign_xlow[-128], factor);
+
+ temp3 = ixheaacd_shl32_dir(sub_sign_xlow[-64], factor);
+
+ }
temp2 = ixheaacd_shl32_dir(*temp_buf_ptr, factor);
temp4 = ixheaacd_shl32_dir(*(temp_buf_ptr + 64), factor);
@@ -268,13 +380,13 @@ VOID ixheaacd_covariance_matrix_calc_dec(
}
VOID ixheaacd_covariance_matrix_calc_2_dec(
- ixheaacd_lpp_trans_cov_matrix *cov_matrix,
+ ia_lpp_trans_cov_matrix *cov_matrix,
WORD32 *real_buffer, WORD32 num_bands, WORD16 slots) {
WORD32 k;
WORD32 *img_buffer;
WORD32 *ptr_real = real_buffer;
- ixheaacd_lpp_trans_cov_matrix *pac_arr = cov_matrix;
+ ia_lpp_trans_cov_matrix *pac_arr = cov_matrix;
for (k = 0; k < num_bands; k++) {
WORD32 t_phi_11 = 0, t_phi_01 = 0, t_phi_01_i = 0;
@@ -561,7 +673,7 @@ static PLATFORM_INLINE VOID ixheaacd_filt_step3_lp(WORD len, WORD32 coef1,
}
VOID ixheaacd_filter1_lp(ia_sbr_hf_generator_struct *hf_generator,
- ixheaacd_lpp_trans_cov_matrix *cov_matrix_seq,
+ ia_lpp_trans_cov_matrix *cov_matrix_seq,
WORD32 *bw_array, WORD16 *degree_alias,
WORD32 start_idx, WORD32 stop_idx,
WORD32 max_qmf_subband, WORD32 start_patch,
@@ -582,7 +694,7 @@ VOID ixheaacd_filter1_lp(ia_sbr_hf_generator_struct *hf_generator,
memset(bw_index, 0, sizeof(WORD32) * num_patches);
for (low_band = start_patch; low_band < stop_patch; low_band++) {
- ixheaacd_lpp_trans_cov_matrix *p_cov_matrix = &cov_matrix_seq[low_band];
+ ia_lpp_trans_cov_matrix *p_cov_matrix = &cov_matrix_seq[low_band];
alpha_real[1] = 0;
alpha_real[0] = 0;
@@ -751,10 +863,11 @@ VOID ixheaacd_low_pow_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
ia_patch_param_struct *patch_param =
hf_generator->pstr_settings->str_patch_param;
WORD32 patch;
- ixheaacd_lpp_trans_cov_matrix cov_matrix_seq[MAX_COLS];
+ ia_lpp_trans_cov_matrix cov_matrix_seq[MAX_COLS];
WORD32 actual_stop_band;
WORD32 num_patches = hf_generator->pstr_settings->num_patches;
+ WORD32 auto_corr_length = hf_generator->pstr_settings->num_columns + 6;
stop_idx = (hf_generator->pstr_settings->num_columns + stop_idx);
@@ -798,13 +911,20 @@ VOID ixheaacd_low_pow_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
}
}
if (norm_max != 30) {
- (*ixheaacd_covariance_matrix_calc)(sub_sig_x + start_patch,
- &cov_matrix_seq[start_patch],
- (stop_patch - start_patch));
-
+ if (30 == hf_generator->pstr_settings->num_columns) {
+ (*ixheaacd_covariance_matrix_calc_960)(sub_sig_x + start_patch,
+ &cov_matrix_seq[start_patch],
+ (stop_patch - start_patch),
+ auto_corr_length);
+ }
+ else
+ (*ixheaacd_covariance_matrix_calc)(sub_sig_x + start_patch,
+ &cov_matrix_seq[start_patch],
+ (stop_patch - start_patch),
+ auto_corr_length);
} else {
memset(&cov_matrix_seq[0], 0,
- sizeof(ixheaacd_lpp_trans_cov_matrix) * stop_patch);
+ sizeof(ia_lpp_trans_cov_matrix) * stop_patch);
}
ixheaacd_filter1_lp(hf_generator, cov_matrix_seq, bw_array, degree_alias,
@@ -815,7 +935,7 @@ VOID ixheaacd_low_pow_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
stop_patch = hf_generator->pstr_settings->stop_patch;
for (low_band = start_patch; low_band < stop_patch; low_band++) {
- WORD32 src_start_band, src_end_band, dst_start_band, dst_end_band;
+ WORD32 src_start_band, src_end_band, dst_start_band;
patch = 0;
while (patch < num_patches) {
@@ -824,7 +944,6 @@ VOID ixheaacd_low_pow_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
src_start_band = ptr_loc_patch_param->src_start_band;
src_end_band = ptr_loc_patch_param->src_end_band;
dst_start_band = ptr_loc_patch_param->dst_start_band;
- dst_end_band = ptr_loc_patch_param->dst_end_band;
high_band = (low_band + ptr_loc_patch_param->dst_end_band);
@@ -868,13 +987,15 @@ VOID ixheaacd_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
WORD16 bw = 0;
- ixheaacd_lpp_trans_cov_matrix cov_matrix;
- ixheaacd_lpp_trans_cov_matrix cov_matrix_seq[MAX_COLS];
+ ia_lpp_trans_cov_matrix cov_matrix;
+ ia_lpp_trans_cov_matrix cov_matrix_seq[MAX_COLS];
WORD32 common_scale;
WORD32 actual_stop_band;
WORD32 num_patches = hf_generator->pstr_settings->num_patches;
+ WORD32 auto_corr_length = hf_generator->pstr_settings->num_columns + 6;
+
start_idx = (start_idx * factor);
stop_idx = (hf_generator->pstr_settings->num_columns + (stop_idx * factor));
@@ -916,15 +1037,31 @@ VOID ixheaacd_hf_generator(ia_sbr_hf_generator_struct *hf_generator,
}
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
- (*ixheaacd_covariance_matrix_calc_2)(
- &cov_matrix_seq[start_patch],
- (sub_sig_x + start_patch + LPC_ORDER * 128), (stop_patch - start_patch),
- 38);
+ if (auto_corr_length == 36) {
+ (*ixheaacd_covariance_matrix_calc_2)(
+ &cov_matrix_seq[start_patch],
+ (sub_sig_x + start_patch + LPC_ORDER * 128),
+ (stop_patch - start_patch), auto_corr_length);
+ } else {
+ (*ixheaacd_covariance_matrix_calc_2)(
+ &cov_matrix_seq[start_patch],
+ (sub_sig_x + start_patch + LPC_ORDER * 128),
+ (stop_patch - start_patch), 38);
+ }
} else {
- (*ixheaacd_covariance_matrix_calc_2)(
- &cov_matrix_seq[start_patch],
- (sub_sig_x + start_patch + LPC_ORDER * 128), (stop_patch - start_patch),
- 16);
+ if (hf_generator->pstr_settings->num_columns == 15)
+ {
+ (*ixheaacd_covariance_matrix_calc_2)(
+ &cov_matrix_seq[start_patch],
+ (sub_sig_x + start_patch + LPC_ORDER * 128),
+ (stop_patch - start_patch),
+ hf_generator->pstr_settings->num_columns);
+ } else {
+ (*ixheaacd_covariance_matrix_calc_2)(
+ &cov_matrix_seq[start_patch],
+ (sub_sig_x + start_patch + LPC_ORDER * 128),
+ (stop_patch - start_patch), 16);
+ }
}
for (low_band = start_patch; low_band < stop_patch; low_band++) {
diff --git a/decoder/ixheaacd_lpp_tran.h b/decoder/ixheaacd_lpp_tran.h
index e741412..7c27d72 100644
--- a/decoder/ixheaacd_lpp_tran.h
+++ b/decoder/ixheaacd_lpp_tran.h
@@ -34,7 +34,7 @@ typedef struct {
WORD32 phi_02_im;
WORD32 phi_12_im;
WORD32 d;
-} ixheaacd_lpp_trans_cov_matrix;
+} ia_lpp_trans_cov_matrix;
typedef struct {
WORD16 src_start_band;
@@ -88,19 +88,23 @@ struct ixheaacd_lpp_trans_patch {
};
VOID ixheaacd_covariance_matrix_calc_dec(
- WORD32 *sub_sign_xlow, ixheaacd_lpp_trans_cov_matrix *cov_matrix,
- WORD32 count);
+ WORD32 *sub_sign_xlow, ia_lpp_trans_cov_matrix *cov_matrix,
+ WORD32 count, WORD32 auto_corr_length);
+
+VOID ixheaacd_covariance_matrix_calc_dec_960(
+ WORD32 *sub_sign_xlow, ia_lpp_trans_cov_matrix *cov_matrix,
+ WORD32 count, WORD32 auto_corr_length);
VOID ixheaacd_covariance_matrix_calc_armv7(
- WORD32 *sub_sign_xlow, ixheaacd_lpp_trans_cov_matrix *cov_matrix,
+ WORD32 *sub_sign_xlow, ia_lpp_trans_cov_matrix *cov_matrix,
WORD32 count);
VOID ixheaacd_covariance_matrix_calc_2_dec(
- ixheaacd_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer,
+ ia_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer,
WORD32 ixheaacd_num_bands, WORD16 slots);
VOID ixheaacd_covariance_matrix_calc_2_armv7(
- ixheaacd_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer,
+ ia_lpp_trans_cov_matrix *cov_matrix, WORD32 *real_buffer,
WORD32 ixheaacd_num_bands, WORD16 slots);
#endif /* IXHEAACD_LPP_TRAN_H */
diff --git a/decoder/ixheaacd_lt_predict.c b/decoder/ixheaacd_lt_predict.c
index 9f5b852..92d10dc 100644
--- a/decoder/ixheaacd_lt_predict.c
+++ b/decoder/ixheaacd_lt_predict.c
@@ -218,13 +218,12 @@ VOID ixheaacd_filter_bank_ltp(ia_aac_dec_tables_struct *aac_tables_ptr,
}
} else {
- WORD32 *win1, *win2, *win3;
+ WORD32 *win1, *win2;
WORD32 *ptr_in1, *ptr_in2;
win1 = (WORD32 *)window_long_prev;
win2 = (WORD32 *)window_long;
ptr_in1 = &in_data[0];
ptr_in2 = &in_data[nlong];
- win3 = win2 + nlong - 1;
for (i = nlong - 1; i >= 0; i--) {
WORD32 temp1 = ixheaacd_mult32_shl(*ptr_in1, *win1++);
diff --git a/decoder/ixheaacd_mps_dec.c b/decoder/ixheaacd_mps_dec.c
index a5f9c11..9070dfe 100644
--- a/decoder/ixheaacd_mps_dec.c
+++ b/decoder/ixheaacd_mps_dec.c
@@ -29,6 +29,7 @@
#include "ixheaacd_bitbuffer.h"
#include "ixheaacd_defines.h"
+#include "ixheaacd_sbr_const.h"
#include "ixheaacd_memory_standards.h"
#include "ixheaacd_sbrdecsettings.h"
#include "ixheaacd_env_extr_part.h"
@@ -52,6 +53,15 @@
#include "ixheaacd_aacdec.h"
#include "ixheaacd_sbr_common.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_lpp_tran.h"
+#include "ixheaacd_env_extr.h"
+#include "ixheaacd_qmf_dec.h"
+#include "ixheaacd_env_calc.h"
+#include "ixheaacd_pvc_dec.h"
+#include "ixheaacd_sbr_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
#include "ixheaacd_mps_dec.h"
@@ -71,7 +81,6 @@
#include "ixheaacd_mps_huff_tab.h"
#include "math.h"
-
#include <assert.h>
#include <string.h>
#include "ixheaacd_error_standards.h"
@@ -116,7 +125,9 @@ WORD32 ixheaacd_mps_create(ia_mps_dec_state_struct* self, WORD32 bs_frame_len,
err_code = ixheaacd_mps_header_decode(self);
- if (err_code != 0) return err_code;
+ if (err_code != IA_NO_ERROR) {
+ return err_code;
+ }
if ((self->residual_coding) && (self->res_bands > 0)) self->res_ch_count++;
@@ -134,8 +145,12 @@ WORD32 ixheaacd_mps_create(ia_mps_dec_state_struct* self, WORD32 bs_frame_len,
ixheaacd_mps_qmf_hybrid_analysis_init(&self->hyb_filt_state[1]);
err_code = ixheaacd_mps_decor_init(&(self->mps_decor), self->hyb_band_count_max,
- self->config->bs_decorr_config);
- if (err_code != IA_NO_ERROR) return err_code;
+ self->config->bs_decorr_config,
+ self->object_type);
+
+ if (err_code != IA_NO_ERROR) {
+ return err_code;
+ }
ixheaacd_mps_init_pre_and_post_matrix(self);
@@ -156,6 +171,7 @@ WORD32 ixheaacd_mps_create(ia_mps_dec_state_struct* self, WORD32 bs_frame_len,
MAX_PARAMETER_BANDS * sizeof(WORD32));
memset(self->opd_smooth.smooth_r_phase, 0,
MAX_PARAMETER_BANDS * sizeof(WORD32));
+ self->mps_init_done = 1;
return 0;
}
@@ -169,9 +185,21 @@ static const FLOAT32 ixheaacd_tsd_mul_im[] = {
0.0f, -0.707106781186548f, -1.0f, -0.707106781186548f};
VOID ixheaacd_mps_qmf_hyb_analysis(ia_mps_dec_state_struct* self) {
- ixheaacd_mps_qmf_hybrid_analysis(&self->hyb_filt_state[0], self->qmf_in[0],
- self->band_count[0], self->time_slots,
+ if (self->object_type == AOT_ER_AAC_ELD ||
+ self->object_type == AOT_ER_AAC_LD) {
+ int k, n;
+
+ for (n = 0; n < self->time_slots; n++) {
+ for (k = 0; k < self->qmf_band_count; k++) {
+ self->hyb_in[0][k][n].re = self->qmf_in[0][n][k].re;
+ self->hyb_in[0][k][n].im = self->qmf_in[0][n][k].im;
+ }
+ }
+ } else {
+ ixheaacd_mps_qmf_hybrid_analysis(&self->hyb_filt_state[0], self->qmf_in[0],
+ self->qmf_band_count, self->time_slots,
self->hyb_in[0]);
+ }
if ((self->residual_coding) && (self->res_bands > 0)) {
ixheaacd_mps_qmf_hybrid_analysis(&self->hyb_filt_state[self->in_ch_count],
@@ -183,10 +211,23 @@ VOID ixheaacd_mps_qmf_hyb_analysis(ia_mps_dec_state_struct* self) {
VOID ixheaacd_mps_qmf_hyb_synthesis(ia_mps_dec_state_struct* self) {
WORD32 ch;
- for (ch = 0; ch < self->out_ch_count; ch++) {
- ixheaacd_mps_qmf_hybrid_synthesis(self->hyb_dir_out[ch],
- self->band_count[0], self->time_slots,
+ if (self->object_type == AOT_ER_AAC_ELD ||
+ self->object_type == AOT_ER_AAC_LD) {
+ int k, n;
+ for (ch = 0; ch < self->out_ch_count; ch++) {
+ for (n = 0; n < self->time_slots; n++) {
+ for (k = 0; k < self->qmf_band_count; k++) {
+ self->qmf_out_dir[ch][n][k].re = self->hyb_dir_out[ch][n][k].re;
+ self->qmf_out_dir[ch][n][k].im = self->hyb_dir_out[ch][n][k].im;
+ }
+ }
+ }
+ } else {
+ for (ch = 0; ch < self->out_ch_count; ch++) {
+ ixheaacd_mps_qmf_hybrid_synthesis(self->hyb_dir_out[ch],
+ self->qmf_band_count, self->time_slots,
self->qmf_out_dir[ch]);
+ }
}
}
@@ -216,7 +257,8 @@ VOID ixheaacd_mps_decor(ia_mps_dec_state_struct* self) {
}
ixheaacd_mps_decor_apply(&self->mps_decor, self->v[k], self->w_diff[k],
- self->time_slots, NO_RES_BANDS);
+ self->time_slots, NO_RES_BANDS,
+ self->ldmps_config.ldmps_present_flag);
if (self->bs_tsd_enable) {
for (sb_sample = 0; sb_sample < self->time_slots; sb_sample++) {
@@ -315,13 +357,15 @@ VOID ixheaacd_mps_qmf_hyb_analysis_no_pre_mix(ia_mps_dec_state_struct* self) {
if (self->res_bands != 28) {
ixheaacd_mps_decor_apply(&self->mps_decor, self->w_dir[0],
self->w_diff[1], self->time_slots,
- self->res_bands);
+ self->res_bands,
+ self->ldmps_config.ldmps_present_flag);
ixheaacd_mps_mix_res_decor_residual_band(self);
}
} else {
ixheaacd_mps_decor_apply(&self->mps_decor, self->w_dir[0], self->w_diff[1],
- self->time_slots, NO_RES_BANDS);
+ self->time_slots, NO_RES_BANDS,
+ self->ldmps_config.ldmps_present_flag);
}
}
@@ -342,7 +386,7 @@ WORD32 ixheaacd_mps_apply(ia_mps_dec_state_struct* self,
err = ixheaacd_mps_frame_decode(self);
- if (err != 0) return err;
+ if (err != IA_NO_ERROR) return err;
ixheaacd_pre_and_mix_matrix_calculation(self);
@@ -392,6 +436,7 @@ WORD32 ixheaacd_mps_apply(ia_mps_dec_state_struct* self,
if (err) return err;
self->parse_nxt_frame = 1;
+ self->pre_mix_req = 0;
return 0;
}
@@ -922,7 +967,7 @@ static WORD32 ixheaacd_huff_decode(ia_handle_bit_buf_struct it_bit_buff,
WORD32 data_type, WORD32 diff_type_1,
WORD32 diff_type_2, WORD32 pilot_coding_flag,
WORD32* pilot_data, WORD32 num_val,
- WORD32* cdg_scheme) {
+ WORD32* cdg_scheme, WORD32 ld_mps_flag) {
WORD32 diff_type;
WORD32 i = 0;
@@ -978,7 +1023,7 @@ static WORD32 ixheaacd_huff_decode(ia_handle_bit_buf_struct it_bit_buff,
*cdg_scheme = data << PAIR_SHIFT;
if (*cdg_scheme >> PAIR_SHIFT == HUFF_2D) {
- if ((out_data_1 != NULL) && (out_data_2 != NULL)) {
+ if ((out_data_1 != NULL) && (out_data_2 != NULL) && (ld_mps_flag != 1)) {
data = ixheaacd_read_bits_buf(it_bit_buff, 1);
*cdg_scheme |= data;
} else {
@@ -1317,10 +1362,10 @@ WORD32 ixheaacd_mps_ecdatapairdec(ia_handle_bit_buf_struct it_bit_buff,
WORD32 history[MAXBANDS], WORD32 data_type,
WORD32 set_idx, WORD32 data_bands,
WORD32 pair_flag, WORD32 coarse_flag,
- WORD32 independency_flag)
+ WORD32 diff_time_back_flag,
+ WORD32 ld_mps_flag)
{
- WORD32 diff_time_back_flag = !independency_flag || (set_idx > 0);
WORD32 attach_lsb_flag = 0;
WORD32 pcm_coding_flag = 0;
WORD32 pilot_coding_flag = 0;
@@ -1435,7 +1480,7 @@ WORD32 ixheaacd_mps_ecdatapairdec(ia_handle_bit_buf_struct it_bit_buff,
if (!ixheaacd_huff_decode(it_bit_buff, data_array[0], data_array[1],
data_type, diff_type[0], diff_type[1],
pilot_coding_flag, pilot_data, data_bands,
- &cdg_scheme)) {
+ &cdg_scheme, ld_mps_flag)) {
return 0;
}
diff --git a/decoder/ixheaacd_mps_dec.h b/decoder/ixheaacd_mps_dec.h
index 55f98bd..b163286 100644
--- a/decoder/ixheaacd_mps_dec.h
+++ b/decoder/ixheaacd_mps_dec.h
@@ -31,12 +31,18 @@
#define MAX_OUTPUT_CHANNELS_MPS_AT (2)
#define HYBRID_BAND_BORDER (12)
+#define DECORR_FILT_0_ORD_LD_MPS (20)
+#define DECORR_FILT_1_ORD_LD_MPS (15)
+#define DECORR_FILT_2_ORD_LD_MPS (6)
+#define DECORR_FILT_3_ORD_LD_MPS (3)
+
#define DECORR_FILT_0_ORD (10)
#define DECORR_FILT_1_ORD (8)
#define DECORR_FILT_2_ORD (3)
#define DECORR_FILT_3_ORD (2)
-#define MAX_DECORR_FIL_ORDER (DECORR_FILT_0_ORD)
+#define MAX_DECORR_FIL_ORDER (DECORR_FILT_0_ORD_LD_MPS)
+#define MAX_DECORR_FIL_ORDER_MPS (DECORR_FILT_0_ORD)
#define NO_RES_BANDS -1
@@ -70,18 +76,17 @@ typedef struct ia_mps_decor_filt_struct {
typedef struct ia_mps_decor_struct *ia_mps_decor_struct_handle;
#define MAX_HYBRID_BANDS_MPS (MAX_NUM_QMF_BANDS_MPS_NEW - 3 + 10)
+#define MAX_HYBRID_BANDS_MPS_LD (MAX_NUM_QMF_BANDS_MPS - 3 + 10)
#define MAX_TIME_SLOTS (72)
-#define MAX_PARAMETER_BANDS (28)
+#define MAX_M_INPUT_MPS (2)
+#define MAX_M_OUTPUT_MPS (2)
#define MAX_M1_INPUT (2)
#define MAX_M1_OUTPUT (2)
#define MAX_M2_INPUT (2)
#define MAX_M_INPUT (2)
#define MAX_M_OUTPUT (2)
-
-#define QMF_BANDS_TO_HYBRID (3)
-#define MAX_HYBRID_ONLY_BANDS_PER_QMF (8)
#define QMF_HYBRID_FILT_ORDER (13)
#define BUFFER_LEN_LF_MPS (QMF_HYBRID_FILT_ORDER - 1 + MAX_TIME_SLOTS)
#define MAX_NO_TIME_SLOTS_DELAY (14)
@@ -225,6 +230,7 @@ typedef struct ia_mps_dec_state_struct {
WORD32 bs_residual_bands;
ia_usac_dec_mps_config_struct *config;
+ ia_usac_dec_mps_config_struct ldmps_config;
ia_mps_bs_frame bs_frame;
WORD32 smoothing_time[MAX_PARAMETER_SETS_MPS];
@@ -273,10 +279,9 @@ typedef struct ia_mps_dec_state_struct {
ia_cmplx_flt_struct qmf_in[2][MAX_NUM_QMF_BANDS_MPS_NEW][MAX_TIME_SLOTS];
ia_cmplx_flt_struct hyb_in[2][MAX_HYBRID_BANDS_MPS][MAX_TIME_SLOTS];
ia_cmplx_flt_struct hyb_res[MAX_HYBRID_BANDS_MPS][MAX_TIME_SLOTS];
- ia_cmplx_flt_struct v[MAX_M1_OUTPUT][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
- ia_cmplx_flt_struct w_diff[MAX_M2_INPUT][MAX_TIME_SLOTS]
- [MAX_HYBRID_BANDS_MPS];
- ia_cmplx_flt_struct w_dir[MAX_M2_INPUT][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
+ ia_cmplx_flt_struct v[MAX_M_OUTPUT][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
+ ia_cmplx_flt_struct w_diff[MAX_M_INPUT][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
+ ia_cmplx_flt_struct w_dir[MAX_M_INPUT][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
ia_cmplx_flt_struct hyb_dir_out[2][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
ia_cmplx_flt_struct hyb_diff_out[2][MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS];
@@ -334,16 +339,28 @@ typedef struct ia_mps_dec_state_struct {
VOID *p_sbr_dec[MAXNRSBRCHANNELS];
VOID *p_sbr_frame[MAXNRSBRCHANNELS];
VOID *p_sbr_header[MAXNRSBRCHANNELS];
+
+ WORD32 object_type;
+ WORD32 mps_init_done;
+ ia_sbr_qmf_filter_bank_struct str_mps_qmf_bank;
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr;
+ ia_sbr_tables_struct *sbr_tables_ptr;
+ ia_sbr_scale_fact_struct *str_sbr_scale_fact;
} ia_mps_dec_state_struct;
VOID ixheaacd_mps_init_pre_and_post_matrix(ia_mps_dec_state_struct *self);
VOID ixheaacd_pre_and_mix_matrix_calculation(ia_mps_dec_state_struct *self);
WORD32 ixheaacd_mps_apply_pre_matrix(ia_mps_dec_state_struct *self);
+WORD32 ixheaacd_mps_apply_mix_matrix(ia_mps_dec_state_struct *self);
WORD32 ixheaacd_mps_apply_mix_matrix_type1(ia_mps_dec_state_struct *self);
WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self);
WORD32 ixheaacd_mps_apply_mix_matrix_type3(ia_mps_dec_state_struct *self);
-WORD32 ixheaacd_mps_frame_decode(ia_mps_dec_state_struct *self);
+VOID ixheaacd_samples_sat(WORD8 *outbuffer, WORD32 num_samples_out,
+ WORD32 pcmsize, FLOAT32 (*out_samples)[4096],
+ WORD32 *out_bytes, WORD32 num_channel_out);
+
+IA_ERRORCODE ixheaacd_mps_frame_decode(ia_mps_dec_state_struct *self);
WORD32 ixheaacd_mps_header_decode(ia_mps_dec_state_struct *self);
@@ -363,9 +380,17 @@ VOID ixheaacd_mps_par2umx_ps_ipd_opd(ia_mps_dec_state_struct *self,
FLOAT32 *h_real, WORD32 param_set_idx);
VOID ixheaacd_mps_par2umx_pred(ia_mps_dec_state_struct *self,
- ia_mps_bs_frame *curr_bit_stream,
- FLOAT32 *h_imag, FLOAT32 *h_real,
- WORD32 param_set_idx, WORD32 res_bands);
+ ia_mps_bs_frame *curr_bit_stream, FLOAT32 *h_imag,
+ FLOAT32 *h_real, WORD32 param_set_idx,
+ WORD32 res_bands);
+
+WORD32 ixheaacd_mps_upmix_interp(
+ FLOAT32 m_matrix[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
+ [MAX_M_INPUT],
+ FLOAT32 r_matrix[MAX_TIME_SLOTS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
+ [MAX_M_INPUT],
+ FLOAT32 m_matrix_prev[MAX_PARAMETER_BANDS][MAX_M_OUTPUT][MAX_M_INPUT],
+ WORD32 num_rows, WORD32 num_cols, ia_mps_dec_state_struct *self, WORD32 bs_high_rate_mode);
WORD32 ixheaacd_mps_upmix_interp_type1(
FLOAT32 m_matrix[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
@@ -392,4 +417,6 @@ VOID ixheaacd_mps_phase_interpolation(
FLOAT32 r_im[MAX_TIME_SLOTS][MAX_PARAMETER_BANDS][2],
ia_mps_dec_state_struct *self);
+VOID ixheaacd_mps_complex_fft(FLOAT32 *xr, FLOAT32 *xi, WORD32 nlength);
+
#endif
diff --git a/decoder/ixheaacd_mps_decor.h b/decoder/ixheaacd_mps_decor.h
index 8153681..ebfbb2a 100644
--- a/decoder/ixheaacd_mps_decor.h
+++ b/decoder/ixheaacd_mps_decor.h
@@ -24,12 +24,12 @@
#define ONE_MINUS_DECOR_ALPHA (1 - DECOR_ALPHA)
#define DECOR_GAMMA (1.5f)
-IA_ERRORCODE ixheaacd_mps_decor_init(ia_mps_decor_struct_handle, int, int);
+IA_ERRORCODE ixheaacd_mps_decor_init(ia_mps_decor_struct_handle, WORD32, WORD32, WORD32);
VOID ixheaacd_mps_decor_apply(
ia_mps_decor_struct_handle self,
ia_cmplx_flt_struct in[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
ia_cmplx_flt_struct out[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
- WORD32 length, WORD32 res_bands);
+ WORD32 length, WORD32 res_bands, WORD32 ldmps_present);
#endif
diff --git a/decoder/ixheaacd_mps_decorr.c b/decoder/ixheaacd_mps_decorr.c
index b2acb26..7351102 100644
--- a/decoder/ixheaacd_mps_decorr.c
+++ b/decoder/ixheaacd_mps_decorr.c
@@ -25,8 +25,21 @@
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
-
+#include "ixheaacd_qmf_dec.h"
+#include "ixheaacd_audioobjtypes.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
@@ -39,11 +52,17 @@
#include "ixheaacd_constants.h"
static const WORD32 ixheaacd_decorr_delay[] = {11, 10, 5, 2};
+static const WORD32 ixheaacd_decorr_delay_ldmps[] = {8, 7, 2, 1};
static const WORD32 ixheaacd_qmf_split_freq_0[] = {3, 15, 24, 65};
static const WORD32 ixheaacd_qmf_split_freq_1[] = {3, 50, 65, 65};
static const WORD32 ixheaacd_qmf_split_freq_2[] = {0, 15, 65, 65};
+
+static const WORD32 ixheaacd_qmf_split_freq_0_ldmps[] = {0, 15, 24, 65};
+static const WORD32 ixheaacd_qmf_split_freq_1_ldmps[] = {0, 50, 65, 65};
+static const WORD32 ixheaacd_qmf_split_freq_2_ldmps[] = {0, 15, 65, 65};
+
extern const WORD32 ixheaacd_mps_gain_set_indx[29];
static const FLOAT32
@@ -78,8 +97,44 @@ static const FLOAT32
ixheaacd_lattice_coeff_3_filt_num_coeff[DECORR_FILT_3_ORD + 1] = {
-0.013000f, 0.034742f, 1.000000f};
-extern const WORD32
+static const FLOAT32
+ ixheaacd_lattice_coeff_1_filt_num_ldmps[DECORR_FILT_1_ORD_LD_MPS + 1] = {
+ (0.3355999887f), (0.0024894588f), (-0.1572290659f), (0.2807503343f),
+ (-0.1942857355f), (0.3840600252f), (-0.4084388912f), (-0.1750483066f),
+ (0.5559588671f), (-0.4935829639f), (0.0567415841f), (-0.0658148378f),
+ (0.3378961682f), (0.2284426540f), (-0.7025330663f), (1.0000000000f)};
+
+static const FLOAT32
+ ixheaacd_lattice_coeff_1_filt_den_ldmps[DECORR_FILT_1_ORD_LD_MPS + 1] = {
+ (1.0000000000f), (-0.7025330663f), (0.2284426540f), (0.3378961682f),
+ (-0.0658148378f), (0.0567415841f), (-0.4935829639f), (0.5559588671f),
+ (-0.1750483066f), (-0.4084388912f), (0.3840600252f), (-0.1942857355f),
+ (0.2807503343f), (-0.1572290659f), (0.0024894588f), (0.3355999887f)};
+
+static const FLOAT32
+ ixheaacd_lattice_coeff_2_filt_num_ldmps[DECORR_FILT_2_ORD_LD_MPS + 1] = {
+ (-0.4623999894f), (0.2341193259f), (0.5163637400f), (-0.0253488291f),
+ (-0.2871030867f), (0.0153170601f), (1.0000000000f)};
+
+static const FLOAT32
+ ixheaacd_lattice_coeff_2_filt_den_ldmps[DECORR_FILT_2_ORD_LD_MPS + 1] = {
+ (1.0000000000f), (0.0153170601f), (-0.2871030867f), (-0.0253488291f),
+ (0.5163637400f), (0.2341193259f), (-0.4623999894f)
+
+};
+
+static const FLOAT32
+ ixheaacd_lattice_coeff_3_filt_num_ldmps[DECORR_FILT_3_ORD_LD_MPS + 1] = {
+ (0.2468000054f), (0.0207958221f), (-0.3898491263f), (1.0000000000f)};
+
+static const FLOAT32
+ ixheaacd_lattice_coeff_3_filt_den_ldmps[DECORR_FILT_3_ORD_LD_MPS + 1] = {
+ (1.0000000000f), (-0.3898491263f), (0.0207958221f), (0.2468000054f)};
+
+extern WORD32
ixheaacd_hybrid_band_71_to_processing_band_28_map[MAX_HYBRID_BANDS_MPS];
+extern WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_23_map[MAX_HYBRID_BANDS_MPS];
static const WORD32 ixheaacd_hybrid_to_qmf_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10,
@@ -87,31 +142,65 @@ static const WORD32 ixheaacd_hybrid_to_qmf_map[MAX_HYBRID_BANDS_MPS] = {
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63};
+static const WORD32 ixheaacd_hybrid_to_qmf_map_ldmps[MAX_HYBRID_BANDS_MPS] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70};
+
static void ixheaacd_mps_decor_filt_init(ia_mps_decor_filt_struct *self,
- WORD32 reverb_band) {
- switch (reverb_band) {
- case 0:
- self->num_len = self->den_len = DECORR_FILT_0_ORD + 1;
- self->num = ixheaacd_lattice_coeff_0_filt_num_coeff;
- self->den = ixheaacd_lattice_coeff_0_filt_den_coeff;
-
- break;
- case 1:
- self->num_len = self->den_len = DECORR_FILT_1_ORD + 1;
- self->num = ixheaacd_lattice_coeff_1_filt_num_coeff;
- self->den = ixheaacd_lattice_coeff_1_filt_den_coeff;
-
- break;
- case 2:
- self->num_len = self->den_len = DECORR_FILT_2_ORD + 1;
- self->num = ixheaacd_lattice_coeff_2_filt_num_coeff;
- self->den = ixheaacd_lattice_coeff_2_filt_den_coeff;
- break;
- case 3:
- self->num_len = self->den_len = DECORR_FILT_3_ORD + 1;
- self->num = ixheaacd_lattice_coeff_3_filt_num_coeff;
- self->den = ixheaacd_lattice_coeff_3_filt_den_coeff;
- break;
+ WORD32 reverb_band,
+ WORD32 object_type) {
+ if (object_type == AOT_ER_AAC_ELD || object_type == AOT_ER_AAC_LD) {
+ switch (reverb_band) {
+ case 0:
+ self->num_len = self->den_len = DECORR_FILT_0_ORD_LD_MPS + 1;
+ self->num = NULL;
+ self->den = NULL;
+
+ break;
+ case 1:
+ self->num_len = self->den_len = DECORR_FILT_1_ORD_LD_MPS + 1;
+ self->num = ixheaacd_lattice_coeff_1_filt_num_ldmps;
+ self->den = ixheaacd_lattice_coeff_1_filt_den_ldmps;
+
+ break;
+ case 2:
+ self->num_len = self->den_len = DECORR_FILT_2_ORD_LD_MPS + 1;
+ self->num = ixheaacd_lattice_coeff_2_filt_num_ldmps;
+ self->den = ixheaacd_lattice_coeff_2_filt_den_ldmps;
+ break;
+ case 3:
+ self->num_len = self->den_len = DECORR_FILT_3_ORD_LD_MPS + 1;
+ self->num = ixheaacd_lattice_coeff_3_filt_num_ldmps;
+ self->den = ixheaacd_lattice_coeff_3_filt_den_ldmps;
+ break;
+ }
+ } else {
+ switch (reverb_band) {
+ case 0:
+ self->num_len = self->den_len = DECORR_FILT_0_ORD + 1;
+ self->num = ixheaacd_lattice_coeff_0_filt_num_coeff;
+ self->den = ixheaacd_lattice_coeff_0_filt_den_coeff;
+
+ break;
+ case 1:
+ self->num_len = self->den_len = DECORR_FILT_1_ORD + 1;
+ self->num = ixheaacd_lattice_coeff_1_filt_num_coeff;
+ self->den = ixheaacd_lattice_coeff_1_filt_den_coeff;
+
+ break;
+ case 2:
+ self->num_len = self->den_len = DECORR_FILT_2_ORD + 1;
+ self->num = ixheaacd_lattice_coeff_2_filt_num_coeff;
+ self->den = ixheaacd_lattice_coeff_2_filt_den_coeff;
+ break;
+ case 3:
+ self->num_len = self->den_len = DECORR_FILT_3_ORD + 1;
+ self->num = ixheaacd_lattice_coeff_3_filt_num_coeff;
+ self->den = ixheaacd_lattice_coeff_3_filt_den_coeff;
+ break;
+ }
}
self->state_len = self->num_len;
@@ -143,13 +232,20 @@ static VOID ixheaacd_mps_decor_energy_adjustment(
ixheaacd_mps_decor_energy_adjust_filt_struct *handle,
ia_cmplx_flt_struct in[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
ia_cmplx_flt_struct out[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
- WORD32 time_slots, WORD32 res_bands) {
+ WORD32 time_slots, WORD32 res_bands, WORD32 ldmps_present) {
ixheaacd_mps_decor_energy_adjust_filt_struct *self =
(ixheaacd_mps_decor_energy_adjust_filt_struct *)handle;
FLOAT32 in_energy[MAX_PARAMETER_BANDS] = {0};
FLOAT32 out_energy[MAX_PARAMETER_BANDS] = {0};
FLOAT32 gain[MAX_PARAMETER_BANDS];
- WORD32 i, j, k;
+ WORD32 i, j, k, loop_counter;
+ WORD32 *ptr_hybrid_band;
+
+ if (ldmps_present == 1)
+ ptr_hybrid_band = ixheaacd_hybrid_band_64_to_processing_band_23_map;
+ else
+ ptr_hybrid_band = ixheaacd_hybrid_band_71_to_processing_band_28_map;
+
WORD32 start_param_band = 0, start_bin = 0;
if (res_bands != NO_RES_BANDS) {
@@ -162,14 +258,19 @@ static VOID ixheaacd_mps_decor_energy_adjustment(
memset(out_energy, 0, sizeof(FLOAT32) * MAX_PARAMETER_BANDS);
for (j = start_bin; j < self->num_bins; j++) {
- k = ixheaacd_hybrid_band_71_to_processing_band_28_map[j];
+ k = ptr_hybrid_band[j];
in_energy[k] += in[i][j].re * in[i][j].re + in[i][j].im * in[i][j].im;
out_energy[k] +=
out[i][j].re * out[i][j].re + out[i][j].im * out[i][j].im;
}
- for (k = start_param_band; k < MAX_PARAMETER_BANDS; k++) {
+ if (ldmps_present == 1)
+ loop_counter = MAX_PARAMETER_BANDS;
+ else
+ loop_counter = MAX_PARAMETER_BANDS_MPS;
+
+ for (k = start_param_band; k < loop_counter; k++) {
self->smooth_in_energy[k] = self->smooth_in_energy[k] * DECOR_ALPHA +
in_energy[k] * ONE_MINUS_DECOR_ALPHA;
self->smooth_out_energy[k] = self->smooth_out_energy[k] * DECOR_ALPHA +
@@ -193,7 +294,7 @@ static VOID ixheaacd_mps_decor_energy_adjustment(
}
for (j = start_bin; j < self->num_bins; j++) {
- k = ixheaacd_hybrid_band_71_to_processing_band_28_map[j];
+ k = ptr_hybrid_band[j];
out[i][j].re *= gain[k];
out[i][j].im *= gain[k];
@@ -202,34 +303,57 @@ static VOID ixheaacd_mps_decor_energy_adjustment(
}
IA_ERRORCODE ixheaacd_mps_decor_init(ia_mps_decor_struct_handle self,
- WORD32 subbands, WORD32 decor_config) {
+ WORD32 subbands, WORD32 decor_config,
+ WORD32 object_type) {
WORD32 i, reverb_band;
const WORD32 *splitfreq;
-
- switch (decor_config) {
- case 0:
- splitfreq = ixheaacd_qmf_split_freq_0;
- break;
- case 1:
- splitfreq = ixheaacd_qmf_split_freq_1;
- break;
- case 2:
- splitfreq = ixheaacd_qmf_split_freq_2;
- break;
- default:
- return IA_FATAL_ERROR;
+ const WORD32 *ptr_ixheaacd_hybrid_to_qmf_map;
+ const WORD32 *ptr_decorr_delay;
+ if (object_type == AOT_ER_AAC_ELD || object_type == AOT_ER_AAC_LD) {
+ ptr_ixheaacd_hybrid_to_qmf_map = ixheaacd_hybrid_to_qmf_map_ldmps;
+ ptr_decorr_delay = ixheaacd_decorr_delay_ldmps;
+ switch (decor_config) {
+ case 0:
+ splitfreq = ixheaacd_qmf_split_freq_0_ldmps;
+ break;
+ case 1:
+ splitfreq = ixheaacd_qmf_split_freq_1_ldmps;
+ break;
+ case 2:
+ splitfreq = ixheaacd_qmf_split_freq_2_ldmps;
+ break;
+ default:
+ return IA_FATAL_ERROR;
+ }
+ } else {
+ ptr_ixheaacd_hybrid_to_qmf_map = ixheaacd_hybrid_to_qmf_map;
+ ptr_decorr_delay = ixheaacd_decorr_delay;
+ switch (decor_config) {
+ case 0:
+ splitfreq = ixheaacd_qmf_split_freq_0;
+ break;
+ case 1:
+ splitfreq = ixheaacd_qmf_split_freq_1;
+ break;
+ case 2:
+ splitfreq = ixheaacd_qmf_split_freq_2;
+ break;
+ default:
+ return IA_FATAL_ERROR;
+ }
}
self->num_bins = subbands;
+ if (self->num_bins > MAX_HYBRID_BANDS_MPS) return IA_FATAL_ERROR;
for (i = 0; i < self->num_bins; i++) {
reverb_band = 0;
while ((reverb_band < 3) &&
- (ixheaacd_hybrid_to_qmf_map[i] >= (splitfreq[reverb_band] - 1)))
+ (ptr_ixheaacd_hybrid_to_qmf_map[i] >= (splitfreq[reverb_band] - 1)))
reverb_band++;
- self->delay_sample_count[i] = ixheaacd_decorr_delay[reverb_band];
- ixheaacd_mps_decor_filt_init(&self->filter[i], reverb_band);
+ self->delay_sample_count[i] = ptr_decorr_delay[reverb_band];
+ ixheaacd_mps_decor_filt_init(&self->filter[i], reverb_band, object_type);
}
self->decor_nrg_smooth.num_bins = self->num_bins;
@@ -241,7 +365,7 @@ VOID ixheaacd_mps_decor_apply(
ia_mps_decor_struct_handle self,
ia_cmplx_flt_struct in[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
ia_cmplx_flt_struct out[MAX_TIME_SLOTS][MAX_HYBRID_BANDS_MPS],
- WORD32 length, WORD32 res_bands) {
+ WORD32 length, WORD32 res_bands, WORD32 ldmps_present) {
WORD32 idx, sb_sample, index = 0;
ia_cmplx_flt_struct scratch[MAX_TIME_SLOTS];
@@ -273,5 +397,6 @@ VOID ixheaacd_mps_decor_apply(
}
ixheaacd_mps_decor_energy_adjustment(&self->decor_nrg_smooth, in, out, length,
- res_bands);
+ res_bands,
+ ldmps_present);
}
diff --git a/decoder/ixheaacd_mps_hybrid_filt.c b/decoder/ixheaacd_mps_hybrid_filt.c
index 2c57ead..458b644 100644
--- a/decoder/ixheaacd_mps_hybrid_filt.c
+++ b/decoder/ixheaacd_mps_hybrid_filt.c
@@ -21,7 +21,20 @@
#include <string.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
diff --git a/decoder/ixheaacd_mps_nlc_dec.h b/decoder/ixheaacd_mps_nlc_dec.h
index e210f6c..65b02b6 100644
--- a/decoder/ixheaacd_mps_nlc_dec.h
+++ b/decoder/ixheaacd_mps_nlc_dec.h
@@ -52,7 +52,7 @@ WORD32 ixheaacd_mps_ecdatapairdec(ia_handle_bit_buf_struct strm,
WORD32 a_history[MAXBANDS], WORD32 data_type,
WORD32 set_idx, WORD32 data_bands,
WORD32 pair_flag, WORD32 coarse_flag,
- WORD32 independency_flag);
+ WORD32 independency_flag, WORD32 ldmps_flag);
VOID ixheaacd_mps_huff_decode(ia_handle_bit_buf_struct strm, WORD32 *out_data,
WORD32 num_val);
diff --git a/decoder/ixheaacd_mps_parse.c b/decoder/ixheaacd_mps_parse.c
index ca5cbcb..7f1f8e8 100644
--- a/decoder/ixheaacd_mps_parse.c
+++ b/decoder/ixheaacd_mps_parse.c
@@ -22,7 +22,22 @@
#include <stdio.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
+#include "ixheaacd_audioobjtypes.h"
+
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
@@ -30,82 +45,155 @@
#include "ixheaacd_mps_hybfilter.h"
#include "ixheaacd_error_standards.h"
+#include "ixheaacd_error_standards.h"
+
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))
-static const int ixheaacd_freq_res_table[] = {0, 28, 20, 14, 10, 7, 5, 4};
+static const WORD32 ixheaacd_freq_res_table[] = {0, 28, 20, 14, 10, 7, 5, 4};
+
+static const WORD32 ixheaacd_freq_res_table_ld[] = {0, 23, 15, 12, 9, 7, 5, 4};
-static const int
+static const WORD32
ixheaacd_hybrid_band_71_to_processing_band_4_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
-static const int
+static const WORD32
ixheaacd_hybrid_band_71_to_processing_band_5_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
-static const int
+static const WORD32
ixheaacd_hybrid_band_71_to_processing_band_7_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5,
5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6};
-static const int
+static const WORD32
ixheaacd_hybrid_band_71_to_processing_band_10_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8,
8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9};
-static const int
+static const WORD32
ixheaacd_hybrid_band_71_to_processing_band_14_map[MAX_HYBRID_BANDS_MPS] = {
0, 0, 0, 0, 1, 1, 2, 3, 4, 4, 5, 6, 6, 7, 7, 8, 8, 8,
9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13};
-const int
+const WORD32
ixheaacd_hybrid_band_71_to_processing_band_20_map[MAX_HYBRID_BANDS_MPS] = {
1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14,
15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18,
18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19};
-const int
+const WORD32
ixheaacd_hybrid_band_71_to_processing_band_28_map[MAX_HYBRID_BANDS_MPS] = {
1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 21, 22, 22, 22, 23, 23, 23,
23, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26,
26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27};
-static const float ixheaacd_mps_clip_gain_table[] = {
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_4_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_5_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_7_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_9_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_12_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8,
+ 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_15_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 10, 10, 11, 11,
+ 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14};
+
+const WORD32
+ ixheaacd_hybrid_band_64_to_processing_band_23_map[MAX_HYBRID_BANDS_MPS_LD] =
+ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 13,
+ 14, 14, 15, 15, 16, 16, 16, 17, 17, 17, 18, 18, 18, 18, 19, 19,
+ 19, 19, 19, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22};
+
+static const FLOAT32 ixheaacd_mps_clip_gain_table[] = {
1.000000f, 1.189207f, 1.414213f, 1.681792f,
2.000000f, 2.378414f, 2.828427f, 4.000000f};
-static const int ixheaacd_mps_stride_table[] = {1, 2, 5, 28};
+static const WORD32 ixheaacd_mps_stride_table[] = {1, 2, 5, 28};
-static const float ixheaacd_cld_de_quant_table[] = {
+static const FLOAT32 ixheaacd_cld_de_quant_table[] = {
-150.0, -45.0, -40.0, -35.0, -30.0, -25.0, -22.0, -19.0,
-16.0, -13.0, -10.0, -8.0, -6.0, -4.0, -2.0, 0.0,
2.0, 4.0, 6.0, 8.0, 10.0, 13.0, 16.0, 19.0,
22.0, 25.0, 30.0, 35.0, 40.0, 45.0, 150.0};
-static const float ixheaacd_icc_de_quant_table[] = {
+static const FLOAT32 ixheaacd_icc_de_quant_table[] = {
1.0000f, 0.9370f, 0.84118f, 0.60092f, 0.36764f, 0.0f, -0.5890f, -0.9900f};
-const float ixheaacd_ipd_de_quant_table[] = {
+const FLOAT32 ixheaacd_ipd_de_quant_table[] = {
0.f, 0.392699082f, 0.785398163f, 1.178097245f,
1.570796327f, 1.963495408f, 2.35619449f, 2.748893572f,
3.141592654f, 3.534291735f, 3.926990817f, 4.319689899f,
4.71238898f, 5.105088062f, 5.497787144f, 5.890486225f};
-const int ixheaacd_ipd_de_quant_table_q28[] = {
+const WORD32 ixheaacd_ipd_de_quant_table_q28[] = {
0, 105414360, 210828720, 316243072, 421657440, 527071776,
632486144, 737900480, 843314880, 948729216, 1054143552, 1159557888,
1264972288, 1370386688, 1475800960, 1581215360};
-static const int ixheaacd_smoothing_time_table[] = {64, 128, 256, 512};
+static const WORD32 ixheaacd_smoothing_time_table[] = {64, 128, 256, 512};
static const FLOAT32 ixheaacd_inverse_smoothing_time_table[] = {
1.0f / 64.0f, 1.0f / 128.0f, 1.0f / 256.0f, 1.0f / 512.0f};
@@ -319,7 +407,7 @@ static IA_ERRORCODE ixheaacd_mps_ecdata_decoding(
err = ixheaacd_mps_ecdatapairdec(
bitstream, data, lastdata, datatype, set_index, data_bands,
bs_data_pair, frame_xxx_data->bs_quant_coarse_xxx[set_index],
- frame->independency_flag && (i == 0));
+ !(frame->independency_flag && (i == 0)) || (set_index > 0), 0);
if (err) return err;
for (pb = 0; pb < data_bands; pb++) {
@@ -610,6 +698,247 @@ IA_ERRORCODE ixheaacd_mps_frame_parsing(ia_mps_dec_state_struct *self,
return err;
}
+static VOID ixheaacd_ld_mps_ecdata_decoding(
+ ia_mps_dec_state_struct *self, ia_handle_bit_buf_struct it_bit_buff,
+ WORD32 data[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS], WORD32 datatype,
+ WORD32 start_band) {
+ WORD32 i, j, pb, data_set, set_index, bs_data_pair, data_bands,
+ old_quant_coarse_xxx;
+ WORD32 strides[MAX_PARAMETER_BANDS + 1] = {0};
+ WORD32 band_stop = 0;
+
+ WORD32 *lastdata = NULL;
+ ia_mps_data_struct *frame_xxx_data = NULL;
+ WORD32 default_val = 0;
+
+ ia_mps_bs_frame *frame = &(self->bs_frame);
+
+ if (datatype == CLD) {
+ frame_xxx_data = &frame->cld_data;
+ lastdata = frame->cmp_cld_idx_prev;
+ band_stop = self->bs_param_bands;
+ } else if (datatype == ICC) {
+ frame_xxx_data = &frame->icc_data;
+ lastdata = frame->cmp_icc_idx_prev;
+ band_stop = self->bs_param_bands;
+ } else if (datatype == IPD) {
+ frame_xxx_data = &frame->ipd_data;
+ lastdata = frame->ipd_idx_data_prev;
+ band_stop = self->num_bands_ipd;
+ } else {
+ frame_xxx_data = &frame->cld_data;
+ lastdata = frame->cmp_cld_idx_prev;
+ band_stop = self->bs_param_bands;
+ }
+ data_set = 0;
+ for (i = 0; i < self->num_parameter_sets; i++) {
+ frame_xxx_data->bs_xxx_data_mode[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
+ if (frame_xxx_data->bs_xxx_data_mode[i] == 3) {
+ data_set++;
+ }
+ }
+
+ set_index = 0;
+ bs_data_pair = 0;
+ old_quant_coarse_xxx = frame_xxx_data->bs_quant_coarse_xxx_prev;
+
+ for (i = 0; i < self->num_parameter_sets; i++) {
+ if (frame_xxx_data->bs_xxx_data_mode[i] == 0) {
+ for (pb = 0; pb < band_stop; pb++) {
+ lastdata[pb] = default_val;
+ }
+
+ old_quant_coarse_xxx = 0;
+ }
+
+ if (frame_xxx_data->bs_xxx_data_mode[i] == 3) {
+ if (bs_data_pair) {
+ bs_data_pair = 0;
+ } else {
+ bs_data_pair = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ frame_xxx_data->bs_quant_coarse_xxx[set_index] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ frame_xxx_data->bs_freq_res_stride_xxx[set_index] =
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
+
+ if (frame_xxx_data->bs_quant_coarse_xxx[set_index] !=
+ old_quant_coarse_xxx) {
+ if (old_quant_coarse_xxx) {
+ ixheaacd_mps_coarse2fine(lastdata, datatype, 0, band_stop - 0);
+ } else {
+ ixheaacd_mps_fine2coarse(lastdata, band_stop);
+ }
+ }
+
+ data_bands = ixheaacd_mps_getstridemap(
+ frame_xxx_data->bs_freq_res_stride_xxx[set_index], start_band,
+ band_stop, strides);
+ for (pb = 0; pb < data_bands; pb++) {
+ lastdata[pb] = lastdata[strides[pb]];
+ }
+
+ ixheaacd_mps_ecdatapairdec(
+ it_bit_buff, data, lastdata, datatype, set_index, data_bands,
+ bs_data_pair, frame_xxx_data->bs_quant_coarse_xxx[set_index],
+ !(frame->independency_flag && (i == 0)) || (set_index > 0), 1);
+
+ for (pb = 0; pb < data_bands; pb++) {
+ for (j = strides[pb]; j < strides[pb + 1]; j++) {
+ if (datatype == IPD) {
+ if (frame_xxx_data->bs_quant_coarse_xxx[set_index]) {
+ lastdata[j] = data[set_index + bs_data_pair][pb] & 7;
+ } else {
+ lastdata[j] = data[set_index + bs_data_pair][pb] & 15;
+ }
+ } else {
+ lastdata[j] = data[set_index + bs_data_pair][pb];
+ }
+ }
+ }
+
+ old_quant_coarse_xxx = frame_xxx_data->bs_quant_coarse_xxx[set_index];
+
+ if (bs_data_pair) {
+ frame_xxx_data->bs_quant_coarse_xxx[set_index + 1] =
+ frame_xxx_data->bs_quant_coarse_xxx[set_index];
+ frame_xxx_data->bs_freq_res_stride_xxx[set_index + 1] =
+ frame_xxx_data->bs_freq_res_stride_xxx[set_index];
+ }
+ set_index += bs_data_pair + 1;
+ }
+ }
+ }
+}
+
+IA_ERRORCODE ixheaacd_ld_mps_frame_parsing(
+ ia_mps_dec_state_struct *self, ia_handle_bit_buf_struct it_bit_buff) {
+ WORD32 i, bs_frame_type, data_bands, bs_temp_shape_enable,
+ num_of_temp_shape_ch;
+ WORD32 ps, pg, ts, ic;
+ WORD32 env_shape_data[MAX_TIME_SLOTS];
+ WORD32 alignment;
+ WORD32 bits_param_slot = 0;
+
+ ia_mps_bs_frame *frame = &(self->bs_frame);
+ alignment = it_bit_buff->cnt_bits;
+ if (self->parse_nxt_frame == 0) return IA_NO_ERROR;
+
+ self->num_parameter_sets_prev = self->num_parameter_sets;
+
+ bs_frame_type = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ self->num_parameter_sets = ixheaacd_read_bits_buf(it_bit_buff, 1) + 1;
+
+ if (self->time_slots == 32)
+ bits_param_slot = 5;
+ else if (self->time_slots == 64)
+ bits_param_slot = 6;
+ else if (self->time_slots == 8)
+ bits_param_slot = 3;
+ else if (self->time_slots == 16 || self->time_slots == 15)
+ bits_param_slot = 4;
+
+ if (bs_frame_type) {
+ for (i = 0; i < self->num_parameter_sets; i++) {
+ self->param_slots[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, bits_param_slot);
+ }
+ } else {
+ self->param_slots[0] = self->time_slots - 1;
+ }
+
+ frame->independency_flag = ixheaacd_read_bits_buf(it_bit_buff, 1);
+
+ for (i = 0; i < self->ldmps_config.num_ott_boxes; i++) {
+ ixheaacd_ld_mps_ecdata_decoding(self, it_bit_buff, frame->cmp_cld_idx, CLD,
+ 0);
+ }
+
+ if (self->ldmps_config.bs_one_icc) {
+ ixheaacd_ld_mps_ecdata_decoding(self, it_bit_buff, frame->cmp_icc_idx, ICC,
+ 0);
+ } else {
+ for (i = 0; i < self->ldmps_config.num_ott_boxes; i++) {
+ if (!self->ldmps_config.ott_mode_lfe[i])
+ ixheaacd_ld_mps_ecdata_decoding(self, it_bit_buff, frame->cmp_icc_idx,
+ ICC, 0);
+ }
+ }
+
+ for (ps = 0; ps < self->num_parameter_sets; ps++) {
+ frame->bs_smooth_mode[ps] = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ if (frame->bs_smooth_mode[ps] >= 2) {
+ frame->bs_smooth_time[ps] = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ }
+ if (frame->bs_smooth_mode[ps] == 3) {
+ frame->bs_freq_res_stride_smg[ps] =
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
+ data_bands =
+ (ixheaacd_freq_res_table_ld[self->ldmps_config.bs_freq_res] - 1) /
+ ixheaacd_mps_stride_table[frame->bs_freq_res_stride_smg[ps]] +
+ 1;
+ for (pg = 0; pg < data_bands; pg++) {
+ frame->bs_smg_data[ps][pg] = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+ }
+ }
+
+ for (i = 0; i < 2; i++) {
+ self->temp_shape_enable_ch_stp[i] = 0;
+ self->temp_shape_enable_ch_ges[i] = 0;
+ }
+
+ if (self->ldmps_config.bs_temp_shape_config != 0) {
+ bs_temp_shape_enable = ixheaacd_read_bits_buf(it_bit_buff, 1);
+ if (bs_temp_shape_enable) {
+ num_of_temp_shape_ch = 2;
+ switch (self->ldmps_config.bs_temp_shape_config) {
+ case 1:
+ for (i = 0; i < num_of_temp_shape_ch; i++) {
+ self->temp_shape_enable_ch_stp[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+ break;
+ case 2:
+ for (i = 0; i < num_of_temp_shape_ch; i++) {
+ self->temp_shape_enable_ch_ges[i] =
+ ixheaacd_read_bits_buf(it_bit_buff, 1);
+ }
+ for (i = 0; i < num_of_temp_shape_ch; i++) {
+ if (self->temp_shape_enable_ch_ges[i]) {
+ ixheaacd_mps_huff_decode(it_bit_buff, env_shape_data,
+ self->time_slots);
+ for (ts = 0; ts < self->time_slots; ts++) {
+ self->env_shape_data[i][ts] = (float)pow(
+ 2, (float)env_shape_data[ts] /
+ (self->ldmps_config.bs_env_quant_mode + 2) -
+ 1);
+ }
+ }
+ }
+ break;
+ default:
+ return IA_FATAL_ERROR;
+ }
+ }
+ }
+
+ if (self->ldmps_config.bs_arbitrary_downmix != 0) {
+ for (ic = 0; ic < self->ldmps_config.num_input_channels; ic++) {
+ ixheaacd_ld_mps_ecdata_decoding(self, it_bit_buff, frame->cmp_cld_idx,
+ CLD, 0);
+ }
+ }
+
+ ixheaacd_byte_align(it_bit_buff, &alignment);
+
+ while (it_bit_buff->cnt_bits > 8) {
+ ixheaacd_read_bits_buf(it_bit_buff, 8);/*discard*/
+ }
+ ixheaacd_read_bits_buf(it_bit_buff, it_bit_buff->cnt_bits);/*discard*/
+ return IA_NO_ERROR;
+}
+
static VOID ixheaacd_mps_createmapping(int map[MAX_PARAMETER_BANDS + 1],
int band_start, int band_stop,
int ch_fac) {
@@ -672,7 +1001,7 @@ static VOID ixheaacd_mps_mapfrequency(int *in, int *out, int *map,
static float ixheaacd_mps_de_quantize(int value, int param_type) {
switch (param_type) {
case CLD:
- return ixheaacd_cld_de_quant_table[value + 15];
+ return ixheaacd_cld_de_quant_table[(value + 15)];
case ICC:
return ixheaacd_icc_de_quant_table[value];
@@ -686,7 +1015,7 @@ static float ixheaacd_mps_de_quantize(int value, int param_type) {
}
}
-static WORD32 ixheaacd_mps_mapindexdata(
+static IA_ERRORCODE ixheaacd_mps_mapindexdata(
ia_mps_dec_state_struct *self, ia_mps_data_struct *frame_xxx_data,
float out_data[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS],
int out_idx_data[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS],
@@ -793,9 +1122,7 @@ static WORD32 ixheaacd_mps_mapindexdata(
x2 = param_slots[i2];
if (interpolate_local[i] == 1) {
- if (i2 < num_parameter_sets) {
- return -1;
- }
+ if (i2 < num_parameter_sets) return IA_FATAL_ERROR;
for (band = band_start; band < band_stop; band++) {
int yi, y1, y2;
yi = 0;
@@ -805,9 +1132,7 @@ static WORD32 ixheaacd_mps_mapindexdata(
if (y2 - y1 > 8) y1 += 16;
if (y1 - y2 > 8) y2 += 16;
- if (x2 != x1) {
- yi = (y1 + (xi - x1) * (y2 - y1) / (x2 - x1)) % 16;
- }
+ if (x2 != x1) yi = (y1 + (xi - x1) * (y2 - y1) / (x2 - x1)) % 16;
} else {
if (x2 != x1) {
yi = y1 + (xi - x1) * (y2 - y1) / (x2 - x1);
@@ -839,35 +1164,33 @@ static WORD32 ixheaacd_mps_mapindexdata(
out_idx_data[num_parameter_sets - 1][band];
}
}
-
- return 0;
+ return IA_NO_ERROR;
}
-static WORD32 ixheaacd_mps_dec_and_mapframeott(ia_mps_dec_state_struct *self) {
+static IA_ERRORCODE ixheaacd_mps_dec_and_mapframeott(
+ ia_mps_dec_state_struct *self) {
ia_mps_bs_frame *cur_bit_stream_ptr = &(self->bs_frame);
- WORD32 err_code = 0;
+ IA_ERRORCODE err_code = 0;
err_code = ixheaacd_mps_mapindexdata(
self, &cur_bit_stream_ptr->cld_data, self->cld_data,
cur_bit_stream_ptr->cld_idx, cur_bit_stream_ptr->cmp_cld_idx,
cur_bit_stream_ptr->cld_idx_pre, CLD);
- if (err_code != 0) return err_code;
-
+ if (err_code != IA_NO_ERROR) return err_code;
err_code = ixheaacd_mps_mapindexdata(
self, &cur_bit_stream_ptr->icc_data, self->icc_data,
cur_bit_stream_ptr->icc_idx, cur_bit_stream_ptr->cmp_icc_idx,
cur_bit_stream_ptr->icc_idx_pre, ICC);
- if (err_code != 0) return err_code;
+ if (err_code != IA_NO_ERROR) return err_code;
if ((self->config->bs_phase_coding)) {
err_code = ixheaacd_mps_mapindexdata(
self, &cur_bit_stream_ptr->ipd_data, self->ipd_data,
cur_bit_stream_ptr->ipd_idx, cur_bit_stream_ptr->ipd_idx_data,
cur_bit_stream_ptr->ipd_idx_prev, IPD);
- if (err_code != 0) return err_code;
+ if (err_code != IA_NO_ERROR) return err_code;
}
-
- return 0;
+ return IA_NO_ERROR;
}
static VOID ixheaacd_mps_dec_and_mapframesmg(ia_mps_dec_state_struct *self) {
@@ -956,20 +1279,18 @@ static VOID ixheaacd_mps_dec_and_mapframesmg(ia_mps_dec_state_struct *self) {
}
}
-WORD32 ixheaacd_mps_frame_decode(ia_mps_dec_state_struct *self) {
+IA_ERRORCODE ixheaacd_mps_frame_decode(ia_mps_dec_state_struct *self) {
int i;
- WORD32 err_code = 0;
- if (self->parse_nxt_frame == 1) return 0;
-
+ IA_ERRORCODE err_code = 0;
+ if (self->ldmps_config.ldmps_present_flag != 1)
+ if (self->parse_nxt_frame == 1) return err_code;
self->ext_frame_flag = 0;
if (self->param_slots[self->num_parameter_sets - 1] != self->time_slots - 1) {
self->ext_frame_flag = 1;
}
err_code = ixheaacd_mps_dec_and_mapframeott(self);
-
- if (err_code != 0) return err_code;
-
+ if (err_code != IA_NO_ERROR) return err_code;
ixheaacd_mps_dec_and_mapframesmg(self);
if (self->ext_frame_flag) {
@@ -986,90 +1307,160 @@ WORD32 ixheaacd_mps_frame_decode(ia_mps_dec_state_struct *self) {
self->inv_param_slot_diff_Q30[i] =
(int)floor(self->inv_param_slot_diff[i] * 1073741824 + 0.5);
}
-
- return 0;
+ return IA_NO_ERROR;
}
WORD32 ixheaacd_mps_header_decode(ia_mps_dec_state_struct *self) {
- self->time_slots = self->frame_length;
- self->bs_param_bands = ixheaacd_freq_res_table[self->config->bs_freq_res];
+ WORD32 samp_freq;
+ WORD32 sampling_rate_tbl[] = {96000, 88200, 64000, 48000, 44100, 32000,
+ 24000, 22050, 16000, 12000, 11025, 8000,
+ 7350, 0, 0, 0};
- self->hyb_band_count_max = self->qmf_band_count - QMF_BANDS_TO_HYBRID + 10;
+ if (self->ldmps_config.ldmps_present_flag == 1)
+ self->time_slots = self->frame_length + 1;
+ else
+ self->time_slots = self->frame_length;
- switch (self->bs_param_bands) {
- case 4:
+ self->bs_param_bands = ixheaacd_freq_res_table[self->config->bs_freq_res];
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_4_map;
- break;
- case 5:
+ if (self->ldmps_config.ldmps_present_flag == 1) {
+ if (self->ldmps_config.bs_sampling_freq_index == 15) {
+ samp_freq = self->ldmps_config.bs_fampling_frequency;
+ } else {
+ samp_freq = sampling_rate_tbl[self->ldmps_config.bs_sampling_freq_index];
+ }
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_5_map;
- break;
- case 7:
+ if (samp_freq < 27713.0) {
+ self->qmf_band_count = 32;
+ } else if (samp_freq >= 55426.0) {
+ self->qmf_band_count = 128;
+ } else {
+ self->qmf_band_count = 64;
+ }
+ }
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_7_map;
- break;
- case 10:
+ if (self->object_type == AOT_ER_AAC_ELD ||
+ self->object_type == AOT_ER_AAC_LD) {
+ self->bs_param_bands =
+ ixheaacd_freq_res_table_ld[self->config->bs_freq_res];
+ self->hyb_band_count_max = self->qmf_band_count;
+ } else
+ self->hyb_band_count_max = self->qmf_band_count - QMF_BANDS_TO_HYBRID + 10;
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_10_map;
- break;
- case 14:
+ if (self->object_type == AOT_ER_AAC_ELD ||
+ self->object_type == AOT_ER_AAC_LD) {
+ switch (self->bs_param_bands) {
+ case 4:
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_14_map;
- break;
- case 20:
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_4_map;
+ break;
+ case 5:
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_20_map;
- break;
- case 28:
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_5_map;
+ break;
+ case 7:
- self->hyb_band_to_processing_band_table =
- ixheaacd_hybrid_band_71_to_processing_band_28_map;
- break;
- default:
- self->hyb_band_to_processing_band_table = NULL;
- return -1;
- break;
- };
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_7_map;
+ break;
+ case 9:
- self->in_ch_count = 1;
- self->out_ch_count = 2;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_9_map;
+ break;
+ case 12:
- self->input_gain =
- ixheaacd_mps_clip_gain_table[self->config->bs_fixed_gain_dmx];
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_12_map;
+ break;
+ case 15:
- if (self->config->bs_ott_bands_phase_present) {
- self->num_bands_ipd = self->config->bs_ott_bands_phase;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_15_map;
+ break;
+ case 23:
+
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_64_to_processing_band_23_map;
+ break;
+ default:
+ self->hyb_band_to_processing_band_table = NULL;
+ return -1;
+ break;
+ }
} else {
switch (self->bs_param_bands) {
case 4:
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_4_map;
+ break;
case 5:
- self->num_bands_ipd = 2;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_5_map;
break;
case 7:
- self->num_bands_ipd = 3;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_7_map;
break;
case 10:
- self->num_bands_ipd = 5;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_10_map;
break;
case 14:
- self->num_bands_ipd = 7;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_14_map;
break;
case 20:
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_20_map;
+ break;
case 28:
- self->num_bands_ipd = 10;
+ self->hyb_band_to_processing_band_table =
+ ixheaacd_hybrid_band_71_to_processing_band_28_map;
break;
default:
- assert(0);
+ self->hyb_band_to_processing_band_table = NULL;
+ return -1;
break;
}
}
+ self->in_ch_count = 1;
+ self->out_ch_count = 2;
+
+ self->input_gain =
+ ixheaacd_mps_clip_gain_table[self->config->bs_fixed_gain_dmx];
+
+ if (self->config->bs_ott_bands_phase_present) {
+ self->num_bands_ipd = self->config->bs_ott_bands_phase;
+ } else {
+ if (!(self->object_type == AOT_ER_AAC_ELD ||
+ self->object_type == AOT_ER_AAC_LD)) {
+ switch (self->bs_param_bands) {
+ case 4:
+ case 5:
+ self->num_bands_ipd = 2;
+ break;
+ case 7:
+ self->num_bands_ipd = 3;
+ break;
+ case 10:
+ self->num_bands_ipd = 5;
+ break;
+ case 14:
+ self->num_bands_ipd = 7;
+ break;
+ case 20:
+ case 28:
+ self->num_bands_ipd = 10;
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ }
+ }
if (self->residual_coding) {
self->num_bands_ipd = max(self->bs_residual_bands, self->num_bands_ipd);
@@ -1090,6 +1481,7 @@ WORD32 ixheaacd_mps_header_decode(ia_mps_dec_state_struct *self) {
self->decor_sig_count = 1;
self->bs_high_rate_mode = self->config->bs_high_rate_mode;
+ self->pre_mix_req = 1;
return 0;
}
diff --git a/decoder/ixheaacd_mps_poly_filt.c b/decoder/ixheaacd_mps_poly_filt.c
index 7118538..e6f8ad8 100644
--- a/decoder/ixheaacd_mps_poly_filt.c
+++ b/decoder/ixheaacd_mps_poly_filt.c
@@ -22,8 +22,24 @@
#include <string.h>
#include <math.h>
#include "ixheaacd_type_def.h"
+#include "ixheaacd_bitbuffer.h"
#include "ixheaacd_interface.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
+#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
#include "ixheaacd_config.h"
#include "ixheaacd_mps_dec.h"
@@ -37,6 +53,12 @@ extern const FLOAT32
extern const FLOAT32 ixheaacd_mps_post_twid[30];
extern const FLOAT32 ixheaacd_mps_pre_twid[64];
+extern const FLOAT32 ixheaacd_ldmps_polyphase_filter_coeff[1280];
+
+extern const FLOAT32 ixheaacd_ldmps_pre_twid[32];
+extern const FLOAT32 ixheaacd_mps_post_re_32[64];
+extern const FLOAT32 ixheaacd_mps_post_im_32[64];
+
VOID ixheaacd_mps_synt_create(ia_mps_poly_phase_struct *kernel,
WORD32 resolution) {
kernel->resolution = resolution;
@@ -46,6 +68,18 @@ VOID ixheaacd_mps_synt_init(ia_mps_poly_phase_synth_struct *self) {
memset(self->state, 0, sizeof(FLOAT32) * POLY_PHASE_SYNTH_SIZE);
}
+VOID ixheaacd_mps_synt_post_fft_twiddle_dec(WORD32 resolution, FLOAT32 *fin_re,
+ FLOAT32 *fin_im,
+ const FLOAT32 *table_re,
+ const FLOAT32 *table_im,
+ FLOAT32 *state) {
+ WORD32 l;
+ for (l = 0; l < 2 * resolution; l++) {
+ state[2 * resolution - l - 1] =
+ ((fin_re[l] * table_re[l]) + (fin_im[l] * table_im[l]));
+ }
+}
+
VOID ixheaacd_mps_synt_out_calc_dec(WORD32 resolution, FLOAT32 *out,
FLOAT32 *state,
const FLOAT32 *filter_coeff) {
@@ -68,6 +102,58 @@ VOID ixheaacd_mps_synt_out_calc_dec(WORD32 resolution, FLOAT32 *out,
}
}
+VOID ixheaacd_mps_synt_out_calc_dec_ldmps(WORD32 resolution, FLOAT32 *out,
+ FLOAT32 *state, const FLOAT32 *filter_coeff) {
+ WORD32 l, k;
+ FLOAT32 *out1, *out2, *state1, *state2;
+ const FLOAT32 *filter1, *filter2;
+ filter1 = filter_coeff;
+ filter2 = filter_coeff + resolution;
+ out1 = out;
+ out2 = out + resolution;
+ state1 = state;
+ state2 = state + (3 * resolution);
+
+ for (k = 0; k < 5; k++) {
+ for (l = 0; l < resolution; l++) {
+ *out1++ = (*state1++) * (*filter1++);
+ *out2++ = (*state2++) * (*filter2++);
+ }
+ filter1 += resolution;
+ filter2 += resolution;
+ out1 += resolution;
+ out2 += resolution;
+ state1 += (3 * resolution);
+ state2 += (3 * resolution);
+ }
+}
+
+VOID ixheaacd_mps_synt_out_calc_dec_ldmps_32(WORD32 resolution, FLOAT32 *out,
+ FLOAT32 *state, const FLOAT32 *filter_coeff) {
+ WORD32 l, k;
+ FLOAT32 *out1, *out2, *state1, *state2;
+ const FLOAT32 *filter1, *filter2;
+ filter1 = filter_coeff;
+ filter2 = filter_coeff + 2 * resolution;
+ out1 = out;
+ out2 = out + resolution;
+ state1 = state;
+ state2 = state + (3 * resolution);
+
+ for (k = 0; k < 5; k++) {
+ for (l = 0; l < resolution; l++) {
+ *out1++ = ((*state1++) * (filter1[2*l] + filter1[2*l+1])/2);
+ *out2++ = ((*state2++) * (filter2[2 * l] + filter2[2 * l + 1])/2);
+ }
+ filter1 += 4 * resolution;
+ filter2 += 4 * resolution;
+ out1 += resolution;
+ out2 += resolution;
+ state1 += (3 * resolution);
+ state2 += (3 * resolution);
+ }
+}
+
VOID ixheaacd_mps_synth_pre_twidle(FLOAT32 *out_re, FLOAT32 *out_im,
FLOAT32 *c_in, WORD32 len) {
WORD32 i;
@@ -186,6 +272,38 @@ VOID ixheaacd_mps_synth_post_twidle(FLOAT32 *state, FLOAT32 *out_re,
}
}
+VOID ixheaacd_mps_synt_pre_twiddle_dec(FLOAT32 *ptr_in, const FLOAT32 *table,
+ FLOAT32 *fin_re, FLOAT32 *fin_im,
+ WORD32 resolution) {
+ WORD32 k;
+ FLOAT32 *c_s = ptr_in;
+ FLOAT32 *p_re_s = fin_re;
+ FLOAT32 *p_im_s = fin_im;
+ FLOAT32 *c_e = ptr_in + (resolution << 1) - 1;
+ FLOAT32 *p_im_e = fin_im + resolution - 1;
+ FLOAT32 *p_re_e = fin_re + resolution - 1;
+
+ for (k = 0; k < resolution; k += 2) {
+ *p_re_s = (*c_s++) * (*table);
+ *p_im_s = (*c_s) * (*table);
+
+ *p_re_e = (*c_e--) * (*table);
+ *p_im_e = -(*c_e) * (*table++);
+
+ *p_re_s += (*c_s--) * (*table);
+ *p_im_s += -(*c_s++) * (*table);
+ p_re_s++;
+ p_im_s++;
+ c_s++;
+
+ *p_re_e += (*c_e++) * (*table);
+ *p_im_e += (*c_e--) * (*table++);
+ p_re_e--;
+ p_im_e--;
+ c_e--;
+ }
+}
+
VOID ixheaacd_mps_synt_calc(ia_mps_dec_state_struct *self) {
WORD32 k, l, ts, ch;
FLOAT32 *state, *tmp_state, *out;
@@ -197,34 +315,92 @@ VOID ixheaacd_mps_synt_calc(ia_mps_dec_state_struct *self) {
ia_mps_poly_phase_struct kernel = self->poly_phase_filt_kernel;
WORD32 resolution = kernel.resolution;
WORD32 m_resolution = resolution >> 1;
- for (ch = 0; ch < self->out_ch_count; ch++) {
- tmp_state = (&self->qmf_filt_state[ch])->state;
- state = &tmp_buf[self->time_slots * 2 * resolution];
- memcpy(state, tmp_state, sizeof(FLOAT32) * 18 * resolution);
- out = &tmp_buf[74 * MAX_NUM_QMF_BANDS_SAC];
+ const FLOAT32 *ixheaacd_mps_post_re, *ixheaacd_mps_post_im;
+ VOID(*ixheaacd_mps_synt_out_calc_pointer)
+ (WORD32 resolution, FLOAT32 *out, FLOAT32 *state, const FLOAT32 *filter_coeff);
- for (ts = 0; ts < self->time_slots; ts++) {
- filt_coeff = ixheaacd_mps_polyphase_filter_coeff;
+ if (self->ldmps_config.ldmps_present_flag)
+ {
+ ixheaacd_mps_synt_out_calc_pointer = &ixheaacd_mps_synt_out_calc_dec_ldmps;
+ filt_coeff = ixheaacd_ldmps_polyphase_filter_coeff;
+ }
+ else
+ {
+ ixheaacd_mps_synt_out_calc_pointer = ixheaacd_mps_synt_out_calc;
+ filt_coeff = ixheaacd_mps_polyphase_filter_coeff;
+ }
+ if (self->qmf_band_count == 32)
+ {
+ for (ch = 0; ch < self->out_ch_count; ch++) {
+ tmp_state = (&self->qmf_filt_state[ch])->state;
+ state = &tmp_buf[self->time_slots * 2 * resolution];
+ memcpy(state, tmp_state, sizeof(FLOAT32) * 18 * resolution);
+ out = &tmp_buf[74 * MAX_NUM_QMF_BANDS_SAC];
- state -= (2 * resolution);
+ ixheaacd_mps_post_re = ixheaacd_mps_post_re_32;
+ ixheaacd_mps_post_im = ixheaacd_mps_post_im_32;
- ixheaacd_mps_synth_pre_twidle(
- fin_re, fin_im, &self->qmf_out_dir[ch][ts][0].re, resolution);
+ for (ts = 0; ts < self->time_slots; ts++) {
+
+ state -= (2 * resolution);
+
+ ixheaacd_mps_synt_pre_twiddle_dec(&self->qmf_out_dir[ch][ts][0].re,
+ ixheaacd_ldmps_pre_twid, fin_re, fin_im, resolution);
+
+ for (k = resolution; k < 2 * resolution; k++)
+ {
+ fin_re[k] = 0;
+ fin_im[k] = 0;
+ }
+
+ ixheaacd_mps_complex_fft(fin_re, fin_im, 2 * resolution);
+
+ ixheaacd_mps_synt_post_fft_twiddle_dec(resolution, fin_re, fin_im,
+ ixheaacd_mps_post_re,
+ ixheaacd_mps_post_im, state);
+
+ ixheaacd_mps_synt_out_calc_dec_ldmps_32(resolution, out, state, filt_coeff);
- ixheaacd_mps_synth_calc_fft(fin_re, fin_im, m_resolution);
+ for (k = 0; k < resolution; k++) {
+ FLOAT32 acc = out[k];
+ for (l = 1; l < 10; l++) {
+ acc += out[resolution * l + k];
+ }
+ self->output_buffer[ch][self->qmf_band_count * ts + k] = acc;
+ }
+ }
+ memcpy(tmp_state, state, sizeof(FLOAT32) * 18 * resolution);
+ }
+ }
+ else
+ {
+ for (ch = 0; ch < self->out_ch_count; ch++) {
+ tmp_state = (&self->qmf_filt_state[ch])->state;
+ state = &tmp_buf[self->time_slots * 2 * resolution];
+ memcpy(state, tmp_state, sizeof(FLOAT32) * 18 * resolution);
+ out = &tmp_buf[74 * MAX_NUM_QMF_BANDS_SAC];
+
+ for (ts = 0; ts < self->time_slots; ts++) {
+
+ state -= (2 * resolution);
+
+ ixheaacd_mps_synth_pre_twidle(
+ fin_re, fin_im, &self->qmf_out_dir[ch][ts][0].re, resolution);
- ixheaacd_mps_synth_post_twidle(state, fin_re, fin_im, resolution);
+ ixheaacd_mps_synth_calc_fft(fin_re, fin_im, m_resolution);
- (*ixheaacd_mps_synt_out_calc)(resolution, out, state, filt_coeff);
+ ixheaacd_mps_synth_post_twidle(state, fin_re, fin_im, resolution);
+ (*ixheaacd_mps_synt_out_calc_pointer)(resolution, out, state, filt_coeff);
- for (k = 0; k < resolution; k++) {
- FLOAT32 acc = out[k];
- for (l = 1; l < 10; l++) {
- acc += out[resolution * l + k];
+ for (k = 0; k < resolution; k++) {
+ FLOAT32 acc = out[k];
+ for (l = 1; l < 10; l++) {
+ acc += out[resolution * l + k];
+ }
+ self->output_buffer[ch][self->qmf_band_count * ts + k] = acc;
}
- self->output_buffer[ch][self->qmf_band_count * ts + k] = acc;
}
+ memcpy(tmp_state, state, sizeof(FLOAT32) * 18 * resolution);
}
- memcpy(tmp_state, state, sizeof(FLOAT32) * 18 * resolution);
}
}
diff --git a/decoder/ixheaacd_mps_pre_mix.c b/decoder/ixheaacd_mps_pre_mix.c
index 3d7a5cf..ffbf1e1 100644
--- a/decoder/ixheaacd_mps_pre_mix.c
+++ b/decoder/ixheaacd_mps_pre_mix.c
@@ -23,12 +23,26 @@
#include <assert.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
+#include "ixheaacd_type_def.h"
#include "ixheaacd_constants.h"
#include "ixheaacd_basic_ops32.h"
#include "ixheaacd_basic_ops40.h"
@@ -50,6 +64,9 @@
#define P_PI 3.1415926535897932
#define PI_IN_Q28 843314880
+#define Q28_FLOAT_VAL ((FLOAT32)(1 << 28))
+#define ONE_BY_Q28_FLOAT_VAL (1.0f / Q28_FLOAT_VAL)
+
extern const WORD32 ixheaacd_atan_table_Q28[16][8][31];
extern const WORD32 ixheaacd_ipd_de_quant_table_q28[16];
@@ -256,8 +273,6 @@ VOID ixheaacd_mps_par2umx_ps_ipd_opd(ia_mps_dec_state_struct *self,
WORD32 ipd_idx = curr_bit_stream->ipd_idx[param_set_idx][band] & 15;
WORD32 ipd = ixheaacd_ipd_de_quant_table_q28[ipd_idx];
-#define Q28_FLOAT_VAL ((float)(1 << 28))
-#define ONE_BY_Q28_FLOAT_VAL (1.0f / Q28_FLOAT_VAL)
self->phase_l[param_set_idx][band] =
ixheaacd_mps_phase_wraping(opd[band]) * ONE_BY_Q28_FLOAT_VAL;
self->phase_r[param_set_idx][band] =
@@ -394,6 +409,224 @@ WORD32 ixheaacd_mps_apply_pre_matrix(ia_mps_dec_state_struct *self) {
return 0;
}
+WORD32 ixheaacd_mps_apply_mix_matrix(ia_mps_dec_state_struct *self) {
+ WORD32 ts, qs, row, col;
+ WORD32 complex_m2 = ((self->config->bs_phase_coding != 0));
+ WORD32 phase_interpolation = (self->config->bs_phase_coding == 1);
+ WORD32 err = 0;
+ WORD32 num_col_iters = 0;
+
+
+ err = ixheaacd_mps_upmix_interp(
+ self->m2_decor_re, self->r_out_diff_re_in_m2, self->m2_decor_re_prev,
+ self->out_ch_count, (self->dir_sig_count + self->decor_sig_count), self, 1);
+ if (err < 0)
+ return err;
+ err = ixheaacd_mps_upmix_interp(
+ self->m2_resid_re, self->r_out_re_in_m2, self->m2_resid_re_prev,
+ self->out_ch_count, (self->dir_sig_count + self->decor_sig_count), self, 1);
+ if (err < 0)
+ return err;
+
+ if (complex_m2 && !phase_interpolation) {
+ err = ixheaacd_mps_upmix_interp(self->m2_decor_im, self->r_out_diff_im_in_m2,
+ self->m2_decor_im_prev, self->out_ch_count,
+ (self->dir_sig_count + self->decor_sig_count),
+ self, 1);
+ if (err < 0)
+ return err;
+ err = ixheaacd_mps_upmix_interp(self->m2_resid_im, self->r_out_im_in_m2,
+ self->m2_resid_im_prev, self->out_ch_count,
+ (self->dir_sig_count + self->decor_sig_count),
+ self, 1);
+ if (err < 0)
+ return err;
+
+ }
+
+ if (phase_interpolation) {
+ ixheaacd_mps_phase_interpolation(
+ self->phase_l, self->phase_r, self->phase_l_prev, self->phase_r_prev,
+ self->r_out_ph_re_in_m2, self->r_out_ph_im_in_m2, self);
+
+ for (ts = 0; ts < self->time_slots; ts++) {
+ WORD32 pb;
+ for (pb = 0; pb < self->bs_param_bands; pb++) {
+ self->r_out_im_in_m2[ts][pb][0][0] =
+ self->r_out_re_in_m2[ts][pb][0][0] *
+ self->r_out_ph_im_in_m2[ts][pb][0];
+
+ self->r_out_im_in_m2[ts][pb][0][1] =
+ self->r_out_re_in_m2[ts][pb][0][1] *
+ self->r_out_ph_im_in_m2[ts][pb][0];
+
+ self->r_out_im_in_m2[ts][pb][1][0] =
+ self->r_out_re_in_m2[ts][pb][1][0] *
+ self->r_out_ph_im_in_m2[ts][pb][1];
+
+ self->r_out_im_in_m2[ts][pb][1][1] =
+ self->r_out_re_in_m2[ts][pb][1][1] *
+ self->r_out_ph_im_in_m2[ts][pb][1];
+
+ self->r_out_re_in_m2[ts][pb][0][0] =
+ self->r_out_re_in_m2[ts][pb][0][0] *
+ self->r_out_ph_re_in_m2[ts][pb][0];
+
+ self->r_out_re_in_m2[ts][pb][0][1] =
+ self->r_out_re_in_m2[ts][pb][0][1] *
+ self->r_out_ph_re_in_m2[ts][pb][0];
+
+ self->r_out_re_in_m2[ts][pb][1][0] =
+ self->r_out_re_in_m2[ts][pb][1][0] *
+ self->r_out_ph_re_in_m2[ts][pb][1];
+
+ self->r_out_re_in_m2[ts][pb][1][1] =
+ self->r_out_re_in_m2[ts][pb][1][1] *
+ self->r_out_ph_re_in_m2[ts][pb][1];
+
+ self->r_out_diff_im_in_m2[ts][pb][0][0] = 0;
+ self->r_out_diff_im_in_m2[ts][pb][0][1] =
+ self->r_out_diff_re_in_m2[ts][pb][0][1] *
+ self->r_out_ph_im_in_m2[ts][pb][0];
+
+ self->r_out_diff_im_in_m2[ts][pb][1][0] = 0;
+ self->r_out_diff_im_in_m2[ts][pb][1][1] =
+ self->r_out_diff_re_in_m2[ts][pb][1][1] *
+ self->r_out_ph_im_in_m2[ts][pb][1];
+
+ self->r_out_diff_re_in_m2[ts][pb][0][0] = 0;
+ self->r_out_diff_re_in_m2[ts][pb][0][1] =
+ self->r_out_diff_re_in_m2[ts][pb][0][1] *
+ self->r_out_ph_re_in_m2[ts][pb][0];
+
+ self->r_out_diff_re_in_m2[ts][pb][1][0] = 0;
+ self->r_out_diff_re_in_m2[ts][pb][1][1] =
+ self->r_out_diff_re_in_m2[ts][pb][1][1] *
+ self->r_out_ph_re_in_m2[ts][pb][1];
+ }
+ }
+ }
+ if (self->res_bands == 0) {
+ num_col_iters = self->dir_sig_count;
+ }
+ else {
+ num_col_iters = (self->dir_sig_count + self->decor_sig_count);
+ }
+
+ for (ts = 0; ts < self->time_slots; ts++) {
+ for (qs = 0; qs < self->hyb_band_count_max; qs++) {
+ WORD32 indx = self->hyb_band_to_processing_band_table[qs];
+
+ for (row = 0; row < self->out_ch_count; row++) {
+ FLOAT32 sum_re_dir = 0;
+ FLOAT32 sum_im_dir = 0;
+ for (col = 0; col < num_col_iters; col++) {
+ sum_re_dir += self->w_dir[col][ts][qs].re *
+ self->r_out_re_in_m2[ts][indx][row][col];
+ sum_im_dir += self->w_dir[col][ts][qs].im *
+ self->r_out_re_in_m2[ts][indx][row][col];
+ }
+ self->hyb_dir_out[row][ts][qs].re = sum_re_dir;
+ self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
+
+ self->hyb_diff_out[row][ts][qs].re =
+ self->w_diff[1][ts][qs].re *
+ self->r_out_diff_re_in_m2[ts][indx][row][1];
+ self->hyb_diff_out[row][ts][qs].im =
+ self->w_diff[1][ts][qs].im *
+ self->r_out_diff_re_in_m2[ts][indx][row][1];
+ }
+ }
+ }
+
+ if (complex_m2) {
+ if (phase_interpolation) {
+ for (ts = 0; ts < self->time_slots; ts++) {
+ for (qs = 0; qs < 2; qs++) {
+ WORD32 indx = self->hyb_band_to_processing_band_table[qs];
+ for (row = 0; row < self->out_ch_count; row++) {
+ FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
+ FLOAT32 sum_im_dir = self->hyb_dir_out[row][ts][qs].im;
+ for (col = 0; col < num_col_iters; col++) {
+ sum_re_dir += self->w_dir[col][ts][qs].im *
+ self->r_out_im_in_m2[ts][indx][row][col];
+ sum_im_dir -= self->w_dir[col][ts][qs].re *
+ self->r_out_im_in_m2[ts][indx][row][col];
+ }
+ self->hyb_dir_out[row][ts][qs].re = sum_re_dir;
+ self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
+ self->hyb_diff_out[row][ts][qs].re +=
+ self->w_diff[1][ts][qs].im *
+ self->r_out_diff_im_in_m2[ts][indx][row][1];
+ self->hyb_diff_out[row][ts][qs].im -=
+ self->w_diff[1][ts][qs].re *
+ self->r_out_diff_im_in_m2[ts][indx][row][1];
+ }
+ }
+ for (qs = 2; qs < self->hyb_band_count_max; qs++) {
+ WORD32 indx = self->hyb_band_to_processing_band_table[qs];
+ for (row = 0; row < self->out_ch_count; row++) {
+ FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
+ FLOAT32 sum_im_dir = self->hyb_dir_out[row][ts][qs].im;
+ for (col = 0; col < num_col_iters; col++) {
+ sum_re_dir -= self->w_dir[col][ts][qs].im *
+ self->r_out_im_in_m2[ts][indx][row][col];
+ sum_im_dir += self->w_dir[col][ts][qs].re *
+ self->r_out_im_in_m2[ts][indx][row][col];
+ }
+ self->hyb_dir_out[row][ts][qs].re = sum_re_dir;
+ self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
+ self->hyb_diff_out[row][ts][qs].re -=
+ self->w_diff[1][ts][qs].im *
+ self->r_out_diff_im_in_m2[ts][indx][row][1];
+ self->hyb_diff_out[row][ts][qs].im +=
+ self->w_diff[1][ts][qs].re *
+ self->r_out_diff_im_in_m2[ts][indx][row][1];
+ }
+ }
+ }
+ }
+ else {
+ WORD32 num_cols = (self->dir_sig_count + self->decor_sig_count) > 1
+ ? 1
+ : (self->dir_sig_count + self->decor_sig_count);
+ for (ts = 0; ts < self->time_slots; ts++) {
+ for (qs = 0; qs < 2; qs++) {
+ WORD32 indx = self->hyb_band_to_processing_band_table[qs];
+ for (row = 0; row < self->out_ch_count; row++) {
+ FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
+ FLOAT32 sum_im_dir = self->hyb_dir_out[row][ts][qs].im;
+ if (num_cols > 0) {
+ sum_re_dir += self->w_dir[0][ts][qs].im *
+ self->r_out_im_in_m2[ts][indx][row][0];
+ sum_im_dir -= self->w_dir[0][ts][qs].re *
+ self->r_out_im_in_m2[ts][indx][row][0];
+ }
+ self->hyb_dir_out[row][ts][qs].re = sum_re_dir;
+ self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
+ }
+ }
+ for (qs = 2; qs < self->hyb_band_count_max; qs++) {
+ WORD32 indx = self->hyb_band_to_processing_band_table[qs];
+ for (row = 0; row < self->out_ch_count; row++) {
+ FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
+ FLOAT32 sum_im_dir = self->hyb_dir_out[row][ts][qs].im;
+ if (num_cols > 0) {
+ sum_re_dir -= self->w_dir[0][ts][qs].im *
+ self->r_out_im_in_m2[ts][indx][row][0];
+ sum_im_dir += self->w_dir[0][ts][qs].re *
+ self->r_out_im_in_m2[ts][indx][row][0];
+ }
+ self->hyb_dir_out[row][ts][qs].re = sum_re_dir;
+ self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
+ }
+ }
+ }
+ }
+ }
+ return 0;
+}
+
WORD32 ixheaacd_mps_apply_mix_matrix_type1(ia_mps_dec_state_struct *self) {
WORD32 ts, qs, row;
WORD32 err = 0;
@@ -439,7 +672,8 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self) {
self->m2_decor_re, self->r_out_diff_re_in_m2, self->m2_decor_re_prev,
self->out_ch_count, (self->dir_sig_count + self->decor_sig_count), self,
1);
- if (err < 0) return err;
+ if (err < 0)
+ return err;
err = ixheaacd_mps_upmix_interp_type1(
self->m2_resid_re, self->r_out_re_in_m2, self->m2_resid_re_prev,
self->out_ch_count, (self->dir_sig_count + self->decor_sig_count), self,
@@ -474,7 +708,6 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self) {
self->r_out_im_in_m2[ts][pb][0][1] =
self->r_out_re_in_m2[ts][pb][0][1] *
self->r_out_ph_im_in_m2[ts][pb][0];
-
self->r_out_im_in_m2[ts][pb][1][0] =
self->r_out_re_in_m2[ts][pb][1][0] *
self->r_out_ph_im_in_m2[ts][pb][1];
@@ -576,7 +809,7 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self) {
self->r_out_diff_im_in_m2[ts][indx][row][1];
}
}
- for (qs = 2; qs < self->hyb_band_count[0]; qs++) {
+ for (qs = 2; qs < self->hyb_band_count_max; qs++) {
WORD32 indx = self->hyb_band_to_processing_band_table[qs];
for (row = 0; row < self->out_ch_count; row++) {
FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
@@ -599,7 +832,7 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self) {
}
}
} else {
- int num_cols = (self->dir_sig_count + self->decor_sig_count) > 1
+ WORD32 num_cols = (self->dir_sig_count + self->decor_sig_count) > 1
? 1
: (self->dir_sig_count + self->decor_sig_count);
for (ts = 0; ts < self->time_slots; ts++) {
@@ -618,7 +851,7 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type2(ia_mps_dec_state_struct *self) {
self->hyb_dir_out[row][ts][qs].im = sum_im_dir;
}
}
- for (qs = 2; qs < self->hyb_band_count[0]; qs++) {
+ for (qs = 2; qs < self->hyb_band_count_max; qs++) {
WORD32 indx = self->hyb_band_to_processing_band_table[qs];
for (row = 0; row < self->out_ch_count; row++) {
FLOAT32 sum_re_dir = self->hyb_dir_out[row][ts][qs].re;
@@ -1003,6 +1236,59 @@ WORD32 ixheaacd_mps_apply_mix_matrix_type3(ia_mps_dec_state_struct *self) {
return 0;
}
+WORD32 ixheaacd_mps_upmix_interp(
+ FLOAT32 m_matrix[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
+ [MAX_M_INPUT],
+ FLOAT32 r_matrix_float[MAX_TIME_SLOTS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
+ [MAX_M_INPUT],
+ FLOAT32 m_matrix_prev[MAX_PARAMETER_BANDS][MAX_M_OUTPUT][MAX_M_INPUT],
+ WORD32 num_rows, WORD32 num_cols, ia_mps_dec_state_struct *self, WORD32 bs_high_rate_mode) {
+ WORD32 ts, ps, pb, row, col, i;
+ FLOAT32 ks, ms, ls;
+ FLOAT32 fl_step, fl_base;
+
+ if (MAX_TIME_SLOTS < (self->param_slot_diff[0]))
+ return -1;
+
+ for (pb = 0; pb < self->bs_param_bands; pb++) {
+ for (row = 0; row < num_rows; row++) {
+ for (col = 0; col < num_cols; col++) {
+ ts = 0;
+ ps = 0;
+ ks = self->inv_param_slot_diff[ps];
+ ms = m_matrix[ps][pb][row][col];
+ ls = m_matrix_prev[pb][row][col];
+ fl_step = ks * (ms - ls);
+ fl_base = ls + fl_step;
+
+ for (i = 1; i <= (WORD32)self->param_slot_diff[0]; i++) {
+ r_matrix_float[ts][pb][row][col] = fl_base;
+ fl_base += fl_step;
+ ts++;
+ }
+ if (bs_high_rate_mode) {
+ for (ps = 1; ps < self->num_parameter_sets; ps++) {
+ if (MAX_TIME_SLOTS < (ts + self->param_slot_diff[ps]))
+ return -1;
+ ks = self->inv_param_slot_diff[ps];
+ ms = m_matrix[ps][pb][row][col];
+ ls = m_matrix[ps - 1][pb][row][col];
+ fl_step = ks * (ms - ls);
+ fl_base = ls + fl_step;
+
+ for (i = 1; i <= (WORD32)self->param_slot_diff[ps]; i++) {
+ r_matrix_float[ts][pb][row][col] = fl_base;
+ fl_base += fl_step;
+ ts++;
+ }
+ }
+ }
+ }
+ }
+ }
+ return 0;
+}
+
WORD32 ixheaacd_mps_upmix_interp_type1(
FLOAT32 m_matrix[MAX_PARAMETER_SETS_MPS][MAX_PARAMETER_BANDS][MAX_M_OUTPUT]
[MAX_M_INPUT],
diff --git a/decoder/ixheaacd_mps_rom.c b/decoder/ixheaacd_mps_rom.c
index 954fef0..49628ff 100644
--- a/decoder/ixheaacd_mps_rom.c
+++ b/decoder/ixheaacd_mps_rom.c
@@ -25,7 +25,20 @@
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
@@ -6077,6 +6090,54 @@ const FLOAT32 ixheaacd_mps_post_twid[30] = {
0.881921f, 0.471397f, 0.857729f, 0.514103f, 0.831470f, 0.555570f,
0.803208f, 0.595699f, 0.773010f, 0.634393f, 0.740951f, 0.671559f};
+const FLOAT32 ixheaacd_ldmps_pre_twid[32] = {
+ 0.0156202940f, 0.0003834558f, 0.0155826630f, 0.0011494453f,
+ 0.0155074932f, 0.0019126660f, 0.0153949633f, 0.0026712785f,
+ 0.0152453454f, 0.0034234561f, 0.0150590008f, 0.0041673859f,
+ 0.0148363775f, 0.0049012764f, 0.0145780127f, 0.0056233592f,
+ 0.0142845269f, 0.0063318950f, 0.0139566287f, 0.0070251762f,
+ 0.0135951089f, 0.0077015338f, 0.0132008363f, 0.0083593372f,
+ 0.0127747618f, 0.0089970026f, 0.0123179127f, 0.0096129924f,
+ 0.0118313879f, 0.0102058258f, 0.0113163600f, 0.0107740704f };
+
+const FLOAT32 ixheaacd_mps_post_re_32[64] = {
+ 1.0000000000f, 0.9987954497f, 0.9951847196f, 0.9891765118f,
+ 0.9807852507f, 0.9700312614f, 0.9569403529f, 0.9415440559f,
+ 0.9238795042f, 0.9039893150f, 0.8819212317f, 0.8577286005f,
+ 0.8314695954f, 0.8032075167f, 0.7730104327f, 0.7409511209f,
+ 0.7071067691f, 0.6715589166f, 0.6343932748f, 0.5956993103f,
+ 0.5555701852f, 0.5141026974f, 0.4713966548f, 0.4275551140f,
+ 0.3826834261f, 0.3368898332f, 0.2902846336f, 0.2429801226f,
+ 0.1950902343f, 0.1467304826f, 0.0980171338f, 0.0490676500f,
+ -0.0000000433f, -0.0490677357f, -0.0980172232f, -0.1467305720f,
+ -0.1950903237f, -0.2429801971f, -0.2902847230f, -0.3368899226f,
+ -0.3826835155f, -0.4275550842f, -0.4713968337f, -0.5141027570f,
+ -0.5555703640f, -0.5956993699f, -0.6343932748f, -0.6715590358f,
+ -0.7071067691f, -0.7409512401f, -0.7730104923f, -0.8032076359f,
+ -0.8314696550f, -0.8577286005f, -0.8819213510f, -0.9039893150f,
+ -0.9238796234f, -0.9415441155f, -0.9569403529f, -0.9700312614f,
+ -0.9807853103f, -0.9891765118f, -0.9951847196f, -0.9987954497f
+};
+
+const FLOAT32 ixheaacd_mps_post_im_32[64] = {
+ 0.0000000000f, 0.0490676761f, 0.0980171412f, 0.1467304677f,
+ 0.1950903237f, 0.2429801822f, 0.2902846634f, 0.3368898630f,
+ 0.3826834559f, 0.4275550842f, 0.4713967443f, 0.5141027570f,
+ 0.5555702448f, 0.5956993103f, 0.6343933344f, 0.6715589762f,
+ 0.7071067691f, 0.7409511805f, 0.7730104327f, 0.8032075167f,
+ 0.8314696550f, 0.8577286601f, 0.8819212914f, 0.9039893150f,
+ 0.9238795042f, 0.9415440559f, 0.9569403529f, 0.9700312614f,
+ 0.9807853103f, 0.9891765118f, 0.9951847196f, 0.9987954497f,
+ 1.0000000000f, 0.9987954497f, 0.9951847196f, 0.9891765118f,
+ 0.9807852507f, 0.9700312614f, 0.9569402933f, 0.9415440559f,
+ 0.9238795042f, 0.9039893150f, 0.8819212317f, 0.8577286005f,
+ 0.8314695358f, 0.8032075167f, 0.7730104923f, 0.7409510612f,
+ 0.7071067691f, 0.6715588570f, 0.6343932748f, 0.5956991315f,
+ 0.5555701852f, 0.5141027570f, 0.4713966250f, 0.4275550544f,
+ 0.3826832771f, 0.3368898034f, 0.2902846932f, 0.2429800779f,
+ 0.1950903088f, 0.1467303336f, 0.0980170965f, 0.0490674861f,
+};
+
const FLOAT32 ixheaacd_mps_pre_twid[64] = {
0.015624f, 0.000192f, 0.015614f, 0.000575f, 0.015596f, 0.000958f, 0.015567f,
0.001341f, 0.015530f, 0.001722f, 0.015483f, 0.002103f, 0.015427f, 0.002482f,
@@ -6134,6 +6195,665 @@ const FLOAT32 ixheaacd_cosine[8][8] = {
{1.000000f, 0.923880f, 0.707107f, 0.382684f, 704.000000f, -0.382683f,
-0.707106f, -0.923880f}};
+const WORD32 ixheaacd_cosine2[2][13] = {
+ {
+ 1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
+ 1073741823, 1073741823, 1073741823, 1073741823, 1073741823, 1073741823,
+ 1073741823,
+ },
+ {
+ 1073741823, -1073741823, 1073741823, -1073741823, 1073741823,
+ -1073741823, 1073741823, -1073741823, 1073741823, -1073741823,
+ 1073741823, -1073741823, 1073741823,
+ },
+};
+
const WORD32 ixheaacd_mps_gain_set_indx[29] = {
1, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 21, 23, 25, 27, 30, 33, 37, 42, 48, 55, 70};
+
+const FLOAT32 ixheaacd_ldmps_polyphase_filter_coeff[1280] = {
+ -0.0007949257f, -0.0012320746f, -0.0016010543f, -0.0019807201f,
+ -0.0023975046f, -0.0028387094f, -0.0033147549f, -0.0038251812f,
+ -0.0043653073f, -0.0049372604f, -0.0055373814f, -0.0061642416f,
+ -0.0068165790f, -0.0074901022f, -0.0081837112f, -0.0088949297f,
+ -0.0096200043f, -0.0103569683f, -0.0111023858f, -0.0118535860f,
+ -0.0126076927f, -0.0133608067f, -0.0141103314f, -0.0148531627f,
+ -0.0155855091f, -0.0163043682f, -0.0170061402f, -0.0176877063f,
+ -0.0183456801f, -0.0189761259f, -0.0195760578f, -0.0201421324f,
+ -0.0206706170f, -0.0211581476f, -0.0216013081f, -0.0219969619f,
+ -0.0223416910f, -0.0226317085f, -0.0228641648f, -0.0230358951f,
+ -0.0231434479f, -0.0231835246f, -0.0231529772f, -0.0230491832f,
+ -0.0228686444f, -0.0226079077f, -0.0222644433f, -0.0218351875f,
+ -0.0213169195f, -0.0207061488f, -0.0199998133f, -0.0191956628f,
+ -0.0182893611f, -0.0172771178f, -0.0161564853f, -0.0149233583f,
+ -0.0135741979f, -0.0121037029f, -0.0105075520f, -0.0087857461f,
+ -0.0069273291f, -0.0049293786f, -0.0028003342f, -0.0004685577f,
+ 0.0022103144f, 0.0051832944f, 0.0083509637f, 0.0116611840f,
+ 0.0151316673f, 0.0187726468f, 0.0225889906f, 0.0265906155f,
+ 0.0307808779f, 0.0351639129f, 0.0397467501f, 0.0445330814f,
+ 0.0495262593f, 0.0547302663f, 0.0601483546f, 0.0657841489f,
+ 0.0716395080f, 0.0777165666f, 0.0840179473f, 0.0905451626f,
+ 0.0972988978f, 0.1042804047f, 0.1114900783f, 0.1189284250f,
+ 0.1265947521f, 0.1344885528f, 0.1426091045f, 0.1509550363f,
+ 0.1595243514f, 0.1683151573f, 0.1773250401f, 0.1865511388f,
+ 0.1959902197f, 0.2056386322f, 0.2154925913f, 0.2255475521f,
+ 0.2357989848f, 0.2462418824f, 0.2568709552f, 0.2676805258f,
+ 0.2786645591f, 0.2898168266f, 0.3011307418f, 0.3125994802f,
+ 0.3242157102f, 0.3359722793f, 0.3478614092f, 0.3598752320f,
+ 0.3720056713f, 0.3842444420f, 0.3965831101f, 0.4090129435f,
+ 0.4215250909f, 0.4341109097f, 0.4467608333f, 0.4594659507f,
+ 0.4722166657f, 0.4850038290f, 0.4978178144f, 0.5106483698f,
+ 0.5234865546f, 0.5363218188f, 0.5491440296f, 0.5619440079f,
+ -0.5746001601f, -0.5872559547f, -0.5998619199f, -0.6123980284f,
+ -0.6248505116f, -0.6372103095f, -0.6494654417f, -0.6616044044f,
+ -0.6736174226f, -0.6854929924f, -0.6972201467f, -0.7087881565f,
+ -0.7201859951f, -0.7314035296f, -0.7424294949f, -0.7532534599f,
+ -0.7638649344f, -0.7742537856f, -0.7844095230f, -0.7943222523f,
+ -0.8039818406f, -0.8133789897f, -0.8225036860f, -0.8313468695f,
+ -0.8398991823f, -0.8481519818f, -0.8560963273f, -0.8637239933f,
+ -0.8710266352f, -0.8779965043f, -0.8846257925f, -0.8909071684f,
+ -0.8968337178f, -0.9023985267f, -0.9075955749f, -0.9124187231f,
+ -0.9168621302f, -0.9209204316f, -0.9245886207f, -0.9278619289f,
+ -0.9307362437f, -0.9332075119f, -0.9352724552f, -0.9369278550f,
+ -0.9381709695f, -0.9389997125f, -0.9394121170f, -0.9394068122f,
+ -0.9389829040f, -0.9381397963f, -0.9368773103f, -0.9351961017f,
+ -0.9330966473f, -0.9305803180f, -0.9276487827f, -0.9243040681f,
+ -0.9205487967f, -0.9163856506f, -0.9118180275f, -0.9068503380f,
+ -0.9014858603f, -0.8957295418f, -0.8895882368f, -0.8830582500f,
+ -0.8761259913f, -0.8688043952f, -0.8611140251f, -0.8530684114f,
+ -0.8446723223f, -0.8359322548f, -0.8268554807f, -0.8174491525f,
+ -0.8077214956f, -0.7976809740f, -0.7873360515f, -0.7766956687f,
+ -0.7657692432f, -0.7545663714f, -0.7430967689f, -0.7313705087f,
+ -0.7193979621f, -0.7071895599f, -0.6947561502f, -0.6821083426f,
+ -0.6692573428f, -0.6562142968f, -0.6429904699f, -0.6295973659f,
+ -0.6160464287f, -0.6023493409f, -0.5885176659f, -0.5745630264f,
+ -0.5604973435f, -0.5463322401f, -0.5320795774f, -0.5177509785f,
+ -0.5033583045f, -0.4889132082f, -0.4744274616f, -0.4599125087f,
+ -0.4453800321f, -0.4308412969f, -0.4163077474f, -0.4017905891f,
+ -0.3873008788f, -0.3728497028f, -0.3584479988f, -0.3441060781f,
+ -0.3298346698f, -0.3156442046f, -0.3015447557f, -0.2875462472f,
+ -0.2736584544f, -0.2598909736f, -0.2462531626f, -0.2327540070f,
+ -0.2194025517f, -0.2062072009f, -0.1931765229f, -0.1803186089f,
+ -0.1676410586f, -0.1551517546f, -0.1428578347f, -0.1307662129f,
+ -0.1188837960f, -0.1072167307f, -0.0957711190f, -0.0845528170f,
+ 0.0735579357f, 0.0628051385f, 0.0522958934f, 0.0420338102f,
+ 0.0320230126f, 0.0222672001f, 0.0127700046f, 0.0035346728f,
+ -0.0054356726f, -0.0141385710f, -0.0225714780f, -0.0307325479f,
+ -0.0386199504f, -0.0462324508f, -0.0535687581f, -0.0606284477f,
+ -0.0674108788f, -0.0739159212f, -0.0801439285f, -0.0860951766f,
+ -0.0917705968f, -0.0971711874f, -0.1022983864f, -0.1071535870f,
+ -0.1117390916f, -0.1160565540f, -0.1201089993f, -0.1238986105f,
+ -0.1274286509f, -0.1307021976f, -0.1337226629f, -0.1364936531f,
+ -0.1390190870f, -0.1413030326f, -0.1433497667f, -0.1451636255f,
+ -0.1467494071f, -0.1481117010f, -0.1492556185f, -0.1501862854f,
+ -0.1509089023f, -0.1514289081f, -0.1517517567f, -0.1518831998f,
+ -0.1518289149f, -0.1515947729f, -0.1511866748f, -0.1506105959f,
+ -0.1498726010f, -0.1489787102f, -0.1479352117f, -0.1467481852f,
+ -0.1454239190f, -0.1439685971f, -0.1423884183f, -0.1406896859f,
+ -0.1388785988f, -0.1369612068f, -0.1349437684f, -0.1328323931f,
+ -0.1306331158f, -0.1283520460f, -0.1259952188f, -0.1235680804f,
+ -0.1210755706f, -0.1185237169f, -0.1159184426f, -0.1132654399f,
+ -0.1105698794f, -0.1078369170f, -0.1050716117f, -0.1022789180f,
+ -0.0994636714f, -0.0966306925f, -0.0937845483f, -0.0909297019f,
+ -0.0880705118f, -0.0852110758f, -0.0823556259f, -0.0795079023f,
+ -0.0766717792f, -0.0738509223f, -0.0710486695f, -0.0682684705f,
+ -0.0655134097f, -0.0627865866f, -0.0600909144f, -0.0574291982f,
+ -0.0548038296f, -0.0522173792f, -0.0496721379f, -0.0471702330f,
+ -0.0447136387f, -0.0423043817f, -0.0399438478f, -0.0376337133f,
+ -0.0353754386f, -0.0331703536f, -0.0310197119f, -0.0289245304f,
+ -0.0268857535f, -0.0249042176f, -0.0229805857f, -0.0211154576f,
+ -0.0193092767f, -0.0175623931f, -0.0158751141f, -0.0142475078f,
+ -0.0126795555f, -0.0111712581f, -0.0097224051f, -0.0083327051f,
+ -0.0070017893f, -0.0057292255f, -0.0045145033f, -0.0033569466f,
+ -0.0022558495f, -0.0012104595f, -0.0002199477f, 0.0007167263f,
+ 0.0016004397f, 0.0024323659f, 0.0032136049f, 0.0039453004f,
+ 0.0046286648f, 0.0052649761f, 0.0058556525f, 0.0064016338f,
+ -0.0069030458f, -0.0073645366f, -0.0077859173f, -0.0081687812f,
+ -0.0085145105f, -0.0088245263f, -0.0091004446f, -0.0093438197f,
+ -0.0095560895f, -0.0097389296f, -0.0098937284f, -0.0100222183f,
+ -0.0101256752f, -0.0102057597f, -0.0102638984f, -0.0103016300f,
+ -0.0103203785f, -0.0103215463f, -0.0103065800f, -0.0102768280f,
+ -0.0102336034f, -0.0101782102f, -0.0101119522f, -0.0100360261f,
+ -0.0099515645f, -0.0098597351f, -0.0097616902f, -0.0096583357f,
+ -0.0095505062f, -0.0094392402f, -0.0093253115f, -0.0092095714f,
+ -0.0090927295f, -0.0089755040f, -0.0088585643f, -0.0087425476f,
+ -0.0086279176f, -0.0085152360f, -0.0084048351f, -0.0082970457f,
+ -0.0081921816f, -0.0080905585f, -0.0079923403f, -0.0078977877f,
+ -0.0078069791f, -0.0077200048f, -0.0076368991f, -0.0075576920f,
+ -0.0074823610f, -0.0074108820f, -0.0073430836f, -0.0072789183f,
+ -0.0072182063f, -0.0071608433f, -0.0071066003f, -0.0070552491f,
+ -0.0070065912f, -0.0069604507f, -0.0069165546f, -0.0068746237f,
+ -0.0068344427f, -0.0067957863f, -0.0067584766f, -0.0067221262f,
+ -0.0066861408f, -0.0066502281f, -0.0066143544f, -0.0065783206f,
+ -0.0065418649f, -0.0065047294f, -0.0064666905f, -0.0064275563f,
+ -0.0063871238f, -0.0063452618f, -0.0063017663f, -0.0062565422f,
+ -0.0062093716f, -0.0061602155f, -0.0061089024f, -0.0060553551f,
+ -0.0059994739f, -0.0059412112f, -0.0058804955f, -0.0058172857f,
+ -0.0057515362f, -0.0056832312f, -0.0056123761f, -0.0055389581f,
+ -0.0054629631f, -0.0053843958f, -0.0053033372f, -0.0052197399f,
+ -0.0051336233f, -0.0050450461f, -0.0049540084f, -0.0048605883f,
+ -0.0047647208f, -0.0046664691f, -0.0045659458f, -0.0044631511f,
+ -0.0043581501f, -0.0042509669f, -0.0041416343f, -0.0040301653f,
+ -0.0039165970f, -0.0038009947f, -0.0036834506f, -0.0035639144f,
+ -0.0034424895f, -0.0033192560f, -0.0031942502f, -0.0030675260f,
+ -0.0029391386f, -0.0028091520f, -0.0026777033f, -0.0025448306f,
+ -0.0024106177f, -0.0022751903f, -0.0021385867f, -0.0020008814f,
+ -0.0018621609f, -0.0017228508f, -0.0015830053f, -0.0014426354f,
+ -0.0013017356f, -0.0011605313f, -0.0010187104f, -0.0008753659f,
+ 0.0007250868f, 0.0005901512f, 0.0004571248f, 0.0003254497f,
+ 0.0001951829f, 0.0000666175f, -0.0000600275f, -0.0001845164f,
+ -0.0003065709f, -0.0004259665f, -0.0005424777f, -0.0006558085f,
+ -0.0007659104f, -0.0008724863f, -0.0009753527f, -0.0010743001f,
+ -0.0011691442f, -0.0012597255f, -0.0013458347f, -0.0014273394f,
+ -0.0015040794f, -0.0015758807f, -0.0016426332f, -0.0017042002f,
+ -0.0017605145f, -0.0018114587f, -0.0018569818f, -0.0018970286f,
+ -0.0019315863f, -0.0019606268f, -0.0019841781f, -0.0020022886f,
+ -0.0020149164f, -0.0020221891f, -0.0020242548f, -0.0020211563f,
+ -0.0020131115f, -0.0020002127f, -0.0019826870f, -0.0019606939f,
+ -0.0019344082f, -0.0019041235f, -0.0018700724f, -0.0018325197f,
+ -0.0017917566f, -0.0017479789f, -0.0017015412f, -0.0016526897f,
+ -0.0016016904f, -0.0015489543f, -0.0014947094f, -0.0014391905f,
+ -0.0013827635f, -0.0013256427f, -0.0012681838f, -0.0012105964f,
+ -0.0011530248f, -0.0010959618f, -0.0010395534f, -0.0009838343f,
+ -0.0009290278f, -0.0008749813f, -0.0008215802f, -0.0007706117f,
+ -0.0007240456f, -0.0006849431f, -0.0006499495f, -0.0006169267f,
+ -0.0005864026f, -0.0005585561f, -0.0005332623f, -0.0005106712f,
+ -0.0004907669f, -0.0004734583f, -0.0004585870f, -0.0004460039f,
+ -0.0004356373f, -0.0004273243f, -0.0004208330f, -0.0004159436f,
+ -0.0004123962f, -0.0004100222f, -0.0004085470f, -0.0004077079f,
+ -0.0004073251f, -0.0004070932f, -0.0004067607f, -0.0004061488f,
+ -0.0004050555f, -0.0004033837f, -0.0004008813f, -0.0003973767f,
+ -0.0003928188f, -0.0003870558f, -0.0003799992f, -0.0003715968f,
+ -0.0003617546f, -0.0003505340f, -0.0003378810f, -0.0003237817f,
+ -0.0003083795f, -0.0002916576f, -0.0002737129f, -0.0002546264f,
+ -0.0002344782f, -0.0002134573f, -0.0001916261f, -0.0001692856f,
+ -0.0001466954f, -0.0001236852f, -0.0001005735f, -0.0000775065f,
+ -0.0000546696f, -0.0000325590f, -0.0000109682f, 0.0000098813f,
+ 0.0000295145f, 0.0000481009f, 0.0000651376f, 0.0000805138f,
+ 0.0000942973f, 0.0001058290f, 0.0001155818f, 0.0001229653f,
+ 0.0001266878f, 0.0001279376f, 0.0001216913f, 0.0000938624f,
+ -0.0007949257f, -0.0012320746f, -0.0016010543f, -0.0019807201f,
+ -0.0023975046f, -0.0028387094f, -0.0033147549f, -0.0038251812f,
+ -0.0043653073f, -0.0049372604f, -0.0055373814f, -0.0061642416f,
+ -0.0068165790f, -0.0074901022f, -0.0081837112f, -0.0088949297f,
+ -0.0096200043f, -0.0103569683f, -0.0111023858f, -0.0118535860f,
+ -0.0126076927f, -0.0133608067f, -0.0141103314f, -0.0148531627f,
+ -0.0155855091f, -0.0163043682f, -0.0170061402f, -0.0176877063f,
+ -0.0183456801f, -0.0189761259f, -0.0195760578f, -0.0201421324f,
+ -0.0206706170f, -0.0211581476f, -0.0216013081f, -0.0219969619f,
+ -0.0223416910f, -0.0226317085f, -0.0228641648f, -0.0230358951f,
+ -0.0231434479f, -0.0231835246f, -0.0231529772f, -0.0230491832f,
+ -0.0228686444f, -0.0226079077f, -0.0222644433f, -0.0218351875f,
+ -0.0213169195f, -0.0207061488f, -0.0199998133f, -0.0191956628f,
+ -0.0182893611f, -0.0172771178f, -0.0161564853f, -0.0149233583f,
+ -0.0135741979f, -0.0121037029f, -0.0105075520f, -0.0087857461f,
+ -0.0069273291f, -0.0049293786f, -0.0028003342f, -0.0004685577f,
+ 0.0022103144f, 0.0051832944f, 0.0083509637f, 0.0116611840f,
+ 0.0151316673f, 0.0187726468f, 0.0225889906f, 0.0265906155f,
+ 0.0307808779f, 0.0351639129f, 0.0397467501f, 0.0445330814f,
+ 0.0495262593f, 0.0547302663f, 0.0601483546f, 0.0657841489f,
+ 0.0716395080f, 0.0777165666f, 0.0840179473f, 0.0905451626f,
+ 0.0972988978f, 0.1042804047f, 0.1114900783f, 0.1189284250f,
+ 0.1265947521f, 0.1344885528f, 0.1426091045f, 0.1509550363f,
+ 0.1595243514f, 0.1683151573f, 0.1773250401f, 0.1865511388f,
+ 0.1959902197f, 0.2056386322f, 0.2154925913f, 0.2255475521f,
+ 0.2357989848f, 0.2462418824f, 0.2568709552f, 0.2676805258f,
+ 0.2786645591f, 0.2898168266f, 0.3011307418f, 0.3125994802f,
+ 0.3242157102f, 0.3359722793f, 0.3478614092f, 0.3598752320f,
+ 0.3720056713f, 0.3842444420f, 0.3965831101f, 0.4090129435f,
+ 0.4215250909f, 0.4341109097f, 0.4467608333f, 0.4594659507f,
+ 0.4722166657f, 0.4850038290f, 0.4978178144f, 0.5106483698f,
+ 0.5234865546f, 0.5363218188f, 0.5491440296f, 0.5619440079f,
+ -0.5746001601f, -0.5872559547f, -0.5998619199f, -0.6123980284f,
+ -0.6248505116f, -0.6372103095f, -0.6494654417f, -0.6616044044f,
+ -0.6736174226f, -0.6854929924f, -0.6972201467f, -0.7087881565f,
+ -0.7201859951f, -0.7314035296f, -0.7424294949f, -0.7532534599f,
+ -0.7638649344f, -0.7742537856f, -0.7844095230f, -0.7943222523f,
+ -0.8039818406f, -0.8133789897f, -0.8225036860f, -0.8313468695f,
+ -0.8398991823f, -0.8481519818f, -0.8560963273f, -0.8637239933f,
+ -0.8710266352f, -0.8779965043f, -0.8846257925f, -0.8909071684f,
+ -0.8968337178f, -0.9023985267f, -0.9075955749f, -0.9124187231f,
+ -0.9168621302f, -0.9209204316f, -0.9245886207f, -0.9278619289f,
+ -0.9307362437f, -0.9332075119f, -0.9352724552f, -0.9369278550f,
+ -0.9381709695f, -0.9389997125f, -0.9394121170f, -0.9394068122f,
+ -0.9389829040f, -0.9381397963f, -0.9368773103f, -0.9351961017f,
+ -0.9330966473f, -0.9305803180f, -0.9276487827f, -0.9243040681f,
+ -0.9205487967f, -0.9163856506f, -0.9118180275f, -0.9068503380f,
+ -0.9014858603f, -0.8957295418f, -0.8895882368f, -0.8830582500f,
+ -0.8761259913f, -0.8688043952f, -0.8611140251f, -0.8530684114f,
+ -0.8446723223f, -0.8359322548f, -0.8268554807f, -0.8174491525f,
+ -0.8077214956f, -0.7976809740f, -0.7873360515f, -0.7766956687f,
+ -0.7657692432f, -0.7545663714f, -0.7430967689f, -0.7313705087f,
+ -0.7193979621f, -0.7071895599f, -0.6947561502f, -0.6821083426f,
+ -0.6692573428f, -0.6562142968f, -0.6429904699f, -0.6295973659f,
+ -0.6160464287f, -0.6023493409f, -0.5885176659f, -0.5745630264f,
+ -0.5604973435f, -0.5463322401f, -0.5320795774f, -0.5177509785f,
+ -0.5033583045f, -0.4889132082f, -0.4744274616f, -0.4599125087f,
+ -0.4453800321f, -0.4308412969f, -0.4163077474f, -0.4017905891f,
+ -0.3873008788f, -0.3728497028f, -0.3584479988f, -0.3441060781f,
+ -0.3298346698f, -0.3156442046f, -0.3015447557f, -0.2875462472f,
+ -0.2736584544f, -0.2598909736f, -0.2462531626f, -0.2327540070f,
+ -0.2194025517f, -0.2062072009f, -0.1931765229f, -0.1803186089f,
+ -0.1676410586f, -0.1551517546f, -0.1428578347f, -0.1307662129f,
+ -0.1188837960f, -0.1072167307f, -0.0957711190f, -0.0845528170f,
+ 0.0735579357f, 0.0628051385f, 0.0522958934f, 0.0420338102f,
+ 0.0320230126f, 0.0222672001f, 0.0127700046f, 0.0035346728f,
+ -0.0054356726f, -0.0141385710f, -0.0225714780f, -0.0307325479f,
+ -0.0386199504f, -0.0462324508f, -0.0535687581f, -0.0606284477f,
+ -0.0674108788f, -0.0739159212f, -0.0801439285f, -0.0860951766f,
+ -0.0917705968f, -0.0971711874f, -0.1022983864f, -0.1071535870f,
+ -0.1117390916f, -0.1160565540f, -0.1201089993f, -0.1238986105f,
+ -0.1274286509f, -0.1307021976f, -0.1337226629f, -0.1364936531f,
+ -0.1390190870f, -0.1413030326f, -0.1433497667f, -0.1451636255f,
+ -0.1467494071f, -0.1481117010f, -0.1492556185f, -0.1501862854f,
+ -0.1509089023f, -0.1514289081f, -0.1517517567f, -0.1518831998f,
+ -0.1518289149f, -0.1515947729f, -0.1511866748f, -0.1506105959f,
+ -0.1498726010f, -0.1489787102f, -0.1479352117f, -0.1467481852f,
+ -0.1454239190f, -0.1439685971f, -0.1423884183f, -0.1406896859f,
+ -0.1388785988f, -0.1369612068f, -0.1349437684f, -0.1328323931f,
+ -0.1306331158f, -0.1283520460f, -0.1259952188f, -0.1235680804f,
+ -0.1210755706f, -0.1185237169f, -0.1159184426f, -0.1132654399f,
+ -0.1105698794f, -0.1078369170f, -0.1050716117f, -0.1022789180f,
+ -0.0994636714f, -0.0966306925f, -0.0937845483f, -0.0909297019f,
+ -0.0880705118f, -0.0852110758f, -0.0823556259f, -0.0795079023f,
+ -0.0766717792f, -0.0738509223f, -0.0710486695f, -0.0682684705f,
+ -0.0655134097f, -0.0627865866f, -0.0600909144f, -0.0574291982f,
+ -0.0548038296f, -0.0522173792f, -0.0496721379f, -0.0471702330f,
+ -0.0447136387f, -0.0423043817f, -0.0399438478f, -0.0376337133f,
+ -0.0353754386f, -0.0331703536f, -0.0310197119f, -0.0289245304f,
+ -0.0268857535f, -0.0249042176f, -0.0229805857f, -0.0211154576f,
+ -0.0193092767f, -0.0175623931f, -0.0158751141f, -0.0142475078f,
+ -0.0126795555f, -0.0111712581f, -0.0097224051f, -0.0083327051f,
+ -0.0070017893f, -0.0057292255f, -0.0045145033f, -0.0033569466f,
+ -0.0022558495f, -0.0012104595f, -0.0002199477f, 0.0007167263f,
+ 0.0016004397f, 0.0024323659f, 0.0032136049f, 0.0039453004f,
+ 0.0046286648f, 0.0052649761f, 0.0058556525f, 0.0064016338f,
+ -0.0069030458f, -0.0073645366f, -0.0077859173f, -0.0081687812f,
+ -0.0085145105f, -0.0088245263f, -0.0091004446f, -0.0093438197f,
+ -0.0095560895f, -0.0097389296f, -0.0098937284f, -0.0100222183f,
+ -0.0101256752f, -0.0102057597f, -0.0102638984f, -0.0103016300f,
+ -0.0103203785f, -0.0103215463f, -0.0103065800f, -0.0102768280f,
+ -0.0102336034f, -0.0101782102f, -0.0101119522f, -0.0100360261f,
+ -0.0099515645f, -0.0098597351f, -0.0097616902f, -0.0096583357f,
+ -0.0095505062f, -0.0094392402f, -0.0093253115f, -0.0092095714f,
+ -0.0090927295f, -0.0089755040f, -0.0088585643f, -0.0087425476f,
+ -0.0086279176f, -0.0085152360f, -0.0084048351f, -0.0082970457f,
+ -0.0081921816f, -0.0080905585f, -0.0079923403f, -0.0078977877f,
+ -0.0078069791f, -0.0077200048f, -0.0076368991f, -0.0075576920f,
+ -0.0074823610f, -0.0074108820f, -0.0073430836f, -0.0072789183f,
+ -0.0072182063f, -0.0071608433f, -0.0071066003f, -0.0070552491f,
+ -0.0070065912f, -0.0069604507f, -0.0069165546f, -0.0068746237f,
+ -0.0068344427f, -0.0067957863f, -0.0067584766f, -0.0067221262f,
+ -0.0066861408f, -0.0066502281f, -0.0066143544f, -0.0065783206f,
+ -0.0065418649f, -0.0065047294f, -0.0064666905f, -0.0064275563f,
+ -0.0063871238f, -0.0063452618f, -0.0063017663f, -0.0062565422f,
+ -0.0062093716f, -0.0061602155f, -0.0061089024f, -0.0060553551f,
+ -0.0059994739f, -0.0059412112f, -0.0058804955f, -0.0058172857f,
+ -0.0057515362f, -0.0056832312f, -0.0056123761f, -0.0055389581f,
+ -0.0054629631f, -0.0053843958f, -0.0053033372f, -0.0052197399f,
+ -0.0051336233f, -0.0050450461f, -0.0049540084f, -0.0048605883f,
+ -0.0047647208f, -0.0046664691f, -0.0045659458f, -0.0044631511f,
+ -0.0043581501f, -0.0042509669f, -0.0041416343f, -0.0040301653f,
+ -0.0039165970f, -0.0038009947f, -0.0036834506f, -0.0035639144f,
+ -0.0034424895f, -0.0033192560f, -0.0031942502f, -0.0030675260f,
+ -0.0029391386f, -0.0028091520f, -0.0026777033f, -0.0025448306f,
+ -0.0024106177f, -0.0022751903f, -0.0021385867f, -0.0020008814f,
+ -0.0018621609f, -0.0017228508f, -0.0015830053f, -0.0014426354f,
+ -0.0013017356f, -0.0011605313f, -0.0010187104f, -0.0008753659f,
+ 0.0007250868f, 0.0005901512f, 0.0004571248f, 0.0003254497f,
+ 0.0001951829f, 0.0000666175f, -0.0000600275f, -0.0001845164f,
+ -0.0003065709f, -0.0004259665f, -0.0005424777f, -0.0006558085f,
+ -0.0007659104f, -0.0008724863f, -0.0009753527f, -0.0010743001f,
+ -0.0011691442f, -0.0012597255f, -0.0013458347f, -0.0014273394f,
+ -0.0015040794f, -0.0015758807f, -0.0016426332f, -0.0017042002f,
+ -0.0017605145f, -0.0018114587f, -0.0018569818f, -0.0018970286f,
+ -0.0019315863f, -0.0019606268f, -0.0019841781f, -0.0020022886f,
+ -0.0020149164f, -0.0020221891f, -0.0020242548f, -0.0020211563f,
+ -0.0020131115f, -0.0020002127f, -0.0019826870f, -0.0019606939f,
+ -0.0019344082f, -0.0019041235f, -0.0018700724f, -0.0018325197f,
+ -0.0017917566f, -0.0017479789f, -0.0017015412f, -0.0016526897f,
+ -0.0016016904f, -0.0015489543f, -0.0014947094f, -0.0014391905f,
+ -0.0013827635f, -0.0013256427f, -0.0012681838f, -0.0012105964f,
+ -0.0011530248f, -0.0010959618f, -0.0010395534f, -0.0009838343f,
+ -0.0009290278f, -0.0008749813f, -0.0008215802f, -0.0007706117f,
+ -0.0007240456f, -0.0006849431f, -0.0006499495f, -0.0006169267f,
+ -0.0005864026f, -0.0005585561f, -0.0005332623f, -0.0005106712f,
+ -0.0004907669f, -0.0004734583f, -0.0004585870f, -0.0004460039f,
+ -0.0004356373f, -0.0004273243f, -0.0004208330f, -0.0004159436f,
+ -0.0004123962f, -0.0004100222f, -0.0004085470f, -0.0004077079f,
+ -0.0004073251f, -0.0004070932f, -0.0004067607f, -0.0004061488f,
+ -0.0004050555f, -0.0004033837f, -0.0004008813f, -0.0003973767f,
+ -0.0003928188f, -0.0003870558f, -0.0003799992f, -0.0003715968f,
+ -0.0003617546f, -0.0003505340f, -0.0003378810f, -0.0003237817f,
+ -0.0003083795f, -0.0002916576f, -0.0002737129f, -0.0002546264f,
+ -0.0002344782f, -0.0002134573f, -0.0001916261f, -0.0001692856f,
+ -0.0001466954f, -0.0001236852f, -0.0001005735f, -0.0000775065f,
+ -0.0000546696f, -0.0000325590f, -0.0000109682f, 0.0000098813f,
+ 0.0000295145f, 0.0000481009f, 0.0000651376f, 0.0000805138f,
+ 0.0000942973f, 0.0001058290f, 0.0001155818f, 0.0001229653f,
+ 0.0001266878f, 0.0001279376f, 0.0001216913f, 0.0000938624f
+};
+const WORD32 ixheaacd_ldmps_polyphase_filter_coeff_fix[1280]=
+{
+ -853545, -1322930, -1719119, -2126782,
+ -2574301, -3048041, -3559191, -4107257,
+ -4687213, -5301343, -5945718, -6618804,
+ -7319246, -8042436, -8787193, -9550858,
+ -10329401, -11120710, -11921096, -12727691,
+ -13537407, -14346057, -15150853, -15948462,
+ -16734813, -17506682, -18260204, -18992030,
+ -19698524, -20375460, -21019632, -21627450,
+ -22194906, -22718388, -23194228, -23619058,
+ -23989208, -24300612, -24550210, -24734604,
+ -24850088, -24893120, -24860320, -24748872,
+ -24555020, -24275056, -23906264, -23445354,
+ -22888868, -22233058, -21474636, -20611186,
+ -19638052, -18551164, -17347894, -16023834,
+ -14575184, -12996252, -11282398, -9433623,
+ -7438163, -5292880, -3006836, -503110,
+ 2373307, 5565520, 8966779, 12521101,
+ 16247504, 20156977, 24254745, 28551455,
+ 33050715, 37756963, 42677747, 47817031,
+ 53178415, 58766175, 64583803, 70635191,
+ 76922335, 83447527, 90213583, 97222127,
+ 104473895, 111970231, 119711559, 127698423,
+ 135930079, 144405983, 153125359, 162086735,
+ 171287967, 180727023, 190401311, 200307759,
+ 210442895, 220802799, 231383407, 242179839,
+ 253187231, 264400207, 275813087, 287419775,
+ 299213791, 311188447, 323336671, 335651135,
+ 348123967, 360747487, 373513343, 386413087,
+ 399438047, 412579327, 425827871, 439174303,
+ 452609119, 466123039, 479705791, 493347807,
+ 507038783, 520768895, 534527807, 548304511,
+ 562089407, 575871167, 589638911, 603382783,
+ -616972224, -630561280, -644096832, -657557376,
+ -670928128, -684199360, -697358208, -710392320,
+ -723291200, -736042496, -748634432, -761055488,
+ -773293824, -785338560, -797177600, -808799744,
+ -820193728, -831348672, -842253312, -852897024,
+ -863268928, -873359040, -883156608, -892651904,
+ -901834880, -910696256, -919226432, -927416576,
+ -935257728, -942741568, -949859712, -956604288,
+ -962967872, -968943040, -974523328, -979702144,
+ -984473216, -988830784, -992769472, -996284160,
+ -999370432, -1002023936, -1004241152, -1006018624,
+ -1007353408, -1008243264, -1008686080, -1008680384,
+ -1008225216, -1007319936, -1005964352, -1004159168,
+ -1001904896, -999203008, -996055296, -992463936,
+ -988431744, -983961600, -979057152, -973723136,
+ -967963072, -961782272, -955188096, -948176576,
+ -940733120, -932871616, -924614144, -915975232,
+ -906960000, -897575424, -887829312, -877729344,
+ -867284352, -856503424, -845395648, -833970624,
+ -822238464, -810209472, -797894080, -785303104,
+ -772447680, -759339008, -745988736, -732408256,
+ -718609600, -704604736, -690405760, -676025024,
+ -661474816, -646767680, -631916032, -616932352,
+ -601829440, -586619776, -571316096, -555930880,
+ -540476864, -524966560, -509412608, -493827296,
+ -478223168, -462612320, -447007040, -431419360,
+ -415861152, -400344320, -384880608, -369481088,
+ -354157280, -338920384, -323781216, -308750432,
+ -293838528, -279055808, -264412320, -249917712,
+ -235581696, -221413296, -207421712, -193615632,
+ -180003216, -166592928, -153392432, -140409152,
+ -127650504, -115123088, -102833456, -90787896,
+ 78982231, 67436503, 56152287, 45133459,
+ 34384447, 23909225, 13711688, 3795326,
+ -5836509, -15181175, -24235940, -32998822,
+ -41467856, -49641716, -57519016, -65099300,
+ -72381880, -79366616, -86053888, -92443992,
+ -98537928, -104336768, -109842056, -115055288,
+ -119978936, -124614776, -128966056, -133035120,
+ -136825472, -140340416, -143583616, -146558944,
+ -149270608, -151722976, -153920640, -155868256,
+ -157570976, -159033728, -160262000, -161261296,
+ -162037200, -162595552, -162942208, -163083344,
+ -163025056, -162773648, -162335456, -161716896,
+ -160924480, -159964672, -158844224, -157569664,
+ -156147744, -154585104, -152888400, -151064400,
+ -149119760, -147060976, -144894768, -142627696,
+ -140266240, -137816960, -135286336, -132680216,
+ -130003904, -127263872, -124466480, -121617840,
+ -118723504, -115789008, -112819784, -109821152,
+ -106798304, -103756416, -100700392, -97635024,
+ -94564992, -91494696, -88428680, -85370960,
+ -82325696, -79296824, -76287928, -73302712,
+ -70344488, -67416584, -64522128, -61664132,
+ -58845164, -56067984, -53335052, -50648652,
+ -48010904, -45423984, -42889380, -40408892,
+ -37984088, -35616396, -33307162, -31057478,
+ -28868358, -26740700, -24675216, -22672550,
+ -20733178, -18857476, -17045774, -15298145,
+ -13614569, -11995047, -10439353, -8947174,
+ -7518114, -6151709, -4847411, -3604494,
+ -2422200, -1299721, -236167, 769579,
+ 1718459, 2611733, 3450582, 4236234,
+ 4969991, 5653225, 6287459, 6873702,
+ -7412089, -7907611, -8360065, -8771162,
+ -9142386, -9475263, -9771528, -10032850,
+ -10260773, -10457096, -10623310, -10761275,
+ -10872361, -10958351, -11020777, -11061291,
+ -11081422, -11082676, -11066606, -11034660,
+ -10988248, -10928770, -10857626, -10776101,
+ -10685411, -10586810, -10481535, -10370559,
+ -10254778, -10135307, -10012977, -9888702,
+ -9763244, -9637374, -9511811, -9387239,
+ -9264156, -9143165, -9024623, -8908885,
+ -8796288, -8687171, -8581710, -8480185,
+ -8382680, -8289292, -8200058, -8115010,
+ -8034124, -7957374, -7884576, -7815679,
+ -7750490, -7688897, -7630654, -7575516,
+ -7523270, -7473727, -7426594, -7381571,
+ -7338427, -7296920, -7256859, -7217828,
+ -7179189, -7140628, -7102109, -7063418,
+ -7024274, -6984400, -6943556, -6901536,
+ -6858122, -6813173, -6766470, -6717911,
+ -6667262, -6614481, -6559384, -6501888,
+ -6441886, -6379327, -6314134, -6246263,
+ -6175665, -6102323, -6026243, -5947411,
+ -5865812, -5781451, -5694415, -5604653,
+ -5512186, -5417077, -5319326, -5219017,
+ -5116080, -5010583, -4902647, -4792272,
+ -4679528, -4564441, -4447046, -4327357,
+ -4205414, -4081287, -3955075, -3826724,
+ -3696345, -3564024, -3429800, -3293731,
+ -3155876, -3016304, -2875162, -2732491,
+ -2588381, -2442967, -2296290, -2148430,
+ -1999480, -1849897, -1699739, -1549018,
+ -1397728, -1246111, -1093832, -939917,
+ 778556, 633670, 490834, 349449,
+ 209576, 71530, -64454, -198123,
+ -329178, -457378, -582481, -704169,
+ -822390, -936825, -1047277, -1153521,
+ -1255359, -1352620, -1445079, -1532594,
+ -1614993, -1692089, -1763764, -1829871,
+ -1890338, -1945039, -1993919, -2036919,
+ -2074025, -2105207, -2130495, -2149941,
+ -2163500, -2171309, -2173527, -2170200,
+ -2161562, -2147712, -2128894, -2105279,
+ -2077055, -2044537, -2007975, -1967653,
+ -1923884, -1876878, -1827016, -1774562,
+ -1719802, -1663177, -1604932, -1545319,
+ -1484731, -1423398, -1361702, -1299868,
+ -1238051, -1176780, -1116212, -1056384,
+ -997536, -939504, -882165, -827438,
+ -777438, -735452, -697878, -662420,
+ -629645, -599745, -572586, -548329,
+ -526957, -508372, -492404, -478893,
+ -467762, -458836, -451866, -446616,
+ -442807, -440258, -438674, -437773,
+ -437362, -437113, -436756, -436099,
+ -434925, -433130, -430443, -426680,
+ -421786, -415598, -408021, -398999,
+ -388431, -376383, -362797, -347658,
+ -331120, -313165, -293897, -273403,
+ -251769, -229198, -205757, -181769,
+ -157513, -132806, -107990, -83222,
+ -58701, -34960, -11777, 10610,
+ 31691, 51648, 69941, 86451,
+ 101251, 113633, 124105, 132033,
+ 136030, 137372, 130665, 100784,
+ -853545, -1322930, -1719119, -2126782,
+ -2574301, -3048041, -3559191, -4107257,
+ -4687213, -5301343, -5945718, -6618804,
+ -7319246, -8042436, -8787193, -9550858,
+ -10329401, -11120710, -11921096, -12727691,
+ -13537407, -14346057, -15150853, -15948462,
+ -16734813, -17506682, -18260204, -18992030,
+ -19698524, -20375460, -21019632, -21627450,
+ -22194906, -22718388, -23194228, -23619058,
+ -23989208, -24300612, -24550210, -24734604,
+ -24850088, -24893120, -24860320, -24748872,
+ -24555020, -24275056, -23906264, -23445354,
+ -22888868, -22233058, -21474636, -20611186,
+ -19638052, -18551164, -17347894, -16023834,
+ -14575184, -12996252, -11282398, -9433623,
+ -7438163, -5292880, -3006836, -503110,
+ 2373307, 5565520, 8966779, 12521101,
+ 16247504, 20156977, 24254745, 28551455,
+ 33050715, 37756963, 42677747, 47817031,
+ 53178415, 58766175, 64583803, 70635191,
+ 76922335, 83447527, 90213583, 97222127,
+ 104473895, 111970231, 119711559, 127698423,
+ 135930079, 144405983, 153125359, 162086735,
+ 171287967, 180727023, 190401311, 200307759,
+ 210442895, 220802799, 231383407, 242179839,
+ 253187231, 264400207, 275813087, 287419775,
+ 299213791, 311188447, 323336671, 335651135,
+ 348123967, 360747487, 373513343, 386413087,
+ 399438047, 412579327, 425827871, 439174303,
+ 452609119, 466123039, 479705791, 493347807,
+ 507038783, 520768895, 534527807, 548304511,
+ 562089407, 575871167, 589638911, 603382783,
+ -616972224, -630561280, -644096832, -657557376,
+ -670928128, -684199360, -697358208, -710392320,
+ -723291200, -736042496, -748634432, -761055488,
+ -773293824, -785338560, -797177600, -808799744,
+ -820193728, -831348672, -842253312, -852897024,
+ -863268928, -873359040, -883156608, -892651904,
+ -901834880, -910696256, -919226432, -927416576,
+ -935257728, -942741568, -949859712, -956604288,
+ -962967872, -968943040, -974523328, -979702144,
+ -984473216, -988830784, -992769472, -996284160,
+ -999370432, -1002023936, -1004241152, -1006018624,
+ -1007353408, -1008243264, -1008686080, -1008680384,
+ -1008225216, -1007319936, -1005964352, -1004159168,
+ -1001904896, -999203008, -996055296, -992463936,
+ -988431744, -983961600, -979057152, -973723136,
+ -967963072, -961782272, -955188096, -948176576,
+ -940733120, -932871616, -924614144, -915975232,
+ -906960000, -897575424, -887829312, -877729344,
+ -867284352, -856503424, -845395648, -833970624,
+ -822238464, -810209472, -797894080, -785303104,
+ -772447680, -759339008, -745988736, -732408256,
+ -718609600, -704604736, -690405760, -676025024,
+ -661474816, -646767680, -631916032, -616932352,
+ -601829440, -586619776, -571316096, -555930880,
+ -540476864, -524966560, -509412608, -493827296,
+ -478223168, -462612320, -447007040, -431419360,
+ -415861152, -400344320, -384880608, -369481088,
+ -354157280, -338920384, -323781216, -308750432,
+ -293838528, -279055808, -264412320, -249917712,
+ -235581696, -221413296, -207421712, -193615632,
+ -180003216, -166592928, -153392432, -140409152,
+ -127650504, -115123088, -102833456, -90787896,
+ 78982231, 67436503, 56152287, 45133459,
+ 34384447, 23909225, 13711688, 3795326,
+ -5836509, -15181175, -24235940, -32998822,
+ -41467856, -49641716, -57519016, -65099300,
+ -72381880, -79366616, -86053888, -92443992,
+ -98537928, -104336768, -109842056, -115055288,
+ -119978936, -124614776, -128966056, -133035120,
+ -136825472, -140340416, -143583616, -146558944,
+ -149270608, -151722976, -153920640, -155868256,
+ -157570976, -159033728, -160262000, -161261296,
+ -162037200, -162595552, -162942208, -163083344,
+ -163025056, -162773648, -162335456, -161716896,
+ -160924480, -159964672, -158844224, -157569664,
+ -156147744, -154585104, -152888400, -151064400,
+ -149119760, -147060976, -144894768, -142627696,
+ -140266240, -137816960, -135286336, -132680216,
+ -130003904, -127263872, -124466480, -121617840,
+ -118723504, -115789008, -112819784, -109821152,
+ -106798304, -103756416, -100700392, -97635024,
+ -94564992, -91494696, -88428680, -85370960,
+ -82325696, -79296824, -76287928, -73302712,
+ -70344488, -67416584, -64522128, -61664132,
+ -58845164, -56067984, -53335052, -50648652,
+ -48010904, -45423984, -42889380, -40408892,
+ -37984088, -35616396, -33307162, -31057478,
+ -28868358, -26740700, -24675216, -22672550,
+ -20733178, -18857476, -17045774, -15298145,
+ -13614569, -11995047, -10439353, -8947174,
+ -7518114, -6151709, -4847411, -3604494,
+ -2422200, -1299721, -236167, 769579,
+ 1718459, 2611733, 3450582, 4236234,
+ 4969991, 5653225, 6287459, 6873702,
+ -7412089, -7907611, -8360065, -8771162,
+ -9142386, -9475263, -9771528, -10032850,
+ -10260773, -10457096, -10623310, -10761275,
+ -10872361, -10958351, -11020777, -11061291,
+ -11081422, -11082676, -11066606, -11034660,
+ -10988248, -10928770, -10857626, -10776101,
+ -10685411, -10586810, -10481535, -10370559,
+ -10254778, -10135307, -10012977, -9888702,
+ -9763244, -9637374, -9511811, -9387239,
+ -9264156, -9143165, -9024623, -8908885,
+ -8796288, -8687171, -8581710, -8480185,
+ -8382680, -8289292, -8200058, -8115010,
+ -8034124, -7957374, -7884576, -7815679,
+ -7750490, -7688897, -7630654, -7575516,
+ -7523270, -7473727, -7426594, -7381571,
+ -7338427, -7296920, -7256859, -7217828,
+ -7179189, -7140628, -7102109, -7063418,
+ -7024274, -6984400, -6943556, -6901536,
+ -6858122, -6813173, -6766470, -6717911,
+ -6667262, -6614481, -6559384, -6501888,
+ -6441886, -6379327, -6314134, -6246263,
+ -6175665, -6102323, -6026243, -5947411,
+ -5865812, -5781451, -5694415, -5604653,
+ -5512186, -5417077, -5319326, -5219017,
+ -5116080, -5010583, -4902647, -4792272,
+ -4679528, -4564441, -4447046, -4327357,
+ -4205414, -4081287, -3955075, -3826724,
+ -3696345, -3564024, -3429800, -3293731,
+ -3155876, -3016304, -2875162, -2732491,
+ -2588381, -2442967, -2296290, -2148430,
+ -1999480, -1849897, -1699739, -1549018,
+ -1397728, -1246111, -1093832, -939917,
+ 778556, 633670, 490834, 349449,
+ 209576, 71530, -64454, -198123,
+ -329178, -457378, -582481, -704169,
+ -822390, -936825, -1047277, -1153521,
+ -1255359, -1352620, -1445079, -1532594,
+ -1614993, -1692089, -1763764, -1829871,
+ -1890338, -1945039, -1993919, -2036919,
+ -2074025, -2105207, -2130495, -2149941,
+ -2163500, -2171309, -2173527, -2170200,
+ -2161562, -2147712, -2128894, -2105279,
+ -2077055, -2044537, -2007975, -1967653,
+ -1923884, -1876878, -1827016, -1774562,
+ -1719802, -1663177, -1604932, -1545319,
+ -1484731, -1423398, -1361702, -1299868,
+ -1238051, -1176780, -1116212, -1056384,
+ -997536, -939504, -882165, -827438,
+ -777438, -735452, -697878, -662420,
+ -629645, -599745, -572586, -548329,
+ -526957, -508372, -492404, -478893,
+ -467762, -458836, -451866, -446616,
+ -442807, -440258, -438674, -437773,
+ -437362, -437113, -436756, -436099,
+ -434925, -433130, -430443, -426680,
+ -421786, -415598, -408021, -398999,
+ -388431, -376383, -362797, -347658,
+ -331120, -313165, -293897, -273403,
+ -251769, -229198, -205757, -181769,
+ -157513, -132806, -107990, -83222,
+ -58701, -34960, -11777, 10610,
+ 31691, 51648, 69941, 86451,
+ 101251, 113633, 124105, 132033,
+ 136030, 137372, 130665, 100784
+}; \ No newline at end of file
diff --git a/decoder/ixheaacd_mps_smoothing.c b/decoder/ixheaacd_mps_smoothing.c
index 38cdc3c..c4354b9 100644
--- a/decoder/ixheaacd_mps_smoothing.c
+++ b/decoder/ixheaacd_mps_smoothing.c
@@ -21,7 +21,20 @@
#include <stdlib.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
@@ -29,17 +42,20 @@
#include "ixheaacd_basic_ops32.h"
#include "ixheaacd_basic_ops40.h"
+#define Q28_FLOAT_VAL ((float)(1 << 28))
+#define ONE_BY_Q28_FLOAT_VAL (1.0f / Q28_FLOAT_VAL)
+
VOID ixheaacd_mps_pre_matrix_mix_matrix_smoothing(
ia_mps_dec_state_struct *self) {
- int smooth_band;
+ WORD32 smooth_band;
FLOAT32 delta, one_minus_delta;
#ifndef MULT
#define MULT(a, b) (a * b)
#endif
- int ps = 0, pb, row, col;
- int res_bands = 0;
- int *p_smoothing_data;
- self->pre_mix_req = 0;
+ WORD32 ps = 0, pb, row, col;
+ WORD32 res_bands = 0;
+ WORD32 *p_smoothing_data;
+
if (self->residual_coding) res_bands = self->max_res_bands;
p_smoothing_data = &self->smoothing_data[ps][res_bands];
@@ -126,8 +142,8 @@ VOID ixheaacd_mps_pre_matrix_mix_matrix_smoothing(
#define TWENTY_FIVE_X_PI_BY_180_Q27 (58563533)
VOID ixheaacd_mps_smoothing_opd(ia_mps_dec_state_struct *self) {
- int ps, pb;
- int delta, one_minus_delta;
+ WORD32 ps, pb;
+ WORD32 delta, one_minus_delta;
if (self->opd_smoothing_mode == 0) {
for (pb = 0; pb < self->bs_param_bands; pb++) {
@@ -144,7 +160,7 @@ VOID ixheaacd_mps_smoothing_opd(ia_mps_dec_state_struct *self) {
return;
}
for (ps = 0; ps < self->num_parameter_sets; ps++) {
- int thr = self->bs_frame.ipd_data.bs_quant_coarse_xxx[ps]
+ WORD32 thr = self->bs_frame.ipd_data.bs_quant_coarse_xxx[ps]
? FIFTY_X_PI_BY_180_Q27
: TWENTY_FIVE_X_PI_BY_180_Q27;
@@ -152,9 +168,7 @@ VOID ixheaacd_mps_smoothing_opd(ia_mps_dec_state_struct *self) {
one_minus_delta = ONE_IN_Q30 - delta;
for (pb = 0; pb < self->bs_param_bands; pb++) {
- int ltemp, rtemp, tmp;
-#define Q28_FLOAT_VAL ((float)(1 << 28))
-#define ONE_BY_Q28_FLOAT_VAL (1.0 / Q28_FLOAT_VAL)
+ WORD32 ltemp, rtemp, tmp;
ltemp = ((WORD32)(self->phase_l[ps][pb] * Q28_FLOAT_VAL)) >> 1;
rtemp = ((WORD32)(self->phase_r[ps][pb] * Q28_FLOAT_VAL)) >> 1;
@@ -196,10 +210,7 @@ VOID ixheaacd_mps_smoothing_opd(ia_mps_dec_state_struct *self) {
self->opd_smooth.smooth_r_phase[pb] -= 2 * PI_IN_Q27;
while (self->opd_smooth.smooth_r_phase[pb] < 0)
self->opd_smooth.smooth_r_phase[pb] += 2 * PI_IN_Q27;
-#define Q28_FLOAT_VAL ((float)(1 << 28))
-#ifndef ONE_BY_Q28_FLOAT_VAL
-#define ONE_BY_Q28_FLOAT_VAL (1.0f / Q28_FLOAT_VAL)
-#endif
+
self->phase_l[ps][pb] =
(self->opd_smooth.smooth_l_phase[pb] << 1) * ONE_BY_Q28_FLOAT_VAL;
self->phase_r[ps][pb] =
diff --git a/decoder/ixheaacd_mps_temp_process.c b/decoder/ixheaacd_mps_temp_process.c
index 71c11b8..76213b5 100644
--- a/decoder/ixheaacd_mps_temp_process.c
+++ b/decoder/ixheaacd_mps_temp_process.c
@@ -25,7 +25,20 @@
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
@@ -55,6 +68,7 @@
#include "ixheaacd_sbr_const.h"
#include "ixheaacd_pvc_dec.h"
#include "ixheaacd_sbr_dec.h"
+#include "ixheaacd_audioobjtypes.h"
#define HP_SIZE (9)
@@ -68,17 +82,17 @@
#define min(a, b) ((a < b) ? (a) : (b))
static const FLOAT32 ixheaacd_bp[BP_SIZE] = {
- 0.0000f, 0.0005f, 0.0092f, 0.0587f, 0.2580f, 0.7392f, 0.9791f,
- 0.9993f, 1.0000f, 1.0000f, 1.0000f, 1.0000f, 0.9999f, 0.9984f,
- 0.9908f, 0.9639f, 0.8952f, 0.7711f, 0.6127f, 0.4609f, 0.3391f,
- 0.2493f, 0.1848f, 0.1387f, 0.1053f};
+ 0.0000f, 0.0005f, 0.0092f, 0.0587f, 0.2580f, 0.7392f, 0.9791f,
+ 0.9993f, 1.0000f, 1.0000f, 1.0000f, 1.0000f, 0.9999f, 0.9984f,
+ 0.9908f, 0.9639f, 0.8952f, 0.7711f, 0.6127f, 0.4609f, 0.3391f,
+ 0.2493f, 0.1848f, 0.1387f, 0.1053f};
static const FLOAT32 ixheaacd_gf[BP_SIZE] = {
- 0.f, 0.f, 0.f, 0.f, 0.f,
- 0.f, 1e-008f, 8.1e-007f, 3.61e-006f, 8.41e-006f,
- 1.6e-005f, 2.704e-005f, 3.969e-005f, 5.625e-005f, 7.396e-005f,
- 9.801e-005f, 0.00012321f, 0.00015625f, 0.00019881f, 0.00024964f,
- 0.00032041f, 0.00041209f, 0.00053824f, 0.00070756f, 0.00094249f};
+ 0.f, 0.f, 0.f, 0.f, 0.f,
+ 0.f, 1e-008f, 8.1e-007f, 3.61e-006f, 8.41e-006f,
+ 1.6e-005f, 2.704e-005f, 3.969e-005f, 5.625e-005f, 7.396e-005f,
+ 9.801e-005f, 0.00012321f, 0.00015625f, 0.00019881f, 0.00024964f,
+ 0.00032041f, 0.00041209f, 0.00053824f, 0.00070756f, 0.00094249f};
extern const WORD32 ixheaacd_mps_gain_set_indx[29];
@@ -173,6 +187,13 @@ static VOID ixheaacd_mps_subbandtp(ia_mps_dec_state_struct* self, WORD32 ts) {
WORD32 no_scaling;
FLOAT32 temp;
const WORD32 ixheaacd_hybrid_to_qmf_map[] = {0, 0, 0, 0, 0, 0, 1, 1, 2, 2};
+ const WORD32 ixheaacd_hybrid_to_qmf_map_ldmps[] = {0, 1, 2};
+ const WORD32* ptr_ixheaacd_hybrid_to_qmf_map;
+
+ if (self->ldmps_config.ldmps_present_flag)
+ ptr_ixheaacd_hybrid_to_qmf_map = ixheaacd_hybrid_to_qmf_map_ldmps;
+ else
+ ptr_ixheaacd_hybrid_to_qmf_map = ixheaacd_hybrid_to_qmf_map;
ixheaacd_mps_temp_process_scale_calc(self, ts, scale);
@@ -189,15 +210,26 @@ static VOID ixheaacd_mps_subbandtp(ia_mps_dec_state_struct* self, WORD32 ts) {
self->hyb_dir_out[ch][ts][n].im += self->hyb_diff_out[ch][ts][n].im;
}
} else {
- for (n = 0; n < 10; n++) {
- temp =
- (FLOAT32)(scale[ch] * ixheaacd_bp[ixheaacd_hybrid_to_qmf_map[n]]);
- self->hyb_dir_out[ch][ts][n].re +=
- (self->hyb_diff_out[ch][ts][n].re * temp);
- self->hyb_dir_out[ch][ts][n].im +=
- (self->hyb_diff_out[ch][ts][n].im * temp);
+ if (self->ldmps_config.ldmps_present_flag) {
+ for (n = 0; n < 3; n++) {
+ temp = (FLOAT32)(scale[ch] *
+ ixheaacd_bp[ptr_ixheaacd_hybrid_to_qmf_map[n]]);
+ self->hyb_dir_out[ch][ts][n].re +=
+ (self->hyb_diff_out[ch][ts][n].re * temp);
+ self->hyb_dir_out[ch][ts][n].im +=
+ (self->hyb_diff_out[ch][ts][n].im * temp);
+ }
+ } else {
+ for (n = 0; n < 10; n++) {
+ temp = (FLOAT32)(scale[ch] *
+ ixheaacd_bp[ptr_ixheaacd_hybrid_to_qmf_map[n]]);
+ self->hyb_dir_out[ch][ts][n].re +=
+ (self->hyb_diff_out[ch][ts][n].re * temp);
+ self->hyb_dir_out[ch][ts][n].im +=
+ (self->hyb_diff_out[ch][ts][n].im * temp);
+ }
}
- for (; n < HP_SIZE - 3 + 10; n++) {
+ for (n = 7; n < HP_SIZE - 3 + 10; n++) {
temp = (FLOAT32)(scale[ch] * ixheaacd_bp[n + 3 - 10]);
self->hyb_dir_out[ch][ts][n].re +=
(self->hyb_diff_out[ch][ts][n].re * temp);
@@ -260,18 +292,26 @@ WORD32 ixheaacd_mps_temp_process(ia_mps_dec_state_struct* self) {
ixheaacd_mps_qmf_hyb_synthesis(self);
- for (ch = 0; ch < self->out_ch_count; ch++) {
- err = ixheaacd_sbr_dec_from_mps(&self->qmf_out_dir[ch][0][0].re,
- self->p_sbr_dec[ch], self->p_sbr_frame[ch],
- self->p_sbr_header[ch]);
- if (err) return err;
+ if (self->ldmps_config.ldmps_present_flag != 1) {
+ for (ch = 0; ch < self->out_ch_count; ch++) {
+ err = ixheaacd_sbr_dec_from_mps(
+ &self->qmf_out_dir[ch][0][0].re, self->p_sbr_dec[ch],
+ self->p_sbr_frame[ch], self->p_sbr_header[ch]);
+ if (err) return err;
+ }
}
- if (ptr_frame_data->mps_sbr_flag) {
- self->synth_count =
+ if (self->object_type == AOT_ER_AAC_ELD || self->object_type == AOT_ER_AAC_LD)
+ self->synth_count = self->hyb_band_count[0];
+ else
+ {
+ if (ptr_frame_data->mps_sbr_flag) {
+ self->synth_count =
ptr_frame_data->pstr_sbr_header->pstr_freq_band_data->sub_band_end;
- } else {
- self->synth_count = self->band_count[0];
+ }
+ else {
+ self->synth_count = self->band_count[0];
+ }
}
ixheaacd_mps_synt_calc(self);
diff --git a/decoder/ixheaacd_mps_temp_reshape.c b/decoder/ixheaacd_mps_temp_reshape.c
index 69216a8..d9a73f4 100644
--- a/decoder/ixheaacd_mps_temp_reshape.c
+++ b/decoder/ixheaacd_mps_temp_reshape.c
@@ -20,8 +20,20 @@
#include <math.h>
#include "ixheaacd_type_def.h"
#include "ixheaacd_bitbuffer.h"
+#include "ixheaacd_defines.h"
+#include "ixheaacd_aac_rom.h"
+#include "ixheaacd_pulsedata.h"
+#include "ixheaacd_pns.h"
+#include "ixheaacd_channelinfo.h"
+#include "ixheaacd_common_rom.h"
+#include "ixheaacd_sbrdecsettings.h"
+#include "ixheaacd_sbr_scale.h"
+#include "ixheaacd_env_extr_part.h"
+#include "ixheaacd_sbr_rom.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
#include "ixheaacd_config.h"
-
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
@@ -203,4 +215,4 @@ VOID ixheaacd_mps_time_env_shaping(ia_mps_dec_state_struct *self) {
}
}
}
-} \ No newline at end of file
+}
diff --git a/decoder/ixheaacd_multichannel.c b/decoder/ixheaacd_multichannel.c
index 998c194..8409fd2 100644
--- a/decoder/ixheaacd_multichannel.c
+++ b/decoder/ixheaacd_multichannel.c
@@ -68,6 +68,9 @@
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_aacdec.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
@@ -142,8 +145,6 @@ IA_ERRORCODE ixheaacd_dec_coupling_channel_element(
WORD ind_sw_cce_flag, num_coupled_elements;
WORD num_gain_element_lists = 0;
- WORD cc_domain;
- WORD gain_element_sign;
WORD gain_element_scale;
const UWORD16 *hcod_sf =
@@ -182,8 +183,8 @@ IA_ERRORCODE ixheaacd_dec_coupling_channel_element(
if ((ind_sw_cce_flag == 0) && (num_gain_element_lists > MAX_BS_ELEMENT)) {
return IA_FATAL_ERROR;
}
- cc_domain = ixheaacd_read_bits_buf(bs, 1);
- gain_element_sign = ixheaacd_read_bits_buf(bs, 1);
+ ixheaacd_read_bits_buf(bs, 1);/*cc_domain*/
+ ixheaacd_read_bits_buf(bs, 1);/*gain_element_sign*/
gain_element_scale = ixheaacd_read_bits_buf(bs, 2);
aac_handle->pstr_aac_dec_ch_info[0]->str_ics_info.num_swb_window = 0;
@@ -278,8 +279,6 @@ void ixheaacd_dec_ind_coupling(
{
WORD c, j, k;
WORD l;
- WORD coupling_channel;
-
WORD32 *out_samp_cc;
ia_enhaacplus_dec_ind_cc *ind_channel_info;
@@ -287,8 +286,6 @@ void ixheaacd_dec_ind_coupling(
WORD32 *ptr_time_data = (WORD32 *)ptr_time_data_tmp;
{
- coupling_channel = p_obj_exhaacplus_dec->aac_config.ui_coupling_channel;
-
ind_channel_info = &p_obj_exhaacplus_dec->p_state_aac->ind_cc_info;
out_samp_cc = coup_ch_output;
diff --git a/decoder/ixheaacd_peak_limiter.c b/decoder/ixheaacd_peak_limiter.c
index 9c99e94..a35c474 100644
--- a/decoder/ixheaacd_peak_limiter.c
+++ b/decoder/ixheaacd_peak_limiter.c
@@ -111,7 +111,7 @@ VOID ixheaacd_peak_limiter_process(ia_peak_limiter_struct *peak_limiter,
tmp = 0.0f;
for (j = 0; j < num_channels; j++) {
FLOAT32 gain_t = (FLOAT32)(1 << *(qshift_adj + j));
- tmp = MAX(tmp, fabs((samples[i * num_channels + j] * gain_t)));
+ tmp = (FLOAT32)MAX(tmp, fabs((samples[i * num_channels + j] * gain_t)));
}
max_buf[peak_limiter->cir_buf_pnt] = tmp;
@@ -167,14 +167,14 @@ VOID ixheaacd_peak_limiter_process(ia_peak_limiter_struct *peak_limiter,
tmp *= gain;
- tmp_fix = tmp;
+ tmp_fix = (WORD64)tmp;
if (tmp_fix > limit_threshold)
tmp_fix = limit_threshold;
else if (tmp_fix < -limit_threshold)
tmp_fix = -limit_threshold;
- samples[i * num_channels + j] = tmp_fix;
+ samples[i * num_channels + j] = (WORD32)tmp_fix;
}
delayed_input_index++;
@@ -189,7 +189,7 @@ VOID ixheaacd_peak_limiter_process(ia_peak_limiter_struct *peak_limiter,
FLOAT32 gain_t = (FLOAT32)(1 << *(qshift_adj + j));
delayed_input[delayed_input_index * num_channels + j] =
samples[i * num_channels + j] * gain_t;
- samples[i * num_channels + j] = tmp;
+ samples[i * num_channels + j] = (WORD32)tmp;
}
delayed_input_index++;
diff --git a/decoder/ixheaacd_pns_js_thumb.c b/decoder/ixheaacd_pns_js_thumb.c
index 39985dc..47b2aaf 100644
--- a/decoder/ixheaacd_pns_js_thumb.c
+++ b/decoder/ixheaacd_pns_js_thumb.c
@@ -113,6 +113,7 @@ VOID ixheaacd_pns_process(
&ptr_aac_dec_channel_info[channel]->str_pns_info;
ia_ics_info_struct *ptr_ics_info =
&ptr_aac_dec_channel_info[channel]->str_ics_info;
+ WORD16 maximum_bins_short = ptr_ics_info->frame_length >> 3;
WORD32 *ptr_scale_mant_tab =
ptr_aac_tables->pstr_block_tables->scale_mant_tab;
@@ -181,7 +182,10 @@ VOID ixheaacd_pns_process(
}
}
- spec += 128;
+ if (maximum_bins_short == 120)
+ spec += maximum_bins_short;
+ else
+ spec += 128;
}
}
}
@@ -252,6 +256,7 @@ VOID ixheaacd_aac_tns_process(
WORD win, filt, start, stop, size, scale_spec;
ia_ics_info_struct *ptr_ics_info = &ptr_aac_dec_channel_info->str_ics_info;
WORD num_window, tns_max_bands, win_seq;
+ WORD16 maximum_bins_short = ptr_ics_info->frame_length >> 3;
WORD position;
WORD32 parcor_coef[MAX_ORDER + 1];
@@ -262,6 +267,8 @@ VOID ixheaacd_aac_tns_process(
const WORD16 *ptr_sfb_table;
+ WORD16 max_bin_long = ptr_ics_info->frame_length;
+
win_seq = ptr_ics_info->window_sequence == 0
? 0
: (ptr_ics_info->window_sequence % 2 == 0);
@@ -348,16 +355,36 @@ VOID ixheaacd_aac_tns_process(
}
{
- WORD32 *ptr_tmp = spec + (win << 7) + start;
+ WORD32 *ptr_tmp;
+
+ if (maximum_bins_short == 120)
+ ptr_tmp = spec + (win * maximum_bins_short) + start;
+ else
+ ptr_tmp = spec + (win << 7) + start;
+
scale_spec = (*ixheaacd_calc_max_spectral_line)(ptr_tmp, size);
}
if (filter->direction == -1) {
position = stop - 1;
- if (((win << 7) + position) < filter->order) continue;
+
+ if (maximum_bins_short == 120)
+ {
+ if (((win * maximum_bins_short) + position) < filter->order) continue;
+ }
+ else
+ {
+ if (((win << 7) + position) < filter->order) continue;
+ }
+
} else {
position = start;
- if ((((win << 7) + position) + filter->order) > MAX_BINS_LONG) continue;
+ if (maximum_bins_short == 120) {
+ if ((((win * maximum_bins_short) + position) + filter->order) > max_bin_long)
+ continue;
+ } else {
+ if ((((win << 7) + position) + filter->order) > MAX_BINS_LONG) continue;
+ }
}
if ((num_ch <= 2) &&
@@ -378,28 +405,52 @@ VOID ixheaacd_aac_tns_process(
if ((object_type == AOT_ER_AAC_LD) || (object_type == AOT_AAC_LTP) ||
(num_ch > 2)) {
if (ar_flag)
- (*ixheaacd_tns_ar_filter_fixed)(&spec[(win << 7) + position], size,
- filter->direction,
- (WORD32 *)lpc_coef, filter->order,
- (WORD32)scale_lpc, scale_spec);
- else
- ixheaacd_tns_ma_filter_fixed_ld(&spec[(win << 7) + position], size,
- filter->direction, lpc_coef,
- filter->order, scale_lpc);
-
+ {
+ if (maximum_bins_short == 120) {
+ (*ixheaacd_tns_ar_filter_fixed)(&spec[(win * maximum_bins_short) + position],
+ size, filter->direction,
+ (WORD32 *)lpc_coef, filter->order,
+ (WORD32)scale_lpc, scale_spec);
+ } else {
+ (*ixheaacd_tns_ar_filter_fixed)(&spec[(win << 7) + position], size,
+ filter->direction,
+ (WORD32 *)lpc_coef, filter->order,
+ (WORD32)scale_lpc, scale_spec);
+ }
+ } else {
+ if (maximum_bins_short == 120) {
+ ixheaacd_tns_ma_filter_fixed_ld(&spec[(win * maximum_bins_short) + position],
+ size, filter->direction, lpc_coef,
+ filter->order, scale_lpc);
+ } else {
+ ixheaacd_tns_ma_filter_fixed_ld(&spec[(win << 7) + position], size,
+ filter->direction, lpc_coef,
+ filter->order, scale_lpc);
+ }
+ }
} else {
if (object_type == AOT_ER_AAC_ELD) scale_spec = scale_spec - 1;
-
- (*ixheaacd_tns_ar_filter)(&spec[(win << 7) + position], size,
- filter->direction, lpc_coef_16,
- filter->order, (WORD32)scale_lpc,
- scale_spec, scratch_buf);
+ if (maximum_bins_short == 120) {
+ (*ixheaacd_tns_ar_filter)(&spec[(win * maximum_bins_short) + position], size,
+ filter->direction, lpc_coef_16,
+ filter->order, (WORD32)scale_lpc,
+ scale_spec, scratch_buf);
+ } else {
+ (*ixheaacd_tns_ar_filter)(&spec[(win << 7) + position], size,
+ filter->direction, lpc_coef_16,
+ filter->order, (WORD32)scale_lpc,
+ scale_spec, scratch_buf);
+ }
}
-
}
else {
- WORD32 *ptr_tmp = spec + (win << 7) + start;
+ WORD32 *ptr_tmp;
+
+ if (maximum_bins_short == 120)
+ ptr_tmp = spec + (win * maximum_bins_short) + start;
+ else
+ ptr_tmp = spec + (win >> 7) + start;
scale_spec = -scale_spec;
scale_spec = ixheaacd_min32(scale_spec, 31);
@@ -411,25 +462,47 @@ VOID ixheaacd_aac_tns_process(
if ((object_type == AOT_ER_AAC_LD) || (object_type == AOT_AAC_LTP) ||
num_ch > 2) {
- if (ar_flag)
- (*ixheaacd_tns_ar_filter_fixed)(
- &spec[(win << 7) + position], size, filter->direction,
- (WORD32 *)lpc_coef, filter->order, scale_lpc, 0);
-
- else
- ixheaacd_tns_ma_filter_fixed_ld(&spec[(win << 7) + position], size,
- filter->direction, lpc_coef,
- filter->order, scale_lpc);
+ if (ar_flag) {
+ if (maximum_bins_short == 120) {
+ (*ixheaacd_tns_ar_filter_fixed)(
+ &spec[(win * maximum_bins_short) + position], size, filter->direction,
+ (WORD32 *)lpc_coef, filter->order, scale_lpc, 0);
+ } else {
+ (*ixheaacd_tns_ar_filter_fixed)(
+ &spec[(win << 7) + position], size, filter->direction,
+ (WORD32 *)lpc_coef, filter->order, scale_lpc, 0);
+ }
+ } else {
+ if (maximum_bins_short == 120) {
+ ixheaacd_tns_ma_filter_fixed_ld(&spec[(win * maximum_bins_short) + position],
+ size, filter->direction, lpc_coef,
+ filter->order, scale_lpc);
+ } else {
+ ixheaacd_tns_ma_filter_fixed_ld(&spec[(win << 7) + position], size,
+ filter->direction, lpc_coef,
+ filter->order, scale_lpc);
+ }
+ }
} else {
if (object_type == AOT_ER_AAC_ELD) {
scale_lpc = scale_lpc - 1;
}
- (*ixheaacd_tns_ar_filter)(&spec[(win << 7) + position], size,
- filter->direction, lpc_coef_16,
- filter->order, scale_lpc, 0, scratch_buf);
+
+ if (maximum_bins_short == 120) {
+ (*ixheaacd_tns_ar_filter)(&spec[(win * maximum_bins_short) + position], size,
+ filter->direction, lpc_coef_16,
+ filter->order, scale_lpc, 0, scratch_buf);
+ } else {
+ (*ixheaacd_tns_ar_filter)(&spec[(win << 7) + position], size,
+ filter->direction, lpc_coef_16,
+ filter->order, scale_lpc, 0, scratch_buf);
+ }
}
- ptr_tmp = spec + (win << 7) + start;
+ if (maximum_bins_short == 120)
+ ptr_tmp = spec + (win * maximum_bins_short) + start;
+ else
+ ptr_tmp = spec + (win << 7) + start;
for (i = size; i != 0; i--) {
*ptr_tmp = (*ptr_tmp << scale_spec);
diff --git a/decoder/ixheaacd_process.c b/decoder/ixheaacd_process.c
index 672f4c6..426ab59 100644
--- a/decoder/ixheaacd_process.c
+++ b/decoder/ixheaacd_process.c
@@ -41,6 +41,7 @@
#include "ixheaacd_channelinfo.h"
#include "ixheaacd_channel.h"
#include "ixheaacd_sbrdecoder.h"
+#include "ixheaacd_sbr_scale.h"
#include "ixheaacd_audioobjtypes.h"
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_aacdec.h"
@@ -48,6 +49,9 @@
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_mps_interface.h"
#include "ixheaacd_struct_def.h"
@@ -98,14 +102,6 @@ VOID ixheaacd_allocate_sbr_scr(ia_sbr_scr_struct *sbr_scratch_struct,
WORD8 *p_qshift_arr, UWORD8 slot_element,
WORD32 channel);
-IA_ERRORCODE ixheaacd_applysbr(
- ia_handle_sbr_dec_inst_struct self,
- ia_aac_dec_sbr_bitstream_struct *p_sbr_bit_stream, WORD16 *core_sample_buf,
- WORD16 *codec_num_channels, FLAG frame_status, FLAG down_samp_flag,
- FLAG down_mix_flag, ia_sbr_scr_struct *sbr_scratch_struct, WORD32 ps_enable,
- WORD32 ch_fac, WORD32 slot_element, ia_bit_buf_struct *it_bit_buff,
- ia_drc_dec_struct *pstr_drc_dec, WORD eld_sbr_flag, WORD32 object_type);
-
IA_ERRORCODE ixheaacd_esbr_process(ia_usac_data_struct *usac_data,
ia_bit_buf_struct *it_bit_buff,
WORD32 stereo_config_idx,
@@ -139,7 +135,7 @@ IA_ERRORCODE ixheaacd_esbr_process(ia_usac_data_struct *usac_data,
err_code = ixheaacd_applysbr(self, esbr_bit_str, NULL, &num_channels, 1, 0, 0,
&sbr_scratch_struct, 0, 1, 0, it_bit_buff, NULL,
- 0, audio_object_type);
+ 0, audio_object_type, 0, 0, 1024);
usac_data->sbr_mode = self->sbr_mode;
@@ -181,7 +177,7 @@ static WORD32 ixheaacd_read_ext_element(
ia_usac_decoder_config_struct *pstr_usac_dec_config, WORD32 elem_idx) {
UWORD32 usac_ext_element_present;
UWORD32 usac_ext_element_use_dft_length;
- UWORD32 pay_load_length, tmp;
+ UWORD32 pay_load_length;
WORD32 i;
usac_ext_element_present = ixheaacd_read_bits_buf(it_bit_buff, 1);
@@ -203,7 +199,7 @@ static WORD32 ixheaacd_read_ext_element(
return IA_ENHAACPLUS_DEC_EXE_NONFATAL_INSUFFICIENT_INPUT_BYTES;
if (pay_load_length > 0) {
if (usac_ext_element_payload_frag)
- tmp = ixheaacd_read_bits_buf(it_bit_buff, 2);
+ ixheaacd_read_bits_buf(it_bit_buff, 2);
if (pstr_usac_dec_config->usac_ext_ele_payload_present[elem_idx]) {
WORD32 preroll_counter = pstr_usac_dec_config->preroll_counter;
diff --git a/decoder/ixheaacd_ps_bitdec.c b/decoder/ixheaacd_ps_bitdec.c
index d255f48..298b602 100644
--- a/decoder/ixheaacd_ps_bitdec.c
+++ b/decoder/ixheaacd_ps_bitdec.c
@@ -95,12 +95,18 @@ WORD16 ixheaacd_divideby3(WORD op) {
return (WORD16)ret;
}
-VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec) {
+VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec, WORD32 frame_size) {
WORD e, i, temp;
WORD16 iid_mode = (WORD16)((ptr_ps_dec->iid_mode) ? 1 : 2);
WORD16 icc_mode = (WORD16)((ptr_ps_dec->icc_mode) ? 1 : 2);
WORD16 num_iid_levels =
(WORD16)(ptr_ps_dec->iid_quant ? NUM_IID_LEVELS_FINE : NUM_IID_LEVELS);
+ WORD32 max_num_columns;
+
+ if (frame_size == 960)
+ max_num_columns = MAX_NUM_COLUMNS_960;
+ else
+ max_num_columns = MAX_NUM_COLUMNS;
if (!ptr_ps_dec->ps_data_present) {
ptr_ps_dec->num_env = 0;
@@ -231,17 +237,16 @@ VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec) {
env_count = 0;
for (e = 1; e < ptr_ps_dec->num_env; e++) {
- env_count = add_d(env_count, MAX_NUM_COLUMNS);
+ env_count = add_d(env_count, max_num_columns);
ptr_ps_dec->border_position[e] = (WORD16)(env_count >> shift);
}
- ptr_ps_dec->border_position[ptr_ps_dec->num_env] = MAX_NUM_COLUMNS;
+ ptr_ps_dec->border_position[ptr_ps_dec->num_env] = max_num_columns;
} else {
ptr_ps_dec->border_position[0] = 0;
- if (ptr_ps_dec->border_position[ptr_ps_dec->num_env] < MAX_NUM_COLUMNS) {
+ if (ptr_ps_dec->border_position[ptr_ps_dec->num_env] < max_num_columns) {
ptr_ps_dec->num_env++;
- add_d(ptr_ps_dec->num_env, 1);
- ptr_ps_dec->border_position[ptr_ps_dec->num_env] = MAX_NUM_COLUMNS;
+ ptr_ps_dec->border_position[ptr_ps_dec->num_env] = max_num_columns;
memcpy(ptr_ps_dec->iid_par_table[ptr_ps_dec->num_env - 1],
ptr_ps_dec->iid_par_table[ptr_ps_dec->num_env - 2],
@@ -254,7 +259,7 @@ VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec) {
for (e = 1; e < ptr_ps_dec->num_env; e++) {
WORD threshold;
- threshold = sub_d(MAX_NUM_COLUMNS, sub_d(ptr_ps_dec->num_env, e));
+ threshold = sub_d(max_num_columns, sub_d(ptr_ps_dec->num_env, e));
if (ptr_ps_dec->border_position[e] > threshold) {
ptr_ps_dec->border_position[e] = threshold;
diff --git a/decoder/ixheaacd_ps_bitdec.h b/decoder/ixheaacd_ps_bitdec.h
index 67f6106..aee58f0 100644
--- a/decoder/ixheaacd_ps_bitdec.h
+++ b/decoder/ixheaacd_ps_bitdec.h
@@ -26,7 +26,7 @@ WORD16 ixheaacd_read_ps_data(ia_ps_dec_struct *ptr_ps_dec,
ia_bit_buf_struct *it_bit_buff, WORD16 n_bits_left,
ia_ps_tables_struct *ps_tables_ptr);
-VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec);
+VOID ixheaacd_decode_ps_data(ia_ps_dec_struct *ptr_ps_dec, WORD32 frame_size);
extern VOID ixheaacd_map_34_params_to_20(WORD16 *a_idx);
diff --git a/decoder/ixheaacd_ps_dec.c b/decoder/ixheaacd_ps_dec.c
index f576ca8..f03611f 100644
--- a/decoder/ixheaacd_ps_dec.c
+++ b/decoder/ixheaacd_ps_dec.c
@@ -865,8 +865,7 @@ VOID ixheaacd_apply_rot_dec(ia_ps_dec_struct *ptr_ps_dec, WORD32 *p_qmf_left_re,
WORD16 hybrid_resol;
WORD32 tmp_real, tmp_img;
WORD32 tmp_real1, tmp_img1;
- WORD32 loopcnt;
- WORD16 H11_H12[128 * 2];
+ WORD16 H11_H12[128 * 2] = {0};
usb = ptr_ps_dec->usb;
@@ -938,7 +937,6 @@ VOID ixheaacd_apply_rot_dec(ia_ps_dec_struct *ptr_ps_dec, WORD32 *p_qmf_left_re,
}
}
}
- loopcnt = (usb + 15) >> 4;
for (subband = 0; subband < NO_QMF_CHANNELS_IN_HYBRID; subband++) {
tmp_real = *p_hyb_left_re1++;
diff --git a/decoder/ixheaacd_ps_dec.h b/decoder/ixheaacd_ps_dec.h
index f441d35..e241a63 100644
--- a/decoder/ixheaacd_ps_dec.h
+++ b/decoder/ixheaacd_ps_dec.h
@@ -21,6 +21,8 @@
#define IXHEAACD_PS_DEC_H
#define MAX_NUM_COLUMNS 32
+
+#define MAX_NUM_COLUMNS_960 30
#define NUM_OF_QUAD_MIRROR_FILTER_CHNLS 64
#define NUM_OF_ALL_PASS_CHNLS 23
#define NUM_OF_DEL_CHNLS \
@@ -40,6 +42,8 @@
#define NUM_OF_BINS (20)
#define NUM_BANDS_FINE (34)
+#define NUM_SUB_SAMPLES_960 30
+
typedef WORD16((*REVERB_BUFFERS_RI)[NUM_SER_AP_LINKS])[32 * 2];
typedef WORD16((REVERB_BUFFERS_CH_RI[5])[NUM_SER_AP_LINKS])[16 * 2];
@@ -160,7 +164,7 @@ VOID ixheaacd_apply_ps(ia_ps_dec_struct *ptr_ps_dec, WORD32 **real_buf_left,
WORD32 **imag_buf_left, WORD32 *real_buf_right,
WORD32 *imag_buf_right,
ia_sbr_scale_fact_struct *sbr_scale_factor, WORD16 slot,
- ia_sbr_tables_struct *sbr_tables_ptr);
+ ia_sbr_tables_struct *sbr_tables_ptr, WORD no_col);
VOID ixheaacd_apply_rot_dec(ia_ps_dec_struct *ptr_ps_dec, WORD32 *p_qmf_left_re,
WORD32 *p_qmf_left_im, WORD32 *p_qmf_right_re,
diff --git a/decoder/ixheaacd_qmf_dec.c b/decoder/ixheaacd_qmf_dec.c
index 022a631..05cd7e7 100644
--- a/decoder/ixheaacd_qmf_dec.c
+++ b/decoder/ixheaacd_qmf_dec.c
@@ -358,9 +358,133 @@ VOID ixheaacd_dct2_32(WORD32 *inp, WORD32 *out,
return;
}
+VOID ixheaacd_sbr_qmfanal32_winadd_eld_mps(WORD32 *inp1, WORD32 *inp2,
+ const WORD32 *p_qmf1,
+ const WORD32 *p_qmf2,
+ WORD32 *p_out) {
+ WORD32 n;
+ WORD32 resolution = 64;
+
+ for (n = 0; n < 64; n += 2) {
+ WORD32 accu;
+ accu = ixheaacd_mul32_sh(inp1[n + 0], p_qmf1[(n + 0)], 31);
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp1[n + 2 * resolution],
+ p_qmf1[(n + 2 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp1[n + 4 * resolution],
+ p_qmf1[(n + 4 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp1[n + 6 * resolution],
+ p_qmf1[(n + 6 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp1[n + 8 * resolution],
+ p_qmf1[(n + 8 * resolution)], 31));
+ p_out[n] = accu;
+
+ accu = ixheaacd_mul32_sh(inp1[n + 1 + 0], p_qmf1[(n + 1 + 0)], 31);
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 2 * resolution],
+ p_qmf1[(n + 1 + 2 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 4 * resolution],
+ p_qmf1[(n + 1 + 4 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 6 * resolution],
+ p_qmf1[(n + 1 + 6 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 8 * resolution],
+ p_qmf1[(n + 1 + 8 * resolution)], 31));
+ p_out[n + 1] = accu;
+
+ accu = ixheaacd_mul32_sh(inp2[n + 0], p_qmf2[(n + 0)], 31);
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp2[n + 2 * resolution],
+ p_qmf2[(n + 2 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp2[n + 4 * resolution],
+ p_qmf2[(n + 4 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp2[n + 6 * resolution],
+ p_qmf2[(n + 6 * resolution)], 31));
+ accu = ixheaacd_add32(accu,
+ ixheaacd_mul32_sh(inp2[n + 8 * resolution],
+ p_qmf2[(n + 8 * resolution)], 31));
+ p_out[n + 64] = accu;
+
+ accu = ixheaacd_mul32_sh(inp2[n + 1 + 0], p_qmf2[(n + 1 + 0)], 31);
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 2 * resolution],
+ p_qmf2[(n + 1 + 2 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 4 * resolution],
+ p_qmf2[(n + 1 + 4 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 6 * resolution],
+ p_qmf2[(n + 1 + 6 * resolution)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 8 * resolution],
+ p_qmf2[(n + 1 + 8 * resolution)], 31));
+ p_out[n + 1 + 64] = accu;
+ }
+}
+
+VOID ixheaacd_sbr_qmfanal32_winadd_eld_32(WORD32 *inp1, WORD32 *inp2,
+ const WORD32 *p_qmf1,
+ const WORD32 *p_qmf2, WORD32 *p_out) {
+ WORD32 n;
+
+ for (n = 0; n < 32; n += 2) {
+ WORD32 accu;
+ accu = ixheaacd_mul32_sh(inp1[n + 0], p_qmf1[(n + 0)], 31);
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp1[n + 64], p_qmf1[(n + 64)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp1[n + 128], p_qmf1[(n + 128)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp1[n + 192], p_qmf1[(n + 192)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp1[n + 256], p_qmf1[(n + 256)], 31));
+ p_out[n] = accu;
+
+ accu = ixheaacd_mul32_sh(inp1[n + 1 + 0], p_qmf1[(n + 1 + 0)], 31);
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 64], p_qmf1[(n + 1 + 64)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 128], p_qmf1[(n + 1 + 128)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 192], p_qmf1[(n + 1 + 192)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp1[n + 1 + 256], p_qmf1[(n + 1 + 256)], 31));
+ p_out[n + 1] = accu;
+
+ accu = ixheaacd_mul32_sh(inp2[n + 0], p_qmf2[(n + 0)], 31);
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp2[n + 64], p_qmf2[(n + 64)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp2[n + 128], p_qmf2[(n + 128)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp2[n + 192], p_qmf2[(n + 192)], 31));
+ accu = ixheaacd_add32(
+ accu, ixheaacd_mul32_sh(inp2[n + 256], p_qmf2[(n + 256)], 31));
+ p_out[n + 32] = accu;
+
+ accu = ixheaacd_mul32_sh(inp2[n + 1 + 0], p_qmf2[(n + 1 + 0)], 31);
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 64], p_qmf2[(n + 1 + 64)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 128], p_qmf2[(n + 1 + 128)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 192], p_qmf2[(n + 1 + 192)], 31));
+ accu = ixheaacd_add32_sat(
+ accu, ixheaacd_mul32_sh(inp2[n + 1 + 256], p_qmf2[(n + 1 + 256)], 31));
+ p_out[n + 1 + 32] = accu;
+ }
+}
+
VOID ixheaacd_sbr_qmfanal32_winadd_eld(WORD16 *inp1, WORD16 *inp2,
- WORD16 *p_qmf1, WORD16 *p_qmf2,
- WORD32 *p_out) {
+ const WORD16 *p_qmf1,
+ const WORD16 *p_qmf2, WORD32 *p_out) {
WORD32 n;
for (n = 0; n < 32; n += 2) {
@@ -715,7 +839,7 @@ VOID ixheaacd_cplx_synt_qmffilt(
WORD32 *qmf_imag_tmp = &qmf_real2[NO_SYNTHESIS_CHANNELS];
WORD32 env = 0;
- WORD32 common_shift;
+ WORD32 common_shift = 0;
if (no_synthesis_channels == 32) {
qmf_bank->cos_twiddle =
@@ -884,7 +1008,7 @@ VOID ixheaacd_cplx_synt_qmffilt(
ixheaacd_apply_ps(ptr_ps_dec, &qmf_real[i], &qmf_imag[i], qmf_real_tmp,
qmf_imag_tmp, sbr_scale_factor, (WORD16)i,
- sbr_tables_ptr);
+ sbr_tables_ptr, num_time_slots);
}
if (1 == drc_on) {
WORD32 loop_val;
diff --git a/decoder/ixheaacd_qmf_dec.h b/decoder/ixheaacd_qmf_dec.h
index 89f2e5f..d9c4955 100644
--- a/decoder/ixheaacd_qmf_dec.h
+++ b/decoder/ixheaacd_qmf_dec.h
@@ -64,6 +64,10 @@ typedef struct {
WORD16 *fp1_syn;
WORD16 *fp2_syn;
WORD16 sixty4;
+ WORD32 *core_samples_buffer_32;
+ WORD32 *fp1_anal_32;
+ WORD32 *fp2_anal_32;
+ WORD32 *filter_2_32;
} ia_sbr_qmf_filter_bank_struct;
@@ -73,7 +77,14 @@ VOID ixheaacd_cplx_anal_qmffilt(const WORD16 *time_inp,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
WORD ch_fac, WORD32 low_pow_flag,
- WORD audio_object_type);
+ WORD audio_object_type, WORD32 ldmps_present);
+
+VOID ixheaacd_cplx_anal_qmffilt_32(const WORD32 *time_inp,
+ ia_sbr_scale_fact_struct *sbr_scale_factor,
+ WORD32 **qmf_real, WORD32 **qmf_imag,
+ ia_sbr_qmf_filter_bank_struct *qmf_bank,
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD ch_fac, WORD32 ldsbr_present);
VOID ixheaacd_cplx_synt_qmffilt(
WORD32 **qmf_real, WORD32 **qmf_im, WORD32 split_slot,
@@ -119,7 +130,8 @@ VOID ixheaacd_sbr_qmfanal32_winadds_eld(WORD16 *fp1, WORD16 *fp2,
VOID ixheaacd_fwd_modulation(const WORD32 *p_time_in1, WORD32 *real_subband,
WORD32 *imag_subband,
ia_sbr_qmf_filter_bank_struct *qmf_bank,
- ia_qmf_dec_tables_struct *qmf_dec_tables_ptr);
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
+ WORD32 ld_mps_flag);
VOID ixheaacd_dct3_32(WORD32 *input, WORD32 *output,
const WORD16 *main_twidle_fwd, const WORD16 *post_tbl,
const WORD16 *w_16, const WORD32 *p_table);
@@ -199,8 +211,16 @@ VOID ixheaacd_inv_emodulation(WORD32 *qmf_real,
VOID ixheaacd_pretwdct2(WORD32 *inp, WORD32 *out_fwd);
VOID ixheaacd_sbr_qmfanal32_winadd_eld(WORD16 *inp1, WORD16 *inp2,
- WORD16 *p_qmf1, WORD16 *p_qmf2,
- WORD32 *p_out);
+ const WORD16 *p_qmf1,
+ const WORD16 *p_qmf2, WORD32 *p_out);
+
+VOID ixheaacd_sbr_qmfanal32_winadd_eld_32(WORD32 *inp1, WORD32 *inp2,
+ const WORD32 *p_qmf1,
+ const WORD32 *p_qmf2, WORD32 *p_out);
+
+VOID ixheaacd_sbr_qmfanal32_winadd_eld_mps(WORD32 *inp1, WORD32 *inp2,
+ const WORD32 *p_qmf1,
+ const WORD32 *p_qmf2, WORD32 *p_out);
VOID ixheaacd_dct2_32(WORD32 *inp, WORD32 *out,
ia_qmf_dec_tables_struct *qmf_dec_tables_ptr,
diff --git a/decoder/ixheaacd_rev_vlc.c b/decoder/ixheaacd_rev_vlc.c
index 2092174..a7b6d29 100644
--- a/decoder/ixheaacd_rev_vlc.c
+++ b/decoder/ixheaacd_rev_vlc.c
@@ -63,11 +63,16 @@
#include "ixheaacd_latmdemux.h"
#include "ixheaacd_mps_polyphase.h"
#include "ixheaacd_config.h"
+#include "ixheaacd_hybrid.h"
+#include "ixheaacd_ps_dec.h"
+#include "ixheaacd_qmf_dec.h"
#include "ixheaacd_mps_dec.h"
#include "ixheaacd_struct_def.h"
#include "ixheaacd_cnst.h"
+#include "ixheaacd_error_standards.h"
+
#define RVLC_ERROR_ALL_ESCAPE_WORDS_INVALID 0x80000000
#define RVLC_ERROR_RVL_SUM_BIT_COUNTER_BELOW_ZERO_FWD 0x40000000
#define RVLC_ERROR_RVL_SUM_BIT_COUNTER_BELOW_ZERO_BWD 0x20000000
@@ -699,7 +704,7 @@ static VOID ixheaacd_rvlc_decode_backward(
ia_rvlc_info_struct *ptr_rvlc,
ia_aac_dec_channel_info_struct *ptr_aac_dec_channel_info,
ia_bit_buf_struct *it_bit_buff) {
- WORD16 band, group, dpcm, ixheaacd_drc_offset;
+ WORD16 band, group, dpcm;
WORD16 bnds = ptr_rvlc->max_sfb_transmitted - 1;
WORD16 factor = ptr_rvlc->rev_global_gain;
@@ -752,10 +757,6 @@ static VOID ixheaacd_rvlc_decode_backward(
for (group = ptr_rvlc->num_wind_grps - 1; group >= 0; group--) {
for (band = ptr_rvlc->max_sfb_transmitted - 1; band >= 0; band--) {
bnds = 16 * group + band;
- if ((band == 0) && (ptr_rvlc->num_wind_grps != 1))
- ixheaacd_drc_offset = 16 - ptr_rvlc->max_sfb_transmitted + 1;
- else
- ixheaacd_drc_offset = 1;
switch (ptr_aac_dec_channel_info->ptr_code_book[bnds]) {
case ZERO_HCB:
@@ -955,7 +956,7 @@ VOID ixheaacd_hcr_read(ia_bit_buf_struct *it_bit_buff,
}
}
-static WORD32 ixheaacd_rvlc_init(
+static IA_ERRORCODE ixheaacd_rvlc_init(
ia_rvlc_info_struct *ptr_rvlc,
ia_aac_dec_channel_info_struct *ptr_aac_dec_channel_info,
ia_bit_buf_struct *it_bit_buff) {
@@ -1009,7 +1010,7 @@ static WORD32 ixheaacd_rvlc_init(
if (it_bit_buff->cnt_bits < 0) {
return IA_ENHAACPLUS_DEC_EXE_NONFATAL_INSUFFICIENT_INPUT_BYTES;
} else
- return 0;
+ return IA_NO_ERROR;
}
VOID ixheaacd_bi_dir_est_scf_prev_frame_reference(
@@ -1377,13 +1378,6 @@ VOID ixheaacd_statistical_estimation(
WORD32 sum_nrg_fwd, sum_nrg_bwd;
WORD32 sum_scf_fwd, sum_scf_bwd;
WORD32 use_fwd, use_nrg_fwd, use_scf_fwd;
- WORD32 max_scf_bands;
-
- if (ptr_aac_dec_channel_info->str_ics_info.window_sequence ==
- EIGHT_SHORT_SEQUENCE)
- max_scf_bands = 16;
- else
- max_scf_bands = 64;
sum_fwd = sum_bwd = sum_nrg_fwd = sum_nrg_bwd = sum_scf_fwd = sum_scf_bwd = 0;
use_fwd = use_nrg_fwd = use_scf_fwd = 0;
@@ -1464,15 +1458,8 @@ VOID ixheaacd_predictive_interpolation(
ia_aac_dec_overlap_info *ptr_aac_dec_static_channel_info) {
ia_rvlc_info_struct *ptr_rvlc = &ptr_aac_dec_channel_info->ptr_rvlc_info;
WORD32 band, bnds, group;
- WORD32 max_scf_bands;
WORD32 common_min;
- if (ptr_aac_dec_channel_info->str_ics_info.window_sequence ==
- EIGHT_SHORT_SEQUENCE)
- max_scf_bands = 16;
- else
- max_scf_bands = 64;
-
for (group = 0; group < ptr_rvlc->num_wind_grps; group++) {
for (band = 0; band < ptr_rvlc->max_sfb_transmitted; band++) {
bnds = 16 * group + band;
diff --git a/decoder/ixheaacd_rom.c b/decoder/ixheaacd_rom.c
index d09c6cd..e35a0f8 100644
--- a/decoder/ixheaacd_rom.c
+++ b/decoder/ixheaacd_rom.c
@@ -26,4274 +26,4474 @@
ia_huff_code_book_struct ixheaacd_book;
const WORD16 ixheaacd_sfb_96_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_96_128[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 128};
+ 32, 40, 48, 64, 92, 128};
const WORD16 ixheaacd_sfb_96_960[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_96_120[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 120};
+ 32, 40, 48, 64, 92, 120};
const WORD16 ixheaacd_sfb_96_768[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_96_96[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 96};
+ 32, 40, 48, 64, 92, 96};
const WORD16 ixheaacd_sfb_64_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_64_128[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 128};
+ 32, 40, 48, 64, 92, 128};
const WORD16 ixheaacd_sfb_64_960[] = {
- 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, 960};
+ 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, 960};
const WORD16 ixheaacd_sfb_64_120[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 120};
+ 32, 40, 48, 64, 92, 120};
const WORD16 ixheaacd_sfb_64_768[] = {
- 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, 768};
+ 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, 768};
const WORD16 ixheaacd_sfb_64_96[] = {4, 8, 12, 16, 20, 24,
- 32, 40, 48, 64, 92, 96};
+ 32, 40, 48, 64, 92, 96};
const WORD16 ixheaacd_sfb_48_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_48_960[] = {
- 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, 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, 0};
const WORD16 ixheaacd_sfb_48_768[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_48_512[] = {
- 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48,
- 52, 56, 60, 68, 76, 84, 92, 100, 112, 124, 136, 148,
- 164, 184, 208, 236, 268, 300, 332, 364, 396, 428, 460, 512};
+ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48,
+ 52, 56, 60, 68, 76, 84, 92, 100, 112, 124, 136, 148,
+ 164, 184, 208, 236, 268, 300, 332, 364, 396, 428, 460, 512};
const WORD16 ixheaacd_sfb_48_480[] = {
- 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, 272, 304, 336, 368, 400, 432, 480};
+ 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, 272, 304, 336, 368, 400, 432, 480};
const WORD16 ixheaacd_sfb_48_128[] = {4, 8, 12, 16, 20, 28, 36,
- 44, 56, 68, 80, 96, 112, 128};
+ 44, 56, 68, 80, 96, 112, 128};
const WORD16 ixheaacd_sfb_48_120[] = {4, 8, 12, 16, 20, 28, 36,
- 44, 56, 68, 80, 96, 112, 120};
+ 44, 56, 68, 80, 96, 112, 120};
const WORD16 ixheaacd_sfb_48_96[] = {4, 8, 12, 16, 20, 28,
- 36, 44, 56, 68, 80, 96};
+ 36, 44, 56, 68, 80, 96};
const WORD16 ixheaacd_sfb_32_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_32_960[] = {
- 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, 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, 0};
const WORD16 ixheaacd_sfb_32_768[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_32_512[] = {
- 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52,
- 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 192,
- 212, 236, 260, 288, 320, 352, 384, 416, 448, 480, 512};
+ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52,
+ 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 192,
+ 212, 236, 260, 288, 320, 352, 384, 416, 448, 480, 512};
const WORD16 ixheaacd_sfb_32_480[] = {
- 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52,
- 56, 60, 64, 72, 80, 88, 96, 104, 112, 124, 136, 148, 164,
- 180, 200, 224, 256, 288, 320, 352, 384, 416, 448, 480};
+ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52,
+ 56, 60, 64, 72, 80, 88, 96, 104, 112, 124, 136, 148, 164,
+ 180, 200, 224, 256, 288, 320, 352, 384, 416, 448, 480};
const WORD16 sfb_32_120[] = {4, 8, 12, 16, 20, 28, 36, 44,
- 56, 68, 80, 96, 112, 120, 0};
+ 56, 68, 80, 96, 112, 120, 0};
const WORD16 ixheaacd_sfb_24_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_24_960[] = {
- 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, 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, 0};
const WORD16 ixheaacd_sfb_24_768[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_24_128[] = {4, 8, 12, 16, 20, 24, 28, 36,
- 44, 52, 64, 76, 92, 108, 128};
+ 44, 52, 64, 76, 92, 108, 128};
const WORD16 ixheaacd_sfb_24_120[] = {4, 8, 12, 16, 20, 24, 28, 36,
- 44, 52, 64, 76, 92, 108, 120, 0};
+ 44, 52, 64, 76, 92, 108, 120, 0};
const WORD16 ixheaacd_sfb_24_96[] = {4, 8, 12, 16, 20, 24, 28,
- 36, 44, 52, 64, 76, 92, 96};
+ 36, 44, 52, 64, 76, 92, 96};
const WORD16 ixheaacd_sfb_24_512[] = {4, 8, 12, 16, 20, 24, 28, 32,
- 36, 40, 44, 52, 60, 68, 80, 92,
- 104, 120, 140, 164, 192, 224, 256, 288,
- 320, 352, 384, 416, 448, 480, 512};
+ 36, 40, 44, 52, 60, 68, 80, 92,
+ 104, 120, 140, 164, 192, 224, 256, 288,
+ 320, 352, 384, 416, 448, 480, 512};
const WORD16 ixheaacd_sfb_24_480[] = {
- 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 80,
- 92, 104, 120, 140, 164, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480};
+ 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 80,
+ 92, 104, 120, 140, 164, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480};
const WORD16 ixheaacd_sfb_16_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_16_960[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_16_768[] = {
- 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, 768};
+ 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, 768};
const WORD16 ixheaacd_sfb_16_128[] = {4, 8, 12, 16, 20, 24, 28, 32,
- 40, 48, 60, 72, 88, 108, 128};
+ 40, 48, 60, 72, 88, 108, 128};
const WORD16 ixheaacd_sfb_16_120[] = {4, 8, 12, 16, 20, 24, 28, 32,
- 40, 48, 60, 72, 88, 108, 120};
+ 40, 48, 60, 72, 88, 108, 120};
const WORD16 ixheaacd_sfb_16_96[] = {4, 8, 12, 16, 20, 24, 28,
- 32, 40, 48, 60, 72, 88, 96};
+ 32, 40, 48, 60, 72, 88, 96};
const WORD16 ixheaacd_sfb_8_1024[] = {
- 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};
+ 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};
const WORD16 ixheaacd_sfb_8_768[] = {
- 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, 768};
+ 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, 768};
const WORD16 ixheaacd_sfb_8_128[] = {4, 8, 12, 16, 20, 24, 28, 36,
- 44, 52, 60, 72, 88, 108, 128};
+ 44, 52, 60, 72, 88, 108, 128};
const WORD16 ixheaacd_sfb_8_96[] = {4, 8, 12, 16, 20, 24, 28,
- 36, 44, 52, 60, 72, 88, 96};
+ 36, 44, 52, 60, 72, 88, 96};
const WORD16 ixheaacd_sfb_8_960[] = {
- 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, 960};
+ 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, 960};
const WORD16 ixheaacd_sfb_8_120[] = {4, 8, 12, 16, 20, 24, 28, 36,
- 44, 52, 60, 72, 88, 108, 120};
+ 44, 52, 60, 72, 88, 108, 120};
const WORD32 ixheaacd_sampling_boundaries[(1 << LEN_SAMP_IDX)] = {
- 92017, 75132, 55426, 46009, 37566, 27713, 23004, 18783,
- 13856, 11502, 9391, 0, 0, 0, 0, 0};
+ 92017, 75132, 55426, 46009, 37566, 27713, 23004, 18783,
+ 13856, 11502, 9391, 0, 0, 0, 0, 0};
const ia_usac_samp_rate_info ixheaacd_samp_rate_info[(1 << LEN_SAMP_IDX)] = {
- {96000, 41, ixheaacd_sfb_96_1024, 12, ixheaacd_sfb_96_128, 40,
- ixheaacd_sfb_96_960, 12, ixheaacd_sfb_96_120, 37, ixheaacd_sfb_96_768, 12,
- ixheaacd_sfb_96_96, 8, 4, 0, 0, 0, 0},
- {88200, 41, ixheaacd_sfb_96_1024, 12, ixheaacd_sfb_96_128, 40,
- ixheaacd_sfb_96_960, 12, ixheaacd_sfb_96_120, 37, ixheaacd_sfb_96_768, 12,
- ixheaacd_sfb_96_96, 8, 4, 0, 0, 0, 0},
- {64000, 47, ixheaacd_sfb_64_1024, 12, ixheaacd_sfb_64_128, 46,
- ixheaacd_sfb_64_960, 12, ixheaacd_sfb_64_120, 41, ixheaacd_sfb_64_768, 12,
- ixheaacd_sfb_64_96, 13, 5, 0, 0, 0, 0},
- {48000, 49, ixheaacd_sfb_48_1024, 14, ixheaacd_sfb_48_128, 49,
- ixheaacd_sfb_48_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_48_768, 12,
- ixheaacd_sfb_48_96, 18, 5, 35, ixheaacd_sfb_48_480, 36,
- ixheaacd_sfb_48_512},
- {44100, 49, ixheaacd_sfb_48_1024, 14, ixheaacd_sfb_48_128, 49,
- ixheaacd_sfb_48_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_48_768, 12,
- ixheaacd_sfb_48_96, 18, 5, 35, ixheaacd_sfb_48_480, 36,
- ixheaacd_sfb_48_512},
- {32000, 51, ixheaacd_sfb_32_1024, 14, ixheaacd_sfb_48_128, 49,
- ixheaacd_sfb_32_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_32_768, 12,
- ixheaacd_sfb_48_96, 26, 6, 37, ixheaacd_sfb_32_480, 37,
- ixheaacd_sfb_32_512},
- {24000, 47, ixheaacd_sfb_24_1024, 15, ixheaacd_sfb_24_128, 46,
- ixheaacd_sfb_24_960, 15, ixheaacd_sfb_24_120, 43, ixheaacd_sfb_24_768, 14,
- ixheaacd_sfb_24_96, 36, 8, 30, ixheaacd_sfb_24_480, 31,
- ixheaacd_sfb_24_512},
- {22050, 47, ixheaacd_sfb_24_1024, 15, ixheaacd_sfb_24_128, 46,
- ixheaacd_sfb_24_960, 15, ixheaacd_sfb_24_120, 43, ixheaacd_sfb_24_768, 14,
- ixheaacd_sfb_24_96, 36, 8, 30, ixheaacd_sfb_24_480, 31,
- ixheaacd_sfb_24_512},
- {16000, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
- ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
- ixheaacd_sfb_16_96, 54, 8, 0, 0, 0, 0},
- {12000, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
- ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
- ixheaacd_sfb_16_96, 104, 10, 0, 0, 0, 0},
- {11025, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
- ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
- ixheaacd_sfb_16_96, 104, 10, 0, 0, 0, 0},
- {8000, 40, ixheaacd_sfb_8_1024, 15, ixheaacd_sfb_8_128, 40,
- ixheaacd_sfb_8_960, 15, ixheaacd_sfb_8_120, 37, ixheaacd_sfb_8_768, 14,
- ixheaacd_sfb_8_96, 104, 9, 0, 0, 0, 0},
- {7350, 40, ixheaacd_sfb_8_1024, 15, ixheaacd_sfb_8_128, 40,
- ixheaacd_sfb_8_960, 15, ixheaacd_sfb_8_120, 37, ixheaacd_sfb_8_768, 14,
- ixheaacd_sfb_8_96, 104, 9, 0, 0, 0, 0},
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+ {96000, 41, ixheaacd_sfb_96_1024, 12, ixheaacd_sfb_96_128, 40,
+ ixheaacd_sfb_96_960, 12, ixheaacd_sfb_96_120, 37, ixheaacd_sfb_96_768, 12,
+ ixheaacd_sfb_96_96, 8, 4, 0, 0, 0, 0},
+ {88200, 41, ixheaacd_sfb_96_1024, 12, ixheaacd_sfb_96_128, 40,
+ ixheaacd_sfb_96_960, 12, ixheaacd_sfb_96_120, 37, ixheaacd_sfb_96_768, 12,
+ ixheaacd_sfb_96_96, 8, 4, 0, 0, 0, 0},
+ {64000, 47, ixheaacd_sfb_64_1024, 12, ixheaacd_sfb_64_128, 46,
+ ixheaacd_sfb_64_960, 12, ixheaacd_sfb_64_120, 41, ixheaacd_sfb_64_768, 12,
+ ixheaacd_sfb_64_96, 13, 5, 0, 0, 0, 0},
+ {48000, 49, ixheaacd_sfb_48_1024, 14, ixheaacd_sfb_48_128, 49,
+ ixheaacd_sfb_48_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_48_768, 12,
+ ixheaacd_sfb_48_96, 18, 5, 35, ixheaacd_sfb_48_480, 36,
+ ixheaacd_sfb_48_512},
+ {44100, 49, ixheaacd_sfb_48_1024, 14, ixheaacd_sfb_48_128, 49,
+ ixheaacd_sfb_48_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_48_768, 12,
+ ixheaacd_sfb_48_96, 18, 5, 35, ixheaacd_sfb_48_480, 36,
+ ixheaacd_sfb_48_512},
+ {32000, 51, ixheaacd_sfb_32_1024, 14, ixheaacd_sfb_48_128, 49,
+ ixheaacd_sfb_32_960, 14, ixheaacd_sfb_48_120, 43, ixheaacd_sfb_32_768, 12,
+ ixheaacd_sfb_48_96, 26, 6, 37, ixheaacd_sfb_32_480, 37,
+ ixheaacd_sfb_32_512},
+ {24000, 47, ixheaacd_sfb_24_1024, 15, ixheaacd_sfb_24_128, 46,
+ ixheaacd_sfb_24_960, 15, ixheaacd_sfb_24_120, 43, ixheaacd_sfb_24_768, 14,
+ ixheaacd_sfb_24_96, 36, 8, 30, ixheaacd_sfb_24_480, 31,
+ ixheaacd_sfb_24_512},
+ {22050, 47, ixheaacd_sfb_24_1024, 15, ixheaacd_sfb_24_128, 46,
+ ixheaacd_sfb_24_960, 15, ixheaacd_sfb_24_120, 43, ixheaacd_sfb_24_768, 14,
+ ixheaacd_sfb_24_96, 36, 8, 30, ixheaacd_sfb_24_480, 31,
+ ixheaacd_sfb_24_512},
+ {16000, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
+ ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
+ ixheaacd_sfb_16_96, 54, 8, 0, 0, 0, 0},
+ {12000, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
+ ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
+ ixheaacd_sfb_16_96, 104, 10, 0, 0, 0, 0},
+ {11025, 43, ixheaacd_sfb_16_1024, 15, ixheaacd_sfb_16_128, 42,
+ ixheaacd_sfb_16_960, 15, ixheaacd_sfb_16_120, 39, ixheaacd_sfb_16_768, 14,
+ ixheaacd_sfb_16_96, 104, 10, 0, 0, 0, 0},
+ {8000, 40, ixheaacd_sfb_8_1024, 15, ixheaacd_sfb_8_128, 40,
+ ixheaacd_sfb_8_960, 15, ixheaacd_sfb_8_120, 37, ixheaacd_sfb_8_768, 14,
+ ixheaacd_sfb_8_96, 104, 9, 0, 0, 0, 0},
+ {7350, 40, ixheaacd_sfb_8_1024, 15, ixheaacd_sfb_8_128, 40,
+ ixheaacd_sfb_8_960, 15, ixheaacd_sfb_8_120, 37, ixheaacd_sfb_8_768, 14,
+ ixheaacd_sfb_8_96, 104, 9, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
const FLOAT32 ixheaacd_int_leave_gain_table[256] = {
- 0.012445F, 0.215546F, 0.028326F, 0.965442F, 0.053042F, 0.525819F,
- 0.065409F, 1.495322F, 0.078212F, 2.323725F, 0.100504F, 0.751276F,
- 0.112617F, 3.427530F, 0.113124F, 0.309583F, 0.121763F, 1.140685F,
- 0.143515F, 7.519609F, 0.162430F, 0.568752F, 0.164940F, 1.904113F,
- 0.165429F, 4.947562F, 0.194985F, 0.855463F, 0.213527F, 1.281019F,
- 0.223544F, 0.414672F, 0.243135F, 2.781766F, 0.257180F, 1.659565F,
- 0.269488F, 0.636749F, 0.286539F, 1.003938F, 0.328124F, 2.225436F,
- 0.328761F, 0.330278F, 0.336807F, 11.500983F, 0.339794F, 3.805726F,
- 0.344454F, 1.494626F, 0.346165F, 0.738748F, 0.363605F, 1.141454F,
- 0.398729F, 0.517614F, 0.415276F, 2.928666F, 0.416282F, 0.862935F,
- 0.423421F, 1.873310F, 0.444151F, 0.202244F, 0.445842F, 1.301113F,
- 0.455671F, 5.519512F, 0.484764F, 0.387607F, 0.488696F, 0.967884F,
- 0.488730F, 0.666771F, 0.508189F, 1.516224F, 0.508792F, 2.348662F,
- 0.531504F, 3.883870F, 0.548649F, 1.112861F, 0.551182F, 0.514986F,
- 0.564397F, 1.742030F, 0.566598F, 0.796454F, 0.589255F, 3.081743F,
- 0.598816F, 1.271936F, 0.617654F, 0.333501F, 0.619073F, 2.040522F,
- 0.625282F, 0.950244F, 0.630798F, 0.594883F, 0.638918F, 4.863197F,
- 0.650102F, 1.464846F, 0.668412F, 0.747138F, 0.669490F, 2.583027F,
- 0.683757F, 1.125479F, 0.691216F, 1.739274F, 0.718441F, 3.297789F,
- 0.722608F, 0.902743F, 0.728827F, 2.194941F, 0.729586F, 0.633849F,
- 0.730907F, 7.432957F, 0.731017F, 0.431076F, 0.731543F, 1.387847F,
- 0.759183F, 1.045210F, 0.768606F, 1.789648F, 0.771245F, 4.085637F,
- 0.772613F, 0.778145F, 0.786483F, 1.283204F, 0.792467F, 2.412891F,
- 0.802393F, 0.544588F, 0.807156F, 0.255978F, 0.814280F, 1.544409F,
- 0.817839F, 0.938798F, 0.826959F, 2.910633F, 0.830453F, 0.684066F,
- 0.833431F, 1.171532F, 0.841208F, 1.908628F, 0.846440F, 5.333522F,
- 0.868280F, 0.841519F, 0.868662F, 1.435230F, 0.871449F, 3.675784F,
- 0.881317F, 2.245058F, 0.882020F, 0.480249F, 0.882476F, 1.105804F,
- 0.902856F, 0.684850F, 0.904419F, 1.682113F, 0.909384F, 2.787801F,
- 0.916558F, 7.500981F, 0.918444F, 0.950341F, 0.919721F, 1.296319F,
- 0.940272F, 4.682978F, 0.940273F, 1.991736F, 0.950291F, 3.507281F,
- 0.957455F, 1.116284F, 0.957723F, 0.793034F, 0.958217F, 1.497824F,
- 0.962628F, 2.514156F, 0.968507F, 0.588605F, 0.974739F, 0.339933F,
- 0.991738F, 1.750201F, 0.997210F, 0.936131F, 1.002422F, 1.250008F,
- 1.006040F, 2.167232F, 1.008848F, 3.129940F, 1.014404F, 5.842819F,
- 1.027798F, 4.287319F, 1.039404F, 1.489295F, 1.039628F, 8.947958F,
- 1.043214F, 0.765733F, 1.045089F, 2.537806F, 1.058994F, 1.031496F,
- 1.060415F, 0.478612F, 1.072132F, 12.8F, 1.074778F, 1.910049F,
- 1.076570F, 15.9999F, 1.107853F, 3.843067F, 1.110673F, 1.228576F,
- 1.110969F, 2.758471F, 1.140058F, 1.603077F, 1.155384F, 0.668935F,
- 1.176229F, 6.717108F, 1.179008F, 2.011940F, 1.187735F, 0.963552F,
- 1.199569F, 4.891432F, 1.206311F, 3.316329F, 1.215323F, 2.507536F,
- 1.223150F, 1.387102F, 1.296012F, 9.684225F};
+ 0.012445F, 0.215546F, 0.028326F, 0.965442F, 0.053042F, 0.525819F,
+ 0.065409F, 1.495322F, 0.078212F, 2.323725F, 0.100504F, 0.751276F,
+ 0.112617F, 3.427530F, 0.113124F, 0.309583F, 0.121763F, 1.140685F,
+ 0.143515F, 7.519609F, 0.162430F, 0.568752F, 0.164940F, 1.904113F,
+ 0.165429F, 4.947562F, 0.194985F, 0.855463F, 0.213527F, 1.281019F,
+ 0.223544F, 0.414672F, 0.243135F, 2.781766F, 0.257180F, 1.659565F,
+ 0.269488F, 0.636749F, 0.286539F, 1.003938F, 0.328124F, 2.225436F,
+ 0.328761F, 0.330278F, 0.336807F, 11.500983F, 0.339794F, 3.805726F,
+ 0.344454F, 1.494626F, 0.346165F, 0.738748F, 0.363605F, 1.141454F,
+ 0.398729F, 0.517614F, 0.415276F, 2.928666F, 0.416282F, 0.862935F,
+ 0.423421F, 1.873310F, 0.444151F, 0.202244F, 0.445842F, 1.301113F,
+ 0.455671F, 5.519512F, 0.484764F, 0.387607F, 0.488696F, 0.967884F,
+ 0.488730F, 0.666771F, 0.508189F, 1.516224F, 0.508792F, 2.348662F,
+ 0.531504F, 3.883870F, 0.548649F, 1.112861F, 0.551182F, 0.514986F,
+ 0.564397F, 1.742030F, 0.566598F, 0.796454F, 0.589255F, 3.081743F,
+ 0.598816F, 1.271936F, 0.617654F, 0.333501F, 0.619073F, 2.040522F,
+ 0.625282F, 0.950244F, 0.630798F, 0.594883F, 0.638918F, 4.863197F,
+ 0.650102F, 1.464846F, 0.668412F, 0.747138F, 0.669490F, 2.583027F,
+ 0.683757F, 1.125479F, 0.691216F, 1.739274F, 0.718441F, 3.297789F,
+ 0.722608F, 0.902743F, 0.728827F, 2.194941F, 0.729586F, 0.633849F,
+ 0.730907F, 7.432957F, 0.731017F, 0.431076F, 0.731543F, 1.387847F,
+ 0.759183F, 1.045210F, 0.768606F, 1.789648F, 0.771245F, 4.085637F,
+ 0.772613F, 0.778145F, 0.786483F, 1.283204F, 0.792467F, 2.412891F,
+ 0.802393F, 0.544588F, 0.807156F, 0.255978F, 0.814280F, 1.544409F,
+ 0.817839F, 0.938798F, 0.826959F, 2.910633F, 0.830453F, 0.684066F,
+ 0.833431F, 1.171532F, 0.841208F, 1.908628F, 0.846440F, 5.333522F,
+ 0.868280F, 0.841519F, 0.868662F, 1.435230F, 0.871449F, 3.675784F,
+ 0.881317F, 2.245058F, 0.882020F, 0.480249F, 0.882476F, 1.105804F,
+ 0.902856F, 0.684850F, 0.904419F, 1.682113F, 0.909384F, 2.787801F,
+ 0.916558F, 7.500981F, 0.918444F, 0.950341F, 0.919721F, 1.296319F,
+ 0.940272F, 4.682978F, 0.940273F, 1.991736F, 0.950291F, 3.507281F,
+ 0.957455F, 1.116284F, 0.957723F, 0.793034F, 0.958217F, 1.497824F,
+ 0.962628F, 2.514156F, 0.968507F, 0.588605F, 0.974739F, 0.339933F,
+ 0.991738F, 1.750201F, 0.997210F, 0.936131F, 1.002422F, 1.250008F,
+ 1.006040F, 2.167232F, 1.008848F, 3.129940F, 1.014404F, 5.842819F,
+ 1.027798F, 4.287319F, 1.039404F, 1.489295F, 1.039628F, 8.947958F,
+ 1.043214F, 0.765733F, 1.045089F, 2.537806F, 1.058994F, 1.031496F,
+ 1.060415F, 0.478612F, 1.072132F, 12.8F, 1.074778F, 1.910049F,
+ 1.076570F, 15.9999F, 1.107853F, 3.843067F, 1.110673F, 1.228576F,
+ 1.110969F, 2.758471F, 1.140058F, 1.603077F, 1.155384F, 0.668935F,
+ 1.176229F, 6.717108F, 1.179008F, 2.011940F, 1.187735F, 0.963552F,
+ 1.199569F, 4.891432F, 1.206311F, 3.316329F, 1.215323F, 2.507536F,
+ 1.223150F, 1.387102F, 1.296012F, 9.684225F};
const WORD32 twiddle_table_fft[257] = {
- 0x00007fff, 0xff377fff, 0xfe6e7ffe, 0xfda57ffa, 0xfcdc7ff6, 0xfc137ff1,
- 0xfb4a7fea, 0xfa817fe2, 0xf9b87fd9, 0xf8ef7fce, 0xf8277fc2, 0xf75e7fb5,
- 0xf6957fa7, 0xf5cd7f98, 0xf5057f87, 0xf43c7f75, 0xf3747f62, 0xf2ac7f4e,
- 0xf1e47f38, 0xf11c7f22, 0xf0557f0a, 0xef8d7ef0, 0xeec67ed6, 0xedff7eba,
- 0xed387e9d, 0xec717e7f, 0xebab7e60, 0xeae47e3f, 0xea1e7e1e, 0xe9587dfb,
- 0xe8927dd6, 0xe7cd7db1, 0xe7077d8a, 0xe6427d63, 0xe57d7d3a, 0xe4b97d0f,
- 0xe3f47ce4, 0xe3307cb7, 0xe26d7c89, 0xe1a97c5a, 0xe0e67c2a, 0xe0237bf9,
- 0xdf617bc6, 0xde9e7b92, 0xdddc7b5d, 0xdd1b7b27, 0xdc597aef, 0xdb997ab7,
- 0xdad87a7d, 0xda187a42, 0xd9587a06, 0xd89879c9, 0xd7d9798a, 0xd71b794a,
- 0xd65c790a, 0xd59e78c8, 0xd4e17885, 0xd4247840, 0xd36777fb, 0xd2ab77b4,
- 0xd1ef776c, 0xd1347723, 0xd07976d9, 0xcfbe768e, 0xcf047642, 0xce4b75f4,
- 0xcd9275a6, 0xccd97556, 0xcc217505, 0xcb6974b3, 0xcab27460, 0xc9fc740b,
- 0xc94673b6, 0xc890735f, 0xc7db7308, 0xc72772af, 0xc6737255, 0xc5c071fa,
- 0xc50d719e, 0xc45b7141, 0xc3a970e3, 0xc2f87083, 0xc2487023, 0xc1986fc2,
- 0xc0e96f5f, 0xc03a6efb, 0xbf8c6e97, 0xbedf6e31, 0xbe326dca, 0xbd866d62,
- 0xbcda6cf9, 0xbc2f6c8f, 0xbb856c24, 0xbadc6bb8, 0xba336b4b, 0xb98b6add,
- 0xb8e36a6e, 0xb83c69fd, 0xb796698c, 0xb6f1691a, 0xb64c68a7, 0xb5a86832,
- 0xb50567bd, 0xb4626747, 0xb3c066d0, 0xb31f6657, 0xb27f65de, 0xb1df6564,
- 0xb14064e9, 0xb0a2646c, 0xb00563ef, 0xaf686371, 0xaecc62f2, 0xae316272,
- 0xad9761f1, 0xacfd616f, 0xac6560ec, 0xabcd6068, 0xab365fe4, 0xaaa05f5e,
- 0xaa0a5ed7, 0xa9765e50, 0xa8e25dc8, 0xa84f5d3e, 0xa7bd5cb4, 0xa72c5c29,
- 0xa69c5b9d, 0xa60c5b10, 0xa57e5a82, 0xa4f059f4, 0xa4635964, 0xa3d758d4,
- 0xa34c5843, 0xa2c257b1, 0xa238571e, 0xa1b0568a, 0xa12955f6, 0xa0a25560,
- 0xa01c54ca, 0x9f985433, 0x9f14539b, 0x9e915303, 0x9e0f5269, 0x9d8e51cf,
- 0x9d0e5134, 0x9c8f5098, 0x9c114ffb, 0x9b944f5e, 0x9b174ec0, 0x9a9c4e21,
- 0x9a224d81, 0x99a94ce1, 0x99304c40, 0x98b94b9e, 0x98434afb, 0x97ce4a58,
- 0x975949b4, 0x96e6490f, 0x9674486a, 0x960347c4, 0x9592471d, 0x95234675,
- 0x94b545cd, 0x94484524, 0x93dc447b, 0x937143d1, 0x93074326, 0x929e427a,
- 0x923641ce, 0x91cf4121, 0x91694074, 0x91053fc6, 0x90a13f17, 0x903e3e68,
- 0x8fdd3db8, 0x8f7d3d08, 0x8f1d3c57, 0x8ebf3ba5, 0x8e623af3, 0x8e063a40,
- 0x8dab398d, 0x8d5138d9, 0x8cf83825, 0x8ca13770, 0x8c4a36ba, 0x8bf53604,
- 0x8ba0354e, 0x8b4d3497, 0x8afb33df, 0x8aaa3327, 0x8a5a326e, 0x8a0c31b5,
- 0x89be30fc, 0x89723042, 0x89272f87, 0x88dd2ecc, 0x88942e11, 0x884c2d55,
- 0x88052c99, 0x87c02bdc, 0x877b2b1f, 0x87382a62, 0x86f629a4, 0x86b628e5,
- 0x86762827, 0x86372768, 0x85fa26a8, 0x85be25e8, 0x85832528, 0x85492467,
- 0x851123a7, 0x84d922e5, 0x84a32224, 0x846e2162, 0x843a209f, 0x84071fdd,
- 0x83d61f1a, 0x83a61e57, 0x83771d93, 0x83491cd0, 0x831c1c0c, 0x82f11b47,
- 0x82c61a83, 0x829d19be, 0x827618f9, 0x824f1833, 0x822a176e, 0x820516a8,
- 0x81e215e2, 0x81c1151c, 0x81a01455, 0x8181138f, 0x816312c8, 0x81461201,
- 0x812a113a, 0x81101073, 0x80f60fab, 0x80de0ee4, 0x80c80e1c, 0x80b20d54,
- 0x809e0c8c, 0x808b0bc4, 0x80790afb, 0x80680a33, 0x8059096b, 0x804b08a2,
- 0x803e07d9, 0x80320711, 0x80270648, 0x801e057f, 0x801604b6, 0x800f03ed,
- 0x800a0324, 0x8006025b, 0x80020192, 0x800100c9, 0x80000000};
+ 0x00007fff, 0xff377fff, 0xfe6e7ffe, 0xfda57ffa, 0xfcdc7ff6, 0xfc137ff1,
+ 0xfb4a7fea, 0xfa817fe2, 0xf9b87fd9, 0xf8ef7fce, 0xf8277fc2, 0xf75e7fb5,
+ 0xf6957fa7, 0xf5cd7f98, 0xf5057f87, 0xf43c7f75, 0xf3747f62, 0xf2ac7f4e,
+ 0xf1e47f38, 0xf11c7f22, 0xf0557f0a, 0xef8d7ef0, 0xeec67ed6, 0xedff7eba,
+ 0xed387e9d, 0xec717e7f, 0xebab7e60, 0xeae47e3f, 0xea1e7e1e, 0xe9587dfb,
+ 0xe8927dd6, 0xe7cd7db1, 0xe7077d8a, 0xe6427d63, 0xe57d7d3a, 0xe4b97d0f,
+ 0xe3f47ce4, 0xe3307cb7, 0xe26d7c89, 0xe1a97c5a, 0xe0e67c2a, 0xe0237bf9,
+ 0xdf617bc6, 0xde9e7b92, 0xdddc7b5d, 0xdd1b7b27, 0xdc597aef, 0xdb997ab7,
+ 0xdad87a7d, 0xda187a42, 0xd9587a06, 0xd89879c9, 0xd7d9798a, 0xd71b794a,
+ 0xd65c790a, 0xd59e78c8, 0xd4e17885, 0xd4247840, 0xd36777fb, 0xd2ab77b4,
+ 0xd1ef776c, 0xd1347723, 0xd07976d9, 0xcfbe768e, 0xcf047642, 0xce4b75f4,
+ 0xcd9275a6, 0xccd97556, 0xcc217505, 0xcb6974b3, 0xcab27460, 0xc9fc740b,
+ 0xc94673b6, 0xc890735f, 0xc7db7308, 0xc72772af, 0xc6737255, 0xc5c071fa,
+ 0xc50d719e, 0xc45b7141, 0xc3a970e3, 0xc2f87083, 0xc2487023, 0xc1986fc2,
+ 0xc0e96f5f, 0xc03a6efb, 0xbf8c6e97, 0xbedf6e31, 0xbe326dca, 0xbd866d62,
+ 0xbcda6cf9, 0xbc2f6c8f, 0xbb856c24, 0xbadc6bb8, 0xba336b4b, 0xb98b6add,
+ 0xb8e36a6e, 0xb83c69fd, 0xb796698c, 0xb6f1691a, 0xb64c68a7, 0xb5a86832,
+ 0xb50567bd, 0xb4626747, 0xb3c066d0, 0xb31f6657, 0xb27f65de, 0xb1df6564,
+ 0xb14064e9, 0xb0a2646c, 0xb00563ef, 0xaf686371, 0xaecc62f2, 0xae316272,
+ 0xad9761f1, 0xacfd616f, 0xac6560ec, 0xabcd6068, 0xab365fe4, 0xaaa05f5e,
+ 0xaa0a5ed7, 0xa9765e50, 0xa8e25dc8, 0xa84f5d3e, 0xa7bd5cb4, 0xa72c5c29,
+ 0xa69c5b9d, 0xa60c5b10, 0xa57e5a82, 0xa4f059f4, 0xa4635964, 0xa3d758d4,
+ 0xa34c5843, 0xa2c257b1, 0xa238571e, 0xa1b0568a, 0xa12955f6, 0xa0a25560,
+ 0xa01c54ca, 0x9f985433, 0x9f14539b, 0x9e915303, 0x9e0f5269, 0x9d8e51cf,
+ 0x9d0e5134, 0x9c8f5098, 0x9c114ffb, 0x9b944f5e, 0x9b174ec0, 0x9a9c4e21,
+ 0x9a224d81, 0x99a94ce1, 0x99304c40, 0x98b94b9e, 0x98434afb, 0x97ce4a58,
+ 0x975949b4, 0x96e6490f, 0x9674486a, 0x960347c4, 0x9592471d, 0x95234675,
+ 0x94b545cd, 0x94484524, 0x93dc447b, 0x937143d1, 0x93074326, 0x929e427a,
+ 0x923641ce, 0x91cf4121, 0x91694074, 0x91053fc6, 0x90a13f17, 0x903e3e68,
+ 0x8fdd3db8, 0x8f7d3d08, 0x8f1d3c57, 0x8ebf3ba5, 0x8e623af3, 0x8e063a40,
+ 0x8dab398d, 0x8d5138d9, 0x8cf83825, 0x8ca13770, 0x8c4a36ba, 0x8bf53604,
+ 0x8ba0354e, 0x8b4d3497, 0x8afb33df, 0x8aaa3327, 0x8a5a326e, 0x8a0c31b5,
+ 0x89be30fc, 0x89723042, 0x89272f87, 0x88dd2ecc, 0x88942e11, 0x884c2d55,
+ 0x88052c99, 0x87c02bdc, 0x877b2b1f, 0x87382a62, 0x86f629a4, 0x86b628e5,
+ 0x86762827, 0x86372768, 0x85fa26a8, 0x85be25e8, 0x85832528, 0x85492467,
+ 0x851123a7, 0x84d922e5, 0x84a32224, 0x846e2162, 0x843a209f, 0x84071fdd,
+ 0x83d61f1a, 0x83a61e57, 0x83771d93, 0x83491cd0, 0x831c1c0c, 0x82f11b47,
+ 0x82c61a83, 0x829d19be, 0x827618f9, 0x824f1833, 0x822a176e, 0x820516a8,
+ 0x81e215e2, 0x81c1151c, 0x81a01455, 0x8181138f, 0x816312c8, 0x81461201,
+ 0x812a113a, 0x81101073, 0x80f60fab, 0x80de0ee4, 0x80c80e1c, 0x80b20d54,
+ 0x809e0c8c, 0x808b0bc4, 0x80790afb, 0x80680a33, 0x8059096b, 0x804b08a2,
+ 0x803e07d9, 0x80320711, 0x80270648, 0x801e057f, 0x801604b6, 0x800f03ed,
+ 0x800a0324, 0x8006025b, 0x80020192, 0x800100c9, 0x80000000};
const WORD32 ixheaacd_twiddle_table_fft_32x32[514] = {
- 0x00000000, 0x7fffffff, 0xff36f079, 0x7fff6215, 0xfe6de2e1, 0x7ffd8859,
- 0xfda4d929, 0x7ffa72d0, 0xfcdbd542, 0x7ff62181, 0xfc12d91a, 0x7ff09476,
- 0xfb49e6a3, 0x7fe9cbbe, 0xfa80ffcc, 0x7fe1c76a, 0xf9b82684, 0x7fd8878c,
- 0xf8ef5cbc, 0x7fce0c3d, 0xf826a462, 0x7fc25595, 0xf75dff66, 0x7fb563b1,
- 0xf6956fb7, 0x7fa736b3, 0xf5ccf744, 0x7f97cebb, 0xf50497fb, 0x7f872bf1,
- 0xf43c53cb, 0x7f754e7e, 0xf3742ca2, 0x7f62368e, 0xf2ac246e, 0x7f4de44f,
- 0xf1e43d1d, 0x7f3857f4, 0xf11c789b, 0x7f2191b2, 0xf054d8d5, 0x7f0991c2,
- 0xef8d5fb9, 0x7ef0585e, 0xeec60f32, 0x7ed5e5c5, 0xedfee92c, 0x7eba3a38,
- 0xed37ef92, 0x7e9d55fb, 0xec712450, 0x7e7f3955, 0xebaa894f, 0x7e5fe492,
- 0xeae4207b, 0x7e3f57fd, 0xea1debbc, 0x7e1d93e8, 0xe957ecfc, 0x7dfa98a6,
- 0xe8922622, 0x7dd6668d, 0xe7cc9918, 0x7db0fdf6, 0xe70747c4, 0x7d8a5f3e,
- 0xe642340e, 0x7d628ac4, 0xe57d5fdb, 0x7d3980eb, 0xe4b8cd11, 0x7d0f4217,
- 0xe3f47d96, 0x7ce3ceb0, 0xe330734d, 0x7cb72723, 0xe26cb01b, 0x7c894bdc,
- 0xe1a935e2, 0x7c5a3d4e, 0xe0e60685, 0x7c29fbed, 0xe02323e6, 0x7bf8882f,
- 0xdf608fe4, 0x7bc5e28e, 0xde9e4c61, 0x7b920b88, 0xdddc5b3b, 0x7b5d039c,
- 0xdd1abe52, 0x7b26cb4e, 0xdc597782, 0x7aef6322, 0xdb9888a9, 0x7ab6cba2,
- 0xdad7f3a3, 0x7a7d055a, 0xda17ba4b, 0x7a4210d7, 0xd957de7b, 0x7a05eeac,
- 0xd898620c, 0x79c89f6c, 0xd7d946d8, 0x798a23b0, 0xd71a8eb6, 0x794a7c10,
- 0xd65c3b7c, 0x7909a92b, 0xd59e4eff, 0x78c7aba0, 0xd4e0cb15, 0x78848412,
- 0xd423b191, 0x78403327, 0xd3670446, 0x77fab987, 0xd2aac505, 0x77b417de,
- 0xd1eef59f, 0x776c4eda, 0xd13397e2, 0x77235f2c, 0xd078ad9e, 0x76d94987,
- 0xcfbe38a0, 0x768e0ea4, 0xcf043ab3, 0x7641af3b, 0xce4ab5a3, 0x75f42c09,
- 0xcd91ab39, 0x75a585ce, 0xccd91d3e, 0x7555bd4a, 0xcc210d79, 0x7504d344,
- 0xcb697db1, 0x74b2c882, 0xcab26faa, 0x745f9dd0, 0xc9fbe528, 0x740b53f9,
- 0xc945dfed, 0x73b5ebd0, 0xc89061ba, 0x735f6625, 0xc7db6c50, 0x7307c3cf,
- 0xc727016d, 0x72af05a5, 0xc67322ce, 0x72552c83, 0xc5bfd22f, 0x71fa3947,
- 0xc50d1149, 0x719e2cd1, 0xc45ae1d7, 0x71410803, 0xc3a94590, 0x70e2cbc5,
- 0xc2f83e2b, 0x708378fd, 0xc247cd5b, 0x70231098, 0xc197f4d4, 0x6fc19384,
- 0xc0e8b649, 0x6f5f02b0, 0xc03a1369, 0x6efb5f11, 0xbf8c0de3, 0x6e96a99b,
- 0xbedea766, 0x6e30e348, 0xbe31e19c, 0x6dca0d13, 0xbd85be30, 0x6d6227f9,
- 0xbcda3ecb, 0x6cf934fa, 0xbc2f6514, 0x6c8f351b, 0xbb8532b0, 0x6c24295f,
- 0xbadba944, 0x6bb812d0, 0xba32ca71, 0x6b4af277, 0xb98a97d9, 0x6adcc963,
- 0xb8e3131a, 0x6a6d98a3, 0xb83c3dd2, 0x69fd6149, 0xb796199c, 0x698c246b,
- 0xb6f0a812, 0x6919e31f, 0xb64beacd, 0x68a69e80, 0xb5a7e363, 0x683257aa,
- 0xb5049369, 0x67bd0fbb, 0xb461fc71, 0x6746c7d6, 0xb3c0200d, 0x66cf811f,
- 0xb31effcc, 0x66573cba, 0xb27e9d3c, 0x65ddfbd2, 0xb1def9e9, 0x6563bf91,
- 0xb140175c, 0x64e88925, 0xb0a1f71d, 0x646c59be, 0xb0049ab3, 0x63ef328e,
- 0xaf6803a2, 0x637114cb, 0xaecc336c, 0x62f201ab, 0xae312b92, 0x6271fa68,
- 0xad96ed92, 0x61f1003e, 0xacfd7ae9, 0x616f146a, 0xac64d511, 0x60ec382f,
- 0xabccfd83, 0x60686cce, 0xab35f5b6, 0x5fe3b38c, 0xaa9fbf1e, 0x5f5e0db2,
- 0xaa0a5b2e, 0x5ed77c88, 0xa975cb57, 0x5e50015c, 0xa8e21107, 0x5dc79d7b,
- 0xa84f2daa, 0x5d3e5235, 0xa7bd22ac, 0x5cb420df, 0xa72bf174, 0x5c290acb,
- 0xa69b9b69, 0x5b9d1152, 0xa60c21ee, 0x5b1035ce, 0xa57d8667, 0x5a827999,
- 0xa4efca31, 0x59f3de11, 0xa462eead, 0x59646497, 0xa3d6f534, 0x58d40e8b,
- 0xa34bdf21, 0x5842dd53, 0xa2c1adca, 0x57b0d255, 0xa2386284, 0x571deef8,
- 0xa1affea3, 0x568a34a8, 0xa1288377, 0x55f5a4d1, 0xa0a1f24d, 0x556040e1,
- 0xa01c4c73, 0x54ca0a49, 0x9f979332, 0x5433027c, 0x9f13c7d1, 0x539b2aee,
- 0x9e90eb95, 0x53028517, 0x9e0effc2, 0x5269126d, 0x9d8e0597, 0x51ced46d,
- 0x9d0dfe54, 0x5133cc93, 0x9c8eeb34, 0x5097fc5d, 0x9c10cd71, 0x4ffb654c,
- 0x9b93a641, 0x4f5e08e2, 0x9b1776da, 0x4ebfe8a3, 0x9a9c406e, 0x4e210616,
- 0x9a22042d, 0x4d8162c3, 0x99a8c345, 0x4ce10033, 0x99307ee1, 0x4c3fdff2,
- 0x98b93829, 0x4b9e038f, 0x9842f044, 0x4afb6c97, 0x97cda856, 0x4a581c9c,
- 0x9759617f, 0x49b41532, 0x96e61ce0, 0x490f57ed, 0x9673db94, 0x4869e664,
- 0x96029eb6, 0x47c3c22e, 0x9592675c, 0x471cece6, 0x9523369c, 0x46756827,
- 0x94b50d88, 0x45cd358e, 0x9447ed30, 0x452456bc, 0x93dbd6a0, 0x447acd4f,
- 0x9370cae4, 0x43d09aec, 0x9306cb05, 0x4325c134, 0x929dd806, 0x427a41cf,
- 0x9235f2ec, 0x41ce1e64, 0x91cf1cb7, 0x4121589a, 0x91695664, 0x4073f21c,
- 0x9104a0ee, 0x3fc5ec97, 0x90a0fd4f, 0x3f1749b7, 0x903e6c7b, 0x3e680b2c,
- 0x8fdcef67, 0x3db832a5, 0x8f7c8702, 0x3d07c1d5, 0x8f1d343a, 0x3c56ba6f,
- 0x8ebef7fc, 0x3ba51e28, 0x8e61d32e, 0x3af2eeb6, 0x8e05c6b8, 0x3a402dd1,
- 0x8daad37c, 0x398cdd31, 0x8d50fa5a, 0x38d8fe92, 0x8cf83c31, 0x382493af,
- 0x8ca099da, 0x376f9e45, 0x8c4a1430, 0x36ba2013, 0x8bf4ac06, 0x36041ad8,
- 0x8ba06230, 0x354d9056, 0x8b4d377d, 0x3496824f, 0x8afb2cbb, 0x33def286,
- 0x8aaa42b5, 0x3326e2c2, 0x8a5a7a31, 0x326e54c7, 0x8a0bd3f6, 0x31b54a5d,
- 0x89be50c4, 0x30fbc54c, 0x8971f15b, 0x3041c760, 0x8926b678, 0x2f875261,
- 0x88dca0d3, 0x2ecc681d, 0x8893b125, 0x2e110a61, 0x884be821, 0x2d553afb,
- 0x88054678, 0x2c98fbba, 0x87bfccd8, 0x2bdc4e6e, 0x877b7bed, 0x2b1f34eb,
- 0x8738545f, 0x2a61b101, 0x86f656d4, 0x29a3c484, 0x86b583ef, 0x28e5714a,
- 0x8675dc4f, 0x2826b927, 0x86376093, 0x27679df3, 0x85fa1153, 0x26a82185,
- 0x85bdef28, 0x25e845b5, 0x8582faa5, 0x25280c5d, 0x8549345d, 0x24677757,
- 0x85109cdd, 0x23a6887e, 0x84d934b1, 0x22e541ae, 0x84a2fc63, 0x2223a4c5,
- 0x846df477, 0x2161b39f, 0x843a1d71, 0x209f701c, 0x840777d0, 0x1fdcdc1a,
- 0x83d60412, 0x1f19f97a, 0x83a5c2b1, 0x1e56ca1d, 0x8376b423, 0x1d934fe5,
- 0x8348d8dc, 0x1ccf8cb2, 0x831c314f, 0x1c0b826a, 0x82f0bde9, 0x1b4732ef,
- 0x82c67f14, 0x1a82a025, 0x829d753b, 0x19bdcbf2, 0x8275a0c1, 0x18f8b83c,
- 0x824f0209, 0x183366e8, 0x82299972, 0x176dd9de, 0x82056759, 0x16a81304,
- 0x81e26c17, 0x15e21444, 0x81c0a802, 0x151bdf85, 0x81a01b6d, 0x145576b1,
- 0x8180c6aa, 0x138edbb0, 0x8162aa04, 0x12c8106e, 0x8145c5c7, 0x120116d4,
- 0x812a1a3a, 0x1139f0ce, 0x810fa7a1, 0x1072a047, 0x80f66e3d, 0x0fab272b,
- 0x80de6e4d, 0x0ee38765, 0x80c7a80b, 0x0e1bc2e3, 0x80b21bb0, 0x0d53db92,
- 0x809dc971, 0x0c8bd35d, 0x808ab181, 0x0bc3ac35, 0x8078d40e, 0x0afb6805,
- 0x80683144, 0x0a3308bc, 0x8058c94c, 0x096a9049, 0x804a9c4e, 0x08a2009a,
- 0x803daa6a, 0x07d95b9e, 0x8031f3c2, 0x0710a344, 0x80277873, 0x0647d97c,
- 0x801e3895, 0x057f0034, 0x80163441, 0x04b6195d, 0x800f6b89, 0x03ed26e6,
- 0x8009de7e, 0x03242abe, 0x80058d2f, 0x025b26d7, 0x800277a6, 0x01921d1f,
- 0x80009dea, 0x00c90f87, 0x80000000, 0x00000000};
+ 0x00000000, 0x7fffffff, 0xff36f079, 0x7fff6215, 0xfe6de2e1, 0x7ffd8859,
+ 0xfda4d929, 0x7ffa72d0, 0xfcdbd542, 0x7ff62181, 0xfc12d91a, 0x7ff09476,
+ 0xfb49e6a3, 0x7fe9cbbe, 0xfa80ffcc, 0x7fe1c76a, 0xf9b82684, 0x7fd8878c,
+ 0xf8ef5cbc, 0x7fce0c3d, 0xf826a462, 0x7fc25595, 0xf75dff66, 0x7fb563b1,
+ 0xf6956fb7, 0x7fa736b3, 0xf5ccf744, 0x7f97cebb, 0xf50497fb, 0x7f872bf1,
+ 0xf43c53cb, 0x7f754e7e, 0xf3742ca2, 0x7f62368e, 0xf2ac246e, 0x7f4de44f,
+ 0xf1e43d1d, 0x7f3857f4, 0xf11c789b, 0x7f2191b2, 0xf054d8d5, 0x7f0991c2,
+ 0xef8d5fb9, 0x7ef0585e, 0xeec60f32, 0x7ed5e5c5, 0xedfee92c, 0x7eba3a38,
+ 0xed37ef92, 0x7e9d55fb, 0xec712450, 0x7e7f3955, 0xebaa894f, 0x7e5fe492,
+ 0xeae4207b, 0x7e3f57fd, 0xea1debbc, 0x7e1d93e8, 0xe957ecfc, 0x7dfa98a6,
+ 0xe8922622, 0x7dd6668d, 0xe7cc9918, 0x7db0fdf6, 0xe70747c4, 0x7d8a5f3e,
+ 0xe642340e, 0x7d628ac4, 0xe57d5fdb, 0x7d3980eb, 0xe4b8cd11, 0x7d0f4217,
+ 0xe3f47d96, 0x7ce3ceb0, 0xe330734d, 0x7cb72723, 0xe26cb01b, 0x7c894bdc,
+ 0xe1a935e2, 0x7c5a3d4e, 0xe0e60685, 0x7c29fbed, 0xe02323e6, 0x7bf8882f,
+ 0xdf608fe4, 0x7bc5e28e, 0xde9e4c61, 0x7b920b88, 0xdddc5b3b, 0x7b5d039c,
+ 0xdd1abe52, 0x7b26cb4e, 0xdc597782, 0x7aef6322, 0xdb9888a9, 0x7ab6cba2,
+ 0xdad7f3a3, 0x7a7d055a, 0xda17ba4b, 0x7a4210d7, 0xd957de7b, 0x7a05eeac,
+ 0xd898620c, 0x79c89f6c, 0xd7d946d8, 0x798a23b0, 0xd71a8eb6, 0x794a7c10,
+ 0xd65c3b7c, 0x7909a92b, 0xd59e4eff, 0x78c7aba0, 0xd4e0cb15, 0x78848412,
+ 0xd423b191, 0x78403327, 0xd3670446, 0x77fab987, 0xd2aac505, 0x77b417de,
+ 0xd1eef59f, 0x776c4eda, 0xd13397e2, 0x77235f2c, 0xd078ad9e, 0x76d94987,
+ 0xcfbe38a0, 0x768e0ea4, 0xcf043ab3, 0x7641af3b, 0xce4ab5a3, 0x75f42c09,
+ 0xcd91ab39, 0x75a585ce, 0xccd91d3e, 0x7555bd4a, 0xcc210d79, 0x7504d344,
+ 0xcb697db1, 0x74b2c882, 0xcab26faa, 0x745f9dd0, 0xc9fbe528, 0x740b53f9,
+ 0xc945dfed, 0x73b5ebd0, 0xc89061ba, 0x735f6625, 0xc7db6c50, 0x7307c3cf,
+ 0xc727016d, 0x72af05a5, 0xc67322ce, 0x72552c83, 0xc5bfd22f, 0x71fa3947,
+ 0xc50d1149, 0x719e2cd1, 0xc45ae1d7, 0x71410803, 0xc3a94590, 0x70e2cbc5,
+ 0xc2f83e2b, 0x708378fd, 0xc247cd5b, 0x70231098, 0xc197f4d4, 0x6fc19384,
+ 0xc0e8b649, 0x6f5f02b0, 0xc03a1369, 0x6efb5f11, 0xbf8c0de3, 0x6e96a99b,
+ 0xbedea766, 0x6e30e348, 0xbe31e19c, 0x6dca0d13, 0xbd85be30, 0x6d6227f9,
+ 0xbcda3ecb, 0x6cf934fa, 0xbc2f6514, 0x6c8f351b, 0xbb8532b0, 0x6c24295f,
+ 0xbadba944, 0x6bb812d0, 0xba32ca71, 0x6b4af277, 0xb98a97d9, 0x6adcc963,
+ 0xb8e3131a, 0x6a6d98a3, 0xb83c3dd2, 0x69fd6149, 0xb796199c, 0x698c246b,
+ 0xb6f0a812, 0x6919e31f, 0xb64beacd, 0x68a69e80, 0xb5a7e363, 0x683257aa,
+ 0xb5049369, 0x67bd0fbb, 0xb461fc71, 0x6746c7d6, 0xb3c0200d, 0x66cf811f,
+ 0xb31effcc, 0x66573cba, 0xb27e9d3c, 0x65ddfbd2, 0xb1def9e9, 0x6563bf91,
+ 0xb140175c, 0x64e88925, 0xb0a1f71d, 0x646c59be, 0xb0049ab3, 0x63ef328e,
+ 0xaf6803a2, 0x637114cb, 0xaecc336c, 0x62f201ab, 0xae312b92, 0x6271fa68,
+ 0xad96ed92, 0x61f1003e, 0xacfd7ae9, 0x616f146a, 0xac64d511, 0x60ec382f,
+ 0xabccfd83, 0x60686cce, 0xab35f5b6, 0x5fe3b38c, 0xaa9fbf1e, 0x5f5e0db2,
+ 0xaa0a5b2e, 0x5ed77c88, 0xa975cb57, 0x5e50015c, 0xa8e21107, 0x5dc79d7b,
+ 0xa84f2daa, 0x5d3e5235, 0xa7bd22ac, 0x5cb420df, 0xa72bf174, 0x5c290acb,
+ 0xa69b9b69, 0x5b9d1152, 0xa60c21ee, 0x5b1035ce, 0xa57d8667, 0x5a827999,
+ 0xa4efca31, 0x59f3de11, 0xa462eead, 0x59646497, 0xa3d6f534, 0x58d40e8b,
+ 0xa34bdf21, 0x5842dd53, 0xa2c1adca, 0x57b0d255, 0xa2386284, 0x571deef8,
+ 0xa1affea3, 0x568a34a8, 0xa1288377, 0x55f5a4d1, 0xa0a1f24d, 0x556040e1,
+ 0xa01c4c73, 0x54ca0a49, 0x9f979332, 0x5433027c, 0x9f13c7d1, 0x539b2aee,
+ 0x9e90eb95, 0x53028517, 0x9e0effc2, 0x5269126d, 0x9d8e0597, 0x51ced46d,
+ 0x9d0dfe54, 0x5133cc93, 0x9c8eeb34, 0x5097fc5d, 0x9c10cd71, 0x4ffb654c,
+ 0x9b93a641, 0x4f5e08e2, 0x9b1776da, 0x4ebfe8a3, 0x9a9c406e, 0x4e210616,
+ 0x9a22042d, 0x4d8162c3, 0x99a8c345, 0x4ce10033, 0x99307ee1, 0x4c3fdff2,
+ 0x98b93829, 0x4b9e038f, 0x9842f044, 0x4afb6c97, 0x97cda856, 0x4a581c9c,
+ 0x9759617f, 0x49b41532, 0x96e61ce0, 0x490f57ed, 0x9673db94, 0x4869e664,
+ 0x96029eb6, 0x47c3c22e, 0x9592675c, 0x471cece6, 0x9523369c, 0x46756827,
+ 0x94b50d88, 0x45cd358e, 0x9447ed30, 0x452456bc, 0x93dbd6a0, 0x447acd4f,
+ 0x9370cae4, 0x43d09aec, 0x9306cb05, 0x4325c134, 0x929dd806, 0x427a41cf,
+ 0x9235f2ec, 0x41ce1e64, 0x91cf1cb7, 0x4121589a, 0x91695664, 0x4073f21c,
+ 0x9104a0ee, 0x3fc5ec97, 0x90a0fd4f, 0x3f1749b7, 0x903e6c7b, 0x3e680b2c,
+ 0x8fdcef67, 0x3db832a5, 0x8f7c8702, 0x3d07c1d5, 0x8f1d343a, 0x3c56ba6f,
+ 0x8ebef7fc, 0x3ba51e28, 0x8e61d32e, 0x3af2eeb6, 0x8e05c6b8, 0x3a402dd1,
+ 0x8daad37c, 0x398cdd31, 0x8d50fa5a, 0x38d8fe92, 0x8cf83c31, 0x382493af,
+ 0x8ca099da, 0x376f9e45, 0x8c4a1430, 0x36ba2013, 0x8bf4ac06, 0x36041ad8,
+ 0x8ba06230, 0x354d9056, 0x8b4d377d, 0x3496824f, 0x8afb2cbb, 0x33def286,
+ 0x8aaa42b5, 0x3326e2c2, 0x8a5a7a31, 0x326e54c7, 0x8a0bd3f6, 0x31b54a5d,
+ 0x89be50c4, 0x30fbc54c, 0x8971f15b, 0x3041c760, 0x8926b678, 0x2f875261,
+ 0x88dca0d3, 0x2ecc681d, 0x8893b125, 0x2e110a61, 0x884be821, 0x2d553afb,
+ 0x88054678, 0x2c98fbba, 0x87bfccd8, 0x2bdc4e6e, 0x877b7bed, 0x2b1f34eb,
+ 0x8738545f, 0x2a61b101, 0x86f656d4, 0x29a3c484, 0x86b583ef, 0x28e5714a,
+ 0x8675dc4f, 0x2826b927, 0x86376093, 0x27679df3, 0x85fa1153, 0x26a82185,
+ 0x85bdef28, 0x25e845b5, 0x8582faa5, 0x25280c5d, 0x8549345d, 0x24677757,
+ 0x85109cdd, 0x23a6887e, 0x84d934b1, 0x22e541ae, 0x84a2fc63, 0x2223a4c5,
+ 0x846df477, 0x2161b39f, 0x843a1d71, 0x209f701c, 0x840777d0, 0x1fdcdc1a,
+ 0x83d60412, 0x1f19f97a, 0x83a5c2b1, 0x1e56ca1d, 0x8376b423, 0x1d934fe5,
+ 0x8348d8dc, 0x1ccf8cb2, 0x831c314f, 0x1c0b826a, 0x82f0bde9, 0x1b4732ef,
+ 0x82c67f14, 0x1a82a025, 0x829d753b, 0x19bdcbf2, 0x8275a0c1, 0x18f8b83c,
+ 0x824f0209, 0x183366e8, 0x82299972, 0x176dd9de, 0x82056759, 0x16a81304,
+ 0x81e26c17, 0x15e21444, 0x81c0a802, 0x151bdf85, 0x81a01b6d, 0x145576b1,
+ 0x8180c6aa, 0x138edbb0, 0x8162aa04, 0x12c8106e, 0x8145c5c7, 0x120116d4,
+ 0x812a1a3a, 0x1139f0ce, 0x810fa7a1, 0x1072a047, 0x80f66e3d, 0x0fab272b,
+ 0x80de6e4d, 0x0ee38765, 0x80c7a80b, 0x0e1bc2e3, 0x80b21bb0, 0x0d53db92,
+ 0x809dc971, 0x0c8bd35d, 0x808ab181, 0x0bc3ac35, 0x8078d40e, 0x0afb6805,
+ 0x80683144, 0x0a3308bc, 0x8058c94c, 0x096a9049, 0x804a9c4e, 0x08a2009a,
+ 0x803daa6a, 0x07d95b9e, 0x8031f3c2, 0x0710a344, 0x80277873, 0x0647d97c,
+ 0x801e3895, 0x057f0034, 0x80163441, 0x04b6195d, 0x800f6b89, 0x03ed26e6,
+ 0x8009de7e, 0x03242abe, 0x80058d2f, 0x025b26d7, 0x800277a6, 0x01921d1f,
+ 0x80009dea, 0x00c90f87, 0x80000000, 0x00000000};
+
+const FLOAT32 ixheaacd_twiddle_table_fft[514] = {
+ 0.0000000000f, 1.0000000000f, -0.0061358842f, 0.9999811649f,
+ -0.0122715384f, 0.9999247193f, -0.0184067301f, 0.9998306036f,
+ -0.0245412290f, 0.9996988177f, -0.0306748040f, 0.9995294213f,
+ -0.0368072242f, 0.9993223548f, -0.0429382548f, 0.9990777373f,
+ -0.0490676761f, 0.9987954497f, -0.0551952422f, 0.9984755516f,
+ -0.0613207370f, 0.9981181026f, -0.0674439222f, 0.9977230430f,
+ -0.0735645667f, 0.9972904325f, -0.0796824396f, 0.9968202710f,
+ -0.0857973099f, 0.9963126183f, -0.0919089541f, 0.9957674146f,
+ -0.0980171412f, 0.9951847196f, -0.1041216329f, 0.9945645928f,
+ -0.1102222055f, 0.9939069748f, -0.1163186282f, 0.9932119250f,
+ -0.1224106774f, 0.9924795628f, -0.1284981072f, 0.9917097688f,
+ -0.1345807016f, 0.9909026623f, -0.1406582445f, 0.9900581837f,
+ -0.1467304677f, 0.9891765118f, -0.1527971923f, 0.9882575870f,
+ -0.1588581502f, 0.9873014092f, -0.1649131179f, 0.9863080978f,
+ -0.1709618866f, 0.9852776527f, -0.1770042181f, 0.9842100739f,
+ -0.1830398887f, 0.9831054807f, -0.1890686601f, 0.9819638729f,
+ -0.1950903237f, 0.9807852507f, -0.2011046410f, 0.9795697927f,
+ -0.2071113735f, 0.9783173800f, -0.2131103128f, 0.9770281315f,
+ -0.2191012353f, 0.9757021070f, -0.2250839174f, 0.9743393660f,
+ -0.2310581058f, 0.9729399681f, -0.2370236069f, 0.9715039134f,
+ -0.2429801822f, 0.9700312614f, -0.2489276081f, 0.9685220718f,
+ -0.2548656464f, 0.9669764638f, -0.2607941031f, 0.9653944373f,
+ -0.2667127550f, 0.9637760520f, -0.2726213634f, 0.9621214271f,
+ -0.2785196900f, 0.9604305029f, -0.2844075263f, 0.9587034583f,
+ -0.2902846634f, 0.9569403529f, -0.2961508930f, 0.9551411867f,
+ -0.3020059466f, 0.9533060193f, -0.3078496456f, 0.9514350295f,
+ -0.3136817515f, 0.9495281577f, -0.3195020258f, 0.9475855827f,
+ -0.3253102899f, 0.9456073046f, -0.3311063051f, 0.9435934424f,
+ -0.3368898630f, 0.9415440559f, -0.3426607251f, 0.9394592047f,
+ -0.3484186828f, 0.9373390079f, -0.3541635275f, 0.9351835251f,
+ -0.3598950505f, 0.9329928160f, -0.3656129837f, 0.9307669401f,
+ -0.3713172078f, 0.9285060763f, -0.3770074248f, 0.9262102246f,
+ -0.3826834261f, 0.9238795042f, -0.3883450329f, 0.9215140343f,
+ -0.3939920366f, 0.9191138744f, -0.3996241987f, 0.9166790843f,
+ -0.4052413106f, 0.9142097831f, -0.4108431637f, 0.9117060304f,
+ -0.4164295495f, 0.9091680050f, -0.4220002592f, 0.9065957069f,
+ -0.4275550842f, 0.9039893150f, -0.4330938160f, 0.9013488293f,
+ -0.4386162460f, 0.8986744881f, -0.4441221356f, 0.8959662318f,
+ -0.4496113360f, 0.8932242990f, -0.4550835788f, 0.8904487491f,
+ -0.4605387151f, 0.8876396418f, -0.4659765065f, 0.8847970963f,
+ -0.4713967443f, 0.8819212914f, -0.4767992198f, 0.8790122271f,
+ -0.4821837842f, 0.8760700822f, -0.4875501692f, 0.8730949759f,
+ -0.4928981960f, 0.8700869679f, -0.4982276559f, 0.8670462370f,
+ -0.5035383701f, 0.8639728427f, -0.5088301301f, 0.8608669639f,
+ -0.5141027570f, 0.8577286005f, -0.5193560123f, 0.8545579910f,
+ -0.5245896578f, 0.8513551950f, -0.5298036337f, 0.8481203318f,
+ -0.5349976420f, 0.8448535800f, -0.5401714444f, 0.8415549994f,
+ -0.5453249812f, 0.8382247090f, -0.5504579544f, 0.8348628879f,
+ -0.5555702448f, 0.8314695954f, -0.5606615543f, 0.8280450702f,
+ -0.5657318234f, 0.8245893121f, -0.5707807541f, 0.8211025000f,
+ -0.5758081675f, 0.8175848126f, -0.5808139443f, 0.8140363097f,
+ -0.5857978463f, 0.8104571700f, -0.5907596946f, 0.8068475723f,
+ -0.5956993103f, 0.8032075167f, -0.6006164551f, 0.7995372415f,
+ -0.6055110693f, 0.7958369255f, -0.6103827953f, 0.7921065688f,
+ -0.6152315736f, 0.7883464098f, -0.6200572252f, 0.7845565677f,
+ -0.6248595119f, 0.7807372212f, -0.6296382546f, 0.7768884897f,
+ -0.6343932748f, 0.7730104327f, -0.6391244531f, 0.7691033483f,
+ -0.6438315511f, 0.7651672363f, -0.6485143900f, 0.7612023950f,
+ -0.6531728506f, 0.7572088242f, -0.6578066945f, 0.7531868219f,
+ -0.6624158025f, 0.7491363883f, -0.6669999361f, 0.7450577617f,
+ -0.6715589762f, 0.7409511209f, -0.6760926843f, 0.7368165851f,
+ -0.6806010008f, 0.7326542735f, -0.6850836873f, 0.7284643650f,
+ -0.6895405650f, 0.7242470980f, -0.6939714551f, 0.7200025320f,
+ -0.6983762383f, 0.7157308459f, -0.7027547359f, 0.7114322186f,
+ -0.7071067691f, 0.7071067691f, -0.7114322186f, 0.7027547359f,
+ -0.7157308459f, 0.6983762383f, -0.7200025320f, 0.6939714551f,
+ -0.7242470980f, 0.6895405650f, -0.7284643650f, 0.6850836873f,
+ -0.7326542735f, 0.6806010008f, -0.7368165851f, 0.6760926843f,
+ -0.7409511209f, 0.6715589762f, -0.7450577617f, 0.6669999361f,
+ -0.7491363883f, 0.6624158025f, -0.7531868219f, 0.6578066945f,
+ -0.7572088242f, 0.6531728506f, -0.7612023950f, 0.6485143900f,
+ -0.7651672363f, 0.6438315511f, -0.7691033483f, 0.6391244531f,
+ -0.7730104327f, 0.6343932748f, -0.7768884897f, 0.6296382546f,
+ -0.7807372212f, 0.6248595119f, -0.7845565677f, 0.6200572252f,
+ -0.7883464098f, 0.6152315736f, -0.7921065688f, 0.6103827953f,
+ -0.7958369255f, 0.6055110693f, -0.7995372415f, 0.6006164551f,
+ -0.8032075167f, 0.5956993103f, -0.8068475723f, 0.5907596946f,
+ -0.8104571700f, 0.5857978463f, -0.8140363097f, 0.5808139443f,
+ -0.8175848126f, 0.5758081675f, -0.8211025000f, 0.5707807541f,
+ -0.8245893121f, 0.5657318234f, -0.8280450702f, 0.5606615543f,
+ -0.8314695954f, 0.5555702448f, -0.8348628879f, 0.5504579544f,
+ -0.8382247090f, 0.5453249812f, -0.8415549994f, 0.5401714444f,
+ -0.8448535800f, 0.5349976420f, -0.8481203318f, 0.5298036337f,
+ -0.8513551950f, 0.5245896578f, -0.8545579910f, 0.5193560123f,
+ -0.8577286005f, 0.5141027570f, -0.8608669639f, 0.5088301301f,
+ -0.8639728427f, 0.5035383701f, -0.8670462370f, 0.4982276559f,
+ -0.8700869679f, 0.4928981960f, -0.8730949759f, 0.4875501692f,
+ -0.8760700822f, 0.4821837842f, -0.8790122271f, 0.4767992198f,
+ -0.8819212914f, 0.4713967443f, -0.8847970963f, 0.4659765065f,
+ -0.8876396418f, 0.4605387151f, -0.8904487491f, 0.4550835788f,
+ -0.8932242990f, 0.4496113360f, -0.8959662318f, 0.4441221356f,
+ -0.8986744881f, 0.4386162460f, -0.9013488293f, 0.4330938160f,
+ -0.9039893150f, 0.4275550842f, -0.9065957069f, 0.4220002592f,
+ -0.9091680050f, 0.4164295495f, -0.9117060304f, 0.4108431637f,
+ -0.9142097831f, 0.4052413106f, -0.9166790843f, 0.3996241987f,
+ -0.9191138744f, 0.3939920366f, -0.9215140343f, 0.3883450329f,
+ -0.9238795042f, 0.3826834261f, -0.9262102246f, 0.3770074248f,
+ -0.9285060763f, 0.3713172078f, -0.9307669401f, 0.3656129837f,
+ -0.9329928160f, 0.3598950505f, -0.9351835251f, 0.3541635275f,
+ -0.9373390079f, 0.3484186828f, -0.9394592047f, 0.3426607251f,
+ -0.9415440559f, 0.3368898630f, -0.9435934424f, 0.3311063051f,
+ -0.9456073046f, 0.3253102899f, -0.9475855827f, 0.3195020258f,
+ -0.9495281577f, 0.3136817515f, -0.9514350295f, 0.3078496456f,
+ -0.9533060193f, 0.3020059466f, -0.9551411867f, 0.2961508930f,
+ -0.9569403529f, 0.2902846634f, -0.9587034583f, 0.2844075263f,
+ -0.9604305029f, 0.2785196900f, -0.9621214271f, 0.2726213634f,
+ -0.9637760520f, 0.2667127550f, -0.9653944373f, 0.2607941031f,
+ -0.9669764638f, 0.2548656464f, -0.9685220718f, 0.2489276081f,
+ -0.9700312614f, 0.2429801822f, -0.9715039134f, 0.2370236069f,
+ -0.9729399681f, 0.2310581058f, -0.9743393660f, 0.2250839174f,
+ -0.9757021070f, 0.2191012353f, -0.9770281315f, 0.2131103128f,
+ -0.9783173800f, 0.2071113735f, -0.9795697927f, 0.2011046410f,
+ -0.9807852507f, 0.1950903237f, -0.9819638729f, 0.1890686601f,
+ -0.9831054807f, 0.1830398887f, -0.9842100739f, 0.1770042181f,
+ -0.9852776527f, 0.1709618866f, -0.9863080978f, 0.1649131179f,
+ -0.9873014092f, 0.1588581502f, -0.9882575870f, 0.1527971923f,
+ -0.9891765118f, 0.1467304677f, -0.9900581837f, 0.1406582445f,
+ -0.9909026623f, 0.1345807016f, -0.9917097688f, 0.1284981072f,
+ -0.9924795628f, 0.1224106774f, -0.9932119250f, 0.1163186282f,
+ -0.9939069748f, 0.1102222055f, -0.9945645928f, 0.1041216329f,
+ -0.9951847196f, 0.0980171412f, -0.9957674146f, 0.0919089541f,
+ -0.9963126183f, 0.0857973099f, -0.9968202710f, 0.0796824396f,
+ -0.9972904325f, 0.0735645667f, -0.9977230430f, 0.0674439222f,
+ -0.9981181026f, 0.0613207370f, -0.9984755516f, 0.0551952422f,
+ -0.9987954497f, 0.0490676761f, -0.9990777373f, 0.0429382548f,
+ -0.9993223548f, 0.0368072242f, -0.9995294213f, 0.0306748040f,
+ -0.9996988177f, 0.0245412290f, -0.9998306036f, 0.0184067301f,
+ -0.9999247193f, 0.0122715384f, -0.9999811649f, 0.0061358842f,
+ -1.0000000000f, 0.0000000000f};
const FLOAT32 ixheaacd_twiddle_table_fft_flt[16] = {
- 1.000000f, -0.000000f, 0.980785f, -0.195090f, 0.923880f, -0.382683f,
- 0.831470f, -0.555570f, 0.707107f, -0.707107f, 0.555570f, -0.831470f,
- 0.382683f, -0.923880f, 0.195090f, -0.980785f};
+ 1.000000f, -0.000000f, 0.980785f, -0.195090f, 0.923880f, -0.382683f,
+ 0.831470f, -0.555570f, 0.707107f, -0.707107f, 0.555570f, -0.831470f,
+ 0.382683f, -0.923880f, 0.195090f, -0.980785f};
const WORD32 ixheaacd_twiddle_table_3pr[1155] = {
- 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7ffb9d14, 0x7fee74a1,
- 0x7fffffff, 0x7fee74a1, 0x7fb9d757, 0x7fffffff, 0x7fd8878c, 0x7f62368e,
- 0x7fffffff, 0x7fb9d757, 0x7ee7aa4a, 0x7fffffff, 0x7f92661c, 0x7e4a5425,
- 0x7fffffff, 0x7f62368e, 0x7d8a5f3e, 0x7fffffff, 0x7f294bfb, 0x7ca80037,
- 0x7fffffff, 0x7ee7aa4a, 0x7ba3751c, 0x7fffffff, 0x7e9d55fb, 0x7a7d055a,
- 0x7fffffff, 0x7e4a5425, 0x793501a7, 0x7fffffff, 0x7deeaa78, 0x77cbc3f0,
- 0x7fffffff, 0x7d8a5f3e, 0x7641af3b, 0x7fffffff, 0x7d1d7956, 0x74972f90,
- 0x7fffffff, 0x7ca80037, 0x72ccb9d9, 0x7fffffff, 0x7c29fbed, 0x70e2cbc5,
- 0x7fffffff, 0x7ba3751c, 0x6ed9eba0, 0x7fffffff, 0x7b1474fc, 0x6cb2a835,
- 0x7fffffff, 0x7a7d055a, 0x6a6d98a3, 0x7fffffff, 0x79dd3097, 0x680b5c32,
- 0x7fffffff, 0x793501a7, 0x658c9a2c, 0x7fffffff, 0x78848412, 0x62f201ab,
- 0x7fffffff, 0x77cbc3f0, 0x603c496b, 0x7fffffff, 0x770acdeb, 0x5d6c2f98,
- 0x7fffffff, 0x7641af3b, 0x5a827999, 0x7fffffff, 0x757075ab, 0x577ff3d9,
- 0x7fffffff, 0x74972f90, 0x54657193, 0x7fffffff, 0x73b5ebd0, 0x5133cc93,
- 0x7fffffff, 0x72ccb9d9, 0x4debe4fd, 0x7fffffff, 0x71dba9a9, 0x4a8ea110,
- 0x7fffffff, 0x70e2cbc5, 0x471cece6, 0x7fffffff, 0x6fe2313a, 0x4397ba31,
- 0x7fffffff, 0x6ed9eba0, 0x3fffffff, 0x7fffffff, 0x6dca0d13, 0x3c56ba6f,
- 0x7fffffff, 0x6cb2a835, 0x389cea71, 0x7fffffff, 0x6b93d02d, 0x34d3957d,
- 0x7fffffff, 0x6a6d98a3, 0x30fbc54c, 0x7fffffff, 0x694015c1, 0x2d168791,
- 0x7fffffff, 0x680b5c32, 0x2924edab, 0x7fffffff, 0x66cf811f, 0x25280c5d,
- 0x7fffffff, 0x658c9a2c, 0x2120fb82, 0x7fffffff, 0x6442bd7c, 0x1d10d5c1,
- 0x7fffffff, 0x62f201ab, 0x18f8b83c, 0x7fffffff, 0x619a7dcc, 0x14d9c245,
- 0x7fffffff, 0x603c496b, 0x10b5150f, 0x7fffffff, 0x5ed77c88, 0x0c8bd35d,
- 0x7fffffff, 0x5d6c2f98, 0x085f2136, 0x7fffffff, 0x5bfa7b81, 0x0430238f,
- 0x7fffffff, 0x5a827999, 0x00000000, 0x7fffffff, 0x590443a6, 0xfbcfdc71,
- 0x7fffffff, 0x577ff3d9, 0xf7a0deca, 0x7fffffff, 0x55f5a4d1, 0xf3742ca2,
- 0x7fffffff, 0x54657193, 0xef4aeaf1, 0x7fffffff, 0x52cf758d, 0xeb263dbb,
- 0x7fffffff, 0x5133cc93, 0xe70747c4, 0x7fffffff, 0x4f9292db, 0xe2ef2a3f,
- 0x7fffffff, 0x4debe4fd, 0xdedf047d, 0x7fffffff, 0x4c3fdff2, 0xdad7f3a3,
- 0x7fffffff, 0x4a8ea110, 0xd6db1255, 0x7fffffff, 0x48d84608, 0xd2e9786f,
- 0x7fffffff, 0x471cece6, 0xcf043ab3, 0x7fffffff, 0x455cb40b, 0xcb2c6a83,
- 0x7fffffff, 0x4397ba31, 0xc763158f, 0x7fffffff, 0x41ce1e64, 0xc3a94590,
- 0x7fffffff, 0x3fffffff, 0xc0000000, 0x7fffffff, 0x3e2d7eb0, 0xbc6845ce,
- 0x7fffffff, 0x3c56ba6f, 0xb8e3131a, 0x7fffffff, 0x3a7bd381, 0xb5715eef,
- 0x7fffffff, 0x389cea71, 0xb2141b02, 0x7fffffff, 0x36ba2013, 0xaecc336c,
- 0x7fffffff, 0x34d3957d, 0xab9a8e6c, 0x7fffffff, 0x32e96c08, 0xa8800c26,
- 0x7fffffff, 0x30fbc54c, 0xa57d8667, 0x7fffffff, 0x2f0ac31f, 0xa293d067,
- 0x7fffffff, 0x2d168791, 0x9fc3b694, 0x7fffffff, 0x2b1f34eb, 0x9d0dfe54,
- 0x7fffffff, 0x2924edab, 0x9a7365d3, 0x7fffffff, 0x2727d485, 0x97f4a3cd,
- 0x7fffffff, 0x25280c5d, 0x9592675c, 0x7fffffff, 0x2325b847, 0x934d57ca,
- 0x7fffffff, 0x2120fb82, 0x9126145f, 0x7fffffff, 0x1f19f97a, 0x8f1d343a,
- 0x7fffffff, 0x1d10d5c1, 0x8d334626, 0x7fffffff, 0x1b05b40e, 0x8b68d06f,
- 0x7fffffff, 0x18f8b83c, 0x89be50c4, 0x7fffffff, 0x16ea0646, 0x88343c0f,
- 0x7fffffff, 0x14d9c245, 0x86cafe58, 0x7fffffff, 0x12c8106e, 0x8582faa5,
- 0x7fffffff, 0x10b5150f, 0x845c8ae3, 0x7fffffff, 0x0ea0f48c, 0x8357ffc8,
- 0x7fffffff, 0x0c8bd35d, 0x8275a0c1, 0x7fffffff, 0x0a75d60e, 0x81b5abda,
- 0x7fffffff, 0x085f2136, 0x811855b5, 0x7fffffff, 0x0647d97c, 0x809dc971,
- 0x7fffffff, 0x0430238f, 0x804628a8, 0x7fffffff, 0x02182427, 0x80118b5e,
- 0x7fffffff, 0x00000000, 0x80000000, 0x7fffffff, 0xfde7dbd9, 0x80118b5e,
- 0x7fffffff, 0xfbcfdc71, 0x804628a8, 0x7fffffff, 0xf9b82684, 0x809dc971,
- 0x7fffffff, 0xf7a0deca, 0x811855b5, 0x7fffffff, 0xf58a29f2, 0x81b5abda,
- 0x7fffffff, 0xf3742ca2, 0x8275a0c1, 0x7fffffff, 0xf15f0b74, 0x8357ffc8,
- 0x7fffffff, 0xef4aeaf1, 0x845c8ae3, 0x7fffffff, 0xed37ef92, 0x8582faa5,
- 0x7fffffff, 0xeb263dbb, 0x86cafe58, 0x7fffffff, 0xe915f9ba, 0x88343c0f,
- 0x7fffffff, 0xe70747c4, 0x89be50c4, 0x7fffffff, 0xe4fa4bf2, 0x8b68d06f,
- 0x7fffffff, 0xe2ef2a3f, 0x8d334626, 0x7fffffff, 0xe0e60685, 0x8f1d343a,
- 0x7fffffff, 0xdedf047d, 0x9126145f, 0x7fffffff, 0xdcda47b9, 0x934d57ca,
- 0x7fffffff, 0xdad7f3a3, 0x9592675c, 0x7fffffff, 0xd8d82b7b, 0x97f4a3cd,
- 0x7fffffff, 0xd6db1255, 0x9a7365d3, 0x7fffffff, 0xd4e0cb15, 0x9d0dfe54,
- 0x7fffffff, 0xd2e9786f, 0x9fc3b694, 0x7fffffff, 0xd0f53ce0, 0xa293d067,
- 0x7fffffff, 0xcf043ab3, 0xa57d8667, 0x7fffffff, 0xcd1693f7, 0xa8800c26,
- 0x7fffffff, 0xcb2c6a83, 0xab9a8e6c, 0x7fffffff, 0xc945dfed, 0xaecc336c,
- 0x7fffffff, 0xc763158f, 0xb2141b02, 0x7fffffff, 0xc5842c7f, 0xb5715eef,
- 0x7fffffff, 0xc3a94590, 0xb8e3131a, 0x7fffffff, 0xc1d28150, 0xbc6845ce,
- 0x7fffffff, 0xc0000000, 0xc0000000, 0x7fffffff, 0xbe31e19c, 0xc3a94590,
- 0x7fffffff, 0xbc6845ce, 0xc763158f, 0x7fffffff, 0xbaa34bf4, 0xcb2c6a83,
- 0x7fffffff, 0xb8e3131a, 0xcf043ab3, 0x7fffffff, 0xb727b9f7, 0xd2e9786f,
- 0x7fffffff, 0xb5715eef, 0xd6db1255, 0x7fffffff, 0xb3c0200d, 0xdad7f3a3,
- 0x7fffffff, 0xb2141b02, 0xdedf047d, 0x7fffffff, 0xb06d6d25, 0xe2ef2a3f,
- 0x7fffffff, 0xaecc336c, 0xe70747c4, 0x7fffffff, 0xad308a72, 0xeb263dbb,
- 0x7fffffff, 0xab9a8e6c, 0xef4aeaf1, 0x7fffffff, 0xaa0a5b2e, 0xf3742ca2,
- 0x7fffffff, 0xa8800c26, 0xf7a0deca, 0x7fffffff, 0xa6fbbc5a, 0xfbcfdc71,
- 0x7fffffff, 0xa57d8667, 0x00000000, 0x7fffffff, 0xa405847f, 0x0430238f,
- 0x7fffffff, 0xa293d067, 0x085f2136, 0x7fffffff, 0xa1288377, 0x0c8bd35d,
- 0x7fffffff, 0x9fc3b694, 0x10b5150f, 0x7fffffff, 0x9e658233, 0x14d9c245,
- 0x7fffffff, 0x9d0dfe54, 0x18f8b83c, 0x7fffffff, 0x9bbd4283, 0x1d10d5c1,
- 0x7fffffff, 0x9a7365d3, 0x2120fb82, 0x7fffffff, 0x99307ee1, 0x25280c5d,
- 0x7fffffff, 0x97f4a3cd, 0x2924edab, 0x7fffffff, 0x96bfea3e, 0x2d168791,
- 0x7fffffff, 0x9592675c, 0x30fbc54c, 0x7fffffff, 0x946c2fd2, 0x34d3957d,
- 0x7fffffff, 0x934d57ca, 0x389cea71, 0x7fffffff, 0x9235f2ec, 0x3c56ba6f,
- 0x7fffffff, 0x9126145f, 0x3fffffff, 0x7fffffff, 0x901dcec5, 0x4397ba31,
- 0x7fffffff, 0x8f1d343a, 0x471cece6, 0x7fffffff, 0x8e245656, 0x4a8ea110,
- 0x7fffffff, 0x8d334626, 0x4debe4fd, 0x7fffffff, 0x8c4a1430, 0x5133cc93,
- 0x7fffffff, 0x8b68d06f, 0x54657193, 0x7fffffff, 0x8a8f8a54, 0x577ff3d9,
- 0x7fffffff, 0x89be50c4, 0x5a827999, 0x7fffffff, 0x88f53214, 0x5d6c2f98,
- 0x7fffffff, 0x88343c0f, 0x603c496b, 0x7fffffff, 0x877b7bed, 0x62f201ab,
- 0x7fffffff, 0x86cafe58, 0x658c9a2c, 0x7fffffff, 0x8622cf68, 0x680b5c32,
- 0x7fffffff, 0x8582faa5, 0x6a6d98a3, 0x7fffffff, 0x84eb8b03, 0x6cb2a835,
- 0x7fffffff, 0x845c8ae3, 0x6ed9eba0, 0x7fffffff, 0x83d60412, 0x70e2cbc5,
- 0x7fffffff, 0x8357ffc8, 0x72ccb9d9, 0x7fffffff, 0x82e286a9, 0x74972f90,
- 0x7fffffff, 0x8275a0c1, 0x7641af3b, 0x7fffffff, 0x82115587, 0x77cbc3f0,
- 0x7fffffff, 0x81b5abda, 0x793501a7, 0x7fffffff, 0x8162aa04, 0x7a7d055a,
- 0x7fffffff, 0x811855b5, 0x7ba3751c, 0x7fffffff, 0x80d6b404, 0x7ca80037,
- 0x7fffffff, 0x809dc971, 0x7d8a5f3e, 0x7fffffff, 0x806d99e3, 0x7e4a5425,
- 0x7fffffff, 0x804628a8, 0x7ee7aa4a, 0x7fffffff, 0x80277873, 0x7f62368e,
- 0x7fffffff, 0x80118b5e, 0x7fb9d757, 0x7fffffff, 0x800462eb, 0x7fee74a1,
- 0x7fffffff, 0x80000000, 0x7fffffff, 0x7fffffff, 0x800462eb, 0x7fee74a1,
- 0x7fffffff, 0x80118b5e, 0x7fb9d757, 0x7fffffff, 0x80277873, 0x7f62368e,
- 0x7fffffff, 0x804628a8, 0x7ee7aa4a, 0x7fffffff, 0x806d99e3, 0x7e4a5425,
- 0x7fffffff, 0x809dc971, 0x7d8a5f3e, 0x7fffffff, 0x80d6b404, 0x7ca80037,
- 0x7fffffff, 0x811855b5, 0x7ba3751c, 0x7fffffff, 0x8162aa04, 0x7a7d055a,
- 0x7fffffff, 0x81b5abda, 0x793501a7, 0x7fffffff, 0x82115587, 0x77cbc3f0,
- 0x7fffffff, 0x8275a0c1, 0x7641af3b, 0x7fffffff, 0x82e286a9, 0x74972f90,
- 0x7fffffff, 0x8357ffc8, 0x72ccb9d9, 0x7fffffff, 0x83d60412, 0x70e2cbc5,
- 0x7fffffff, 0x845c8ae3, 0x6ed9eba0, 0x7fffffff, 0x84eb8b03, 0x6cb2a835,
- 0x7fffffff, 0x8582faa5, 0x6a6d98a3, 0x7fffffff, 0x8622cf68, 0x680b5c32,
- 0x7fffffff, 0x86cafe58, 0x658c9a2c, 0x7fffffff, 0x877b7bed, 0x62f201ab,
- 0x7fffffff, 0x88343c0f, 0x603c496b, 0x7fffffff, 0x88f53214, 0x5d6c2f98,
- 0x7fffffff, 0x89be50c4, 0x5a827999, 0x7fffffff, 0x8a8f8a54, 0x577ff3d9,
- 0x7fffffff, 0x8b68d06f, 0x54657193, 0x7fffffff, 0x8c4a1430, 0x5133cc93,
- 0x7fffffff, 0x8d334626, 0x4debe4fd, 0x7fffffff, 0x8e245656, 0x4a8ea110,
- 0x7fffffff, 0x8f1d343a, 0x471cece6, 0x7fffffff, 0x901dcec5, 0x4397ba31,
- 0x7fffffff, 0x9126145f, 0x3fffffff, 0x7fffffff, 0x9235f2ec, 0x3c56ba6f,
- 0x7fffffff, 0x934d57ca, 0x389cea71, 0x7fffffff, 0x946c2fd2, 0x34d3957d,
- 0x7fffffff, 0x9592675c, 0x30fbc54c, 0x7fffffff, 0x96bfea3e, 0x2d168791,
- 0x7fffffff, 0x97f4a3cd, 0x2924edab, 0x7fffffff, 0x99307ee1, 0x25280c5d,
- 0x7fffffff, 0x9a7365d3, 0x2120fb82, 0x7fffffff, 0x9bbd4283, 0x1d10d5c1,
- 0x7fffffff, 0x9d0dfe54, 0x18f8b83c, 0x7fffffff, 0x9e658233, 0x14d9c245,
- 0x7fffffff, 0x9fc3b694, 0x10b5150f, 0x7fffffff, 0xa1288377, 0x0c8bd35d,
- 0x7fffffff, 0xa293d067, 0x085f2136, 0x7fffffff, 0xa405847f, 0x0430238f,
- 0x7fffffff, 0xa57d8667, 0x00000000, 0x7fffffff, 0xa6fbbc5a, 0xfbcfdc71,
- 0x7fffffff, 0xa8800c26, 0xf7a0deca, 0x7fffffff, 0xaa0a5b2e, 0xf3742ca2,
- 0x7fffffff, 0xab9a8e6c, 0xef4aeaf1, 0x7fffffff, 0xad308a72, 0xeb263dbb,
- 0x7fffffff, 0xaecc336c, 0xe70747c4, 0x7fffffff, 0xb06d6d25, 0xe2ef2a3f,
- 0x7fffffff, 0xb2141b02, 0xdedf047d, 0x7fffffff, 0xb3c0200d, 0xdad7f3a3,
- 0x7fffffff, 0xb5715eef, 0xd6db1255, 0x7fffffff, 0xb727b9f7, 0xd2e9786f,
- 0x7fffffff, 0xb8e3131a, 0xcf043ab3, 0x7fffffff, 0xbaa34bf4, 0xcb2c6a83,
- 0x7fffffff, 0xbc6845ce, 0xc763158f, 0x7fffffff, 0xbe31e19c, 0xc3a94590,
- 0x7fffffff, 0xc0000000, 0xc0000000, 0x7fffffff, 0xc1d28150, 0xbc6845ce,
- 0x7fffffff, 0xc3a94590, 0xb8e3131a, 0x7fffffff, 0xc5842c7f, 0xb5715eef,
- 0x7fffffff, 0xc763158f, 0xb2141b02, 0x7fffffff, 0xc945dfed, 0xaecc336c,
- 0x7fffffff, 0xcb2c6a83, 0xab9a8e6c, 0x7fffffff, 0xcd1693f7, 0xa8800c26,
- 0x7fffffff, 0xcf043ab3, 0xa57d8667, 0x7fffffff, 0xd0f53ce0, 0xa293d067,
- 0x7fffffff, 0xd2e9786f, 0x9fc3b694, 0x7fffffff, 0xd4e0cb15, 0x9d0dfe54,
- 0x7fffffff, 0xd6db1255, 0x9a7365d3, 0x7fffffff, 0xd8d82b7b, 0x97f4a3cd,
- 0x7fffffff, 0xdad7f3a3, 0x9592675c, 0x7fffffff, 0xdcda47b9, 0x934d57ca,
- 0x7fffffff, 0xdedf047d, 0x9126145f, 0x7fffffff, 0xe0e60685, 0x8f1d343a,
- 0x7fffffff, 0xe2ef2a3f, 0x8d334626, 0x7fffffff, 0xe4fa4bf2, 0x8b68d06f,
- 0x7fffffff, 0xe70747c4, 0x89be50c4, 0x7fffffff, 0xe915f9ba, 0x88343c0f,
- 0x7fffffff, 0xeb263dbb, 0x86cafe58, 0x7fffffff, 0xed37ef92, 0x8582faa5,
- 0x7fffffff, 0xef4aeaf1, 0x845c8ae3, 0x7fffffff, 0xf15f0b74, 0x8357ffc8,
- 0x7fffffff, 0xf3742ca2, 0x8275a0c1, 0x7fffffff, 0xf58a29f2, 0x81b5abda,
- 0x7fffffff, 0xf7a0deca, 0x811855b5, 0x7fffffff, 0xf9b82684, 0x809dc971,
- 0x7fffffff, 0xfbcfdc71, 0x804628a8, 0x7fffffff, 0xfde7dbd9, 0x80118b5e,
- 0x7fffffff, 0x00000000, 0x80000000, 0x7fffffff, 0x02182427, 0x80118b5e,
- 0x7fffffff, 0x0430238f, 0x804628a8, 0x7fffffff, 0x0647d97c, 0x809dc971,
- 0x7fffffff, 0x085f2136, 0x811855b5, 0x7fffffff, 0x0a75d60e, 0x81b5abda,
- 0x7fffffff, 0x0c8bd35d, 0x8275a0c1, 0x7fffffff, 0x0ea0f48c, 0x8357ffc8,
- 0x7fffffff, 0x10b5150f, 0x845c8ae3, 0x7fffffff, 0x12c8106e, 0x8582faa5,
- 0x7fffffff, 0x14d9c245, 0x86cafe58, 0x7fffffff, 0x16ea0646, 0x88343c0f,
- 0x7fffffff, 0x18f8b83c, 0x89be50c4, 0x7fffffff, 0x1b05b40e, 0x8b68d06f,
- 0x7fffffff, 0x1d10d5c1, 0x8d334626, 0x7fffffff, 0x1f19f97a, 0x8f1d343a,
- 0x7fffffff, 0x2120fb82, 0x9126145f, 0x7fffffff, 0x2325b847, 0x934d57ca,
- 0x7fffffff, 0x25280c5d, 0x9592675c, 0x7fffffff, 0x2727d485, 0x97f4a3cd,
- 0x7fffffff, 0x2924edab, 0x9a7365d3, 0x7fffffff, 0x2b1f34eb, 0x9d0dfe54,
- 0x7fffffff, 0x2d168791, 0x9fc3b694, 0x7fffffff, 0x2f0ac31f, 0xa293d067,
- 0x7fffffff, 0x30fbc54c, 0xa57d8667, 0x7fffffff, 0x32e96c08, 0xa8800c26,
- 0x7fffffff, 0x34d3957d, 0xab9a8e6c, 0x7fffffff, 0x36ba2013, 0xaecc336c,
- 0x7fffffff, 0x389cea71, 0xb2141b02, 0x7fffffff, 0x3a7bd381, 0xb5715eef,
- 0x7fffffff, 0x3c56ba6f, 0xb8e3131a, 0x7fffffff, 0x3e2d7eb0, 0xbc6845ce,
- 0x7fffffff, 0x3fffffff, 0xc0000000, 0x7fffffff, 0x41ce1e64, 0xc3a94590,
- 0x7fffffff, 0x4397ba31, 0xc763158f, 0x7fffffff, 0x455cb40b, 0xcb2c6a83,
- 0x7fffffff, 0x471cece6, 0xcf043ab3, 0x7fffffff, 0x48d84608, 0xd2e9786f,
- 0x7fffffff, 0x4a8ea110, 0xd6db1255, 0x7fffffff, 0x4c3fdff2, 0xdad7f3a3,
- 0x7fffffff, 0x4debe4fd, 0xdedf047d, 0x7fffffff, 0x4f9292db, 0xe2ef2a3f,
- 0x7fffffff, 0x5133cc93, 0xe70747c4, 0x7fffffff, 0x52cf758d, 0xeb263dbb,
- 0x7fffffff, 0x54657193, 0xef4aeaf1, 0x7fffffff, 0x55f5a4d1, 0xf3742ca2,
- 0x7fffffff, 0x577ff3d9, 0xf7a0deca, 0x7fffffff, 0x590443a6, 0xfbcfdc71,
- 0x7fffffff, 0x5a827999, 0x00000000, 0x7fffffff, 0x5bfa7b81, 0x0430238f,
- 0x7fffffff, 0x5d6c2f98, 0x085f2136, 0x7fffffff, 0x5ed77c88, 0x0c8bd35d,
- 0x7fffffff, 0x603c496b, 0x10b5150f, 0x7fffffff, 0x619a7dcc, 0x14d9c245,
- 0x7fffffff, 0x62f201ab, 0x18f8b83c, 0x7fffffff, 0x6442bd7c, 0x1d10d5c1,
- 0x7fffffff, 0x658c9a2c, 0x2120fb82, 0x7fffffff, 0x66cf811f, 0x25280c5d,
- 0x7fffffff, 0x680b5c32, 0x2924edab, 0x7fffffff, 0x694015c1, 0x2d168791,
- 0x7fffffff, 0x6a6d98a3, 0x30fbc54c, 0x7fffffff, 0x6b93d02d, 0x34d3957d,
- 0x7fffffff, 0x6cb2a835, 0x389cea71, 0x7fffffff, 0x6dca0d13, 0x3c56ba6f,
- 0x7fffffff, 0x6ed9eba0, 0x3fffffff, 0x7fffffff, 0x6fe2313a, 0x4397ba31,
- 0x7fffffff, 0x70e2cbc5, 0x471cece6, 0x7fffffff, 0x71dba9a9, 0x4a8ea110,
- 0x7fffffff, 0x72ccb9d9, 0x4debe4fd, 0x7fffffff, 0x73b5ebd0, 0x5133cc93,
- 0x7fffffff, 0x74972f90, 0x54657193, 0x7fffffff, 0x757075ab, 0x577ff3d9,
- 0x7fffffff, 0x7641af3b, 0x5a827999, 0x7fffffff, 0x770acdeb, 0x5d6c2f98,
- 0x7fffffff, 0x77cbc3f0, 0x603c496b, 0x7fffffff, 0x78848412, 0x62f201ab,
- 0x7fffffff, 0x793501a7, 0x658c9a2c, 0x7fffffff, 0x79dd3097, 0x680b5c32,
- 0x7fffffff, 0x7a7d055a, 0x6a6d98a3, 0x7fffffff, 0x7b1474fc, 0x6cb2a835,
- 0x7fffffff, 0x7ba3751c, 0x6ed9eba0, 0x7fffffff, 0x7c29fbed, 0x70e2cbc5,
- 0x7fffffff, 0x7ca80037, 0x72ccb9d9, 0x7fffffff, 0x7d1d7956, 0x74972f90,
- 0x7fffffff, 0x7d8a5f3e, 0x7641af3b, 0x7fffffff, 0x7deeaa78, 0x77cbc3f0,
- 0x7fffffff, 0x7e4a5425, 0x793501a7, 0x7fffffff, 0x7e9d55fb, 0x7a7d055a,
- 0x7fffffff, 0x7ee7aa4a, 0x7ba3751c, 0x7fffffff, 0x7f294bfb, 0x7ca80037,
- 0x7fffffff, 0x7f62368e, 0x7d8a5f3e, 0x7fffffff, 0x7f92661c, 0x7e4a5425,
- 0x7fffffff, 0x7fb9d757, 0x7ee7aa4a, 0x7fffffff, 0x7fd8878c, 0x7f62368e,
- 0x7fffffff, 0x7fee74a1, 0x7fb9d757, 0x7fffffff, 0x7ffb9d14, 0x7fee74a1,
- 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7ffb9d14, 0x7fee74a1,
+ 0x7fffffff, 0x7fee74a1, 0x7fb9d757, 0x7fffffff, 0x7fd8878c, 0x7f62368e,
+ 0x7fffffff, 0x7fb9d757, 0x7ee7aa4a, 0x7fffffff, 0x7f92661c, 0x7e4a5425,
+ 0x7fffffff, 0x7f62368e, 0x7d8a5f3e, 0x7fffffff, 0x7f294bfb, 0x7ca80037,
+ 0x7fffffff, 0x7ee7aa4a, 0x7ba3751c, 0x7fffffff, 0x7e9d55fb, 0x7a7d055a,
+ 0x7fffffff, 0x7e4a5425, 0x793501a7, 0x7fffffff, 0x7deeaa78, 0x77cbc3f0,
+ 0x7fffffff, 0x7d8a5f3e, 0x7641af3b, 0x7fffffff, 0x7d1d7956, 0x74972f90,
+ 0x7fffffff, 0x7ca80037, 0x72ccb9d9, 0x7fffffff, 0x7c29fbed, 0x70e2cbc5,
+ 0x7fffffff, 0x7ba3751c, 0x6ed9eba0, 0x7fffffff, 0x7b1474fc, 0x6cb2a835,
+ 0x7fffffff, 0x7a7d055a, 0x6a6d98a3, 0x7fffffff, 0x79dd3097, 0x680b5c32,
+ 0x7fffffff, 0x793501a7, 0x658c9a2c, 0x7fffffff, 0x78848412, 0x62f201ab,
+ 0x7fffffff, 0x77cbc3f0, 0x603c496b, 0x7fffffff, 0x770acdeb, 0x5d6c2f98,
+ 0x7fffffff, 0x7641af3b, 0x5a827999, 0x7fffffff, 0x757075ab, 0x577ff3d9,
+ 0x7fffffff, 0x74972f90, 0x54657193, 0x7fffffff, 0x73b5ebd0, 0x5133cc93,
+ 0x7fffffff, 0x72ccb9d9, 0x4debe4fd, 0x7fffffff, 0x71dba9a9, 0x4a8ea110,
+ 0x7fffffff, 0x70e2cbc5, 0x471cece6, 0x7fffffff, 0x6fe2313a, 0x4397ba31,
+ 0x7fffffff, 0x6ed9eba0, 0x3fffffff, 0x7fffffff, 0x6dca0d13, 0x3c56ba6f,
+ 0x7fffffff, 0x6cb2a835, 0x389cea71, 0x7fffffff, 0x6b93d02d, 0x34d3957d,
+ 0x7fffffff, 0x6a6d98a3, 0x30fbc54c, 0x7fffffff, 0x694015c1, 0x2d168791,
+ 0x7fffffff, 0x680b5c32, 0x2924edab, 0x7fffffff, 0x66cf811f, 0x25280c5d,
+ 0x7fffffff, 0x658c9a2c, 0x2120fb82, 0x7fffffff, 0x6442bd7c, 0x1d10d5c1,
+ 0x7fffffff, 0x62f201ab, 0x18f8b83c, 0x7fffffff, 0x619a7dcc, 0x14d9c245,
+ 0x7fffffff, 0x603c496b, 0x10b5150f, 0x7fffffff, 0x5ed77c88, 0x0c8bd35d,
+ 0x7fffffff, 0x5d6c2f98, 0x085f2136, 0x7fffffff, 0x5bfa7b81, 0x0430238f,
+ 0x7fffffff, 0x5a827999, 0x00000000, 0x7fffffff, 0x590443a6, 0xfbcfdc71,
+ 0x7fffffff, 0x577ff3d9, 0xf7a0deca, 0x7fffffff, 0x55f5a4d1, 0xf3742ca2,
+ 0x7fffffff, 0x54657193, 0xef4aeaf1, 0x7fffffff, 0x52cf758d, 0xeb263dbb,
+ 0x7fffffff, 0x5133cc93, 0xe70747c4, 0x7fffffff, 0x4f9292db, 0xe2ef2a3f,
+ 0x7fffffff, 0x4debe4fd, 0xdedf047d, 0x7fffffff, 0x4c3fdff2, 0xdad7f3a3,
+ 0x7fffffff, 0x4a8ea110, 0xd6db1255, 0x7fffffff, 0x48d84608, 0xd2e9786f,
+ 0x7fffffff, 0x471cece6, 0xcf043ab3, 0x7fffffff, 0x455cb40b, 0xcb2c6a83,
+ 0x7fffffff, 0x4397ba31, 0xc763158f, 0x7fffffff, 0x41ce1e64, 0xc3a94590,
+ 0x7fffffff, 0x3fffffff, 0xc0000000, 0x7fffffff, 0x3e2d7eb0, 0xbc6845ce,
+ 0x7fffffff, 0x3c56ba6f, 0xb8e3131a, 0x7fffffff, 0x3a7bd381, 0xb5715eef,
+ 0x7fffffff, 0x389cea71, 0xb2141b02, 0x7fffffff, 0x36ba2013, 0xaecc336c,
+ 0x7fffffff, 0x34d3957d, 0xab9a8e6c, 0x7fffffff, 0x32e96c08, 0xa8800c26,
+ 0x7fffffff, 0x30fbc54c, 0xa57d8667, 0x7fffffff, 0x2f0ac31f, 0xa293d067,
+ 0x7fffffff, 0x2d168791, 0x9fc3b694, 0x7fffffff, 0x2b1f34eb, 0x9d0dfe54,
+ 0x7fffffff, 0x2924edab, 0x9a7365d3, 0x7fffffff, 0x2727d485, 0x97f4a3cd,
+ 0x7fffffff, 0x25280c5d, 0x9592675c, 0x7fffffff, 0x2325b847, 0x934d57ca,
+ 0x7fffffff, 0x2120fb82, 0x9126145f, 0x7fffffff, 0x1f19f97a, 0x8f1d343a,
+ 0x7fffffff, 0x1d10d5c1, 0x8d334626, 0x7fffffff, 0x1b05b40e, 0x8b68d06f,
+ 0x7fffffff, 0x18f8b83c, 0x89be50c4, 0x7fffffff, 0x16ea0646, 0x88343c0f,
+ 0x7fffffff, 0x14d9c245, 0x86cafe58, 0x7fffffff, 0x12c8106e, 0x8582faa5,
+ 0x7fffffff, 0x10b5150f, 0x845c8ae3, 0x7fffffff, 0x0ea0f48c, 0x8357ffc8,
+ 0x7fffffff, 0x0c8bd35d, 0x8275a0c1, 0x7fffffff, 0x0a75d60e, 0x81b5abda,
+ 0x7fffffff, 0x085f2136, 0x811855b5, 0x7fffffff, 0x0647d97c, 0x809dc971,
+ 0x7fffffff, 0x0430238f, 0x804628a8, 0x7fffffff, 0x02182427, 0x80118b5e,
+ 0x7fffffff, 0x00000000, 0x80000000, 0x7fffffff, 0xfde7dbd9, 0x80118b5e,
+ 0x7fffffff, 0xfbcfdc71, 0x804628a8, 0x7fffffff, 0xf9b82684, 0x809dc971,
+ 0x7fffffff, 0xf7a0deca, 0x811855b5, 0x7fffffff, 0xf58a29f2, 0x81b5abda,
+ 0x7fffffff, 0xf3742ca2, 0x8275a0c1, 0x7fffffff, 0xf15f0b74, 0x8357ffc8,
+ 0x7fffffff, 0xef4aeaf1, 0x845c8ae3, 0x7fffffff, 0xed37ef92, 0x8582faa5,
+ 0x7fffffff, 0xeb263dbb, 0x86cafe58, 0x7fffffff, 0xe915f9ba, 0x88343c0f,
+ 0x7fffffff, 0xe70747c4, 0x89be50c4, 0x7fffffff, 0xe4fa4bf2, 0x8b68d06f,
+ 0x7fffffff, 0xe2ef2a3f, 0x8d334626, 0x7fffffff, 0xe0e60685, 0x8f1d343a,
+ 0x7fffffff, 0xdedf047d, 0x9126145f, 0x7fffffff, 0xdcda47b9, 0x934d57ca,
+ 0x7fffffff, 0xdad7f3a3, 0x9592675c, 0x7fffffff, 0xd8d82b7b, 0x97f4a3cd,
+ 0x7fffffff, 0xd6db1255, 0x9a7365d3, 0x7fffffff, 0xd4e0cb15, 0x9d0dfe54,
+ 0x7fffffff, 0xd2e9786f, 0x9fc3b694, 0x7fffffff, 0xd0f53ce0, 0xa293d067,
+ 0x7fffffff, 0xcf043ab3, 0xa57d8667, 0x7fffffff, 0xcd1693f7, 0xa8800c26,
+ 0x7fffffff, 0xcb2c6a83, 0xab9a8e6c, 0x7fffffff, 0xc945dfed, 0xaecc336c,
+ 0x7fffffff, 0xc763158f, 0xb2141b02, 0x7fffffff, 0xc5842c7f, 0xb5715eef,
+ 0x7fffffff, 0xc3a94590, 0xb8e3131a, 0x7fffffff, 0xc1d28150, 0xbc6845ce,
+ 0x7fffffff, 0xc0000000, 0xc0000000, 0x7fffffff, 0xbe31e19c, 0xc3a94590,
+ 0x7fffffff, 0xbc6845ce, 0xc763158f, 0x7fffffff, 0xbaa34bf4, 0xcb2c6a83,
+ 0x7fffffff, 0xb8e3131a, 0xcf043ab3, 0x7fffffff, 0xb727b9f7, 0xd2e9786f,
+ 0x7fffffff, 0xb5715eef, 0xd6db1255, 0x7fffffff, 0xb3c0200d, 0xdad7f3a3,
+ 0x7fffffff, 0xb2141b02, 0xdedf047d, 0x7fffffff, 0xb06d6d25, 0xe2ef2a3f,
+ 0x7fffffff, 0xaecc336c, 0xe70747c4, 0x7fffffff, 0xad308a72, 0xeb263dbb,
+ 0x7fffffff, 0xab9a8e6c, 0xef4aeaf1, 0x7fffffff, 0xaa0a5b2e, 0xf3742ca2,
+ 0x7fffffff, 0xa8800c26, 0xf7a0deca, 0x7fffffff, 0xa6fbbc5a, 0xfbcfdc71,
+ 0x7fffffff, 0xa57d8667, 0x00000000, 0x7fffffff, 0xa405847f, 0x0430238f,
+ 0x7fffffff, 0xa293d067, 0x085f2136, 0x7fffffff, 0xa1288377, 0x0c8bd35d,
+ 0x7fffffff, 0x9fc3b694, 0x10b5150f, 0x7fffffff, 0x9e658233, 0x14d9c245,
+ 0x7fffffff, 0x9d0dfe54, 0x18f8b83c, 0x7fffffff, 0x9bbd4283, 0x1d10d5c1,
+ 0x7fffffff, 0x9a7365d3, 0x2120fb82, 0x7fffffff, 0x99307ee1, 0x25280c5d,
+ 0x7fffffff, 0x97f4a3cd, 0x2924edab, 0x7fffffff, 0x96bfea3e, 0x2d168791,
+ 0x7fffffff, 0x9592675c, 0x30fbc54c, 0x7fffffff, 0x946c2fd2, 0x34d3957d,
+ 0x7fffffff, 0x934d57ca, 0x389cea71, 0x7fffffff, 0x9235f2ec, 0x3c56ba6f,
+ 0x7fffffff, 0x9126145f, 0x3fffffff, 0x7fffffff, 0x901dcec5, 0x4397ba31,
+ 0x7fffffff, 0x8f1d343a, 0x471cece6, 0x7fffffff, 0x8e245656, 0x4a8ea110,
+ 0x7fffffff, 0x8d334626, 0x4debe4fd, 0x7fffffff, 0x8c4a1430, 0x5133cc93,
+ 0x7fffffff, 0x8b68d06f, 0x54657193, 0x7fffffff, 0x8a8f8a54, 0x577ff3d9,
+ 0x7fffffff, 0x89be50c4, 0x5a827999, 0x7fffffff, 0x88f53214, 0x5d6c2f98,
+ 0x7fffffff, 0x88343c0f, 0x603c496b, 0x7fffffff, 0x877b7bed, 0x62f201ab,
+ 0x7fffffff, 0x86cafe58, 0x658c9a2c, 0x7fffffff, 0x8622cf68, 0x680b5c32,
+ 0x7fffffff, 0x8582faa5, 0x6a6d98a3, 0x7fffffff, 0x84eb8b03, 0x6cb2a835,
+ 0x7fffffff, 0x845c8ae3, 0x6ed9eba0, 0x7fffffff, 0x83d60412, 0x70e2cbc5,
+ 0x7fffffff, 0x8357ffc8, 0x72ccb9d9, 0x7fffffff, 0x82e286a9, 0x74972f90,
+ 0x7fffffff, 0x8275a0c1, 0x7641af3b, 0x7fffffff, 0x82115587, 0x77cbc3f0,
+ 0x7fffffff, 0x81b5abda, 0x793501a7, 0x7fffffff, 0x8162aa04, 0x7a7d055a,
+ 0x7fffffff, 0x811855b5, 0x7ba3751c, 0x7fffffff, 0x80d6b404, 0x7ca80037,
+ 0x7fffffff, 0x809dc971, 0x7d8a5f3e, 0x7fffffff, 0x806d99e3, 0x7e4a5425,
+ 0x7fffffff, 0x804628a8, 0x7ee7aa4a, 0x7fffffff, 0x80277873, 0x7f62368e,
+ 0x7fffffff, 0x80118b5e, 0x7fb9d757, 0x7fffffff, 0x800462eb, 0x7fee74a1,
+ 0x7fffffff, 0x80000000, 0x7fffffff, 0x7fffffff, 0x800462eb, 0x7fee74a1,
+ 0x7fffffff, 0x80118b5e, 0x7fb9d757, 0x7fffffff, 0x80277873, 0x7f62368e,
+ 0x7fffffff, 0x804628a8, 0x7ee7aa4a, 0x7fffffff, 0x806d99e3, 0x7e4a5425,
+ 0x7fffffff, 0x809dc971, 0x7d8a5f3e, 0x7fffffff, 0x80d6b404, 0x7ca80037,
+ 0x7fffffff, 0x811855b5, 0x7ba3751c, 0x7fffffff, 0x8162aa04, 0x7a7d055a,
+ 0x7fffffff, 0x81b5abda, 0x793501a7, 0x7fffffff, 0x82115587, 0x77cbc3f0,
+ 0x7fffffff, 0x8275a0c1, 0x7641af3b, 0x7fffffff, 0x82e286a9, 0x74972f90,
+ 0x7fffffff, 0x8357ffc8, 0x72ccb9d9, 0x7fffffff, 0x83d60412, 0x70e2cbc5,
+ 0x7fffffff, 0x845c8ae3, 0x6ed9eba0, 0x7fffffff, 0x84eb8b03, 0x6cb2a835,
+ 0x7fffffff, 0x8582faa5, 0x6a6d98a3, 0x7fffffff, 0x8622cf68, 0x680b5c32,
+ 0x7fffffff, 0x86cafe58, 0x658c9a2c, 0x7fffffff, 0x877b7bed, 0x62f201ab,
+ 0x7fffffff, 0x88343c0f, 0x603c496b, 0x7fffffff, 0x88f53214, 0x5d6c2f98,
+ 0x7fffffff, 0x89be50c4, 0x5a827999, 0x7fffffff, 0x8a8f8a54, 0x577ff3d9,
+ 0x7fffffff, 0x8b68d06f, 0x54657193, 0x7fffffff, 0x8c4a1430, 0x5133cc93,
+ 0x7fffffff, 0x8d334626, 0x4debe4fd, 0x7fffffff, 0x8e245656, 0x4a8ea110,
+ 0x7fffffff, 0x8f1d343a, 0x471cece6, 0x7fffffff, 0x901dcec5, 0x4397ba31,
+ 0x7fffffff, 0x9126145f, 0x3fffffff, 0x7fffffff, 0x9235f2ec, 0x3c56ba6f,
+ 0x7fffffff, 0x934d57ca, 0x389cea71, 0x7fffffff, 0x946c2fd2, 0x34d3957d,
+ 0x7fffffff, 0x9592675c, 0x30fbc54c, 0x7fffffff, 0x96bfea3e, 0x2d168791,
+ 0x7fffffff, 0x97f4a3cd, 0x2924edab, 0x7fffffff, 0x99307ee1, 0x25280c5d,
+ 0x7fffffff, 0x9a7365d3, 0x2120fb82, 0x7fffffff, 0x9bbd4283, 0x1d10d5c1,
+ 0x7fffffff, 0x9d0dfe54, 0x18f8b83c, 0x7fffffff, 0x9e658233, 0x14d9c245,
+ 0x7fffffff, 0x9fc3b694, 0x10b5150f, 0x7fffffff, 0xa1288377, 0x0c8bd35d,
+ 0x7fffffff, 0xa293d067, 0x085f2136, 0x7fffffff, 0xa405847f, 0x0430238f,
+ 0x7fffffff, 0xa57d8667, 0x00000000, 0x7fffffff, 0xa6fbbc5a, 0xfbcfdc71,
+ 0x7fffffff, 0xa8800c26, 0xf7a0deca, 0x7fffffff, 0xaa0a5b2e, 0xf3742ca2,
+ 0x7fffffff, 0xab9a8e6c, 0xef4aeaf1, 0x7fffffff, 0xad308a72, 0xeb263dbb,
+ 0x7fffffff, 0xaecc336c, 0xe70747c4, 0x7fffffff, 0xb06d6d25, 0xe2ef2a3f,
+ 0x7fffffff, 0xb2141b02, 0xdedf047d, 0x7fffffff, 0xb3c0200d, 0xdad7f3a3,
+ 0x7fffffff, 0xb5715eef, 0xd6db1255, 0x7fffffff, 0xb727b9f7, 0xd2e9786f,
+ 0x7fffffff, 0xb8e3131a, 0xcf043ab3, 0x7fffffff, 0xbaa34bf4, 0xcb2c6a83,
+ 0x7fffffff, 0xbc6845ce, 0xc763158f, 0x7fffffff, 0xbe31e19c, 0xc3a94590,
+ 0x7fffffff, 0xc0000000, 0xc0000000, 0x7fffffff, 0xc1d28150, 0xbc6845ce,
+ 0x7fffffff, 0xc3a94590, 0xb8e3131a, 0x7fffffff, 0xc5842c7f, 0xb5715eef,
+ 0x7fffffff, 0xc763158f, 0xb2141b02, 0x7fffffff, 0xc945dfed, 0xaecc336c,
+ 0x7fffffff, 0xcb2c6a83, 0xab9a8e6c, 0x7fffffff, 0xcd1693f7, 0xa8800c26,
+ 0x7fffffff, 0xcf043ab3, 0xa57d8667, 0x7fffffff, 0xd0f53ce0, 0xa293d067,
+ 0x7fffffff, 0xd2e9786f, 0x9fc3b694, 0x7fffffff, 0xd4e0cb15, 0x9d0dfe54,
+ 0x7fffffff, 0xd6db1255, 0x9a7365d3, 0x7fffffff, 0xd8d82b7b, 0x97f4a3cd,
+ 0x7fffffff, 0xdad7f3a3, 0x9592675c, 0x7fffffff, 0xdcda47b9, 0x934d57ca,
+ 0x7fffffff, 0xdedf047d, 0x9126145f, 0x7fffffff, 0xe0e60685, 0x8f1d343a,
+ 0x7fffffff, 0xe2ef2a3f, 0x8d334626, 0x7fffffff, 0xe4fa4bf2, 0x8b68d06f,
+ 0x7fffffff, 0xe70747c4, 0x89be50c4, 0x7fffffff, 0xe915f9ba, 0x88343c0f,
+ 0x7fffffff, 0xeb263dbb, 0x86cafe58, 0x7fffffff, 0xed37ef92, 0x8582faa5,
+ 0x7fffffff, 0xef4aeaf1, 0x845c8ae3, 0x7fffffff, 0xf15f0b74, 0x8357ffc8,
+ 0x7fffffff, 0xf3742ca2, 0x8275a0c1, 0x7fffffff, 0xf58a29f2, 0x81b5abda,
+ 0x7fffffff, 0xf7a0deca, 0x811855b5, 0x7fffffff, 0xf9b82684, 0x809dc971,
+ 0x7fffffff, 0xfbcfdc71, 0x804628a8, 0x7fffffff, 0xfde7dbd9, 0x80118b5e,
+ 0x7fffffff, 0x00000000, 0x80000000, 0x7fffffff, 0x02182427, 0x80118b5e,
+ 0x7fffffff, 0x0430238f, 0x804628a8, 0x7fffffff, 0x0647d97c, 0x809dc971,
+ 0x7fffffff, 0x085f2136, 0x811855b5, 0x7fffffff, 0x0a75d60e, 0x81b5abda,
+ 0x7fffffff, 0x0c8bd35d, 0x8275a0c1, 0x7fffffff, 0x0ea0f48c, 0x8357ffc8,
+ 0x7fffffff, 0x10b5150f, 0x845c8ae3, 0x7fffffff, 0x12c8106e, 0x8582faa5,
+ 0x7fffffff, 0x14d9c245, 0x86cafe58, 0x7fffffff, 0x16ea0646, 0x88343c0f,
+ 0x7fffffff, 0x18f8b83c, 0x89be50c4, 0x7fffffff, 0x1b05b40e, 0x8b68d06f,
+ 0x7fffffff, 0x1d10d5c1, 0x8d334626, 0x7fffffff, 0x1f19f97a, 0x8f1d343a,
+ 0x7fffffff, 0x2120fb82, 0x9126145f, 0x7fffffff, 0x2325b847, 0x934d57ca,
+ 0x7fffffff, 0x25280c5d, 0x9592675c, 0x7fffffff, 0x2727d485, 0x97f4a3cd,
+ 0x7fffffff, 0x2924edab, 0x9a7365d3, 0x7fffffff, 0x2b1f34eb, 0x9d0dfe54,
+ 0x7fffffff, 0x2d168791, 0x9fc3b694, 0x7fffffff, 0x2f0ac31f, 0xa293d067,
+ 0x7fffffff, 0x30fbc54c, 0xa57d8667, 0x7fffffff, 0x32e96c08, 0xa8800c26,
+ 0x7fffffff, 0x34d3957d, 0xab9a8e6c, 0x7fffffff, 0x36ba2013, 0xaecc336c,
+ 0x7fffffff, 0x389cea71, 0xb2141b02, 0x7fffffff, 0x3a7bd381, 0xb5715eef,
+ 0x7fffffff, 0x3c56ba6f, 0xb8e3131a, 0x7fffffff, 0x3e2d7eb0, 0xbc6845ce,
+ 0x7fffffff, 0x3fffffff, 0xc0000000, 0x7fffffff, 0x41ce1e64, 0xc3a94590,
+ 0x7fffffff, 0x4397ba31, 0xc763158f, 0x7fffffff, 0x455cb40b, 0xcb2c6a83,
+ 0x7fffffff, 0x471cece6, 0xcf043ab3, 0x7fffffff, 0x48d84608, 0xd2e9786f,
+ 0x7fffffff, 0x4a8ea110, 0xd6db1255, 0x7fffffff, 0x4c3fdff2, 0xdad7f3a3,
+ 0x7fffffff, 0x4debe4fd, 0xdedf047d, 0x7fffffff, 0x4f9292db, 0xe2ef2a3f,
+ 0x7fffffff, 0x5133cc93, 0xe70747c4, 0x7fffffff, 0x52cf758d, 0xeb263dbb,
+ 0x7fffffff, 0x54657193, 0xef4aeaf1, 0x7fffffff, 0x55f5a4d1, 0xf3742ca2,
+ 0x7fffffff, 0x577ff3d9, 0xf7a0deca, 0x7fffffff, 0x590443a6, 0xfbcfdc71,
+ 0x7fffffff, 0x5a827999, 0x00000000, 0x7fffffff, 0x5bfa7b81, 0x0430238f,
+ 0x7fffffff, 0x5d6c2f98, 0x085f2136, 0x7fffffff, 0x5ed77c88, 0x0c8bd35d,
+ 0x7fffffff, 0x603c496b, 0x10b5150f, 0x7fffffff, 0x619a7dcc, 0x14d9c245,
+ 0x7fffffff, 0x62f201ab, 0x18f8b83c, 0x7fffffff, 0x6442bd7c, 0x1d10d5c1,
+ 0x7fffffff, 0x658c9a2c, 0x2120fb82, 0x7fffffff, 0x66cf811f, 0x25280c5d,
+ 0x7fffffff, 0x680b5c32, 0x2924edab, 0x7fffffff, 0x694015c1, 0x2d168791,
+ 0x7fffffff, 0x6a6d98a3, 0x30fbc54c, 0x7fffffff, 0x6b93d02d, 0x34d3957d,
+ 0x7fffffff, 0x6cb2a835, 0x389cea71, 0x7fffffff, 0x6dca0d13, 0x3c56ba6f,
+ 0x7fffffff, 0x6ed9eba0, 0x3fffffff, 0x7fffffff, 0x6fe2313a, 0x4397ba31,
+ 0x7fffffff, 0x70e2cbc5, 0x471cece6, 0x7fffffff, 0x71dba9a9, 0x4a8ea110,
+ 0x7fffffff, 0x72ccb9d9, 0x4debe4fd, 0x7fffffff, 0x73b5ebd0, 0x5133cc93,
+ 0x7fffffff, 0x74972f90, 0x54657193, 0x7fffffff, 0x757075ab, 0x577ff3d9,
+ 0x7fffffff, 0x7641af3b, 0x5a827999, 0x7fffffff, 0x770acdeb, 0x5d6c2f98,
+ 0x7fffffff, 0x77cbc3f0, 0x603c496b, 0x7fffffff, 0x78848412, 0x62f201ab,
+ 0x7fffffff, 0x793501a7, 0x658c9a2c, 0x7fffffff, 0x79dd3097, 0x680b5c32,
+ 0x7fffffff, 0x7a7d055a, 0x6a6d98a3, 0x7fffffff, 0x7b1474fc, 0x6cb2a835,
+ 0x7fffffff, 0x7ba3751c, 0x6ed9eba0, 0x7fffffff, 0x7c29fbed, 0x70e2cbc5,
+ 0x7fffffff, 0x7ca80037, 0x72ccb9d9, 0x7fffffff, 0x7d1d7956, 0x74972f90,
+ 0x7fffffff, 0x7d8a5f3e, 0x7641af3b, 0x7fffffff, 0x7deeaa78, 0x77cbc3f0,
+ 0x7fffffff, 0x7e4a5425, 0x793501a7, 0x7fffffff, 0x7e9d55fb, 0x7a7d055a,
+ 0x7fffffff, 0x7ee7aa4a, 0x7ba3751c, 0x7fffffff, 0x7f294bfb, 0x7ca80037,
+ 0x7fffffff, 0x7f62368e, 0x7d8a5f3e, 0x7fffffff, 0x7f92661c, 0x7e4a5425,
+ 0x7fffffff, 0x7fb9d757, 0x7ee7aa4a, 0x7fffffff, 0x7fd8878c, 0x7f62368e,
+ 0x7fffffff, 0x7fee74a1, 0x7fb9d757, 0x7fffffff, 0x7ffb9d14, 0x7fee74a1,
+ 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 ixheaacd_twiddle_table_3pi[1155] = {
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfde7dbd9, 0xfbcfdc71,
- 0x00000000, 0xfbcfdc71, 0xf7a0deca, 0x00000000, 0xf9b82684, 0xf3742ca2,
- 0x00000000, 0xf7a0deca, 0xef4aeaf1, 0x00000000, 0xf58a29f2, 0xeb263dbb,
- 0x00000000, 0xf3742ca2, 0xe70747c4, 0x00000000, 0xf15f0b74, 0xe2ef2a3f,
- 0x00000000, 0xef4aeaf1, 0xdedf047d, 0x00000000, 0xed37ef92, 0xdad7f3a3,
- 0x00000000, 0xeb263dbb, 0xd6db1255, 0x00000000, 0xe915f9ba, 0xd2e9786f,
- 0x00000000, 0xe70747c4, 0xcf043ab3, 0x00000000, 0xe4fa4bf2, 0xcb2c6a83,
- 0x00000000, 0xe2ef2a3f, 0xc763158f, 0x00000000, 0xe0e60685, 0xc3a94590,
- 0x00000000, 0xdedf047d, 0xc0000000, 0x00000000, 0xdcda47b9, 0xbc6845ce,
- 0x00000000, 0xdad7f3a3, 0xb8e3131a, 0x00000000, 0xd8d82b7b, 0xb5715eef,
- 0x00000000, 0xd6db1255, 0xb2141b02, 0x00000000, 0xd4e0cb15, 0xaecc336c,
- 0x00000000, 0xd2e9786f, 0xab9a8e6c, 0x00000000, 0xd0f53ce0, 0xa8800c26,
- 0x00000000, 0xcf043ab3, 0xa57d8667, 0x00000000, 0xcd1693f7, 0xa293d067,
- 0x00000000, 0xcb2c6a83, 0x9fc3b694, 0x00000000, 0xc945dfed, 0x9d0dfe54,
- 0x00000000, 0xc763158f, 0x9a7365d3, 0x00000000, 0xc5842c7f, 0x97f4a3cd,
- 0x00000000, 0xc3a94590, 0x9592675c, 0x00000000, 0xc1d28150, 0x934d57ca,
- 0x00000000, 0xc0000000, 0x9126145f, 0x00000000, 0xbe31e19c, 0x8f1d343a,
- 0x00000000, 0xbc6845ce, 0x8d334626, 0x00000000, 0xbaa34bf4, 0x8b68d06f,
- 0x00000000, 0xb8e3131a, 0x89be50c4, 0x00000000, 0xb727b9f7, 0x88343c0f,
- 0x00000000, 0xb5715eef, 0x86cafe58, 0x00000000, 0xb3c0200d, 0x8582faa5,
- 0x00000000, 0xb2141b02, 0x845c8ae3, 0x00000000, 0xb06d6d25, 0x8357ffc8,
- 0x00000000, 0xaecc336c, 0x8275a0c1, 0x00000000, 0xad308a72, 0x81b5abda,
- 0x00000000, 0xab9a8e6c, 0x811855b5, 0x00000000, 0xaa0a5b2e, 0x809dc971,
- 0x00000000, 0xa8800c26, 0x804628a8, 0x00000000, 0xa6fbbc5a, 0x80118b5e,
- 0x00000000, 0xa57d8667, 0x80000000, 0x00000000, 0xa405847f, 0x80118b5e,
- 0x00000000, 0xa293d067, 0x804628a8, 0x00000000, 0xa1288377, 0x809dc971,
- 0x00000000, 0x9fc3b694, 0x811855b5, 0x00000000, 0x9e658233, 0x81b5abda,
- 0x00000000, 0x9d0dfe54, 0x8275a0c1, 0x00000000, 0x9bbd4283, 0x8357ffc8,
- 0x00000000, 0x9a7365d3, 0x845c8ae3, 0x00000000, 0x99307ee1, 0x8582faa5,
- 0x00000000, 0x97f4a3cd, 0x86cafe58, 0x00000000, 0x96bfea3e, 0x88343c0f,
- 0x00000000, 0x9592675c, 0x89be50c4, 0x00000000, 0x946c2fd2, 0x8b68d06f,
- 0x00000000, 0x934d57ca, 0x8d334626, 0x00000000, 0x9235f2ec, 0x8f1d343a,
- 0x00000000, 0x9126145f, 0x9126145f, 0x00000000, 0x901dcec5, 0x934d57ca,
- 0x00000000, 0x8f1d343a, 0x9592675c, 0x00000000, 0x8e245656, 0x97f4a3cd,
- 0x00000000, 0x8d334626, 0x9a7365d3, 0x00000000, 0x8c4a1430, 0x9d0dfe54,
- 0x00000000, 0x8b68d06f, 0x9fc3b694, 0x00000000, 0x8a8f8a54, 0xa293d067,
- 0x00000000, 0x89be50c4, 0xa57d8667, 0x00000000, 0x88f53214, 0xa8800c26,
- 0x00000000, 0x88343c0f, 0xab9a8e6c, 0x00000000, 0x877b7bed, 0xaecc336c,
- 0x00000000, 0x86cafe58, 0xb2141b02, 0x00000000, 0x8622cf68, 0xb5715eef,
- 0x00000000, 0x8582faa5, 0xb8e3131a, 0x00000000, 0x84eb8b03, 0xbc6845ce,
- 0x00000000, 0x845c8ae3, 0xc0000000, 0x00000000, 0x83d60412, 0xc3a94590,
- 0x00000000, 0x8357ffc8, 0xc763158f, 0x00000000, 0x82e286a9, 0xcb2c6a83,
- 0x00000000, 0x8275a0c1, 0xcf043ab3, 0x00000000, 0x82115587, 0xd2e9786f,
- 0x00000000, 0x81b5abda, 0xd6db1255, 0x00000000, 0x8162aa04, 0xdad7f3a3,
- 0x00000000, 0x811855b5, 0xdedf047d, 0x00000000, 0x80d6b404, 0xe2ef2a3f,
- 0x00000000, 0x809dc971, 0xe70747c4, 0x00000000, 0x806d99e3, 0xeb263dbb,
- 0x00000000, 0x804628a8, 0xef4aeaf1, 0x00000000, 0x80277873, 0xf3742ca2,
- 0x00000000, 0x80118b5e, 0xf7a0deca, 0x00000000, 0x800462eb, 0xfbcfdc71,
- 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x800462eb, 0x0430238f,
- 0x00000000, 0x80118b5e, 0x085f2136, 0x00000000, 0x80277873, 0x0c8bd35d,
- 0x00000000, 0x804628a8, 0x10b5150f, 0x00000000, 0x806d99e3, 0x14d9c245,
- 0x00000000, 0x809dc971, 0x18f8b83c, 0x00000000, 0x80d6b404, 0x1d10d5c1,
- 0x00000000, 0x811855b5, 0x2120fb82, 0x00000000, 0x8162aa04, 0x25280c5d,
- 0x00000000, 0x81b5abda, 0x2924edab, 0x00000000, 0x82115587, 0x2d168791,
- 0x00000000, 0x8275a0c1, 0x30fbc54c, 0x00000000, 0x82e286a9, 0x34d3957d,
- 0x00000000, 0x8357ffc8, 0x389cea71, 0x00000000, 0x83d60412, 0x3c56ba6f,
- 0x00000000, 0x845c8ae3, 0x3fffffff, 0x00000000, 0x84eb8b03, 0x4397ba31,
- 0x00000000, 0x8582faa5, 0x471cece6, 0x00000000, 0x8622cf68, 0x4a8ea110,
- 0x00000000, 0x86cafe58, 0x4debe4fd, 0x00000000, 0x877b7bed, 0x5133cc93,
- 0x00000000, 0x88343c0f, 0x54657193, 0x00000000, 0x88f53214, 0x577ff3d9,
- 0x00000000, 0x89be50c4, 0x5a827999, 0x00000000, 0x8a8f8a54, 0x5d6c2f98,
- 0x00000000, 0x8b68d06f, 0x603c496b, 0x00000000, 0x8c4a1430, 0x62f201ab,
- 0x00000000, 0x8d334626, 0x658c9a2c, 0x00000000, 0x8e245656, 0x680b5c32,
- 0x00000000, 0x8f1d343a, 0x6a6d98a3, 0x00000000, 0x901dcec5, 0x6cb2a835,
- 0x00000000, 0x9126145f, 0x6ed9eba0, 0x00000000, 0x9235f2ec, 0x70e2cbc5,
- 0x00000000, 0x934d57ca, 0x72ccb9d9, 0x00000000, 0x946c2fd2, 0x74972f90,
- 0x00000000, 0x9592675c, 0x7641af3b, 0x00000000, 0x96bfea3e, 0x77cbc3f0,
- 0x00000000, 0x97f4a3cd, 0x793501a7, 0x00000000, 0x99307ee1, 0x7a7d055a,
- 0x00000000, 0x9a7365d3, 0x7ba3751c, 0x00000000, 0x9bbd4283, 0x7ca80037,
- 0x00000000, 0x9d0dfe54, 0x7d8a5f3e, 0x00000000, 0x9e658233, 0x7e4a5425,
- 0x00000000, 0x9fc3b694, 0x7ee7aa4a, 0x00000000, 0xa1288377, 0x7f62368e,
- 0x00000000, 0xa293d067, 0x7fb9d757, 0x00000000, 0xa405847f, 0x7fee74a1,
- 0x00000000, 0xa57d8667, 0x7fffffff, 0x00000000, 0xa6fbbc5a, 0x7fee74a1,
- 0x00000000, 0xa8800c26, 0x7fb9d757, 0x00000000, 0xaa0a5b2e, 0x7f62368e,
- 0x00000000, 0xab9a8e6c, 0x7ee7aa4a, 0x00000000, 0xad308a72, 0x7e4a5425,
- 0x00000000, 0xaecc336c, 0x7d8a5f3e, 0x00000000, 0xb06d6d25, 0x7ca80037,
- 0x00000000, 0xb2141b02, 0x7ba3751c, 0x00000000, 0xb3c0200d, 0x7a7d055a,
- 0x00000000, 0xb5715eef, 0x793501a7, 0x00000000, 0xb727b9f7, 0x77cbc3f0,
- 0x00000000, 0xb8e3131a, 0x7641af3b, 0x00000000, 0xbaa34bf4, 0x74972f90,
- 0x00000000, 0xbc6845ce, 0x72ccb9d9, 0x00000000, 0xbe31e19c, 0x70e2cbc5,
- 0x00000000, 0xc0000000, 0x6ed9eba0, 0x00000000, 0xc1d28150, 0x6cb2a835,
- 0x00000000, 0xc3a94590, 0x6a6d98a3, 0x00000000, 0xc5842c7f, 0x680b5c32,
- 0x00000000, 0xc763158f, 0x658c9a2c, 0x00000000, 0xc945dfed, 0x62f201ab,
- 0x00000000, 0xcb2c6a83, 0x603c496b, 0x00000000, 0xcd1693f7, 0x5d6c2f98,
- 0x00000000, 0xcf043ab3, 0x5a827999, 0x00000000, 0xd0f53ce0, 0x577ff3d9,
- 0x00000000, 0xd2e9786f, 0x54657193, 0x00000000, 0xd4e0cb15, 0x5133cc93,
- 0x00000000, 0xd6db1255, 0x4debe4fd, 0x00000000, 0xd8d82b7b, 0x4a8ea110,
- 0x00000000, 0xdad7f3a3, 0x471cece6, 0x00000000, 0xdcda47b9, 0x4397ba31,
- 0x00000000, 0xdedf047d, 0x3fffffff, 0x00000000, 0xe0e60685, 0x3c56ba6f,
- 0x00000000, 0xe2ef2a3f, 0x389cea71, 0x00000000, 0xe4fa4bf2, 0x34d3957d,
- 0x00000000, 0xe70747c4, 0x30fbc54c, 0x00000000, 0xe915f9ba, 0x2d168791,
- 0x00000000, 0xeb263dbb, 0x2924edab, 0x00000000, 0xed37ef92, 0x25280c5d,
- 0x00000000, 0xef4aeaf1, 0x2120fb82, 0x00000000, 0xf15f0b74, 0x1d10d5c1,
- 0x00000000, 0xf3742ca2, 0x18f8b83c, 0x00000000, 0xf58a29f2, 0x14d9c245,
- 0x00000000, 0xf7a0deca, 0x10b5150f, 0x00000000, 0xf9b82684, 0x0c8bd35d,
- 0x00000000, 0xfbcfdc71, 0x085f2136, 0x00000000, 0xfde7dbd9, 0x0430238f,
- 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02182427, 0xfbcfdc71,
- 0x00000000, 0x0430238f, 0xf7a0deca, 0x00000000, 0x0647d97c, 0xf3742ca2,
- 0x00000000, 0x085f2136, 0xef4aeaf1, 0x00000000, 0x0a75d60e, 0xeb263dbb,
- 0x00000000, 0x0c8bd35d, 0xe70747c4, 0x00000000, 0x0ea0f48c, 0xe2ef2a3f,
- 0x00000000, 0x10b5150f, 0xdedf047d, 0x00000000, 0x12c8106e, 0xdad7f3a3,
- 0x00000000, 0x14d9c245, 0xd6db1255, 0x00000000, 0x16ea0646, 0xd2e9786f,
- 0x00000000, 0x18f8b83c, 0xcf043ab3, 0x00000000, 0x1b05b40e, 0xcb2c6a83,
- 0x00000000, 0x1d10d5c1, 0xc763158f, 0x00000000, 0x1f19f97a, 0xc3a94590,
- 0x00000000, 0x2120fb82, 0xc0000000, 0x00000000, 0x2325b847, 0xbc6845ce,
- 0x00000000, 0x25280c5d, 0xb8e3131a, 0x00000000, 0x2727d485, 0xb5715eef,
- 0x00000000, 0x2924edab, 0xb2141b02, 0x00000000, 0x2b1f34eb, 0xaecc336c,
- 0x00000000, 0x2d168791, 0xab9a8e6c, 0x00000000, 0x2f0ac31f, 0xa8800c26,
- 0x00000000, 0x30fbc54c, 0xa57d8667, 0x00000000, 0x32e96c08, 0xa293d067,
- 0x00000000, 0x34d3957d, 0x9fc3b694, 0x00000000, 0x36ba2013, 0x9d0dfe54,
- 0x00000000, 0x389cea71, 0x9a7365d3, 0x00000000, 0x3a7bd381, 0x97f4a3cd,
- 0x00000000, 0x3c56ba6f, 0x9592675c, 0x00000000, 0x3e2d7eb0, 0x934d57ca,
- 0x00000000, 0x3fffffff, 0x9126145f, 0x00000000, 0x41ce1e64, 0x8f1d343a,
- 0x00000000, 0x4397ba31, 0x8d334626, 0x00000000, 0x455cb40b, 0x8b68d06f,
- 0x00000000, 0x471cece6, 0x89be50c4, 0x00000000, 0x48d84608, 0x88343c0f,
- 0x00000000, 0x4a8ea110, 0x86cafe58, 0x00000000, 0x4c3fdff2, 0x8582faa5,
- 0x00000000, 0x4debe4fd, 0x845c8ae3, 0x00000000, 0x4f9292db, 0x8357ffc8,
- 0x00000000, 0x5133cc93, 0x8275a0c1, 0x00000000, 0x52cf758d, 0x81b5abda,
- 0x00000000, 0x54657193, 0x811855b5, 0x00000000, 0x55f5a4d1, 0x809dc971,
- 0x00000000, 0x577ff3d9, 0x804628a8, 0x00000000, 0x590443a6, 0x80118b5e,
- 0x00000000, 0x5a827999, 0x80000000, 0x00000000, 0x5bfa7b81, 0x80118b5e,
- 0x00000000, 0x5d6c2f98, 0x804628a8, 0x00000000, 0x5ed77c88, 0x809dc971,
- 0x00000000, 0x603c496b, 0x811855b5, 0x00000000, 0x619a7dcc, 0x81b5abda,
- 0x00000000, 0x62f201ab, 0x8275a0c1, 0x00000000, 0x6442bd7c, 0x8357ffc8,
- 0x00000000, 0x658c9a2c, 0x845c8ae3, 0x00000000, 0x66cf811f, 0x8582faa5,
- 0x00000000, 0x680b5c32, 0x86cafe58, 0x00000000, 0x694015c1, 0x88343c0f,
- 0x00000000, 0x6a6d98a3, 0x89be50c4, 0x00000000, 0x6b93d02d, 0x8b68d06f,
- 0x00000000, 0x6cb2a835, 0x8d334626, 0x00000000, 0x6dca0d13, 0x8f1d343a,
- 0x00000000, 0x6ed9eba0, 0x9126145f, 0x00000000, 0x6fe2313a, 0x934d57ca,
- 0x00000000, 0x70e2cbc5, 0x9592675c, 0x00000000, 0x71dba9a9, 0x97f4a3cd,
- 0x00000000, 0x72ccb9d9, 0x9a7365d3, 0x00000000, 0x73b5ebd0, 0x9d0dfe54,
- 0x00000000, 0x74972f90, 0x9fc3b694, 0x00000000, 0x757075ab, 0xa293d067,
- 0x00000000, 0x7641af3b, 0xa57d8667, 0x00000000, 0x770acdeb, 0xa8800c26,
- 0x00000000, 0x77cbc3f0, 0xab9a8e6c, 0x00000000, 0x78848412, 0xaecc336c,
- 0x00000000, 0x793501a7, 0xb2141b02, 0x00000000, 0x79dd3097, 0xb5715eef,
- 0x00000000, 0x7a7d055a, 0xb8e3131a, 0x00000000, 0x7b1474fc, 0xbc6845ce,
- 0x00000000, 0x7ba3751c, 0xc0000000, 0x00000000, 0x7c29fbed, 0xc3a94590,
- 0x00000000, 0x7ca80037, 0xc763158f, 0x00000000, 0x7d1d7956, 0xcb2c6a83,
- 0x00000000, 0x7d8a5f3e, 0xcf043ab3, 0x00000000, 0x7deeaa78, 0xd2e9786f,
- 0x00000000, 0x7e4a5425, 0xd6db1255, 0x00000000, 0x7e9d55fb, 0xdad7f3a3,
- 0x00000000, 0x7ee7aa4a, 0xdedf047d, 0x00000000, 0x7f294bfb, 0xe2ef2a3f,
- 0x00000000, 0x7f62368e, 0xe70747c4, 0x00000000, 0x7f92661c, 0xeb263dbb,
- 0x00000000, 0x7fb9d757, 0xef4aeaf1, 0x00000000, 0x7fd8878c, 0xf3742ca2,
- 0x00000000, 0x7fee74a1, 0xf7a0deca, 0x00000000, 0x7ffb9d14, 0xfbcfdc71,
- 0x00000000, 0x7fffffff, 0x00000000, 0x00000000, 0x7ffb9d14, 0x0430238f,
- 0x00000000, 0x7fee74a1, 0x085f2136, 0x00000000, 0x7fd8878c, 0x0c8bd35d,
- 0x00000000, 0x7fb9d757, 0x10b5150f, 0x00000000, 0x7f92661c, 0x14d9c245,
- 0x00000000, 0x7f62368e, 0x18f8b83c, 0x00000000, 0x7f294bfb, 0x1d10d5c1,
- 0x00000000, 0x7ee7aa4a, 0x2120fb82, 0x00000000, 0x7e9d55fb, 0x25280c5d,
- 0x00000000, 0x7e4a5425, 0x2924edab, 0x00000000, 0x7deeaa78, 0x2d168791,
- 0x00000000, 0x7d8a5f3e, 0x30fbc54c, 0x00000000, 0x7d1d7956, 0x34d3957d,
- 0x00000000, 0x7ca80037, 0x389cea71, 0x00000000, 0x7c29fbed, 0x3c56ba6f,
- 0x00000000, 0x7ba3751c, 0x3fffffff, 0x00000000, 0x7b1474fc, 0x4397ba31,
- 0x00000000, 0x7a7d055a, 0x471cece6, 0x00000000, 0x79dd3097, 0x4a8ea110,
- 0x00000000, 0x793501a7, 0x4debe4fd, 0x00000000, 0x78848412, 0x5133cc93,
- 0x00000000, 0x77cbc3f0, 0x54657193, 0x00000000, 0x770acdeb, 0x577ff3d9,
- 0x00000000, 0x7641af3b, 0x5a827999, 0x00000000, 0x757075ab, 0x5d6c2f98,
- 0x00000000, 0x74972f90, 0x603c496b, 0x00000000, 0x73b5ebd0, 0x62f201ab,
- 0x00000000, 0x72ccb9d9, 0x658c9a2c, 0x00000000, 0x71dba9a9, 0x680b5c32,
- 0x00000000, 0x70e2cbc5, 0x6a6d98a3, 0x00000000, 0x6fe2313a, 0x6cb2a835,
- 0x00000000, 0x6ed9eba0, 0x6ed9eba0, 0x00000000, 0x6dca0d13, 0x70e2cbc5,
- 0x00000000, 0x6cb2a835, 0x72ccb9d9, 0x00000000, 0x6b93d02d, 0x74972f90,
- 0x00000000, 0x6a6d98a3, 0x7641af3b, 0x00000000, 0x694015c1, 0x77cbc3f0,
- 0x00000000, 0x680b5c32, 0x793501a7, 0x00000000, 0x66cf811f, 0x7a7d055a,
- 0x00000000, 0x658c9a2c, 0x7ba3751c, 0x00000000, 0x6442bd7c, 0x7ca80037,
- 0x00000000, 0x62f201ab, 0x7d8a5f3e, 0x00000000, 0x619a7dcc, 0x7e4a5425,
- 0x00000000, 0x603c496b, 0x7ee7aa4a, 0x00000000, 0x5ed77c88, 0x7f62368e,
- 0x00000000, 0x5d6c2f98, 0x7fb9d757, 0x00000000, 0x5bfa7b81, 0x7fee74a1,
- 0x00000000, 0x5a827999, 0x7fffffff, 0x00000000, 0x590443a6, 0x7fee74a1,
- 0x00000000, 0x577ff3d9, 0x7fb9d757, 0x00000000, 0x55f5a4d1, 0x7f62368e,
- 0x00000000, 0x54657193, 0x7ee7aa4a, 0x00000000, 0x52cf758d, 0x7e4a5425,
- 0x00000000, 0x5133cc93, 0x7d8a5f3e, 0x00000000, 0x4f9292db, 0x7ca80037,
- 0x00000000, 0x4debe4fd, 0x7ba3751c, 0x00000000, 0x4c3fdff2, 0x7a7d055a,
- 0x00000000, 0x4a8ea110, 0x793501a7, 0x00000000, 0x48d84608, 0x77cbc3f0,
- 0x00000000, 0x471cece6, 0x7641af3b, 0x00000000, 0x455cb40b, 0x74972f90,
- 0x00000000, 0x4397ba31, 0x72ccb9d9, 0x00000000, 0x41ce1e64, 0x70e2cbc5,
- 0x00000000, 0x3fffffff, 0x6ed9eba0, 0x00000000, 0x3e2d7eb0, 0x6cb2a835,
- 0x00000000, 0x3c56ba6f, 0x6a6d98a3, 0x00000000, 0x3a7bd381, 0x680b5c32,
- 0x00000000, 0x389cea71, 0x658c9a2c, 0x00000000, 0x36ba2013, 0x62f201ab,
- 0x00000000, 0x34d3957d, 0x603c496b, 0x00000000, 0x32e96c08, 0x5d6c2f98,
- 0x00000000, 0x30fbc54c, 0x5a827999, 0x00000000, 0x2f0ac31f, 0x577ff3d9,
- 0x00000000, 0x2d168791, 0x54657193, 0x00000000, 0x2b1f34eb, 0x5133cc93,
- 0x00000000, 0x2924edab, 0x4debe4fd, 0x00000000, 0x2727d485, 0x4a8ea110,
- 0x00000000, 0x25280c5d, 0x471cece6, 0x00000000, 0x2325b847, 0x4397ba31,
- 0x00000000, 0x2120fb82, 0x3fffffff, 0x00000000, 0x1f19f97a, 0x3c56ba6f,
- 0x00000000, 0x1d10d5c1, 0x389cea71, 0x00000000, 0x1b05b40e, 0x34d3957d,
- 0x00000000, 0x18f8b83c, 0x30fbc54c, 0x00000000, 0x16ea0646, 0x2d168791,
- 0x00000000, 0x14d9c245, 0x2924edab, 0x00000000, 0x12c8106e, 0x25280c5d,
- 0x00000000, 0x10b5150f, 0x2120fb82, 0x00000000, 0x0ea0f48c, 0x1d10d5c1,
- 0x00000000, 0x0c8bd35d, 0x18f8b83c, 0x00000000, 0x0a75d60e, 0x14d9c245,
- 0x00000000, 0x085f2136, 0x10b5150f, 0x00000000, 0x0647d97c, 0x0c8bd35d,
- 0x00000000, 0x0430238f, 0x085f2136, 0x00000000, 0x02182427, 0x0430238f,
- 0x00000000, 0x00000000, 0x00000000};
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xfde7dbd9, 0xfbcfdc71,
+ 0x00000000, 0xfbcfdc71, 0xf7a0deca, 0x00000000, 0xf9b82684, 0xf3742ca2,
+ 0x00000000, 0xf7a0deca, 0xef4aeaf1, 0x00000000, 0xf58a29f2, 0xeb263dbb,
+ 0x00000000, 0xf3742ca2, 0xe70747c4, 0x00000000, 0xf15f0b74, 0xe2ef2a3f,
+ 0x00000000, 0xef4aeaf1, 0xdedf047d, 0x00000000, 0xed37ef92, 0xdad7f3a3,
+ 0x00000000, 0xeb263dbb, 0xd6db1255, 0x00000000, 0xe915f9ba, 0xd2e9786f,
+ 0x00000000, 0xe70747c4, 0xcf043ab3, 0x00000000, 0xe4fa4bf2, 0xcb2c6a83,
+ 0x00000000, 0xe2ef2a3f, 0xc763158f, 0x00000000, 0xe0e60685, 0xc3a94590,
+ 0x00000000, 0xdedf047d, 0xc0000000, 0x00000000, 0xdcda47b9, 0xbc6845ce,
+ 0x00000000, 0xdad7f3a3, 0xb8e3131a, 0x00000000, 0xd8d82b7b, 0xb5715eef,
+ 0x00000000, 0xd6db1255, 0xb2141b02, 0x00000000, 0xd4e0cb15, 0xaecc336c,
+ 0x00000000, 0xd2e9786f, 0xab9a8e6c, 0x00000000, 0xd0f53ce0, 0xa8800c26,
+ 0x00000000, 0xcf043ab3, 0xa57d8667, 0x00000000, 0xcd1693f7, 0xa293d067,
+ 0x00000000, 0xcb2c6a83, 0x9fc3b694, 0x00000000, 0xc945dfed, 0x9d0dfe54,
+ 0x00000000, 0xc763158f, 0x9a7365d3, 0x00000000, 0xc5842c7f, 0x97f4a3cd,
+ 0x00000000, 0xc3a94590, 0x9592675c, 0x00000000, 0xc1d28150, 0x934d57ca,
+ 0x00000000, 0xc0000000, 0x9126145f, 0x00000000, 0xbe31e19c, 0x8f1d343a,
+ 0x00000000, 0xbc6845ce, 0x8d334626, 0x00000000, 0xbaa34bf4, 0x8b68d06f,
+ 0x00000000, 0xb8e3131a, 0x89be50c4, 0x00000000, 0xb727b9f7, 0x88343c0f,
+ 0x00000000, 0xb5715eef, 0x86cafe58, 0x00000000, 0xb3c0200d, 0x8582faa5,
+ 0x00000000, 0xb2141b02, 0x845c8ae3, 0x00000000, 0xb06d6d25, 0x8357ffc8,
+ 0x00000000, 0xaecc336c, 0x8275a0c1, 0x00000000, 0xad308a72, 0x81b5abda,
+ 0x00000000, 0xab9a8e6c, 0x811855b5, 0x00000000, 0xaa0a5b2e, 0x809dc971,
+ 0x00000000, 0xa8800c26, 0x804628a8, 0x00000000, 0xa6fbbc5a, 0x80118b5e,
+ 0x00000000, 0xa57d8667, 0x80000000, 0x00000000, 0xa405847f, 0x80118b5e,
+ 0x00000000, 0xa293d067, 0x804628a8, 0x00000000, 0xa1288377, 0x809dc971,
+ 0x00000000, 0x9fc3b694, 0x811855b5, 0x00000000, 0x9e658233, 0x81b5abda,
+ 0x00000000, 0x9d0dfe54, 0x8275a0c1, 0x00000000, 0x9bbd4283, 0x8357ffc8,
+ 0x00000000, 0x9a7365d3, 0x845c8ae3, 0x00000000, 0x99307ee1, 0x8582faa5,
+ 0x00000000, 0x97f4a3cd, 0x86cafe58, 0x00000000, 0x96bfea3e, 0x88343c0f,
+ 0x00000000, 0x9592675c, 0x89be50c4, 0x00000000, 0x946c2fd2, 0x8b68d06f,
+ 0x00000000, 0x934d57ca, 0x8d334626, 0x00000000, 0x9235f2ec, 0x8f1d343a,
+ 0x00000000, 0x9126145f, 0x9126145f, 0x00000000, 0x901dcec5, 0x934d57ca,
+ 0x00000000, 0x8f1d343a, 0x9592675c, 0x00000000, 0x8e245656, 0x97f4a3cd,
+ 0x00000000, 0x8d334626, 0x9a7365d3, 0x00000000, 0x8c4a1430, 0x9d0dfe54,
+ 0x00000000, 0x8b68d06f, 0x9fc3b694, 0x00000000, 0x8a8f8a54, 0xa293d067,
+ 0x00000000, 0x89be50c4, 0xa57d8667, 0x00000000, 0x88f53214, 0xa8800c26,
+ 0x00000000, 0x88343c0f, 0xab9a8e6c, 0x00000000, 0x877b7bed, 0xaecc336c,
+ 0x00000000, 0x86cafe58, 0xb2141b02, 0x00000000, 0x8622cf68, 0xb5715eef,
+ 0x00000000, 0x8582faa5, 0xb8e3131a, 0x00000000, 0x84eb8b03, 0xbc6845ce,
+ 0x00000000, 0x845c8ae3, 0xc0000000, 0x00000000, 0x83d60412, 0xc3a94590,
+ 0x00000000, 0x8357ffc8, 0xc763158f, 0x00000000, 0x82e286a9, 0xcb2c6a83,
+ 0x00000000, 0x8275a0c1, 0xcf043ab3, 0x00000000, 0x82115587, 0xd2e9786f,
+ 0x00000000, 0x81b5abda, 0xd6db1255, 0x00000000, 0x8162aa04, 0xdad7f3a3,
+ 0x00000000, 0x811855b5, 0xdedf047d, 0x00000000, 0x80d6b404, 0xe2ef2a3f,
+ 0x00000000, 0x809dc971, 0xe70747c4, 0x00000000, 0x806d99e3, 0xeb263dbb,
+ 0x00000000, 0x804628a8, 0xef4aeaf1, 0x00000000, 0x80277873, 0xf3742ca2,
+ 0x00000000, 0x80118b5e, 0xf7a0deca, 0x00000000, 0x800462eb, 0xfbcfdc71,
+ 0x00000000, 0x80000000, 0x00000000, 0x00000000, 0x800462eb, 0x0430238f,
+ 0x00000000, 0x80118b5e, 0x085f2136, 0x00000000, 0x80277873, 0x0c8bd35d,
+ 0x00000000, 0x804628a8, 0x10b5150f, 0x00000000, 0x806d99e3, 0x14d9c245,
+ 0x00000000, 0x809dc971, 0x18f8b83c, 0x00000000, 0x80d6b404, 0x1d10d5c1,
+ 0x00000000, 0x811855b5, 0x2120fb82, 0x00000000, 0x8162aa04, 0x25280c5d,
+ 0x00000000, 0x81b5abda, 0x2924edab, 0x00000000, 0x82115587, 0x2d168791,
+ 0x00000000, 0x8275a0c1, 0x30fbc54c, 0x00000000, 0x82e286a9, 0x34d3957d,
+ 0x00000000, 0x8357ffc8, 0x389cea71, 0x00000000, 0x83d60412, 0x3c56ba6f,
+ 0x00000000, 0x845c8ae3, 0x3fffffff, 0x00000000, 0x84eb8b03, 0x4397ba31,
+ 0x00000000, 0x8582faa5, 0x471cece6, 0x00000000, 0x8622cf68, 0x4a8ea110,
+ 0x00000000, 0x86cafe58, 0x4debe4fd, 0x00000000, 0x877b7bed, 0x5133cc93,
+ 0x00000000, 0x88343c0f, 0x54657193, 0x00000000, 0x88f53214, 0x577ff3d9,
+ 0x00000000, 0x89be50c4, 0x5a827999, 0x00000000, 0x8a8f8a54, 0x5d6c2f98,
+ 0x00000000, 0x8b68d06f, 0x603c496b, 0x00000000, 0x8c4a1430, 0x62f201ab,
+ 0x00000000, 0x8d334626, 0x658c9a2c, 0x00000000, 0x8e245656, 0x680b5c32,
+ 0x00000000, 0x8f1d343a, 0x6a6d98a3, 0x00000000, 0x901dcec5, 0x6cb2a835,
+ 0x00000000, 0x9126145f, 0x6ed9eba0, 0x00000000, 0x9235f2ec, 0x70e2cbc5,
+ 0x00000000, 0x934d57ca, 0x72ccb9d9, 0x00000000, 0x946c2fd2, 0x74972f90,
+ 0x00000000, 0x9592675c, 0x7641af3b, 0x00000000, 0x96bfea3e, 0x77cbc3f0,
+ 0x00000000, 0x97f4a3cd, 0x793501a7, 0x00000000, 0x99307ee1, 0x7a7d055a,
+ 0x00000000, 0x9a7365d3, 0x7ba3751c, 0x00000000, 0x9bbd4283, 0x7ca80037,
+ 0x00000000, 0x9d0dfe54, 0x7d8a5f3e, 0x00000000, 0x9e658233, 0x7e4a5425,
+ 0x00000000, 0x9fc3b694, 0x7ee7aa4a, 0x00000000, 0xa1288377, 0x7f62368e,
+ 0x00000000, 0xa293d067, 0x7fb9d757, 0x00000000, 0xa405847f, 0x7fee74a1,
+ 0x00000000, 0xa57d8667, 0x7fffffff, 0x00000000, 0xa6fbbc5a, 0x7fee74a1,
+ 0x00000000, 0xa8800c26, 0x7fb9d757, 0x00000000, 0xaa0a5b2e, 0x7f62368e,
+ 0x00000000, 0xab9a8e6c, 0x7ee7aa4a, 0x00000000, 0xad308a72, 0x7e4a5425,
+ 0x00000000, 0xaecc336c, 0x7d8a5f3e, 0x00000000, 0xb06d6d25, 0x7ca80037,
+ 0x00000000, 0xb2141b02, 0x7ba3751c, 0x00000000, 0xb3c0200d, 0x7a7d055a,
+ 0x00000000, 0xb5715eef, 0x793501a7, 0x00000000, 0xb727b9f7, 0x77cbc3f0,
+ 0x00000000, 0xb8e3131a, 0x7641af3b, 0x00000000, 0xbaa34bf4, 0x74972f90,
+ 0x00000000, 0xbc6845ce, 0x72ccb9d9, 0x00000000, 0xbe31e19c, 0x70e2cbc5,
+ 0x00000000, 0xc0000000, 0x6ed9eba0, 0x00000000, 0xc1d28150, 0x6cb2a835,
+ 0x00000000, 0xc3a94590, 0x6a6d98a3, 0x00000000, 0xc5842c7f, 0x680b5c32,
+ 0x00000000, 0xc763158f, 0x658c9a2c, 0x00000000, 0xc945dfed, 0x62f201ab,
+ 0x00000000, 0xcb2c6a83, 0x603c496b, 0x00000000, 0xcd1693f7, 0x5d6c2f98,
+ 0x00000000, 0xcf043ab3, 0x5a827999, 0x00000000, 0xd0f53ce0, 0x577ff3d9,
+ 0x00000000, 0xd2e9786f, 0x54657193, 0x00000000, 0xd4e0cb15, 0x5133cc93,
+ 0x00000000, 0xd6db1255, 0x4debe4fd, 0x00000000, 0xd8d82b7b, 0x4a8ea110,
+ 0x00000000, 0xdad7f3a3, 0x471cece6, 0x00000000, 0xdcda47b9, 0x4397ba31,
+ 0x00000000, 0xdedf047d, 0x3fffffff, 0x00000000, 0xe0e60685, 0x3c56ba6f,
+ 0x00000000, 0xe2ef2a3f, 0x389cea71, 0x00000000, 0xe4fa4bf2, 0x34d3957d,
+ 0x00000000, 0xe70747c4, 0x30fbc54c, 0x00000000, 0xe915f9ba, 0x2d168791,
+ 0x00000000, 0xeb263dbb, 0x2924edab, 0x00000000, 0xed37ef92, 0x25280c5d,
+ 0x00000000, 0xef4aeaf1, 0x2120fb82, 0x00000000, 0xf15f0b74, 0x1d10d5c1,
+ 0x00000000, 0xf3742ca2, 0x18f8b83c, 0x00000000, 0xf58a29f2, 0x14d9c245,
+ 0x00000000, 0xf7a0deca, 0x10b5150f, 0x00000000, 0xf9b82684, 0x0c8bd35d,
+ 0x00000000, 0xfbcfdc71, 0x085f2136, 0x00000000, 0xfde7dbd9, 0x0430238f,
+ 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02182427, 0xfbcfdc71,
+ 0x00000000, 0x0430238f, 0xf7a0deca, 0x00000000, 0x0647d97c, 0xf3742ca2,
+ 0x00000000, 0x085f2136, 0xef4aeaf1, 0x00000000, 0x0a75d60e, 0xeb263dbb,
+ 0x00000000, 0x0c8bd35d, 0xe70747c4, 0x00000000, 0x0ea0f48c, 0xe2ef2a3f,
+ 0x00000000, 0x10b5150f, 0xdedf047d, 0x00000000, 0x12c8106e, 0xdad7f3a3,
+ 0x00000000, 0x14d9c245, 0xd6db1255, 0x00000000, 0x16ea0646, 0xd2e9786f,
+ 0x00000000, 0x18f8b83c, 0xcf043ab3, 0x00000000, 0x1b05b40e, 0xcb2c6a83,
+ 0x00000000, 0x1d10d5c1, 0xc763158f, 0x00000000, 0x1f19f97a, 0xc3a94590,
+ 0x00000000, 0x2120fb82, 0xc0000000, 0x00000000, 0x2325b847, 0xbc6845ce,
+ 0x00000000, 0x25280c5d, 0xb8e3131a, 0x00000000, 0x2727d485, 0xb5715eef,
+ 0x00000000, 0x2924edab, 0xb2141b02, 0x00000000, 0x2b1f34eb, 0xaecc336c,
+ 0x00000000, 0x2d168791, 0xab9a8e6c, 0x00000000, 0x2f0ac31f, 0xa8800c26,
+ 0x00000000, 0x30fbc54c, 0xa57d8667, 0x00000000, 0x32e96c08, 0xa293d067,
+ 0x00000000, 0x34d3957d, 0x9fc3b694, 0x00000000, 0x36ba2013, 0x9d0dfe54,
+ 0x00000000, 0x389cea71, 0x9a7365d3, 0x00000000, 0x3a7bd381, 0x97f4a3cd,
+ 0x00000000, 0x3c56ba6f, 0x9592675c, 0x00000000, 0x3e2d7eb0, 0x934d57ca,
+ 0x00000000, 0x3fffffff, 0x9126145f, 0x00000000, 0x41ce1e64, 0x8f1d343a,
+ 0x00000000, 0x4397ba31, 0x8d334626, 0x00000000, 0x455cb40b, 0x8b68d06f,
+ 0x00000000, 0x471cece6, 0x89be50c4, 0x00000000, 0x48d84608, 0x88343c0f,
+ 0x00000000, 0x4a8ea110, 0x86cafe58, 0x00000000, 0x4c3fdff2, 0x8582faa5,
+ 0x00000000, 0x4debe4fd, 0x845c8ae3, 0x00000000, 0x4f9292db, 0x8357ffc8,
+ 0x00000000, 0x5133cc93, 0x8275a0c1, 0x00000000, 0x52cf758d, 0x81b5abda,
+ 0x00000000, 0x54657193, 0x811855b5, 0x00000000, 0x55f5a4d1, 0x809dc971,
+ 0x00000000, 0x577ff3d9, 0x804628a8, 0x00000000, 0x590443a6, 0x80118b5e,
+ 0x00000000, 0x5a827999, 0x80000000, 0x00000000, 0x5bfa7b81, 0x80118b5e,
+ 0x00000000, 0x5d6c2f98, 0x804628a8, 0x00000000, 0x5ed77c88, 0x809dc971,
+ 0x00000000, 0x603c496b, 0x811855b5, 0x00000000, 0x619a7dcc, 0x81b5abda,
+ 0x00000000, 0x62f201ab, 0x8275a0c1, 0x00000000, 0x6442bd7c, 0x8357ffc8,
+ 0x00000000, 0x658c9a2c, 0x845c8ae3, 0x00000000, 0x66cf811f, 0x8582faa5,
+ 0x00000000, 0x680b5c32, 0x86cafe58, 0x00000000, 0x694015c1, 0x88343c0f,
+ 0x00000000, 0x6a6d98a3, 0x89be50c4, 0x00000000, 0x6b93d02d, 0x8b68d06f,
+ 0x00000000, 0x6cb2a835, 0x8d334626, 0x00000000, 0x6dca0d13, 0x8f1d343a,
+ 0x00000000, 0x6ed9eba0, 0x9126145f, 0x00000000, 0x6fe2313a, 0x934d57ca,
+ 0x00000000, 0x70e2cbc5, 0x9592675c, 0x00000000, 0x71dba9a9, 0x97f4a3cd,
+ 0x00000000, 0x72ccb9d9, 0x9a7365d3, 0x00000000, 0x73b5ebd0, 0x9d0dfe54,
+ 0x00000000, 0x74972f90, 0x9fc3b694, 0x00000000, 0x757075ab, 0xa293d067,
+ 0x00000000, 0x7641af3b, 0xa57d8667, 0x00000000, 0x770acdeb, 0xa8800c26,
+ 0x00000000, 0x77cbc3f0, 0xab9a8e6c, 0x00000000, 0x78848412, 0xaecc336c,
+ 0x00000000, 0x793501a7, 0xb2141b02, 0x00000000, 0x79dd3097, 0xb5715eef,
+ 0x00000000, 0x7a7d055a, 0xb8e3131a, 0x00000000, 0x7b1474fc, 0xbc6845ce,
+ 0x00000000, 0x7ba3751c, 0xc0000000, 0x00000000, 0x7c29fbed, 0xc3a94590,
+ 0x00000000, 0x7ca80037, 0xc763158f, 0x00000000, 0x7d1d7956, 0xcb2c6a83,
+ 0x00000000, 0x7d8a5f3e, 0xcf043ab3, 0x00000000, 0x7deeaa78, 0xd2e9786f,
+ 0x00000000, 0x7e4a5425, 0xd6db1255, 0x00000000, 0x7e9d55fb, 0xdad7f3a3,
+ 0x00000000, 0x7ee7aa4a, 0xdedf047d, 0x00000000, 0x7f294bfb, 0xe2ef2a3f,
+ 0x00000000, 0x7f62368e, 0xe70747c4, 0x00000000, 0x7f92661c, 0xeb263dbb,
+ 0x00000000, 0x7fb9d757, 0xef4aeaf1, 0x00000000, 0x7fd8878c, 0xf3742ca2,
+ 0x00000000, 0x7fee74a1, 0xf7a0deca, 0x00000000, 0x7ffb9d14, 0xfbcfdc71,
+ 0x00000000, 0x7fffffff, 0x00000000, 0x00000000, 0x7ffb9d14, 0x0430238f,
+ 0x00000000, 0x7fee74a1, 0x085f2136, 0x00000000, 0x7fd8878c, 0x0c8bd35d,
+ 0x00000000, 0x7fb9d757, 0x10b5150f, 0x00000000, 0x7f92661c, 0x14d9c245,
+ 0x00000000, 0x7f62368e, 0x18f8b83c, 0x00000000, 0x7f294bfb, 0x1d10d5c1,
+ 0x00000000, 0x7ee7aa4a, 0x2120fb82, 0x00000000, 0x7e9d55fb, 0x25280c5d,
+ 0x00000000, 0x7e4a5425, 0x2924edab, 0x00000000, 0x7deeaa78, 0x2d168791,
+ 0x00000000, 0x7d8a5f3e, 0x30fbc54c, 0x00000000, 0x7d1d7956, 0x34d3957d,
+ 0x00000000, 0x7ca80037, 0x389cea71, 0x00000000, 0x7c29fbed, 0x3c56ba6f,
+ 0x00000000, 0x7ba3751c, 0x3fffffff, 0x00000000, 0x7b1474fc, 0x4397ba31,
+ 0x00000000, 0x7a7d055a, 0x471cece6, 0x00000000, 0x79dd3097, 0x4a8ea110,
+ 0x00000000, 0x793501a7, 0x4debe4fd, 0x00000000, 0x78848412, 0x5133cc93,
+ 0x00000000, 0x77cbc3f0, 0x54657193, 0x00000000, 0x770acdeb, 0x577ff3d9,
+ 0x00000000, 0x7641af3b, 0x5a827999, 0x00000000, 0x757075ab, 0x5d6c2f98,
+ 0x00000000, 0x74972f90, 0x603c496b, 0x00000000, 0x73b5ebd0, 0x62f201ab,
+ 0x00000000, 0x72ccb9d9, 0x658c9a2c, 0x00000000, 0x71dba9a9, 0x680b5c32,
+ 0x00000000, 0x70e2cbc5, 0x6a6d98a3, 0x00000000, 0x6fe2313a, 0x6cb2a835,
+ 0x00000000, 0x6ed9eba0, 0x6ed9eba0, 0x00000000, 0x6dca0d13, 0x70e2cbc5,
+ 0x00000000, 0x6cb2a835, 0x72ccb9d9, 0x00000000, 0x6b93d02d, 0x74972f90,
+ 0x00000000, 0x6a6d98a3, 0x7641af3b, 0x00000000, 0x694015c1, 0x77cbc3f0,
+ 0x00000000, 0x680b5c32, 0x793501a7, 0x00000000, 0x66cf811f, 0x7a7d055a,
+ 0x00000000, 0x658c9a2c, 0x7ba3751c, 0x00000000, 0x6442bd7c, 0x7ca80037,
+ 0x00000000, 0x62f201ab, 0x7d8a5f3e, 0x00000000, 0x619a7dcc, 0x7e4a5425,
+ 0x00000000, 0x603c496b, 0x7ee7aa4a, 0x00000000, 0x5ed77c88, 0x7f62368e,
+ 0x00000000, 0x5d6c2f98, 0x7fb9d757, 0x00000000, 0x5bfa7b81, 0x7fee74a1,
+ 0x00000000, 0x5a827999, 0x7fffffff, 0x00000000, 0x590443a6, 0x7fee74a1,
+ 0x00000000, 0x577ff3d9, 0x7fb9d757, 0x00000000, 0x55f5a4d1, 0x7f62368e,
+ 0x00000000, 0x54657193, 0x7ee7aa4a, 0x00000000, 0x52cf758d, 0x7e4a5425,
+ 0x00000000, 0x5133cc93, 0x7d8a5f3e, 0x00000000, 0x4f9292db, 0x7ca80037,
+ 0x00000000, 0x4debe4fd, 0x7ba3751c, 0x00000000, 0x4c3fdff2, 0x7a7d055a,
+ 0x00000000, 0x4a8ea110, 0x793501a7, 0x00000000, 0x48d84608, 0x77cbc3f0,
+ 0x00000000, 0x471cece6, 0x7641af3b, 0x00000000, 0x455cb40b, 0x74972f90,
+ 0x00000000, 0x4397ba31, 0x72ccb9d9, 0x00000000, 0x41ce1e64, 0x70e2cbc5,
+ 0x00000000, 0x3fffffff, 0x6ed9eba0, 0x00000000, 0x3e2d7eb0, 0x6cb2a835,
+ 0x00000000, 0x3c56ba6f, 0x6a6d98a3, 0x00000000, 0x3a7bd381, 0x680b5c32,
+ 0x00000000, 0x389cea71, 0x658c9a2c, 0x00000000, 0x36ba2013, 0x62f201ab,
+ 0x00000000, 0x34d3957d, 0x603c496b, 0x00000000, 0x32e96c08, 0x5d6c2f98,
+ 0x00000000, 0x30fbc54c, 0x5a827999, 0x00000000, 0x2f0ac31f, 0x577ff3d9,
+ 0x00000000, 0x2d168791, 0x54657193, 0x00000000, 0x2b1f34eb, 0x5133cc93,
+ 0x00000000, 0x2924edab, 0x4debe4fd, 0x00000000, 0x2727d485, 0x4a8ea110,
+ 0x00000000, 0x25280c5d, 0x471cece6, 0x00000000, 0x2325b847, 0x4397ba31,
+ 0x00000000, 0x2120fb82, 0x3fffffff, 0x00000000, 0x1f19f97a, 0x3c56ba6f,
+ 0x00000000, 0x1d10d5c1, 0x389cea71, 0x00000000, 0x1b05b40e, 0x34d3957d,
+ 0x00000000, 0x18f8b83c, 0x30fbc54c, 0x00000000, 0x16ea0646, 0x2d168791,
+ 0x00000000, 0x14d9c245, 0x2924edab, 0x00000000, 0x12c8106e, 0x25280c5d,
+ 0x00000000, 0x10b5150f, 0x2120fb82, 0x00000000, 0x0ea0f48c, 0x1d10d5c1,
+ 0x00000000, 0x0c8bd35d, 0x18f8b83c, 0x00000000, 0x0a75d60e, 0x14d9c245,
+ 0x00000000, 0x085f2136, 0x10b5150f, 0x00000000, 0x0647d97c, 0x0c8bd35d,
+ 0x00000000, 0x0430238f, 0x085f2136, 0x00000000, 0x02182427, 0x0430238f,
+ 0x00000000, 0x00000000, 0x00000000};
const WORD32 ixheaacd_pre_post_twid_cos_512[512] = {
- 0x7fffff7f, 0x7fffcdff, 0x7fff4d7f, 0x7ffe7e7f, 0x7ffd607f, 0x7ffbf2ff,
- 0x7ffa36ff, 0x7ff82bff, 0x7ff5d1ff, 0x7ff328ff, 0x7ff030ff, 0x7fecea7f,
- 0x7fe9547f, 0x7fe56fff, 0x7fe13c7f, 0x7fdcba7f, 0x7fd7e8ff, 0x7fd2c8ff,
- 0x7fcd59ff, 0x7fc79c7f, 0x7fc18f7f, 0x7fbb347f, 0x7fb489ff, 0x7fad90ff,
- 0x7fa6497f, 0x7f9eb2ff, 0x7f96cdff, 0x7f8e99ff, 0x7f86177f, 0x7f7d45ff,
- 0x7f7425ff, 0x7f6ab77f, 0x7f60fa7f, 0x7f56eeff, 0x7f4c947f, 0x7f41ebff,
- 0x7f36f4ff, 0x7f2baeff, 0x7f201aff, 0x7f14387f, 0x7f08077f, 0x7efb87ff,
- 0x7eeeba7f, 0x7ee19e7f, 0x7ed433ff, 0x7ec67bff, 0x7eb874ff, 0x7eaa207f,
- 0x7e9b7d7f, 0x7e8c8c7f, 0x7e7d4cff, 0x7e6dbfff, 0x7e5de4ff, 0x7e4dbbff,
- 0x7e3d44ff, 0x7e2c7fff, 0x7e1b6d7f, 0x7e0a0cff, 0x7df85e7f, 0x7de6627f,
- 0x7dd418ff, 0x7dc181ff, 0x7dae9cff, 0x7d9b6aff, 0x7d87eaff, 0x7d741dff,
- 0x7d6002ff, 0x7d4b9b7f, 0x7d36e5ff, 0x7d21e37f, 0x7d0c93ff, 0x7cf6f6ff,
- 0x7ce10cff, 0x7ccad67f, 0x7cb4527f, 0x7c9d817f, 0x7c8663ff, 0x7c6ef97f,
- 0x7c5741ff, 0x7c3f3e7f, 0x7c26ed7f, 0x7c0e507f, 0x7bf566ff, 0x7bdc307f,
- 0x7bc2adff, 0x7ba8deff, 0x7b8ec3ff, 0x7b745c7f, 0x7b59a8ff, 0x7b3ea97f,
- 0x7b235d7f, 0x7b07c5ff, 0x7aebe27f, 0x7acfb2ff, 0x7ab337ff, 0x7a96717f,
- 0x7a795eff, 0x7a5c00ff, 0x7a3e577f, 0x7a20627f, 0x7a02227f, 0x79e396ff,
- 0x79c4c07f, 0x79a59eff, 0x798631ff, 0x79667a7f, 0x7946777f, 0x792629ff,
- 0x790591ff, 0x78e4af7f, 0x78c381ff, 0x78a209ff, 0x7880477f, 0x785e3aff,
- 0x783be3ff, 0x781942ff, 0x77f657ff, 0x77d322ff, 0x77afa3ff, 0x778bdaff,
- 0x7767c87f, 0x77436bff, 0x771ec67f, 0x76f9d6ff, 0x76d49e7f, 0x76af1c7f,
- 0x768950ff, 0x76633cff, 0x763cdf7f, 0x7616397f, 0x75ef49ff, 0x75c8127f,
- 0x75a091ff, 0x7578c87f, 0x7550b6ff, 0x75285cff, 0x74ffbaff, 0x74d6d07f,
- 0x74ad9e7f, 0x748423ff, 0x745a617f, 0x7430577f, 0x740605ff, 0x73db6c7f,
- 0x73b08bff, 0x7385637f, 0x7359f47f, 0x732e3dff, 0x73023fff, 0x72d5fb7f,
- 0x72a9707f, 0x727c9e7f, 0x724f857f, 0x7222267f, 0x71f4807f, 0x71c694ff,
- 0x7198627f, 0x7169ea7f, 0x713b2c7f, 0x710c287f, 0x70dcdeff, 0x70ad4f7f,
- 0x707d7a7f, 0x704d607f, 0x701d00ff, 0x6fec5bff, 0x6fbb727f, 0x6f8a43ff,
- 0x6f58d07f, 0x6f27187f, 0x6ef51b7f, 0x6ec2da7f, 0x6e9054ff, 0x6e5d8b7f,
- 0x6e2a7dff, 0x6df72bff, 0x6dc3967f, 0x6d8fbd7f, 0x6d5ba07f, 0x6d27407f,
- 0x6cf29cff, 0x6cbdb5ff, 0x6c888bff, 0x6c531f7f, 0x6c1d6fff, 0x6be77d7f,
- 0x6bb1487f, 0x6b7ad17f, 0x6b44177f, 0x6b0d1bff, 0x6ad5ddff, 0x6a9e5e7f,
- 0x6a669cff, 0x6a2e997f, 0x69f654ff, 0x69bdceff, 0x698507ff, 0x694bff7f,
- 0x6912b67f, 0x68d92c7f, 0x689f617f, 0x6865567f, 0x682b0a7f, 0x67f07eff,
- 0x67b5b27f, 0x677aa67f, 0x673f5aff, 0x6703cf7f, 0x66c8047f, 0x668bf9ff,
- 0x664fafff, 0x661326ff, 0x65d65f7f, 0x659958ff, 0x655c137f, 0x651e8f7f,
- 0x64e0cd7f, 0x64a2ccff, 0x64648e7f, 0x642611ff, 0x63e757ff, 0x63a85fff,
- 0x63692aff, 0x6329b7ff, 0x62ea087f, 0x62aa1b7f, 0x6269f1ff, 0x62298b7f,
- 0x61e8e87f, 0x61a808ff, 0x6166ed7f, 0x612595ff, 0x60e4027f, 0x60a232ff,
- 0x606027ff, 0x601de1ff, 0x5fdb5fff, 0x5f98a37f, 0x5f55ab7f, 0x5f1278ff,
- 0x5ecf0b7f, 0x5e8b63ff, 0x5e4781ff, 0x5e03657f, 0x5dbf0f7f, 0x5d7a7f7f,
- 0x5d35b5ff, 0x5cf0b27f, 0x5cab75ff, 0x5c66007f, 0x5c2051ff, 0x5bda6a7f,
- 0x5b9449ff, 0x5b4df17f, 0x5b07607f, 0x5ac0977f, 0x5a79967f, 0x5a325d7f,
- 0x59eaecff, 0x59a344ff, 0x595b657f, 0x59134eff, 0x58cb01ff, 0x58827d7f,
- 0x5839c2ff, 0x57f0d1ff, 0x57a7aa7f, 0x575e4cff, 0x5714b97f, 0x56caf07f,
- 0x5680f1ff, 0x5636bdff, 0x55ec54ff, 0x55a1b67f, 0x5556e37f, 0x550bdbff,
- 0x54c09fff, 0x54752f7f, 0x54298aff, 0x53ddb27f, 0x5391a67f, 0x534566ff,
- 0x52f8f3ff, 0x52ac4d7f, 0x525f747f, 0x5212687f, 0x51c529ff, 0x5177b8ff,
- 0x512a157f, 0x50dc3fff, 0x508e387f, 0x503fffff, 0x4ff1957f, 0x4fa2f97f,
- 0x4f542c7f, 0x4f052e7f, 0x4eb5ffff, 0x4e66a0ff, 0x4e17117f, 0x4dc751ff,
- 0x4d7761ff, 0x4d2742ff, 0x4cd6f37f, 0x4c86757f, 0x4c35c77f, 0x4be4eaff,
- 0x4b93df7f, 0x4b42a57f, 0x4af13cff, 0x4a9fa67f, 0x4a4de17f, 0x49fbeeff,
- 0x49a9ce7f, 0x495780ff, 0x490505ff, 0x48b25dff, 0x485f897f, 0x480c87ff,
- 0x47b959ff, 0x4765ffff, 0x4712797f, 0x46bec77f, 0x466ae9ff, 0x4616e0ff,
- 0x45c2ac7f, 0x456e4d7f, 0x4519c2ff, 0x44c50e7f, 0x44702eff, 0x441b257f,
- 0x43c5f1ff, 0x437094ff, 0x431b0dff, 0x42c55dff, 0x426f847f, 0x421981ff,
- 0x41c356ff, 0x416d02ff, 0x411686ff, 0x40bfe27f, 0x4069167f, 0x4012227f,
- 0x3fbb06ff, 0x3f63c43f, 0x3f0c5a3f, 0x3eb4c97f, 0x3e5d123f, 0x3e05343f,
- 0x3dad2fff, 0x3d5505bf, 0x3cfcb5bf, 0x3ca43fff, 0x3c4ba4ff, 0x3bf2e4bf,
- 0x3b99ff7f, 0x3b40f57f, 0x3ae7c6ff, 0x3a8e73ff, 0x3a34fcff, 0x39db61ff,
- 0x3981a37f, 0x3927c13f, 0x38cdbbff, 0x3873937f, 0x3819487f, 0x37beda7f,
- 0x37644a7f, 0x370997ff, 0x36aec3bf, 0x3653cdbf, 0x35f8b5ff, 0x359d7d3f,
- 0x3542233f, 0x34e6a87f, 0x348b0cff, 0x342f513f, 0x33d3753f, 0x3377793f,
- 0x331b5d7f, 0x32bf223f, 0x3262c7bf, 0x32064dff, 0x31a9b57f, 0x314cfe7f,
- 0x30f028ff, 0x3093353f, 0x3036237f, 0x2fd8f3ff, 0x2f7ba73f, 0x2f1e3cff,
- 0x2ec0b57f, 0x2e63117f, 0x2e0550bf, 0x2da7737f, 0x2d497a3f, 0x2ceb64ff,
- 0x2c8d33ff, 0x2c2ee7bf, 0x2bd07fff, 0x2b71fd3f, 0x2b135fbf, 0x2ab4a7bf,
- 0x2a55d53f, 0x29f6e8bf, 0x2997e23f, 0x2938c23f, 0x28d988bf, 0x287a35ff,
- 0x281aca3f, 0x27bb45ff, 0x275ba8ff, 0x26fbf3bf, 0x269c267f, 0x263c417f,
- 0x25dc44bf, 0x257c30bf, 0x251c05bf, 0x24bbc3bf, 0x245b6aff, 0x23fafbff,
- 0x239a76bf, 0x2339db3f, 0x22d92a7f, 0x227863ff, 0x2217883f, 0x21b6973f,
- 0x215591bf, 0x20f477bf, 0x2093493f, 0x203206bf, 0x1fd0b03f, 0x1f6f461f,
- 0x1f0dc8bf, 0x1eac381f, 0x1e4a949f, 0x1de8de7f, 0x1d8715df, 0x1d253aff,
- 0x1cc34e1f, 0x1c614f7f, 0x1bff3f7f, 0x1b9d1e1f, 0x1b3aebbf, 0x1ad8a87f,
- 0x1a7654bf, 0x1a13f0bf, 0x19b17c7f, 0x194ef87f, 0x18ec64ff, 0x1889c1ff,
- 0x18270fdf, 0x17c44ebf, 0x17617f1f, 0x16fea0ff, 0x169bb4bf, 0x1638ba7f,
- 0x15d5b27f, 0x15729d1f, 0x150f7a7f, 0x14ac4adf, 0x14490e7f, 0x13e5c57f,
- 0x1382705f, 0x131f0f1f, 0x12bba21f, 0x1258299f, 0x11f4a5bf, 0x119116bf,
- 0x112d7cff, 0x10c9d89f, 0x106629df, 0x100270ff, 0x0f9eae4f, 0x0f3ae1ef,
- 0x0ed70c2f, 0x0e732d3f, 0x0e0f456f, 0x0dab54ef, 0x0d475bff, 0x0ce35adf,
- 0x0c7f51cf, 0x0c1b40ff, 0x0bb728bf, 0x0b53094f, 0x0aeee2cf, 0x0a8ab59f,
- 0x0a2681ef, 0x09c247ef, 0x095e07ef, 0x08f9c22f, 0x089576df, 0x0831264f,
- 0x07ccd0a7, 0x0768762f, 0x07041727, 0x069fb3c7, 0x063b4c57, 0x05d6e10f,
- 0x05727227, 0x050dffe7, 0x04a98a87, 0x04451247, 0x03e09767, 0x037c1a1f,
- 0x03179ab3, 0x02b3195f, 0x024e9663, 0x01ea11f7, 0x01858c5d, 0x012105d3,
- 0x00bc7e98, 0x0057f6e8};
+ 0x7fffff7f, 0x7fffcdff, 0x7fff4d7f, 0x7ffe7e7f, 0x7ffd607f, 0x7ffbf2ff,
+ 0x7ffa36ff, 0x7ff82bff, 0x7ff5d1ff, 0x7ff328ff, 0x7ff030ff, 0x7fecea7f,
+ 0x7fe9547f, 0x7fe56fff, 0x7fe13c7f, 0x7fdcba7f, 0x7fd7e8ff, 0x7fd2c8ff,
+ 0x7fcd59ff, 0x7fc79c7f, 0x7fc18f7f, 0x7fbb347f, 0x7fb489ff, 0x7fad90ff,
+ 0x7fa6497f, 0x7f9eb2ff, 0x7f96cdff, 0x7f8e99ff, 0x7f86177f, 0x7f7d45ff,
+ 0x7f7425ff, 0x7f6ab77f, 0x7f60fa7f, 0x7f56eeff, 0x7f4c947f, 0x7f41ebff,
+ 0x7f36f4ff, 0x7f2baeff, 0x7f201aff, 0x7f14387f, 0x7f08077f, 0x7efb87ff,
+ 0x7eeeba7f, 0x7ee19e7f, 0x7ed433ff, 0x7ec67bff, 0x7eb874ff, 0x7eaa207f,
+ 0x7e9b7d7f, 0x7e8c8c7f, 0x7e7d4cff, 0x7e6dbfff, 0x7e5de4ff, 0x7e4dbbff,
+ 0x7e3d44ff, 0x7e2c7fff, 0x7e1b6d7f, 0x7e0a0cff, 0x7df85e7f, 0x7de6627f,
+ 0x7dd418ff, 0x7dc181ff, 0x7dae9cff, 0x7d9b6aff, 0x7d87eaff, 0x7d741dff,
+ 0x7d6002ff, 0x7d4b9b7f, 0x7d36e5ff, 0x7d21e37f, 0x7d0c93ff, 0x7cf6f6ff,
+ 0x7ce10cff, 0x7ccad67f, 0x7cb4527f, 0x7c9d817f, 0x7c8663ff, 0x7c6ef97f,
+ 0x7c5741ff, 0x7c3f3e7f, 0x7c26ed7f, 0x7c0e507f, 0x7bf566ff, 0x7bdc307f,
+ 0x7bc2adff, 0x7ba8deff, 0x7b8ec3ff, 0x7b745c7f, 0x7b59a8ff, 0x7b3ea97f,
+ 0x7b235d7f, 0x7b07c5ff, 0x7aebe27f, 0x7acfb2ff, 0x7ab337ff, 0x7a96717f,
+ 0x7a795eff, 0x7a5c00ff, 0x7a3e577f, 0x7a20627f, 0x7a02227f, 0x79e396ff,
+ 0x79c4c07f, 0x79a59eff, 0x798631ff, 0x79667a7f, 0x7946777f, 0x792629ff,
+ 0x790591ff, 0x78e4af7f, 0x78c381ff, 0x78a209ff, 0x7880477f, 0x785e3aff,
+ 0x783be3ff, 0x781942ff, 0x77f657ff, 0x77d322ff, 0x77afa3ff, 0x778bdaff,
+ 0x7767c87f, 0x77436bff, 0x771ec67f, 0x76f9d6ff, 0x76d49e7f, 0x76af1c7f,
+ 0x768950ff, 0x76633cff, 0x763cdf7f, 0x7616397f, 0x75ef49ff, 0x75c8127f,
+ 0x75a091ff, 0x7578c87f, 0x7550b6ff, 0x75285cff, 0x74ffbaff, 0x74d6d07f,
+ 0x74ad9e7f, 0x748423ff, 0x745a617f, 0x7430577f, 0x740605ff, 0x73db6c7f,
+ 0x73b08bff, 0x7385637f, 0x7359f47f, 0x732e3dff, 0x73023fff, 0x72d5fb7f,
+ 0x72a9707f, 0x727c9e7f, 0x724f857f, 0x7222267f, 0x71f4807f, 0x71c694ff,
+ 0x7198627f, 0x7169ea7f, 0x713b2c7f, 0x710c287f, 0x70dcdeff, 0x70ad4f7f,
+ 0x707d7a7f, 0x704d607f, 0x701d00ff, 0x6fec5bff, 0x6fbb727f, 0x6f8a43ff,
+ 0x6f58d07f, 0x6f27187f, 0x6ef51b7f, 0x6ec2da7f, 0x6e9054ff, 0x6e5d8b7f,
+ 0x6e2a7dff, 0x6df72bff, 0x6dc3967f, 0x6d8fbd7f, 0x6d5ba07f, 0x6d27407f,
+ 0x6cf29cff, 0x6cbdb5ff, 0x6c888bff, 0x6c531f7f, 0x6c1d6fff, 0x6be77d7f,
+ 0x6bb1487f, 0x6b7ad17f, 0x6b44177f, 0x6b0d1bff, 0x6ad5ddff, 0x6a9e5e7f,
+ 0x6a669cff, 0x6a2e997f, 0x69f654ff, 0x69bdceff, 0x698507ff, 0x694bff7f,
+ 0x6912b67f, 0x68d92c7f, 0x689f617f, 0x6865567f, 0x682b0a7f, 0x67f07eff,
+ 0x67b5b27f, 0x677aa67f, 0x673f5aff, 0x6703cf7f, 0x66c8047f, 0x668bf9ff,
+ 0x664fafff, 0x661326ff, 0x65d65f7f, 0x659958ff, 0x655c137f, 0x651e8f7f,
+ 0x64e0cd7f, 0x64a2ccff, 0x64648e7f, 0x642611ff, 0x63e757ff, 0x63a85fff,
+ 0x63692aff, 0x6329b7ff, 0x62ea087f, 0x62aa1b7f, 0x6269f1ff, 0x62298b7f,
+ 0x61e8e87f, 0x61a808ff, 0x6166ed7f, 0x612595ff, 0x60e4027f, 0x60a232ff,
+ 0x606027ff, 0x601de1ff, 0x5fdb5fff, 0x5f98a37f, 0x5f55ab7f, 0x5f1278ff,
+ 0x5ecf0b7f, 0x5e8b63ff, 0x5e4781ff, 0x5e03657f, 0x5dbf0f7f, 0x5d7a7f7f,
+ 0x5d35b5ff, 0x5cf0b27f, 0x5cab75ff, 0x5c66007f, 0x5c2051ff, 0x5bda6a7f,
+ 0x5b9449ff, 0x5b4df17f, 0x5b07607f, 0x5ac0977f, 0x5a79967f, 0x5a325d7f,
+ 0x59eaecff, 0x59a344ff, 0x595b657f, 0x59134eff, 0x58cb01ff, 0x58827d7f,
+ 0x5839c2ff, 0x57f0d1ff, 0x57a7aa7f, 0x575e4cff, 0x5714b97f, 0x56caf07f,
+ 0x5680f1ff, 0x5636bdff, 0x55ec54ff, 0x55a1b67f, 0x5556e37f, 0x550bdbff,
+ 0x54c09fff, 0x54752f7f, 0x54298aff, 0x53ddb27f, 0x5391a67f, 0x534566ff,
+ 0x52f8f3ff, 0x52ac4d7f, 0x525f747f, 0x5212687f, 0x51c529ff, 0x5177b8ff,
+ 0x512a157f, 0x50dc3fff, 0x508e387f, 0x503fffff, 0x4ff1957f, 0x4fa2f97f,
+ 0x4f542c7f, 0x4f052e7f, 0x4eb5ffff, 0x4e66a0ff, 0x4e17117f, 0x4dc751ff,
+ 0x4d7761ff, 0x4d2742ff, 0x4cd6f37f, 0x4c86757f, 0x4c35c77f, 0x4be4eaff,
+ 0x4b93df7f, 0x4b42a57f, 0x4af13cff, 0x4a9fa67f, 0x4a4de17f, 0x49fbeeff,
+ 0x49a9ce7f, 0x495780ff, 0x490505ff, 0x48b25dff, 0x485f897f, 0x480c87ff,
+ 0x47b959ff, 0x4765ffff, 0x4712797f, 0x46bec77f, 0x466ae9ff, 0x4616e0ff,
+ 0x45c2ac7f, 0x456e4d7f, 0x4519c2ff, 0x44c50e7f, 0x44702eff, 0x441b257f,
+ 0x43c5f1ff, 0x437094ff, 0x431b0dff, 0x42c55dff, 0x426f847f, 0x421981ff,
+ 0x41c356ff, 0x416d02ff, 0x411686ff, 0x40bfe27f, 0x4069167f, 0x4012227f,
+ 0x3fbb06ff, 0x3f63c43f, 0x3f0c5a3f, 0x3eb4c97f, 0x3e5d123f, 0x3e05343f,
+ 0x3dad2fff, 0x3d5505bf, 0x3cfcb5bf, 0x3ca43fff, 0x3c4ba4ff, 0x3bf2e4bf,
+ 0x3b99ff7f, 0x3b40f57f, 0x3ae7c6ff, 0x3a8e73ff, 0x3a34fcff, 0x39db61ff,
+ 0x3981a37f, 0x3927c13f, 0x38cdbbff, 0x3873937f, 0x3819487f, 0x37beda7f,
+ 0x37644a7f, 0x370997ff, 0x36aec3bf, 0x3653cdbf, 0x35f8b5ff, 0x359d7d3f,
+ 0x3542233f, 0x34e6a87f, 0x348b0cff, 0x342f513f, 0x33d3753f, 0x3377793f,
+ 0x331b5d7f, 0x32bf223f, 0x3262c7bf, 0x32064dff, 0x31a9b57f, 0x314cfe7f,
+ 0x30f028ff, 0x3093353f, 0x3036237f, 0x2fd8f3ff, 0x2f7ba73f, 0x2f1e3cff,
+ 0x2ec0b57f, 0x2e63117f, 0x2e0550bf, 0x2da7737f, 0x2d497a3f, 0x2ceb64ff,
+ 0x2c8d33ff, 0x2c2ee7bf, 0x2bd07fff, 0x2b71fd3f, 0x2b135fbf, 0x2ab4a7bf,
+ 0x2a55d53f, 0x29f6e8bf, 0x2997e23f, 0x2938c23f, 0x28d988bf, 0x287a35ff,
+ 0x281aca3f, 0x27bb45ff, 0x275ba8ff, 0x26fbf3bf, 0x269c267f, 0x263c417f,
+ 0x25dc44bf, 0x257c30bf, 0x251c05bf, 0x24bbc3bf, 0x245b6aff, 0x23fafbff,
+ 0x239a76bf, 0x2339db3f, 0x22d92a7f, 0x227863ff, 0x2217883f, 0x21b6973f,
+ 0x215591bf, 0x20f477bf, 0x2093493f, 0x203206bf, 0x1fd0b03f, 0x1f6f461f,
+ 0x1f0dc8bf, 0x1eac381f, 0x1e4a949f, 0x1de8de7f, 0x1d8715df, 0x1d253aff,
+ 0x1cc34e1f, 0x1c614f7f, 0x1bff3f7f, 0x1b9d1e1f, 0x1b3aebbf, 0x1ad8a87f,
+ 0x1a7654bf, 0x1a13f0bf, 0x19b17c7f, 0x194ef87f, 0x18ec64ff, 0x1889c1ff,
+ 0x18270fdf, 0x17c44ebf, 0x17617f1f, 0x16fea0ff, 0x169bb4bf, 0x1638ba7f,
+ 0x15d5b27f, 0x15729d1f, 0x150f7a7f, 0x14ac4adf, 0x14490e7f, 0x13e5c57f,
+ 0x1382705f, 0x131f0f1f, 0x12bba21f, 0x1258299f, 0x11f4a5bf, 0x119116bf,
+ 0x112d7cff, 0x10c9d89f, 0x106629df, 0x100270ff, 0x0f9eae4f, 0x0f3ae1ef,
+ 0x0ed70c2f, 0x0e732d3f, 0x0e0f456f, 0x0dab54ef, 0x0d475bff, 0x0ce35adf,
+ 0x0c7f51cf, 0x0c1b40ff, 0x0bb728bf, 0x0b53094f, 0x0aeee2cf, 0x0a8ab59f,
+ 0x0a2681ef, 0x09c247ef, 0x095e07ef, 0x08f9c22f, 0x089576df, 0x0831264f,
+ 0x07ccd0a7, 0x0768762f, 0x07041727, 0x069fb3c7, 0x063b4c57, 0x05d6e10f,
+ 0x05727227, 0x050dffe7, 0x04a98a87, 0x04451247, 0x03e09767, 0x037c1a1f,
+ 0x03179ab3, 0x02b3195f, 0x024e9663, 0x01ea11f7, 0x01858c5d, 0x012105d3,
+ 0x00bc7e98, 0x0057f6e8};
const WORD32 ixheaacd_pre_post_twid_sin_512[512] = {
- 0x000c90fd, 0x007118dc, 0x00d5a074, 0x013a2789, 0x019eaddd, 0x0203332f,
- 0x0267b747, 0x02cc39df, 0x0330babf, 0x039539a7, 0x03f9b65b, 0x045e3097,
- 0x04c2a827, 0x05271cc7, 0x058b8e2f, 0x05effc37, 0x0654668f, 0x06b8cd07,
- 0x071d2f4f, 0x07818d3f, 0x07e5e687, 0x084a3aef, 0x08ae8a3f, 0x0912d42f,
- 0x0977187f, 0x09db56ff, 0x0a3f8f6f, 0x0aa3c18f, 0x0b07ed1f, 0x0b6c11cf,
- 0x0bd02f7f, 0x0c3445ef, 0x0c9854cf, 0x0cfc5bef, 0x0d605aff, 0x0dc451df,
- 0x0e28402f, 0x0e8c25cf, 0x0ef0027f, 0x0f53d5ef, 0x0fb79fdf, 0x101b601f,
- 0x107f167f, 0x10e2c2bf, 0x1146647f, 0x11a9fb7f, 0x120d87bf, 0x127108df,
- 0x12d47e7f, 0x1337e89f, 0x139b46bf, 0x13fe98ff, 0x1461debf, 0x14c517ff,
- 0x1528445f, 0x158b63bf, 0x15ee75bf, 0x16517a5f, 0x16b4711f, 0x171759df,
- 0x177a345f, 0x17dd007f, 0x183fbdbf, 0x18a26c1f, 0x19050b3f, 0x19679aff,
- 0x19ca1b1f, 0x1a2c8b3f, 0x1a8eeb3f, 0x1af13adf, 0x1b5379df, 0x1bb5a7ff,
- 0x1c17c51f, 0x1c79d0df, 0x1cdbcaff, 0x1d3db35f, 0x1d9f89bf, 0x1e014dbf,
- 0x1e62ff3f, 0x1ec49e1f, 0x1f2629df, 0x1f87a27f, 0x1fe9079f, 0x204a593f,
- 0x20ab96bf, 0x210cbfff, 0x216dd53f, 0x21ced57f, 0x222fc0ff, 0x2290977f,
- 0x22f158bf, 0x2352043f, 0x23b299ff, 0x241319bf, 0x2473833f, 0x24d3d63f,
- 0x253412bf, 0x259437ff, 0x25f4463f, 0x26543cff, 0x26b41bff, 0x2713e33f,
- 0x2773927f, 0x27d3293f, 0x2832a77f, 0x28920cff, 0x28f1597f, 0x29508cbf,
- 0x29afa63f, 0x2a0ea63f, 0x2a6d8c3f, 0x2acc583f, 0x2b2b09bf, 0x2b89a07f,
- 0x2be81c7f, 0x2c467d3f, 0x2ca4c2ff, 0x2d02ecff, 0x2d60fb3f, 0x2dbeed7f,
- 0x2e1cc37f, 0x2e7a7d3f, 0x2ed81a3f, 0x2f359a3f, 0x2f92fd3f, 0x2ff042bf,
- 0x304d6abf, 0x30aa74ff, 0x3107613f, 0x31642f3f, 0x31c0debf, 0x321d6f7f,
- 0x3279e13f, 0x32d633ff, 0x3332677f, 0x338e7b3f, 0x33ea6f3f, 0x3446433f,
- 0x34a1f6ff, 0x34fd8a3f, 0x3558fcbf, 0x35b44e7f, 0x360f7eff, 0x366a8e3f,
- 0x36c57bff, 0x372047bf, 0x377af1bf, 0x37d5793f, 0x382fde7f, 0x388a20ff,
- 0x38e4407f, 0x393e3d3f, 0x3998167f, 0x39f1cc3f, 0x3a4b5dff, 0x3aa4cbff,
- 0x3afe15ff, 0x3b573b7f, 0x3bb03c3f, 0x3c09183f, 0x3c61cf3f, 0x3cba60ff,
- 0x3d12cd3f, 0x3d6b13ff, 0x3dc334bf, 0x3e1b2f3f, 0x3e73037f, 0x3ecab17f,
- 0x3f22387f, 0x3f79987f, 0x3fd0d17f, 0x4027e2ff, 0x407eccff, 0x40d58f7f,
- 0x412c297f, 0x41829b7f, 0x41d8e57f, 0x422f067f, 0x4284fe7f, 0x42dacdff,
- 0x4330737f, 0x4385efff, 0x43db42ff, 0x44306bff, 0x44856aff, 0x44da3f7f,
- 0x452ee97f, 0x458368ff, 0x45d7bdff, 0x462be77f, 0x467fe57f, 0x46d3b87f,
- 0x47275f7f, 0x477ada7f, 0x47ce297f, 0x48214c7f, 0x4874427f, 0x48c70c7f,
- 0x4919a8ff, 0x496c187f, 0x49be5aff, 0x4a106fff, 0x4a6256ff, 0x4ab4107f,
- 0x4b059b7f, 0x4b56f87f, 0x4ba826ff, 0x4bf9267f, 0x4c49f77f, 0x4c9a997f,
- 0x4ceb0bff, 0x4d3b4eff, 0x4d8b627f, 0x4ddb467f, 0x4e2af9ff, 0x4e7a7d7f,
- 0x4ec9d07f, 0x4f18f2ff, 0x4f67e47f, 0x4fb6a4ff, 0x5005347f, 0x5053927f,
- 0x50a1beff, 0x50efb9ff, 0x513d82ff, 0x518b197f, 0x51d87dff, 0x5225afff,
- 0x5272af7f, 0x52bf7bff, 0x530c157f, 0x53587b7f, 0x53a4ae7f, 0x53f0ad7f,
- 0x543c78ff, 0x5488107f, 0x54d373ff, 0x551ea2ff, 0x55699d7f, 0x55b462ff,
- 0x55fef3ff, 0x56494fff, 0x5693767f, 0x56dd67ff, 0x5727237f, 0x5770a97f,
- 0x57b9f97f, 0x580312ff, 0x584bf6ff, 0x5894a3ff, 0x58dd1a7f, 0x592559ff,
- 0x596d627f, 0x59b533ff, 0x59fcce7f, 0x5a4430ff, 0x5a8b5bff, 0x5ad24eff,
- 0x5b1909ff, 0x5b5f8cff, 0x5ba5d77f, 0x5bebe97f, 0x5c31c2ff, 0x5c77637f,
- 0x5cbcca7f, 0x5d01f8ff, 0x5d46ed7f, 0x5d8ba8ff, 0x5dd02a7f, 0x5e1471ff,
- 0x5e587fff, 0x5e9c537f, 0x5edfec7f, 0x5f234aff, 0x5f666eff, 0x5fa957ff,
- 0x5fec05ff, 0x602e78ff, 0x6070b07f, 0x60b2ac7f, 0x60f46cff, 0x6135f17f,
- 0x617739ff, 0x61b8467f, 0x61f916ff, 0x6239aaff, 0x627a01ff, 0x62ba1c7f,
- 0x62f9f9ff, 0x63399a7f, 0x6378fdff, 0x63b823ff, 0x63f70bff, 0x6435b6ff,
- 0x647423ff, 0x64b252ff, 0x64f043ff, 0x652df67f, 0x656b6a7f, 0x65a8a07f,
- 0x65e5977f, 0x66224f7f, 0x665ec87f, 0x669b027f, 0x66d6fcff, 0x6712b7ff,
- 0x674e33ff, 0x67896f7f, 0x67c46b7f, 0x67ff27ff, 0x6839a37f, 0x6873deff,
- 0x68adda7f, 0x68e794ff, 0x69210eff, 0x695a47ff, 0x69933fff, 0x69cbf6ff,
- 0x6a046c7f, 0x6a3ca07f, 0x6a74937f, 0x6aac447f, 0x6ae3b37f, 0x6b1ae0ff,
- 0x6b51cc7f, 0x6b88757f, 0x6bbedbff, 0x6bf5007f, 0x6c2ae1ff, 0x6c6080ff,
- 0x6c95dcff, 0x6ccaf5ff, 0x6cffcbff, 0x6d345eff, 0x6d68adff, 0x6d9cb9ff,
- 0x6dd0827f, 0x6e0406ff, 0x6e37477f, 0x6e6a447f, 0x6e9cfcff, 0x6ecf717f,
- 0x6f01a17f, 0x6f338cff, 0x6f6533ff, 0x6f9695ff, 0x6fc7b37f, 0x6ff88bff,
- 0x70291eff, 0x70596d7f, 0x7089767f, 0x70b939ff, 0x70e8b77f, 0x7117efff,
- 0x7146e27f, 0x71758eff, 0x71a3f5ff, 0x71d2167f, 0x71fff07f, 0x722d84ff,
- 0x725ad27f, 0x7287d97f, 0x72b499ff, 0x72e1137f, 0x730d467f, 0x733931ff,
- 0x7364d6ff, 0x7390347f, 0x73bb4a7f, 0x73e6197f, 0x7410a0ff, 0x743ae0ff,
- 0x7464d8ff, 0x748e88ff, 0x74b7f17f, 0x74e111ff, 0x7509ea7f, 0x75327a7f,
- 0x755ac27f, 0x7582c1ff, 0x75aa787f, 0x75d1e6ff, 0x75f90cff, 0x761fe97f,
- 0x76467dff, 0x766cc8ff, 0x7692caff, 0x76b883ff, 0x76ddf37f, 0x770319ff,
- 0x7727f6ff, 0x774c89ff, 0x7770d3ff, 0x7794d3ff, 0x77b88a7f, 0x77dbf6ff,
- 0x77ff19ff, 0x7821f27f, 0x784480ff, 0x7866c4ff, 0x7888bf7f, 0x78aa6eff,
- 0x78cbd3ff, 0x78eceeff, 0x790dbeff, 0x792e447f, 0x794e7f7f, 0x796e6eff,
- 0x798e13ff, 0x79ad6dff, 0x79cc7cff, 0x79eb40ff, 0x7a09b97f, 0x7a27e6ff,
- 0x7a45c8ff, 0x7a635f7f, 0x7a80aa7f, 0x7a9da9ff, 0x7aba5dff, 0x7ad6c5ff,
- 0x7af2e27f, 0x7b0eb2ff, 0x7b2a377f, 0x7b45707f, 0x7b605cff, 0x7b7afd7f,
- 0x7b9551ff, 0x7baf59ff, 0x7bc915ff, 0x7be2857f, 0x7bfba87f, 0x7c147eff,
- 0x7c2d08ff, 0x7c45467f, 0x7c5d36ff, 0x7c74db7f, 0x7c8c327f, 0x7ca33cff,
- 0x7cb9fa7f, 0x7cd06b7f, 0x7ce68eff, 0x7cfc657f, 0x7d11eeff, 0x7d272b7f,
- 0x7d3c1a7f, 0x7d50bc7f, 0x7d6510ff, 0x7d79187f, 0x7d8cd1ff, 0x7da03e7f,
- 0x7db35d7f, 0x7dc62eff, 0x7dd8b2ff, 0x7deae8ff, 0x7dfcd17f, 0x7e0e6c7f,
- 0x7e1fb97f, 0x7e30b87f, 0x7e4169ff, 0x7e51cd7f, 0x7e61e2ff, 0x7e71aa7f,
- 0x7e81247f, 0x7e904fff, 0x7e9f2d7f, 0x7eadbcff, 0x7ebbfdff, 0x7ec9f0ff,
- 0x7ed795ff, 0x7ee4ecff, 0x7ef1f4ff, 0x7efeaeff, 0x7f0b1aff, 0x7f17387f,
- 0x7f23077f, 0x7f2e87ff, 0x7f39b9ff, 0x7f449d7f, 0x7f4f327f, 0x7f5978ff,
- 0x7f63717f, 0x7f6d1a7f, 0x7f76757f, 0x7f7f81ff, 0x7f883f7f, 0x7f90adff,
- 0x7f98ce7f, 0x7fa09fff, 0x7fa8227f, 0x7faf56ff, 0x7fb63bff, 0x7fbcd27f,
- 0x7fc319ff, 0x7fc912ff, 0x7fcebcff, 0x7fd4187f, 0x7fd924ff, 0x7fdde27f,
- 0x7fe250ff, 0x7fe6707f, 0x7fea417f, 0x7fedc37f, 0x7ff0f67f, 0x7ff3da7f,
- 0x7ff66fff, 0x7ff8b5ff, 0x7ffaad7f, 0x7ffc55ff, 0x7ffdaeff, 0x7ffeb97f,
- 0x7fff74ff, 0x7fffe1ff};
+ 0x000c90fd, 0x007118dc, 0x00d5a074, 0x013a2789, 0x019eaddd, 0x0203332f,
+ 0x0267b747, 0x02cc39df, 0x0330babf, 0x039539a7, 0x03f9b65b, 0x045e3097,
+ 0x04c2a827, 0x05271cc7, 0x058b8e2f, 0x05effc37, 0x0654668f, 0x06b8cd07,
+ 0x071d2f4f, 0x07818d3f, 0x07e5e687, 0x084a3aef, 0x08ae8a3f, 0x0912d42f,
+ 0x0977187f, 0x09db56ff, 0x0a3f8f6f, 0x0aa3c18f, 0x0b07ed1f, 0x0b6c11cf,
+ 0x0bd02f7f, 0x0c3445ef, 0x0c9854cf, 0x0cfc5bef, 0x0d605aff, 0x0dc451df,
+ 0x0e28402f, 0x0e8c25cf, 0x0ef0027f, 0x0f53d5ef, 0x0fb79fdf, 0x101b601f,
+ 0x107f167f, 0x10e2c2bf, 0x1146647f, 0x11a9fb7f, 0x120d87bf, 0x127108df,
+ 0x12d47e7f, 0x1337e89f, 0x139b46bf, 0x13fe98ff, 0x1461debf, 0x14c517ff,
+ 0x1528445f, 0x158b63bf, 0x15ee75bf, 0x16517a5f, 0x16b4711f, 0x171759df,
+ 0x177a345f, 0x17dd007f, 0x183fbdbf, 0x18a26c1f, 0x19050b3f, 0x19679aff,
+ 0x19ca1b1f, 0x1a2c8b3f, 0x1a8eeb3f, 0x1af13adf, 0x1b5379df, 0x1bb5a7ff,
+ 0x1c17c51f, 0x1c79d0df, 0x1cdbcaff, 0x1d3db35f, 0x1d9f89bf, 0x1e014dbf,
+ 0x1e62ff3f, 0x1ec49e1f, 0x1f2629df, 0x1f87a27f, 0x1fe9079f, 0x204a593f,
+ 0x20ab96bf, 0x210cbfff, 0x216dd53f, 0x21ced57f, 0x222fc0ff, 0x2290977f,
+ 0x22f158bf, 0x2352043f, 0x23b299ff, 0x241319bf, 0x2473833f, 0x24d3d63f,
+ 0x253412bf, 0x259437ff, 0x25f4463f, 0x26543cff, 0x26b41bff, 0x2713e33f,
+ 0x2773927f, 0x27d3293f, 0x2832a77f, 0x28920cff, 0x28f1597f, 0x29508cbf,
+ 0x29afa63f, 0x2a0ea63f, 0x2a6d8c3f, 0x2acc583f, 0x2b2b09bf, 0x2b89a07f,
+ 0x2be81c7f, 0x2c467d3f, 0x2ca4c2ff, 0x2d02ecff, 0x2d60fb3f, 0x2dbeed7f,
+ 0x2e1cc37f, 0x2e7a7d3f, 0x2ed81a3f, 0x2f359a3f, 0x2f92fd3f, 0x2ff042bf,
+ 0x304d6abf, 0x30aa74ff, 0x3107613f, 0x31642f3f, 0x31c0debf, 0x321d6f7f,
+ 0x3279e13f, 0x32d633ff, 0x3332677f, 0x338e7b3f, 0x33ea6f3f, 0x3446433f,
+ 0x34a1f6ff, 0x34fd8a3f, 0x3558fcbf, 0x35b44e7f, 0x360f7eff, 0x366a8e3f,
+ 0x36c57bff, 0x372047bf, 0x377af1bf, 0x37d5793f, 0x382fde7f, 0x388a20ff,
+ 0x38e4407f, 0x393e3d3f, 0x3998167f, 0x39f1cc3f, 0x3a4b5dff, 0x3aa4cbff,
+ 0x3afe15ff, 0x3b573b7f, 0x3bb03c3f, 0x3c09183f, 0x3c61cf3f, 0x3cba60ff,
+ 0x3d12cd3f, 0x3d6b13ff, 0x3dc334bf, 0x3e1b2f3f, 0x3e73037f, 0x3ecab17f,
+ 0x3f22387f, 0x3f79987f, 0x3fd0d17f, 0x4027e2ff, 0x407eccff, 0x40d58f7f,
+ 0x412c297f, 0x41829b7f, 0x41d8e57f, 0x422f067f, 0x4284fe7f, 0x42dacdff,
+ 0x4330737f, 0x4385efff, 0x43db42ff, 0x44306bff, 0x44856aff, 0x44da3f7f,
+ 0x452ee97f, 0x458368ff, 0x45d7bdff, 0x462be77f, 0x467fe57f, 0x46d3b87f,
+ 0x47275f7f, 0x477ada7f, 0x47ce297f, 0x48214c7f, 0x4874427f, 0x48c70c7f,
+ 0x4919a8ff, 0x496c187f, 0x49be5aff, 0x4a106fff, 0x4a6256ff, 0x4ab4107f,
+ 0x4b059b7f, 0x4b56f87f, 0x4ba826ff, 0x4bf9267f, 0x4c49f77f, 0x4c9a997f,
+ 0x4ceb0bff, 0x4d3b4eff, 0x4d8b627f, 0x4ddb467f, 0x4e2af9ff, 0x4e7a7d7f,
+ 0x4ec9d07f, 0x4f18f2ff, 0x4f67e47f, 0x4fb6a4ff, 0x5005347f, 0x5053927f,
+ 0x50a1beff, 0x50efb9ff, 0x513d82ff, 0x518b197f, 0x51d87dff, 0x5225afff,
+ 0x5272af7f, 0x52bf7bff, 0x530c157f, 0x53587b7f, 0x53a4ae7f, 0x53f0ad7f,
+ 0x543c78ff, 0x5488107f, 0x54d373ff, 0x551ea2ff, 0x55699d7f, 0x55b462ff,
+ 0x55fef3ff, 0x56494fff, 0x5693767f, 0x56dd67ff, 0x5727237f, 0x5770a97f,
+ 0x57b9f97f, 0x580312ff, 0x584bf6ff, 0x5894a3ff, 0x58dd1a7f, 0x592559ff,
+ 0x596d627f, 0x59b533ff, 0x59fcce7f, 0x5a4430ff, 0x5a8b5bff, 0x5ad24eff,
+ 0x5b1909ff, 0x5b5f8cff, 0x5ba5d77f, 0x5bebe97f, 0x5c31c2ff, 0x5c77637f,
+ 0x5cbcca7f, 0x5d01f8ff, 0x5d46ed7f, 0x5d8ba8ff, 0x5dd02a7f, 0x5e1471ff,
+ 0x5e587fff, 0x5e9c537f, 0x5edfec7f, 0x5f234aff, 0x5f666eff, 0x5fa957ff,
+ 0x5fec05ff, 0x602e78ff, 0x6070b07f, 0x60b2ac7f, 0x60f46cff, 0x6135f17f,
+ 0x617739ff, 0x61b8467f, 0x61f916ff, 0x6239aaff, 0x627a01ff, 0x62ba1c7f,
+ 0x62f9f9ff, 0x63399a7f, 0x6378fdff, 0x63b823ff, 0x63f70bff, 0x6435b6ff,
+ 0x647423ff, 0x64b252ff, 0x64f043ff, 0x652df67f, 0x656b6a7f, 0x65a8a07f,
+ 0x65e5977f, 0x66224f7f, 0x665ec87f, 0x669b027f, 0x66d6fcff, 0x6712b7ff,
+ 0x674e33ff, 0x67896f7f, 0x67c46b7f, 0x67ff27ff, 0x6839a37f, 0x6873deff,
+ 0x68adda7f, 0x68e794ff, 0x69210eff, 0x695a47ff, 0x69933fff, 0x69cbf6ff,
+ 0x6a046c7f, 0x6a3ca07f, 0x6a74937f, 0x6aac447f, 0x6ae3b37f, 0x6b1ae0ff,
+ 0x6b51cc7f, 0x6b88757f, 0x6bbedbff, 0x6bf5007f, 0x6c2ae1ff, 0x6c6080ff,
+ 0x6c95dcff, 0x6ccaf5ff, 0x6cffcbff, 0x6d345eff, 0x6d68adff, 0x6d9cb9ff,
+ 0x6dd0827f, 0x6e0406ff, 0x6e37477f, 0x6e6a447f, 0x6e9cfcff, 0x6ecf717f,
+ 0x6f01a17f, 0x6f338cff, 0x6f6533ff, 0x6f9695ff, 0x6fc7b37f, 0x6ff88bff,
+ 0x70291eff, 0x70596d7f, 0x7089767f, 0x70b939ff, 0x70e8b77f, 0x7117efff,
+ 0x7146e27f, 0x71758eff, 0x71a3f5ff, 0x71d2167f, 0x71fff07f, 0x722d84ff,
+ 0x725ad27f, 0x7287d97f, 0x72b499ff, 0x72e1137f, 0x730d467f, 0x733931ff,
+ 0x7364d6ff, 0x7390347f, 0x73bb4a7f, 0x73e6197f, 0x7410a0ff, 0x743ae0ff,
+ 0x7464d8ff, 0x748e88ff, 0x74b7f17f, 0x74e111ff, 0x7509ea7f, 0x75327a7f,
+ 0x755ac27f, 0x7582c1ff, 0x75aa787f, 0x75d1e6ff, 0x75f90cff, 0x761fe97f,
+ 0x76467dff, 0x766cc8ff, 0x7692caff, 0x76b883ff, 0x76ddf37f, 0x770319ff,
+ 0x7727f6ff, 0x774c89ff, 0x7770d3ff, 0x7794d3ff, 0x77b88a7f, 0x77dbf6ff,
+ 0x77ff19ff, 0x7821f27f, 0x784480ff, 0x7866c4ff, 0x7888bf7f, 0x78aa6eff,
+ 0x78cbd3ff, 0x78eceeff, 0x790dbeff, 0x792e447f, 0x794e7f7f, 0x796e6eff,
+ 0x798e13ff, 0x79ad6dff, 0x79cc7cff, 0x79eb40ff, 0x7a09b97f, 0x7a27e6ff,
+ 0x7a45c8ff, 0x7a635f7f, 0x7a80aa7f, 0x7a9da9ff, 0x7aba5dff, 0x7ad6c5ff,
+ 0x7af2e27f, 0x7b0eb2ff, 0x7b2a377f, 0x7b45707f, 0x7b605cff, 0x7b7afd7f,
+ 0x7b9551ff, 0x7baf59ff, 0x7bc915ff, 0x7be2857f, 0x7bfba87f, 0x7c147eff,
+ 0x7c2d08ff, 0x7c45467f, 0x7c5d36ff, 0x7c74db7f, 0x7c8c327f, 0x7ca33cff,
+ 0x7cb9fa7f, 0x7cd06b7f, 0x7ce68eff, 0x7cfc657f, 0x7d11eeff, 0x7d272b7f,
+ 0x7d3c1a7f, 0x7d50bc7f, 0x7d6510ff, 0x7d79187f, 0x7d8cd1ff, 0x7da03e7f,
+ 0x7db35d7f, 0x7dc62eff, 0x7dd8b2ff, 0x7deae8ff, 0x7dfcd17f, 0x7e0e6c7f,
+ 0x7e1fb97f, 0x7e30b87f, 0x7e4169ff, 0x7e51cd7f, 0x7e61e2ff, 0x7e71aa7f,
+ 0x7e81247f, 0x7e904fff, 0x7e9f2d7f, 0x7eadbcff, 0x7ebbfdff, 0x7ec9f0ff,
+ 0x7ed795ff, 0x7ee4ecff, 0x7ef1f4ff, 0x7efeaeff, 0x7f0b1aff, 0x7f17387f,
+ 0x7f23077f, 0x7f2e87ff, 0x7f39b9ff, 0x7f449d7f, 0x7f4f327f, 0x7f5978ff,
+ 0x7f63717f, 0x7f6d1a7f, 0x7f76757f, 0x7f7f81ff, 0x7f883f7f, 0x7f90adff,
+ 0x7f98ce7f, 0x7fa09fff, 0x7fa8227f, 0x7faf56ff, 0x7fb63bff, 0x7fbcd27f,
+ 0x7fc319ff, 0x7fc912ff, 0x7fcebcff, 0x7fd4187f, 0x7fd924ff, 0x7fdde27f,
+ 0x7fe250ff, 0x7fe6707f, 0x7fea417f, 0x7fedc37f, 0x7ff0f67f, 0x7ff3da7f,
+ 0x7ff66fff, 0x7ff8b5ff, 0x7ffaad7f, 0x7ffc55ff, 0x7ffdaeff, 0x7ffeb97f,
+ 0x7fff74ff, 0x7fffe1ff};
const WORD32 ixheaacd_pre_post_twid_cos_384[384] = {
- 0x7ffffeff, 0x7fffa6ff, 0x7ffec2ff, 0x7ffd527f, 0x7ffb55ff, 0x7ff8cc7f,
- 0x7ff5b6ff, 0x7ff2157f, 0x7fede6ff, 0x7fe92cff, 0x7fe3e5ff, 0x7fde12ff,
- 0x7fd7b3ff, 0x7fd0c87f, 0x7fc950ff, 0x7fc14d7f, 0x7fb8bd7f, 0x7fafa1ff,
- 0x7fa5f9ff, 0x7f9bc5ff, 0x7f91067f, 0x7f85baff, 0x7f79e37f, 0x7f6d7fff,
- 0x7f6090ff, 0x7f53167f, 0x7f450fff, 0x7f367dff, 0x7f27607f, 0x7f17b7ff,
- 0x7f07837f, 0x7ef6c3ff, 0x7ee5797f, 0x7ed3a37f, 0x7ec1427f, 0x7eae567f,
- 0x7e9adf7f, 0x7e86ddff, 0x7e72517f, 0x7e5d39ff, 0x7e47987f, 0x7e316bff,
- 0x7e1ab57f, 0x7e03747f, 0x7deba97f, 0x7dd3547f, 0x7dba74ff, 0x7da10bff,
- 0x7d87197f, 0x7d6c9cff, 0x7d5196ff, 0x7d36077f, 0x7d19ee7f, 0x7cfd4cff,
- 0x7ce021ff, 0x7cc26dff, 0x7ca430ff, 0x7c856b7f, 0x7c661d7f, 0x7c46477f,
- 0x7c25e87f, 0x7c0501ff, 0x7be392ff, 0x7bc19c7f, 0x7b9f1dff, 0x7b7c17ff,
- 0x7b588a7f, 0x7b3475ff, 0x7b0fd9ff, 0x7aeab77f, 0x7ac50dff, 0x7a9eddff,
- 0x7a7826ff, 0x7a50ea7f, 0x7a2926ff, 0x7a00ddff, 0x79d80f7f, 0x79aebaff,
- 0x7984e0ff, 0x795a81ff, 0x792f9dff, 0x790434ff, 0x78d846ff, 0x78abd47f,
- 0x787eddff, 0x785162ff, 0x7823647f, 0x77f4e1ff, 0x77c5dbff, 0x7796527f,
- 0x776645ff, 0x7735b67f, 0x7704a47f, 0x76d30fff, 0x76a0f8ff, 0x766e5f7f,
- 0x763b44ff, 0x7607a7ff, 0x75d389ff, 0x759eeaff, 0x7569ca7f, 0x7534297f,
- 0x74fe07ff, 0x74c765ff, 0x7490447f, 0x7458a27f, 0x7420817f, 0x73e7e07f,
- 0x73aec0ff, 0x7375227f, 0x733b04ff, 0x7300697f, 0x72c54fff, 0x7289b7ff,
- 0x724da2ff, 0x7211107f, 0x71d400ff, 0x7196747f, 0x71586b7f, 0x7119e5ff,
- 0x70dae4ff, 0x709b67ff, 0x705b6eff, 0x701afb7f, 0x6fda0c7f, 0x6f98a37f,
- 0x6f56bf7f, 0x6f14617f, 0x6ed189ff, 0x6e8e38ff, 0x6e4a6e7f, 0x6e062aff,
- 0x6dc16eff, 0x6d7c3a7f, 0x6d368dff, 0x6cf069ff, 0x6ca9cdff, 0x6c62bb7f,
- 0x6c1b317f, 0x6bd3317f, 0x6b8abaff, 0x6b41ce7f, 0x6af86c7f, 0x6aae94ff,
- 0x6a64487f, 0x6a19877f, 0x69ce527f, 0x6982a8ff, 0x69368bff, 0x68e9fb7f,
- 0x689cf7ff, 0x684f817f, 0x680198ff, 0x67b33dff, 0x676471ff, 0x671533ff,
- 0x66c584ff, 0x6675657f, 0x6624d57f, 0x65d3d57f, 0x658265ff, 0x653086ff,
- 0x64de397f, 0x648b7cff, 0x643851ff, 0x63e4b97f, 0x6390b37f, 0x633c3fff,
- 0x62e75f7f, 0x629212ff, 0x623c5a7f, 0x61e635ff, 0x618fa5ff, 0x6138aaff,
- 0x60e1457f, 0x608975ff, 0x60313c7f, 0x5fd8997f, 0x5f7f8d7f, 0x5f26187f,
- 0x5ecc3aff, 0x5e71f5ff, 0x5e17497f, 0x5dbc357f, 0x5d60ba7f, 0x5d04d97f,
- 0x5ca8927f, 0x5c4be57f, 0x5beed37f, 0x5b915cff, 0x5b3381ff, 0x5ad5427f,
- 0x5a769fff, 0x5a1799ff, 0x59b830ff, 0x595865ff, 0x58f8387f, 0x5897a9ff,
- 0x5836b9ff, 0x57d5697f, 0x5773b87f, 0x5711a77f, 0x56af377f, 0x564c67ff,
- 0x55e939ff, 0x5585ad7f, 0x5521c37f, 0x54bd7c7f, 0x5458d7ff, 0x53f3d6ff,
- 0x538e7a7f, 0x5328c1ff, 0x52c2adff, 0x525c3f7f, 0x51f576ff, 0x518e547f,
- 0x5126d7ff, 0x50bf02ff, 0x5056d57f, 0x4fee4fff, 0x4f85727f, 0x4f1c3dff,
- 0x4eb2b27f, 0x4e48d0ff, 0x4dde997f, 0x4d740c7f, 0x4d092a7f, 0x4c9df47f,
- 0x4c3269ff, 0x4bc68bff, 0x4b5a5aff, 0x4aedd77f, 0x4a8101ff, 0x4a13da7f,
- 0x49a6617f, 0x493897ff, 0x48ca7e7f, 0x485c14ff, 0x47ed5bff, 0x477e53ff,
- 0x470efdff, 0x469f597f, 0x462f67ff, 0x45bf297f, 0x454e9e7f, 0x44ddc77f,
- 0x446ca4ff, 0x43fb377f, 0x43897eff, 0x43177cff, 0x42a530ff, 0x42329bff,
- 0x41bfbeff, 0x414c98ff, 0x40d92bff, 0x4065777f, 0x3ff17cbf, 0x3f7d3bbf,
- 0x3f08b4ff, 0x3e93e93f, 0x3e1ed8ff, 0x3da9843f, 0x3d33ec3f, 0x3cbe10ff,
- 0x3c47f2ff, 0x3bd192ff, 0x3b5af17f, 0x3ae40ebf, 0x3a6ceb7f, 0x39f5883f,
- 0x397de57f, 0x3906037f, 0x388de2ff, 0x3815847f, 0x379ce87f, 0x37240f7f,
- 0x36aaf9ff, 0x3631a8bf, 0x35b81bff, 0x353e543f, 0x34c451ff, 0x344a15ff,
- 0x33cfa0bf, 0x3354f27f, 0x32da0c3f, 0x325eedff, 0x31e3987f, 0x31680c7f,
- 0x30ec49ff, 0x307051ff, 0x2ff424ff, 0x2f77c33f, 0x2efb2d7f, 0x2e7e643f,
- 0x2e0167ff, 0x2d84397f, 0x2d06d8bf, 0x2c8946bf, 0x2c0b83ff, 0x2b8d90bf,
- 0x2b0f6dff, 0x2a911bbf, 0x2a129aff, 0x2993ec3f, 0x29150fbf, 0x289605ff,
- 0x2816cfff, 0x27976dff, 0x2717e07f, 0x2698283f, 0x2618457f, 0x259838ff,
- 0x2518037f, 0x2497a4ff, 0x24171ebf, 0x2396707f, 0x23159b7f, 0x22949fff,
- 0x22137e7f, 0x219237bf, 0x2110cbff, 0x208f3c3f, 0x200d887f, 0x1f8bb1bf,
- 0x1f09b87f, 0x1e879cff, 0x1e05601f, 0x1d83025f, 0x1d00843f, 0x1c7de63f,
- 0x1bfb291f, 0x1b784d3f, 0x1af5531f, 0x1a723b9f, 0x19ef06ff, 0x196bb5ff,
- 0x18e8491f, 0x1864c0df, 0x17e11dff, 0x175d60df, 0x16d989ff, 0x16559a3f,
- 0x15d191df, 0x154d719f, 0x14c93a1f, 0x1444eb9f, 0x13c086ff, 0x133c0cbf,
- 0x12b77d5f, 0x1232d97f, 0x11ae219f, 0x1129565f, 0x10a4783f, 0x101f87ff,
- 0x0f9a85ff, 0x0f1572df, 0x0e904f2f, 0x0e0b1b8f, 0x0d85d88f, 0x0d0086af,
- 0x0c7b268f, 0x0bf5b8cf, 0x0b703ddf, 0x0aeab66f, 0x0a6522ff, 0x09df842f,
- 0x0959da7f, 0x08d4269f, 0x084e68ff, 0x07c8a24f, 0x0742d30f, 0x06bcfbdf,
- 0x06371d47, 0x05b137df, 0x052b4c37, 0x04a55ae7, 0x041f647f, 0x0399698f,
- 0x03136aaf, 0x028d686f, 0x02076363, 0x01815c1b, 0x00fb532f, 0x0075492e};
+ 0x7ffffeff, 0x7fffa6ff, 0x7ffec2ff, 0x7ffd527f, 0x7ffb55ff, 0x7ff8cc7f,
+ 0x7ff5b6ff, 0x7ff2157f, 0x7fede6ff, 0x7fe92cff, 0x7fe3e5ff, 0x7fde12ff,
+ 0x7fd7b3ff, 0x7fd0c87f, 0x7fc950ff, 0x7fc14d7f, 0x7fb8bd7f, 0x7fafa1ff,
+ 0x7fa5f9ff, 0x7f9bc5ff, 0x7f91067f, 0x7f85baff, 0x7f79e37f, 0x7f6d7fff,
+ 0x7f6090ff, 0x7f53167f, 0x7f450fff, 0x7f367dff, 0x7f27607f, 0x7f17b7ff,
+ 0x7f07837f, 0x7ef6c3ff, 0x7ee5797f, 0x7ed3a37f, 0x7ec1427f, 0x7eae567f,
+ 0x7e9adf7f, 0x7e86ddff, 0x7e72517f, 0x7e5d39ff, 0x7e47987f, 0x7e316bff,
+ 0x7e1ab57f, 0x7e03747f, 0x7deba97f, 0x7dd3547f, 0x7dba74ff, 0x7da10bff,
+ 0x7d87197f, 0x7d6c9cff, 0x7d5196ff, 0x7d36077f, 0x7d19ee7f, 0x7cfd4cff,
+ 0x7ce021ff, 0x7cc26dff, 0x7ca430ff, 0x7c856b7f, 0x7c661d7f, 0x7c46477f,
+ 0x7c25e87f, 0x7c0501ff, 0x7be392ff, 0x7bc19c7f, 0x7b9f1dff, 0x7b7c17ff,
+ 0x7b588a7f, 0x7b3475ff, 0x7b0fd9ff, 0x7aeab77f, 0x7ac50dff, 0x7a9eddff,
+ 0x7a7826ff, 0x7a50ea7f, 0x7a2926ff, 0x7a00ddff, 0x79d80f7f, 0x79aebaff,
+ 0x7984e0ff, 0x795a81ff, 0x792f9dff, 0x790434ff, 0x78d846ff, 0x78abd47f,
+ 0x787eddff, 0x785162ff, 0x7823647f, 0x77f4e1ff, 0x77c5dbff, 0x7796527f,
+ 0x776645ff, 0x7735b67f, 0x7704a47f, 0x76d30fff, 0x76a0f8ff, 0x766e5f7f,
+ 0x763b44ff, 0x7607a7ff, 0x75d389ff, 0x759eeaff, 0x7569ca7f, 0x7534297f,
+ 0x74fe07ff, 0x74c765ff, 0x7490447f, 0x7458a27f, 0x7420817f, 0x73e7e07f,
+ 0x73aec0ff, 0x7375227f, 0x733b04ff, 0x7300697f, 0x72c54fff, 0x7289b7ff,
+ 0x724da2ff, 0x7211107f, 0x71d400ff, 0x7196747f, 0x71586b7f, 0x7119e5ff,
+ 0x70dae4ff, 0x709b67ff, 0x705b6eff, 0x701afb7f, 0x6fda0c7f, 0x6f98a37f,
+ 0x6f56bf7f, 0x6f14617f, 0x6ed189ff, 0x6e8e38ff, 0x6e4a6e7f, 0x6e062aff,
+ 0x6dc16eff, 0x6d7c3a7f, 0x6d368dff, 0x6cf069ff, 0x6ca9cdff, 0x6c62bb7f,
+ 0x6c1b317f, 0x6bd3317f, 0x6b8abaff, 0x6b41ce7f, 0x6af86c7f, 0x6aae94ff,
+ 0x6a64487f, 0x6a19877f, 0x69ce527f, 0x6982a8ff, 0x69368bff, 0x68e9fb7f,
+ 0x689cf7ff, 0x684f817f, 0x680198ff, 0x67b33dff, 0x676471ff, 0x671533ff,
+ 0x66c584ff, 0x6675657f, 0x6624d57f, 0x65d3d57f, 0x658265ff, 0x653086ff,
+ 0x64de397f, 0x648b7cff, 0x643851ff, 0x63e4b97f, 0x6390b37f, 0x633c3fff,
+ 0x62e75f7f, 0x629212ff, 0x623c5a7f, 0x61e635ff, 0x618fa5ff, 0x6138aaff,
+ 0x60e1457f, 0x608975ff, 0x60313c7f, 0x5fd8997f, 0x5f7f8d7f, 0x5f26187f,
+ 0x5ecc3aff, 0x5e71f5ff, 0x5e17497f, 0x5dbc357f, 0x5d60ba7f, 0x5d04d97f,
+ 0x5ca8927f, 0x5c4be57f, 0x5beed37f, 0x5b915cff, 0x5b3381ff, 0x5ad5427f,
+ 0x5a769fff, 0x5a1799ff, 0x59b830ff, 0x595865ff, 0x58f8387f, 0x5897a9ff,
+ 0x5836b9ff, 0x57d5697f, 0x5773b87f, 0x5711a77f, 0x56af377f, 0x564c67ff,
+ 0x55e939ff, 0x5585ad7f, 0x5521c37f, 0x54bd7c7f, 0x5458d7ff, 0x53f3d6ff,
+ 0x538e7a7f, 0x5328c1ff, 0x52c2adff, 0x525c3f7f, 0x51f576ff, 0x518e547f,
+ 0x5126d7ff, 0x50bf02ff, 0x5056d57f, 0x4fee4fff, 0x4f85727f, 0x4f1c3dff,
+ 0x4eb2b27f, 0x4e48d0ff, 0x4dde997f, 0x4d740c7f, 0x4d092a7f, 0x4c9df47f,
+ 0x4c3269ff, 0x4bc68bff, 0x4b5a5aff, 0x4aedd77f, 0x4a8101ff, 0x4a13da7f,
+ 0x49a6617f, 0x493897ff, 0x48ca7e7f, 0x485c14ff, 0x47ed5bff, 0x477e53ff,
+ 0x470efdff, 0x469f597f, 0x462f67ff, 0x45bf297f, 0x454e9e7f, 0x44ddc77f,
+ 0x446ca4ff, 0x43fb377f, 0x43897eff, 0x43177cff, 0x42a530ff, 0x42329bff,
+ 0x41bfbeff, 0x414c98ff, 0x40d92bff, 0x4065777f, 0x3ff17cbf, 0x3f7d3bbf,
+ 0x3f08b4ff, 0x3e93e93f, 0x3e1ed8ff, 0x3da9843f, 0x3d33ec3f, 0x3cbe10ff,
+ 0x3c47f2ff, 0x3bd192ff, 0x3b5af17f, 0x3ae40ebf, 0x3a6ceb7f, 0x39f5883f,
+ 0x397de57f, 0x3906037f, 0x388de2ff, 0x3815847f, 0x379ce87f, 0x37240f7f,
+ 0x36aaf9ff, 0x3631a8bf, 0x35b81bff, 0x353e543f, 0x34c451ff, 0x344a15ff,
+ 0x33cfa0bf, 0x3354f27f, 0x32da0c3f, 0x325eedff, 0x31e3987f, 0x31680c7f,
+ 0x30ec49ff, 0x307051ff, 0x2ff424ff, 0x2f77c33f, 0x2efb2d7f, 0x2e7e643f,
+ 0x2e0167ff, 0x2d84397f, 0x2d06d8bf, 0x2c8946bf, 0x2c0b83ff, 0x2b8d90bf,
+ 0x2b0f6dff, 0x2a911bbf, 0x2a129aff, 0x2993ec3f, 0x29150fbf, 0x289605ff,
+ 0x2816cfff, 0x27976dff, 0x2717e07f, 0x2698283f, 0x2618457f, 0x259838ff,
+ 0x2518037f, 0x2497a4ff, 0x24171ebf, 0x2396707f, 0x23159b7f, 0x22949fff,
+ 0x22137e7f, 0x219237bf, 0x2110cbff, 0x208f3c3f, 0x200d887f, 0x1f8bb1bf,
+ 0x1f09b87f, 0x1e879cff, 0x1e05601f, 0x1d83025f, 0x1d00843f, 0x1c7de63f,
+ 0x1bfb291f, 0x1b784d3f, 0x1af5531f, 0x1a723b9f, 0x19ef06ff, 0x196bb5ff,
+ 0x18e8491f, 0x1864c0df, 0x17e11dff, 0x175d60df, 0x16d989ff, 0x16559a3f,
+ 0x15d191df, 0x154d719f, 0x14c93a1f, 0x1444eb9f, 0x13c086ff, 0x133c0cbf,
+ 0x12b77d5f, 0x1232d97f, 0x11ae219f, 0x1129565f, 0x10a4783f, 0x101f87ff,
+ 0x0f9a85ff, 0x0f1572df, 0x0e904f2f, 0x0e0b1b8f, 0x0d85d88f, 0x0d0086af,
+ 0x0c7b268f, 0x0bf5b8cf, 0x0b703ddf, 0x0aeab66f, 0x0a6522ff, 0x09df842f,
+ 0x0959da7f, 0x08d4269f, 0x084e68ff, 0x07c8a24f, 0x0742d30f, 0x06bcfbdf,
+ 0x06371d47, 0x05b137df, 0x052b4c37, 0x04a55ae7, 0x041f647f, 0x0399698f,
+ 0x03136aaf, 0x028d686f, 0x02076363, 0x01815c1b, 0x00fb532f, 0x0075492e};
const WORD32 ixheaacd_pre_post_twid_sin_384[384] = {
- 0x0010c152, 0x0096cbc0, 0x011cd589, 0x01a2de1b, 0x0228e4df, 0x02aee947,
- 0x0334eabf, 0x03bae8af, 0x0440e28f, 0x04c6d7bf, 0x054cc7af, 0x05d2b1d7,
- 0x06589597, 0x06de725f, 0x076447a7, 0x07ea14cf, 0x086fd93f, 0x08f5947f,
- 0x097b45df, 0x0a00ecef, 0x0a8688ef, 0x0b0c196f, 0x0b919dcf, 0x0c17157f,
- 0x0c9c7fef, 0x0d21dc7f, 0x0da72abf, 0x0e2c69ef, 0x0eb1999f, 0x0f36b92f,
- 0x0fbbc81f, 0x1040c5bf, 0x10c5b17f, 0x114a8aff, 0x11cf515f, 0x1254045f,
- 0x12d8a31f, 0x135d2d5f, 0x13e1a23f, 0x1466015f, 0x14ea4a1f, 0x156e7bff,
- 0x15f2963f, 0x1676987f, 0x16fa821f, 0x177e527f, 0x1802091f, 0x1885a57f,
- 0x190926df, 0x198c8cdf, 0x1a0fd6df, 0x1a93043f, 0x1b16147f, 0x1b9906ff,
- 0x1c1bdb3f, 0x1c9e90bf, 0x1d2126bf, 0x1da39cdf, 0x1e25f27f, 0x1ea826ff,
- 0x1f2a39ff, 0x1fac2abf, 0x202df8bf, 0x20afa37f, 0x21312a7f, 0x21b28cff,
- 0x2233ca7f, 0x22b4e27f, 0x2335d47f, 0x23b69fbf, 0x243743ff, 0x24b7c07f,
- 0x253814bf, 0x25b83fff, 0x263841ff, 0x26b81a3f, 0x2737c7ff, 0x27b74a7f,
- 0x2836a1bf, 0x28b5ccbf, 0x2934caff, 0x29b39c3f, 0x2a323f7f, 0x2ab0b4bf,
- 0x2b2efb3f, 0x2bad123f, 0x2c2af93f, 0x2ca8afff, 0x2d26357f, 0x2da389bf,
- 0x2e20abff, 0x2e9d9b7f, 0x2f1a57bf, 0x2f96e0bf, 0x3013353f, 0x308f54ff,
- 0x310b3fbf, 0x3186f47f, 0x320272ff, 0x327dbabf, 0x32f8caff, 0x3373a37f,
- 0x33ee437f, 0x3468aa7f, 0x34e2d7ff, 0x355ccb7f, 0x35d684bf, 0x365002bf,
- 0x36c944ff, 0x37424b7f, 0x37bb153f, 0x3833a1ff, 0x38abf0ff, 0x392401bf,
- 0x399bd3ff, 0x3a1366ff, 0x3a8aba7f, 0x3b01cd7f, 0x3b789fff, 0x3bef313f,
- 0x3c6580bf, 0x3cdb8dff, 0x3d51587f, 0x3dc6dfbf, 0x3e3c237f, 0x3eb122bf,
- 0x3f25dd3f, 0x3f9a527f, 0x400e81ff, 0x40826b7f, 0x40f60dff, 0x4169697f,
- 0x41dc7cff, 0x424f487f, 0x42c1caff, 0x4334047f, 0x43a5f3ff, 0x4417997f,
- 0x4488f47f, 0x44fa047f, 0x456ac87f, 0x45db407f, 0x464b6b7f, 0x46bb49ff,
- 0x472ada7f, 0x479a1d7f, 0x4809117f, 0x4877b67f, 0x48e60c7f, 0x495411ff,
- 0x49c1c77f, 0x4a2f2bff, 0x4a9c3eff, 0x4b09007f, 0x4b756eff, 0x4be18b7f,
- 0x4c4d547f, 0x4cb8c9ff, 0x4d23eaff, 0x4d8eb77f, 0x4df92f7f, 0x4e63517f,
- 0x4ecd1d7f, 0x4f3692ff, 0x4f9fb1ff, 0x5008797f, 0x5070e8ff, 0x50d9007f,
- 0x5140bf7f, 0x51a8257f, 0x520f317f, 0x5275e3ff, 0x52dc3b7f, 0x5342387f,
- 0x53a7d9ff, 0x540d1fff, 0x5472097f, 0x54d696ff, 0x553ac6ff, 0x559e997f,
- 0x56020e7f, 0x5665247f, 0x56c7dc7f, 0x572a34ff, 0x578c2d7f, 0x57edc67f,
- 0x584efeff, 0x58afd67f, 0x59104cff, 0x597061ff, 0x59d0147f, 0x5a2f647f,
- 0x5a8e51ff, 0x5aecdbff, 0x5b4b01ff, 0x5ba8c3ff, 0x5c06217f, 0x5c631a7f,
- 0x5cbfad7f, 0x5d1bdb7f, 0x5d77a2ff, 0x5dd303ff, 0x5e2dfdff, 0x5e8890ff,
- 0x5ee2bc7f, 0x5f3c7f7f, 0x5f95d9ff, 0x5feecbff, 0x6047547f, 0x609f73ff,
- 0x60f728ff, 0x614e73ff, 0x61a553ff, 0x61fbc8ff, 0x6251d27f, 0x62a7707f,
- 0x62fca1ff, 0x635166ff, 0x63a5beff, 0x63f9a9ff, 0x644d26ff, 0x64a0367f,
- 0x64f2d6ff, 0x6545097f, 0x6596cc7f, 0x65e81fff, 0x663903ff, 0x668977ff,
- 0x66d97b7f, 0x67290dff, 0x67782f7f, 0x67c6df7f, 0x68151d7f, 0x6862e9ff,
- 0x68b0437f, 0x68fd29ff, 0x69499dff, 0x69959dff, 0x69e12a7f, 0x6a2c42ff,
- 0x6a76e67f, 0x6ac115ff, 0x6b0acfff, 0x6b54147f, 0x6b9ce37f, 0x6be53c7f,
- 0x6c2d1eff, 0x6c748aff, 0x6cbb807f, 0x6d01fdff, 0x6d48047f, 0x6d8d92ff,
- 0x6dd2a97f, 0x6e1746ff, 0x6e5b6c7f, 0x6e9f187f, 0x6ee24b7f, 0x6f25047f,
- 0x6f6743ff, 0x6fa908ff, 0x6fea53ff, 0x702b23ff, 0x706b78ff, 0x70ab527f,
- 0x70eab0ff, 0x712992ff, 0x7167f97f, 0x71a5e2ff, 0x71e3507f, 0x722040ff,
- 0x725cb3ff, 0x7298a9ff, 0x72d421ff, 0x730f1bff, 0x734997ff, 0x738395ff,
- 0x73bd147f, 0x73f6147f, 0x742e957f, 0x746696ff, 0x749e18ff, 0x74d51a7f,
- 0x750b9c7f, 0x75419dff, 0x75771e7f, 0x75ac1eff, 0x75e09d7f, 0x76149b7f,
- 0x7648177f, 0x767b11ff, 0x76ad8aff, 0x76df80ff, 0x7710f57f, 0x7741e6ff,
- 0x7772557f, 0x77a2417f, 0x77d1a9ff, 0x78008eff, 0x782ef07f, 0x785cce7f,
- 0x788a27ff, 0x78b6fd7f, 0x78e34eff, 0x790f1b7f, 0x793a637f, 0x7965267f,
- 0x798f63ff, 0x79b91c7f, 0x79e24f7f, 0x7a0afcff, 0x7a33247f, 0x7a5ac5ff,
- 0x7a81e17f, 0x7aa8767f, 0x7ace84ff, 0x7af40c7f, 0x7b190d7f, 0x7b3d877f,
- 0x7b617a7f, 0x7b84e5ff, 0x7ba7c9ff, 0x7bca267f, 0x7bebfb7f, 0x7c0d487f,
- 0x7c2e0cff, 0x7c4e497f, 0x7c6dfdff, 0x7c8d29ff, 0x7cabccff, 0x7cc9e77f,
- 0x7ce7797f, 0x7d0481ff, 0x7d2101ff, 0x7d3cf7ff, 0x7d58657f, 0x7d7348ff,
- 0x7d8da2ff, 0x7da7737f, 0x7dc0b9ff, 0x7dd9767f, 0x7df1a97f, 0x7e0951ff,
- 0x7e206fff, 0x7e3703ff, 0x7e4d0dff, 0x7e628cff, 0x7e77817f, 0x7e8beaff,
- 0x7e9fca7f, 0x7eb31e7f, 0x7ec5e77f, 0x7ed825ff, 0x7ee9d8ff, 0x7efb00ff,
- 0x7f0b9d7f, 0x7f1baeff, 0x7f2b34ff, 0x7f3a2f7f, 0x7f489e7f, 0x7f5681ff,
- 0x7f63d9ff, 0x7f70a5ff, 0x7f7ce67f, 0x7f889aff, 0x7f93c37f, 0x7f9e607f,
- 0x7fa870ff, 0x7fb1f5ff, 0x7fbaeeff, 0x7fc35b7f, 0x7fcb3bff, 0x7fd2907f,
- 0x7fd958ff, 0x7fdf94ff, 0x7fe544ff, 0x7fea687f, 0x7feeffff, 0x7ff30aff,
- 0x7ff6897f, 0x7ff97bff, 0x7ffbe1ff, 0x7ffdbbff, 0x7fff097f, 0x7fffca7f};
+ 0x0010c152, 0x0096cbc0, 0x011cd589, 0x01a2de1b, 0x0228e4df, 0x02aee947,
+ 0x0334eabf, 0x03bae8af, 0x0440e28f, 0x04c6d7bf, 0x054cc7af, 0x05d2b1d7,
+ 0x06589597, 0x06de725f, 0x076447a7, 0x07ea14cf, 0x086fd93f, 0x08f5947f,
+ 0x097b45df, 0x0a00ecef, 0x0a8688ef, 0x0b0c196f, 0x0b919dcf, 0x0c17157f,
+ 0x0c9c7fef, 0x0d21dc7f, 0x0da72abf, 0x0e2c69ef, 0x0eb1999f, 0x0f36b92f,
+ 0x0fbbc81f, 0x1040c5bf, 0x10c5b17f, 0x114a8aff, 0x11cf515f, 0x1254045f,
+ 0x12d8a31f, 0x135d2d5f, 0x13e1a23f, 0x1466015f, 0x14ea4a1f, 0x156e7bff,
+ 0x15f2963f, 0x1676987f, 0x16fa821f, 0x177e527f, 0x1802091f, 0x1885a57f,
+ 0x190926df, 0x198c8cdf, 0x1a0fd6df, 0x1a93043f, 0x1b16147f, 0x1b9906ff,
+ 0x1c1bdb3f, 0x1c9e90bf, 0x1d2126bf, 0x1da39cdf, 0x1e25f27f, 0x1ea826ff,
+ 0x1f2a39ff, 0x1fac2abf, 0x202df8bf, 0x20afa37f, 0x21312a7f, 0x21b28cff,
+ 0x2233ca7f, 0x22b4e27f, 0x2335d47f, 0x23b69fbf, 0x243743ff, 0x24b7c07f,
+ 0x253814bf, 0x25b83fff, 0x263841ff, 0x26b81a3f, 0x2737c7ff, 0x27b74a7f,
+ 0x2836a1bf, 0x28b5ccbf, 0x2934caff, 0x29b39c3f, 0x2a323f7f, 0x2ab0b4bf,
+ 0x2b2efb3f, 0x2bad123f, 0x2c2af93f, 0x2ca8afff, 0x2d26357f, 0x2da389bf,
+ 0x2e20abff, 0x2e9d9b7f, 0x2f1a57bf, 0x2f96e0bf, 0x3013353f, 0x308f54ff,
+ 0x310b3fbf, 0x3186f47f, 0x320272ff, 0x327dbabf, 0x32f8caff, 0x3373a37f,
+ 0x33ee437f, 0x3468aa7f, 0x34e2d7ff, 0x355ccb7f, 0x35d684bf, 0x365002bf,
+ 0x36c944ff, 0x37424b7f, 0x37bb153f, 0x3833a1ff, 0x38abf0ff, 0x392401bf,
+ 0x399bd3ff, 0x3a1366ff, 0x3a8aba7f, 0x3b01cd7f, 0x3b789fff, 0x3bef313f,
+ 0x3c6580bf, 0x3cdb8dff, 0x3d51587f, 0x3dc6dfbf, 0x3e3c237f, 0x3eb122bf,
+ 0x3f25dd3f, 0x3f9a527f, 0x400e81ff, 0x40826b7f, 0x40f60dff, 0x4169697f,
+ 0x41dc7cff, 0x424f487f, 0x42c1caff, 0x4334047f, 0x43a5f3ff, 0x4417997f,
+ 0x4488f47f, 0x44fa047f, 0x456ac87f, 0x45db407f, 0x464b6b7f, 0x46bb49ff,
+ 0x472ada7f, 0x479a1d7f, 0x4809117f, 0x4877b67f, 0x48e60c7f, 0x495411ff,
+ 0x49c1c77f, 0x4a2f2bff, 0x4a9c3eff, 0x4b09007f, 0x4b756eff, 0x4be18b7f,
+ 0x4c4d547f, 0x4cb8c9ff, 0x4d23eaff, 0x4d8eb77f, 0x4df92f7f, 0x4e63517f,
+ 0x4ecd1d7f, 0x4f3692ff, 0x4f9fb1ff, 0x5008797f, 0x5070e8ff, 0x50d9007f,
+ 0x5140bf7f, 0x51a8257f, 0x520f317f, 0x5275e3ff, 0x52dc3b7f, 0x5342387f,
+ 0x53a7d9ff, 0x540d1fff, 0x5472097f, 0x54d696ff, 0x553ac6ff, 0x559e997f,
+ 0x56020e7f, 0x5665247f, 0x56c7dc7f, 0x572a34ff, 0x578c2d7f, 0x57edc67f,
+ 0x584efeff, 0x58afd67f, 0x59104cff, 0x597061ff, 0x59d0147f, 0x5a2f647f,
+ 0x5a8e51ff, 0x5aecdbff, 0x5b4b01ff, 0x5ba8c3ff, 0x5c06217f, 0x5c631a7f,
+ 0x5cbfad7f, 0x5d1bdb7f, 0x5d77a2ff, 0x5dd303ff, 0x5e2dfdff, 0x5e8890ff,
+ 0x5ee2bc7f, 0x5f3c7f7f, 0x5f95d9ff, 0x5feecbff, 0x6047547f, 0x609f73ff,
+ 0x60f728ff, 0x614e73ff, 0x61a553ff, 0x61fbc8ff, 0x6251d27f, 0x62a7707f,
+ 0x62fca1ff, 0x635166ff, 0x63a5beff, 0x63f9a9ff, 0x644d26ff, 0x64a0367f,
+ 0x64f2d6ff, 0x6545097f, 0x6596cc7f, 0x65e81fff, 0x663903ff, 0x668977ff,
+ 0x66d97b7f, 0x67290dff, 0x67782f7f, 0x67c6df7f, 0x68151d7f, 0x6862e9ff,
+ 0x68b0437f, 0x68fd29ff, 0x69499dff, 0x69959dff, 0x69e12a7f, 0x6a2c42ff,
+ 0x6a76e67f, 0x6ac115ff, 0x6b0acfff, 0x6b54147f, 0x6b9ce37f, 0x6be53c7f,
+ 0x6c2d1eff, 0x6c748aff, 0x6cbb807f, 0x6d01fdff, 0x6d48047f, 0x6d8d92ff,
+ 0x6dd2a97f, 0x6e1746ff, 0x6e5b6c7f, 0x6e9f187f, 0x6ee24b7f, 0x6f25047f,
+ 0x6f6743ff, 0x6fa908ff, 0x6fea53ff, 0x702b23ff, 0x706b78ff, 0x70ab527f,
+ 0x70eab0ff, 0x712992ff, 0x7167f97f, 0x71a5e2ff, 0x71e3507f, 0x722040ff,
+ 0x725cb3ff, 0x7298a9ff, 0x72d421ff, 0x730f1bff, 0x734997ff, 0x738395ff,
+ 0x73bd147f, 0x73f6147f, 0x742e957f, 0x746696ff, 0x749e18ff, 0x74d51a7f,
+ 0x750b9c7f, 0x75419dff, 0x75771e7f, 0x75ac1eff, 0x75e09d7f, 0x76149b7f,
+ 0x7648177f, 0x767b11ff, 0x76ad8aff, 0x76df80ff, 0x7710f57f, 0x7741e6ff,
+ 0x7772557f, 0x77a2417f, 0x77d1a9ff, 0x78008eff, 0x782ef07f, 0x785cce7f,
+ 0x788a27ff, 0x78b6fd7f, 0x78e34eff, 0x790f1b7f, 0x793a637f, 0x7965267f,
+ 0x798f63ff, 0x79b91c7f, 0x79e24f7f, 0x7a0afcff, 0x7a33247f, 0x7a5ac5ff,
+ 0x7a81e17f, 0x7aa8767f, 0x7ace84ff, 0x7af40c7f, 0x7b190d7f, 0x7b3d877f,
+ 0x7b617a7f, 0x7b84e5ff, 0x7ba7c9ff, 0x7bca267f, 0x7bebfb7f, 0x7c0d487f,
+ 0x7c2e0cff, 0x7c4e497f, 0x7c6dfdff, 0x7c8d29ff, 0x7cabccff, 0x7cc9e77f,
+ 0x7ce7797f, 0x7d0481ff, 0x7d2101ff, 0x7d3cf7ff, 0x7d58657f, 0x7d7348ff,
+ 0x7d8da2ff, 0x7da7737f, 0x7dc0b9ff, 0x7dd9767f, 0x7df1a97f, 0x7e0951ff,
+ 0x7e206fff, 0x7e3703ff, 0x7e4d0dff, 0x7e628cff, 0x7e77817f, 0x7e8beaff,
+ 0x7e9fca7f, 0x7eb31e7f, 0x7ec5e77f, 0x7ed825ff, 0x7ee9d8ff, 0x7efb00ff,
+ 0x7f0b9d7f, 0x7f1baeff, 0x7f2b34ff, 0x7f3a2f7f, 0x7f489e7f, 0x7f5681ff,
+ 0x7f63d9ff, 0x7f70a5ff, 0x7f7ce67f, 0x7f889aff, 0x7f93c37f, 0x7f9e607f,
+ 0x7fa870ff, 0x7fb1f5ff, 0x7fbaeeff, 0x7fc35b7f, 0x7fcb3bff, 0x7fd2907f,
+ 0x7fd958ff, 0x7fdf94ff, 0x7fe544ff, 0x7fea687f, 0x7feeffff, 0x7ff30aff,
+ 0x7ff6897f, 0x7ff97bff, 0x7ffbe1ff, 0x7ffdbbff, 0x7fff097f, 0x7fffca7f};
const WORD32 ixheaacd_pre_post_twid_sin_64[64] = {
- 0x006487e2, 0x0388a9e7, 0x06ac406f, 0x09cecf8f, 0x0cefdb6f, 0x100ee89f,
- 0x132b7bff, 0x16451a7f, 0x195b49df, 0x1c6d905f, 0x1f7b747f, 0x22847dbf,
- 0x2588347f, 0x288621bf, 0x2b7dceff, 0x2e6ec77f, 0x315896ff, 0x343aca7f,
- 0x3714f03f, 0x39e6973f, 0x3caf50bf, 0x3f6eaebf, 0x4224447f, 0x44cfa6ff,
- 0x47706d7f, 0x4a062f7f, 0x4c90877f, 0x4f0f10ff, 0x5181697f, 0x53e7307f,
- 0x5640077f, 0x588b90ff, 0x5ac9737f, 0x5cf955ff, 0x5f1ae27f, 0x612dc47f,
- 0x6331a9ff, 0x6526437f, 0x670b447f, 0x68e060ff, 0x6aa551ff, 0x6c59d07f,
- 0x6dfd99ff, 0x6f906d7f, 0x71120cff, 0x72823c7f, 0x73e0c37f, 0x752d6c7f,
- 0x7668037f, 0x779057ff, 0x78a63cff, 0x79a986ff, 0x7a9a0e7f, 0x7b77ad7f,
- 0x7c4242ff, 0x7cf9aeff, 0x7d9dd57f, 0x7e2e9cff, 0x7eabeeff, 0x7f15b8ff,
- 0x7f6be9ff, 0x7fae747f, 0x7fdd4eff, 0x7ff8717f};
+ 0x006487e2, 0x0388a9e7, 0x06ac406f, 0x09cecf8f, 0x0cefdb6f, 0x100ee89f,
+ 0x132b7bff, 0x16451a7f, 0x195b49df, 0x1c6d905f, 0x1f7b747f, 0x22847dbf,
+ 0x2588347f, 0x288621bf, 0x2b7dceff, 0x2e6ec77f, 0x315896ff, 0x343aca7f,
+ 0x3714f03f, 0x39e6973f, 0x3caf50bf, 0x3f6eaebf, 0x4224447f, 0x44cfa6ff,
+ 0x47706d7f, 0x4a062f7f, 0x4c90877f, 0x4f0f10ff, 0x5181697f, 0x53e7307f,
+ 0x5640077f, 0x588b90ff, 0x5ac9737f, 0x5cf955ff, 0x5f1ae27f, 0x612dc47f,
+ 0x6331a9ff, 0x6526437f, 0x670b447f, 0x68e060ff, 0x6aa551ff, 0x6c59d07f,
+ 0x6dfd99ff, 0x6f906d7f, 0x71120cff, 0x72823c7f, 0x73e0c37f, 0x752d6c7f,
+ 0x7668037f, 0x779057ff, 0x78a63cff, 0x79a986ff, 0x7a9a0e7f, 0x7b77ad7f,
+ 0x7c4242ff, 0x7cf9aeff, 0x7d9dd57f, 0x7e2e9cff, 0x7eabeeff, 0x7f15b8ff,
+ 0x7f6be9ff, 0x7fae747f, 0x7fdd4eff, 0x7ff8717f};
const WORD32 ixheaacd_pre_post_twid_cos_64[64] = {
- 0x7fffd87f, 0x7ff3827f, 0x7fd3717f, 0x7f9fa9ff, 0x7f58347f, 0x7efd1bff,
- 0x7e8e6e7f, 0x7e0c3cff, 0x7d769b7f, 0x7ccda17f, 0x7c11687f, 0x7b420d7f,
- 0x7a5fb0ff, 0x796a757f, 0x7862807f, 0x7747fbff, 0x761b11ff, 0x74dbf1ff,
- 0x738acc7f, 0x7227d5ff, 0x70b344ff, 0x6f2d52ff, 0x6d963c7f, 0x6bee3f7f,
- 0x6a359d7f, 0x686c9b7f, 0x66937e7f, 0x64aa907f, 0x62b21c7f, 0x60aa707f,
- 0x5e93dbff, 0x5c6eb27f, 0x5a3b477f, 0x57f9f2ff, 0x55ab0d7f, 0x534ef17f,
- 0x50e5fd7f, 0x4e708f7f, 0x4bef08ff, 0x4961ccff, 0x46c9407f, 0x4425c8ff,
- 0x4177cf7f, 0x3ebfbdbf, 0x3bfdfebf, 0x3932ff7f, 0x365f2e3f, 0x3382fa7f,
- 0x309ed53f, 0x2db330bf, 0x2ac0803f, 0x27c737bf, 0x24c7cd3f, 0x21c2b67f,
- 0x1eb86b3f, 0x1ba9633f, 0x1896171f, 0x157f007f, 0x1264993f, 0x0f475bff,
- 0x0c27c38f, 0x09064b3f, 0x05e36ea7, 0x02bfa9a3};
+ 0x7fffd87f, 0x7ff3827f, 0x7fd3717f, 0x7f9fa9ff, 0x7f58347f, 0x7efd1bff,
+ 0x7e8e6e7f, 0x7e0c3cff, 0x7d769b7f, 0x7ccda17f, 0x7c11687f, 0x7b420d7f,
+ 0x7a5fb0ff, 0x796a757f, 0x7862807f, 0x7747fbff, 0x761b11ff, 0x74dbf1ff,
+ 0x738acc7f, 0x7227d5ff, 0x70b344ff, 0x6f2d52ff, 0x6d963c7f, 0x6bee3f7f,
+ 0x6a359d7f, 0x686c9b7f, 0x66937e7f, 0x64aa907f, 0x62b21c7f, 0x60aa707f,
+ 0x5e93dbff, 0x5c6eb27f, 0x5a3b477f, 0x57f9f2ff, 0x55ab0d7f, 0x534ef17f,
+ 0x50e5fd7f, 0x4e708f7f, 0x4bef08ff, 0x4961ccff, 0x46c9407f, 0x4425c8ff,
+ 0x4177cf7f, 0x3ebfbdbf, 0x3bfdfebf, 0x3932ff7f, 0x365f2e3f, 0x3382fa7f,
+ 0x309ed53f, 0x2db330bf, 0x2ac0803f, 0x27c737bf, 0x24c7cd3f, 0x21c2b67f,
+ 0x1eb86b3f, 0x1ba9633f, 0x1896171f, 0x157f007f, 0x1264993f, 0x0f475bff,
+ 0x0c27c38f, 0x09064b3f, 0x05e36ea7, 0x02bfa9a3};
const WORD32 ixheaacd_pre_post_twid_sin_48[48] = {
- 0x00860a78, 0x04b6195f, 0x08e4dd9f, 0x0d1131bf, 0x1139f0bf, 0x155df6ff,
- 0x197c219f, 0x1d934fdf, 0x21a2627f, 0x25a83cff, 0x29a3c47f, 0x2d93e1ff,
- 0x317780ff, 0x354d903f, 0x391502ff, 0x3ccccfff, 0x4073f1ff, 0x440968ff,
- 0x478c397f, 0x4afb6c7f, 0x4e5611ff, 0x519b3d7f, 0x54ca0a7f, 0x57e198ff,
- 0x5ae10fff, 0x5dc79d7f, 0x609475ff, 0x6346d47f, 0x65ddfbff, 0x6859367f,
- 0x6ab7d67f, 0x6cf934ff, 0x6f1cb3ff, 0x7121bd7f, 0x7307c3ff, 0x74ce417f,
- 0x7674b9ff, 0x77fab97f, 0x795fd4ff, 0x7aa3aaff, 0x7bc5e27f, 0x7cc62bff,
- 0x7da440ff, 0x7e5fe47f, 0x7ef8e37f, 0x7f6f13ff, 0x7fc2557f, 0x7ff290ff};
+ 0x00860a78, 0x04b6195f, 0x08e4dd9f, 0x0d1131bf, 0x1139f0bf, 0x155df6ff,
+ 0x197c219f, 0x1d934fdf, 0x21a2627f, 0x25a83cff, 0x29a3c47f, 0x2d93e1ff,
+ 0x317780ff, 0x354d903f, 0x391502ff, 0x3ccccfff, 0x4073f1ff, 0x440968ff,
+ 0x478c397f, 0x4afb6c7f, 0x4e5611ff, 0x519b3d7f, 0x54ca0a7f, 0x57e198ff,
+ 0x5ae10fff, 0x5dc79d7f, 0x609475ff, 0x6346d47f, 0x65ddfbff, 0x6859367f,
+ 0x6ab7d67f, 0x6cf934ff, 0x6f1cb3ff, 0x7121bd7f, 0x7307c3ff, 0x74ce417f,
+ 0x7674b9ff, 0x77fab97f, 0x795fd4ff, 0x7aa3aaff, 0x7bc5e27f, 0x7cc62bff,
+ 0x7da440ff, 0x7e5fe47f, 0x7ef8e37f, 0x7f6f13ff, 0x7fc2557f, 0x7ff290ff};
const WORD32 ixheaacd_pre_post_twid_cos_48[48] = {
- 0x7fffb9ff, 0x7fe9cb7f, 0x7fb0ccff, 0x7f54cd7f, 0x7ed5e5ff, 0x7e3438ff,
- 0x7d6ff3ff, 0x7c894bff, 0x7b807fff, 0x7a55d8ff, 0x7909a8ff, 0x779c4aff,
- 0x760e22ff, 0x745f9dff, 0x729131ff, 0x70a35dff, 0x6e96a97f, 0x6c6ba3ff,
- 0x6a22e5ff, 0x67bd0f7f, 0x653ac8ff, 0x629cc27f, 0x5fe3b37f, 0x5d105b7f,
- 0x5a237fff, 0x571deeff, 0x54007c7f, 0x50cc027f, 0x4d8162ff, 0x4a2183ff,
- 0x46ad527f, 0x4325c0ff, 0x3f8bc7bf, 0x3be062bf, 0x382493bf, 0x345960bf,
- 0x307fd3ff, 0x2c98fbbf, 0x28a5e9bf, 0x24a7b2ff, 0x209f6fff, 0x1c8e3bbf,
- 0x1875335f, 0x145576bf, 0x103026ff, 0x0c06673f, 0x07d95b9f, 0x03aa2927};
+ 0x7fffb9ff, 0x7fe9cb7f, 0x7fb0ccff, 0x7f54cd7f, 0x7ed5e5ff, 0x7e3438ff,
+ 0x7d6ff3ff, 0x7c894bff, 0x7b807fff, 0x7a55d8ff, 0x7909a8ff, 0x779c4aff,
+ 0x760e22ff, 0x745f9dff, 0x729131ff, 0x70a35dff, 0x6e96a97f, 0x6c6ba3ff,
+ 0x6a22e5ff, 0x67bd0f7f, 0x653ac8ff, 0x629cc27f, 0x5fe3b37f, 0x5d105b7f,
+ 0x5a237fff, 0x571deeff, 0x54007c7f, 0x50cc027f, 0x4d8162ff, 0x4a2183ff,
+ 0x46ad527f, 0x4325c0ff, 0x3f8bc7bf, 0x3be062bf, 0x382493bf, 0x345960bf,
+ 0x307fd3ff, 0x2c98fbbf, 0x28a5e9bf, 0x24a7b2ff, 0x209f6fff, 0x1c8e3bbf,
+ 0x1875335f, 0x145576bf, 0x103026ff, 0x0c06673f, 0x07d95b9f, 0x03aa2927};
const WORD32 ixheaacd_sine_win_128[128] = {
- 0x00c91080, 0x025b291c, 0x03ed288c, 0x057efe10, 0x0710a138, 0x08a20140,
- 0x0a330510, 0x0bc3ac90, 0x0d53dea0, 0x0ee38a80, 0x10729f60, 0x120114e0,
- 0x138eda20, 0x151bde80, 0x16a81120, 0x183369c0, 0x19bdcf00, 0x1b473040,
- 0x1ccf8d80, 0x1e56cd60, 0x1fdcdf60, 0x2161b2c0, 0x22e53ec0, 0x24677b40,
- 0x25e846c0, 0x2767a100, 0x28e57100, 0x2a61ae80, 0x2bdc50c0, 0x2d553f00,
- 0x2ecc6840, 0x3041c400, 0x31b54a00, 0x3326e100, 0x34968100, 0x36041880,
- 0x376f9fc0, 0x38d8fd40, 0x3a403140, 0x3ba52280, 0x3d07c000, 0x3e6809c0,
- 0x3fc5ef80, 0x4121577f, 0x427a41ff, 0x43d09dff, 0x45245aff, 0x4675687f,
- 0x47c3c57f, 0x490f59ff, 0x4a581cff, 0x4b9e05ff, 0x4ce1047f, 0x4e21077f,
- 0x4f5e06ff, 0x5097fa7f, 0x51ced07f, 0x5302817f, 0x543304ff, 0x5560417f,
- 0x568a36ff, 0x57b0d4ff, 0x58d40a7f, 0x59f3dfff, 0x5b1033ff, 0x5c290eff,
- 0x5d3e4eff, 0x5e5004ff, 0x5f5e0f7f, 0x60686e7f, 0x616f10ff, 0x6271f77f,
- 0x637110ff, 0x646c5cff, 0x6563c2ff, 0x66573a7f, 0x6746cb7f, 0x683254ff,
- 0x6919e6ff, 0x69fd60ff, 0x6adcca7f, 0x6bb812ff, 0x6c8f31ff, 0x6d6227ff,
- 0x6e30e3ff, 0x6efb5cff, 0x6fc1937f, 0x708376ff, 0x714106ff, 0x71fa3b7f,
- 0x72af037f, 0x735f677f, 0x740b567f, 0x74b2c7ff, 0x7555bcff, 0x75f42b7f,
- 0x768e0c7f, 0x77235f7f, 0x77b41bff, 0x7840317f, 0x78c7a7ff, 0x794a7f7f,
- 0x79c89f7f, 0x7a420f7f, 0x7ab6c77f, 0x7b26c7ff, 0x7b9207ff, 0x7bf8877f,
- 0x7c5a3dff, 0x7cb723ff, 0x7d0f40ff, 0x7d628c7f, 0x7db0feff, 0x7dfa97ff,
- 0x7e3f56ff, 0x7e7f3cff, 0x7eba387f, 0x7ef05a7f, 0x7f2191ff, 0x7f4de7ff,
- 0x7f754aff, 0x7f97cbff, 0x7fb562ff, 0x7fce0fff, 0x7fe1c97f, 0x7ff090ff,
- 0x7ffa767f, 0x7fff607f};
+ 0x00c91080, 0x025b291c, 0x03ed288c, 0x057efe10, 0x0710a138, 0x08a20140,
+ 0x0a330510, 0x0bc3ac90, 0x0d53dea0, 0x0ee38a80, 0x10729f60, 0x120114e0,
+ 0x138eda20, 0x151bde80, 0x16a81120, 0x183369c0, 0x19bdcf00, 0x1b473040,
+ 0x1ccf8d80, 0x1e56cd60, 0x1fdcdf60, 0x2161b2c0, 0x22e53ec0, 0x24677b40,
+ 0x25e846c0, 0x2767a100, 0x28e57100, 0x2a61ae80, 0x2bdc50c0, 0x2d553f00,
+ 0x2ecc6840, 0x3041c400, 0x31b54a00, 0x3326e100, 0x34968100, 0x36041880,
+ 0x376f9fc0, 0x38d8fd40, 0x3a403140, 0x3ba52280, 0x3d07c000, 0x3e6809c0,
+ 0x3fc5ef80, 0x4121577f, 0x427a41ff, 0x43d09dff, 0x45245aff, 0x4675687f,
+ 0x47c3c57f, 0x490f59ff, 0x4a581cff, 0x4b9e05ff, 0x4ce1047f, 0x4e21077f,
+ 0x4f5e06ff, 0x5097fa7f, 0x51ced07f, 0x5302817f, 0x543304ff, 0x5560417f,
+ 0x568a36ff, 0x57b0d4ff, 0x58d40a7f, 0x59f3dfff, 0x5b1033ff, 0x5c290eff,
+ 0x5d3e4eff, 0x5e5004ff, 0x5f5e0f7f, 0x60686e7f, 0x616f10ff, 0x6271f77f,
+ 0x637110ff, 0x646c5cff, 0x6563c2ff, 0x66573a7f, 0x6746cb7f, 0x683254ff,
+ 0x6919e6ff, 0x69fd60ff, 0x6adcca7f, 0x6bb812ff, 0x6c8f31ff, 0x6d6227ff,
+ 0x6e30e3ff, 0x6efb5cff, 0x6fc1937f, 0x708376ff, 0x714106ff, 0x71fa3b7f,
+ 0x72af037f, 0x735f677f, 0x740b567f, 0x74b2c7ff, 0x7555bcff, 0x75f42b7f,
+ 0x768e0c7f, 0x77235f7f, 0x77b41bff, 0x7840317f, 0x78c7a7ff, 0x794a7f7f,
+ 0x79c89f7f, 0x7a420f7f, 0x7ab6c77f, 0x7b26c7ff, 0x7b9207ff, 0x7bf8877f,
+ 0x7c5a3dff, 0x7cb723ff, 0x7d0f40ff, 0x7d628c7f, 0x7db0feff, 0x7dfa97ff,
+ 0x7e3f56ff, 0x7e7f3cff, 0x7eba387f, 0x7ef05a7f, 0x7f2191ff, 0x7f4de7ff,
+ 0x7f754aff, 0x7f97cbff, 0x7fb562ff, 0x7fce0fff, 0x7fe1c97f, 0x7ff090ff,
+ 0x7ffa767f, 0x7fff607f};
const WORD32 ixheaacd_sine_win_1024[1024] = {
- 0x00192210, 0x004b6630, 0x007daa50, 0x00afee70, 0x00e23290, 0x011476b0,
- 0x0146bad0, 0x0178fef0, 0x01ab3aac, 0x01dd7ecc, 0x020fc2ec, 0x0242070c,
- 0x02744b2c, 0x02a686e8, 0x02d8cb08, 0x030b06c4, 0x033d4ae4, 0x036f86a0,
- 0x03a1cac0, 0x03d4067c, 0x04064238, 0x04388658, 0x046ac218, 0x049cfdd0,
- 0x04cf3990, 0x05017548, 0x0533a8a0, 0x0565e460, 0x05982020, 0x05ca5378,
- 0x05fc86d0, 0x062ec288, 0x0660f5e8, 0x06932940, 0x06c55c98, 0x06f78788,
- 0x0729bae8, 0x075bee40, 0x078e1930, 0x07c04428, 0x07f26f20, 0x08249a10,
- 0x0856c510, 0x0888f000, 0x08bb1290, 0x08ed3520, 0x091f6010, 0x095182b0,
- 0x09839ce0, 0x09b5bf70, 0x09e7e200, 0x0a19fc30, 0x0a4c1660, 0x0a7e3080,
- 0x0ab04ab0, 0x0ae25c80, 0x0b146e50, 0x0b468880, 0x0b7891e0, 0x0baaa3b0,
- 0x0bdcb580, 0x0c0ebee0, 0x0c40c840, 0x0c72d1b0, 0x0ca4d2b0, 0x0cd6dc20,
- 0x0d08dd20, 0x0d3ade20, 0x0d6cd6c0, 0x0d9ed7c0, 0x0dd0d060, 0x0e02c910,
- 0x0e34b940, 0x0e66b1e0, 0x0e98a220, 0x0eca9260, 0x0efc7a40, 0x0f2e6a70,
- 0x0f605250, 0x0f9231c0, 0x0fc419a0, 0x0ff5f910, 0x1027d880, 0x1059afa0,
- 0x108b8f20, 0x10bd6620, 0x10ef34e0, 0x11210be0, 0x1152daa0, 0x1184a0e0,
- 0x11b66fa0, 0x11e835e0, 0x1219fc20, 0x124bba20, 0x127d7800, 0x12af35e0,
- 0x12e0eb60, 0x1312a0e0, 0x13445680, 0x137603a0, 0x13a7b0c0, 0x13d95de0,
- 0x140b02a0, 0x143ca760, 0x146e43a0, 0x149fe000, 0x14d17c60, 0x150318c0,
- 0x1534aca0, 0x15663840, 0x1597c3e0, 0x15c94f60, 0x15fadb00, 0x162c5e20,
- 0x165dd900, 0x168f53c0, 0x16c0cea0, 0x16f24100, 0x1723b360, 0x175525c0,
- 0x17868fe0, 0x17b7f180, 0x17e95b80, 0x181ab4c0, 0x184c1660, 0x187d6fa0,
- 0x18aec080, 0x18e01140, 0x19116220, 0x1942aaa0, 0x1973eac0, 0x19a52ac0,
- 0x19d66ae0, 0x1a07a280, 0x1a38da40, 0x1a6a0980, 0x1a9b38e0, 0x1acc5fc0,
- 0x1afd86a0, 0x1b2ea520, 0x1b5fc3c0, 0x1b90d9e0, 0x1bc1f000, 0x1bf2fdc0,
- 0x1c240b80, 0x1c5510e0, 0x1c860dc0, 0x1cb71320, 0x1ce807c0, 0x1d18fc60,
- 0x1d49f0e0, 0x1d7add20, 0x1dabc0e0, 0x1ddca4c0, 0x1e0d8880, 0x1e3e5b80,
- 0x1e6f36e0, 0x1ea001a0, 0x1ed0d4a0, 0x1f0196e0, 0x1f325920, 0x1f631b60,
- 0x1f93cce0, 0x1fc486a0, 0x1ff52fc0, 0x2025d8c0, 0x20568200, 0x20872280,
- 0x20b7bb00, 0x20e85340, 0x2118e340, 0x21497300, 0x2179f240, 0x21aa79c0,
- 0x21daf080, 0x220b6740, 0x223bde00, 0x226c4c40, 0x229cb240, 0x22cd1000,
- 0x22fd6d80, 0x232dc2c0, 0x235e1800, 0x238e64c0, 0x23bea900, 0x23eeed80,
- 0x241f2980, 0x244f5d40, 0x247f90c0, 0x24afbc00, 0x24dfdf00, 0x251001c0,
- 0x25401c40, 0x25702e80, 0x25a03800, 0x25d041c0, 0x26004300, 0x26304480,
- 0x26603d40, 0x26902e00, 0x26c01600, 0x26effe40, 0x271fde00, 0x274fb540,
- 0x277f8440, 0x27af5340, 0x27df19c0, 0x280ed800, 0x283e9640, 0x286e4c00,
- 0x289df980, 0x28cd9e80, 0x28fd4380, 0x292ce040, 0x295c7480, 0x298c0040,
- 0x29bb83c0, 0x29eb0740, 0x2a1a8280, 0x2a49f500, 0x2a7967c0, 0x2aa8d200,
- 0x2ad83400, 0x2b078d80, 0x2b36dec0, 0x2b662780, 0x2b957040, 0x2bc4b080,
- 0x2bf3e880, 0x2c231840, 0x2c5247c0, 0x2c816f00, 0x2cb08dc0, 0x2cdfa440,
- 0x2d0eb240, 0x2d3db800, 0x2d6cbd80, 0x2d9bb280, 0x2dcaa740, 0x2df993c0,
- 0x2e288040, 0x2e575c00, 0x2e862f40, 0x2eb502c0, 0x2ee3cd80, 0x2f129040,
- 0x2f414a40, 0x2f6ffc00, 0x2f9ea580, 0x2fcd4ec0, 0x2ffbe780, 0x302a8000,
- 0x30591040, 0x30879800, 0x30b61780, 0x30e48e80, 0x3112fd40, 0x31416380,
- 0x316fc9c0, 0x319e1f40, 0x31cc74c0, 0x31fab980, 0x3228fe40, 0x32573a80,
- 0x32856e80, 0x32b39a00, 0x32e1bd00, 0x330fd800, 0x333dea40, 0x336bf440,
- 0x3399fe40, 0x33c7f780, 0x33f5e840, 0x3423d940, 0x3451b940, 0x347f9940,
- 0x34ad6880, 0x34db37c0, 0x3508fec0, 0x3536b4c0, 0x35646b00, 0x35921040,
- 0x35bfb580, 0x35ed5280, 0x361ae700, 0x36486ac0, 0x3675ee80, 0x36a36a00,
- 0x36d0d480, 0x36fe3f40, 0x372ba180, 0x3758f300, 0x37864440, 0x37b38d80,
- 0x37e0c5c0, 0x380dfe00, 0x383b2580, 0x38684d00, 0x389563c0, 0x38c27a80,
- 0x38ef8040, 0x391c8640, 0x39497b80, 0x39766840, 0x39a34cc0, 0x39d028c0,
- 0x39fd04c0, 0x3a29cfc0, 0x3a568a40, 0x3a8344c0, 0x3aaff6c0, 0x3adca080,
- 0x3b093980, 0x3b35d240, 0x3b625a80, 0x3b8ee280, 0x3bbb59c0, 0x3be7c8c0,
- 0x3c142f80, 0x3c408d80, 0x3c6ce340, 0x3c9930c0, 0x3cc56d40, 0x3cf1aa00,
- 0x3d1dd5c0, 0x3d4a01c0, 0x3d761cc0, 0x3da22f80, 0x3dce39c0, 0x3dfa3340,
- 0x3e262cc0, 0x3e521580, 0x3e7dfe40, 0x3ea9d640, 0x3ed5a5c0, 0x3f016d00,
- 0x3f2d2340, 0x3f58d9c0, 0x3f847f40, 0x3fb02500, 0x3fdbb9c0, 0x40073dff,
- 0x4032c1ff, 0x405e3d7f, 0x4089a87f, 0x40b50aff, 0x40e064ff, 0x410bb6ff,
- 0x4136f7ff, 0x416238ff, 0x418d68ff, 0x41b890ff, 0x41e3a7ff, 0x420ebeff,
- 0x4239c4ff, 0x4264c2ff, 0x428fb87f, 0x42baa57f, 0x42e581ff, 0x43105dff,
- 0x433b297f, 0x4365e47f, 0x43909eff, 0x43bb48ff, 0x43e5ea7f, 0x441083ff,
- 0x443b0c7f, 0x4465947f, 0x449003ff, 0x44ba72ff, 0x44e4d9ff, 0x450f2fff,
- 0x45397dff, 0x4563ba7f, 0x458df77f, 0x45b823ff, 0x45e2477f, 0x460c5a7f,
- 0x46366d7f, 0x46606f7f, 0x468a60ff, 0x46b4527f, 0x46de32ff, 0x470802ff,
- 0x4731d2ff, 0x475b91ff, 0x4785487f, 0x47aeee7f, 0x47d8947f, 0x4802217f,
- 0x482badff, 0x485529ff, 0x487e9d7f, 0x48a808ff, 0x48d162ff, 0x48fab4ff,
- 0x4923f67f, 0x494d37ff, 0x49765fff, 0x499f87ff, 0x49c89f7f, 0x49f1adff,
- 0x4a1aac7f, 0x4a43a1ff, 0x4a6c8f7f, 0x4a95747f, 0x4abe487f, 0x4ae70bff,
- 0x4b0fc6ff, 0x4b3879ff, 0x4b6123ff, 0x4b89bd7f, 0x4bb245ff, 0x4bdaceff,
- 0x4c0346ff, 0x4c2badff, 0x4c540cff, 0x4c7c62ff, 0x4ca4a8ff, 0x4ccce5ff,
- 0x4cf51aff, 0x4d1d3eff, 0x4d4551ff, 0x4d6d5cff, 0x4d955f7f, 0x4dbd597f,
- 0x4de542ff, 0x4e0d1b7f, 0x4e34eb7f, 0x4e5cb37f, 0x4e846a7f, 0x4eac18ff,
- 0x4ed3b6ff, 0x4efb4bff, 0x4f22d0ff, 0x4f4a4cff, 0x4f71c0ff, 0x4f9923ff,
- 0x4fc0767f, 0x4fe7c07f, 0x500f01ff, 0x503632ff, 0x505d5aff, 0x508472ff,
- 0x50ab81ff, 0x50d2807f, 0x50f9767f, 0x51205bff, 0x5147387f, 0x516e04ff,
- 0x5194c87f, 0x51bb7b7f, 0x51e225ff, 0x5208bfff, 0x522f50ff, 0x5255d9ff,
- 0x527c49ff, 0x52a2b17f, 0x52c9107f, 0x52ef5eff, 0x5315a47f, 0x533bd9ff,
- 0x5362067f, 0x5388227f, 0x53ae2d7f, 0x53d4307f, 0x53fa2aff, 0x5420147f,
- 0x5445ed7f, 0x546bbd7f, 0x54917d7f, 0x54b7347f, 0x54dcdaff, 0x5502797f,
- 0x5528067f, 0x554d837f, 0x5572f77f, 0x559862ff, 0x55bdb5ff, 0x55e2ffff,
- 0x560841ff, 0x562d72ff, 0x56529b7f, 0x5677aaff, 0x569cba7f, 0x56c1b0ff,
- 0x56e69eff, 0x570b847f, 0x5730597f, 0x57551d7f, 0x5779d8ff, 0x579e83ff,
- 0x57c31dff, 0x57e7af7f, 0x580c307f, 0x5830a8ff, 0x585510ff, 0x587967ff,
- 0x589db67f, 0x58c1f3ff, 0x58e6297f, 0x590a45ff, 0x592e61ff, 0x595264ff,
- 0x59765fff, 0x599a49ff, 0x59be2b7f, 0x59e1fbff, 0x5a05bbff, 0x5a29737f,
- 0x5a4d1a7f, 0x5a70b07f, 0x5a943dff, 0x5ab7baff, 0x5adb26ff, 0x5afe8a7f,
- 0x5b21dd7f, 0x5b451fff, 0x5b68597f, 0x5b8b827f, 0x5bae9a7f, 0x5bd1aa7f,
- 0x5bf4a97f, 0x5c1797ff, 0x5c3a7d7f, 0x5c5d4a7f, 0x5c8016ff, 0x5ca2ca7f,
- 0x5cc575ff, 0x5ce80fff, 0x5d0a997f, 0x5d2d1aff, 0x5d4f8b7f, 0x5d71eaff,
- 0x5d9439ff, 0x5db6807f, 0x5dd8b5ff, 0x5dfadaff, 0x5e1cf77f, 0x5e3f037f,
- 0x5e60fe7f, 0x5e82e87f, 0x5ea4ca7f, 0x5ec69b7f, 0x5ee85b7f, 0x5f0a0aff,
- 0x5f2bb1ff, 0x5f4d487f, 0x5f6ecdff, 0x5f904aff, 0x5fb1aeff, 0x5fd30aff,
- 0x5ff4557f, 0x601597ff, 0x6036c17f, 0x6057e1ff, 0x6078f27f, 0x6099f17f,
- 0x60bae87f, 0x60dbceff, 0x60fca3ff, 0x611d68ff, 0x613e1c7f, 0x615ec7ff,
- 0x617f627f, 0x619fec7f, 0x61c0657f, 0x61e0cdff, 0x62012dff, 0x62217cff,
- 0x6241bb7f, 0x6261e8ff, 0x628205ff, 0x62a21a7f, 0x62c21dff, 0x62e210ff,
- 0x6301f2ff, 0x6321c47f, 0x63418d7f, 0x63613cff, 0x6380e47f, 0x63a07aff,
- 0x63c000ff, 0x63df7e7f, 0x63fee2ff, 0x641e3e7f, 0x643d89ff, 0x645cc3ff,
- 0x647bed7f, 0x649b067f, 0x64ba16ff, 0x64d90dff, 0x64f7fcff, 0x6516daff,
- 0x6535a87f, 0x655464ff, 0x657318ff, 0x6591b3ff, 0x65b0467f, 0x65cebfff,
- 0x65ed30ff, 0x660b90ff, 0x6629e07f, 0x66481f7f, 0x6666557f, 0x668472ff,
- 0x66a2877f, 0x66c082ff, 0x66de767f, 0x66fc587f, 0x671a2a7f, 0x6737eaff,
- 0x67559aff, 0x677342ff, 0x6790d17f, 0x67ae577f, 0x67cbc47f, 0x67e928ff,
- 0x68067cff, 0x6823bfff, 0x6840f1ff, 0x685e137f, 0x687b247f, 0x6898247f,
- 0x68b5137f, 0x68d1f9ff, 0x68eec7ff, 0x690b8cff, 0x692838ff, 0x6944dc7f,
- 0x696166ff, 0x697de8ff, 0x699a5a7f, 0x69b6baff, 0x69d30aff, 0x69ef49ff,
- 0x6a0b77ff, 0x6a27957f, 0x6a43a1ff, 0x6a5f9dff, 0x6a7b88ff, 0x6a976bff,
- 0x6ab3357f, 0x6aceedff, 0x6aea9e7f, 0x6b06357f, 0x6b21c47f, 0x6b3d39ff,
- 0x6b58a77f, 0x6b73fb7f, 0x6b8f46ff, 0x6baa797f, 0x6bc5a3ff, 0x6be0bd7f,
- 0x6bfbbd7f, 0x6c16b57f, 0x6c319c7f, 0x6c4c69ff, 0x6c672f7f, 0x6c81e47f,
- 0x6c9c7fff, 0x6cb712ff, 0x6cd1957f, 0x6cec06ff, 0x6d065f7f, 0x6d20af7f,
- 0x6d3aeeff, 0x6d5514ff, 0x6d6f327f, 0x6d893f7f, 0x6da3337f, 0x6dbd1eff,
- 0x6dd6f97f, 0x6df0baff, 0x6e0a73ff, 0x6e2413ff, 0x6e3dab7f, 0x6e57297f,
- 0x6e709f7f, 0x6e89fc7f, 0x6ea350ff, 0x6ebc8bff, 0x6ed5beff, 0x6eeed87f,
- 0x6f07e17f, 0x6f20d97f, 0x6f39c97f, 0x6f529fff, 0x6f6b657f, 0x6f841a7f,
- 0x6f9cbeff, 0x6fb5527f, 0x6fcdd4ff, 0x6fe646ff, 0x6ffe9f7f, 0x7016efff,
- 0x702f2f7f, 0x704755ff, 0x705f73ff, 0x707778ff, 0x708f757f, 0x70a7587f,
- 0x70bf2aff, 0x70d6ecff, 0x70eea5ff, 0x7106467f, 0x711dd5ff, 0x71354bff,
- 0x714cb9ff, 0x716416ff, 0x717b637f, 0x7192967f, 0x71a9c0ff, 0x71c0d2ff,
- 0x71d7d37f, 0x71eec37f, 0x7205a2ff, 0x721c717f, 0x72332eff, 0x7249dbff,
- 0x726077ff, 0x7276faff, 0x728d757f, 0x72a3d6ff, 0x72ba2fff, 0x72d06fff,
- 0x72e69eff, 0x72fcbd7f, 0x7312caff, 0x7328beff, 0x733eaaff, 0x73547dff,
- 0x736a487f, 0x737ff97f, 0x739599ff, 0x73ab29ff, 0x73c0a8ff, 0x73d616ff,
- 0x73eb6bff, 0x7400b87f, 0x7415ebff, 0x742b0e7f, 0x7440207f, 0x7455217f,
- 0x746a11ff, 0x747ef17f, 0x7493b7ff, 0x74a875ff, 0x74bd1a7f, 0x74d1ae7f,
- 0x74e631ff, 0x74faa47f, 0x750efdff, 0x75234e7f, 0x7537867f, 0x754bad7f,
- 0x755fc37f, 0x7573c8ff, 0x7587bdff, 0x759b997f, 0x75af6c7f, 0x75c3267f,
- 0x75d6cf7f, 0x75ea67ff, 0x75fdef7f, 0x76115dff, 0x7624c3ff, 0x763810ff,
- 0x764b4cff, 0x765e787f, 0x76718a7f, 0x7684947f, 0x769784ff, 0x76aa64ff,
- 0x76bd33ff, 0x76cff1ff, 0x76e29f7f, 0x76f533ff, 0x7707b77f, 0x771a2a7f,
- 0x772c8c7f, 0x773edd7f, 0x7751157f, 0x77633cff, 0x77755bff, 0x778758ff,
- 0x77994dff, 0x77ab327f, 0x77bcfd7f, 0x77ceb77f, 0x77e060ff, 0x77f1f97f,
- 0x780378ff, 0x7814e7ff, 0x782645ff, 0x783792ff, 0x7848cf7f, 0x7859f27f,
- 0x786b04ff, 0x787c06ff, 0x788cf7ff, 0x789dd7ff, 0x78ae9eff, 0x78bf54ff,
- 0x78cffa7f, 0x78e08eff, 0x78f10a7f, 0x79017d7f, 0x7911d77f, 0x7922187f,
- 0x7932507f, 0x79426fff, 0x79527e7f, 0x79627bff, 0x797268ff, 0x79823c7f,
- 0x7991ff7f, 0x79a1b17f, 0x79b152ff, 0x79c0e37f, 0x79d05aff, 0x79dfc17f,
- 0x79ef177f, 0x79fe53ff, 0x7a0d7fff, 0x7a1c9b7f, 0x7a2ba57f, 0x7a3a9eff,
- 0x7a497f7f, 0x7a584f7f, 0x7a670dff, 0x7a75b3ff, 0x7a8450ff, 0x7a92d57f,
- 0x7aa1487f, 0x7aafa2ff, 0x7abdec7f, 0x7acc24ff, 0x7ada4cff, 0x7ae863ff,
- 0x7af661ff, 0x7b044eff, 0x7b122b7f, 0x7b1fee7f, 0x7b2da0ff, 0x7b3b42ff,
- 0x7b48d37f, 0x7b564b7f, 0x7b63b27f, 0x7b71087f, 0x7b7e4dff, 0x7b8b79ff,
- 0x7b98957f, 0x7ba59fff, 0x7bb299ff, 0x7bbf7aff, 0x7bcc4aff, 0x7bd9017f,
- 0x7be5afff, 0x7bf244ff, 0x7bfec97f, 0x7c0b34ff, 0x7c1797ff, 0x7c23e17f,
- 0x7c3011ff, 0x7c3c3a7f, 0x7c48497f, 0x7c54477f, 0x7c602c7f, 0x7c6c08ff,
- 0x7c77ccff, 0x7c8376ff, 0x7c8f18ff, 0x7c9aa1ff, 0x7ca619ff, 0x7cb1787f,
- 0x7cbcceff, 0x7cc80c7f, 0x7cd3307f, 0x7cde4c7f, 0x7ce94eff, 0x7cf4407f,
- 0x7cff197f, 0x7d09e0ff, 0x7d1497ff, 0x7d1f3e7f, 0x7d29cb7f, 0x7d3447ff,
- 0x7d3eb37f, 0x7d4905ff, 0x7d53477f, 0x7d5d787f, 0x7d67987f, 0x7d719f7f,
- 0x7d7b957f, 0x7d85727f, 0x7d8f46ff, 0x7d99027f, 0x7da2a4ff, 0x7dac3e7f,
- 0x7db5bf7f, 0x7dbf26ff, 0x7dc885ff, 0x7dd1cbff, 0x7ddb017f, 0x7de41d7f,
- 0x7ded287f, 0x7df622ff, 0x7dff0c7f, 0x7e07dd7f, 0x7e109cff, 0x7e19437f,
- 0x7e21d97f, 0x7e2a5e7f, 0x7e32d27f, 0x7e3b2dff, 0x7e4377ff, 0x7e4bb17f,
- 0x7e53d1ff, 0x7e5be17f, 0x7e63e07f, 0x7e6bc5ff, 0x7e739aff, 0x7e7b5eff,
- 0x7e8309ff, 0x7e8aac7f, 0x7e922d7f, 0x7e99a5ff, 0x7ea1057f, 0x7ea84bff,
- 0x7eaf89ff, 0x7eb6ae7f, 0x7ebdc27f, 0x7ec4bcff, 0x7ecba6ff, 0x7ed2807f,
- 0x7ed948ff, 0x7edff7ff, 0x7ee68dff, 0x7eed1bff, 0x7ef3907f, 0x7ef9f47f,
- 0x7f003eff, 0x7f0678ff, 0x7f0ca1ff, 0x7f12b9ff, 0x7f18b8ff, 0x7f1e9eff,
- 0x7f247c7f, 0x7f2a40ff, 0x7f2ff47f, 0x7f358eff, 0x7f3b18ff, 0x7f4091ff,
- 0x7f45f17f, 0x7f4b407f, 0x7f507e7f, 0x7f55abff, 0x7f5abfff, 0x7f5fbb7f,
- 0x7f64adff, 0x7f69877f, 0x7f6e47ff, 0x7f72ffff, 0x7f779e7f, 0x7f7c23ff,
- 0x7f80a17f, 0x7f85057f, 0x7f89507f, 0x7f8d8a7f, 0x7f91b3ff, 0x7f95cc7f,
- 0x7f99cbff, 0x7f9dba7f, 0x7fa1987f, 0x7fa55cff, 0x7fa910ff, 0x7facabff,
- 0x7fb0357f, 0x7fb3aeff, 0x7fb70eff, 0x7fba667f, 0x7fbd9c7f, 0x7fc0ca7f,
- 0x7fc3deff, 0x7fc6e27f, 0x7fc9ccff, 0x7fcca6ff, 0x7fcf6fff, 0x7fd21fff,
- 0x7fd4beff, 0x7fd74d7f, 0x7fd9c27f, 0x7fdc26ff, 0x7fde71ff, 0x7fe0ac7f,
- 0x7fe2d5ff, 0x7fe4eeff, 0x7fe6ee7f, 0x7fe8dd7f, 0x7feab37f, 0x7fec787f,
- 0x7fee2c7f, 0x7fefcfff, 0x7ff15a7f, 0x7ff2cb7f, 0x7ff433ff, 0x7ff5837f,
- 0x7ff6b9ff, 0x7ff7e7ff, 0x7ff8fcff, 0x7ff9f87f, 0x7ffae37f, 0x7ffbbd7f,
- 0x7ffc86ff, 0x7ffd36ff, 0x7ffdd67f, 0x7ffe5c7f, 0x7ffed1ff, 0x7fff367f,
- 0x7fff8a7f, 0x7fffc57f, 0x7fffe6ff, 0x7fffffff,
-};
+ 0x00192210, 0x004b6630, 0x007daa50, 0x00afee70, 0x00e23290, 0x011476b0,
+ 0x0146bad0, 0x0178fef0, 0x01ab3aac, 0x01dd7ecc, 0x020fc2ec, 0x0242070c,
+ 0x02744b2c, 0x02a686e8, 0x02d8cb08, 0x030b06c4, 0x033d4ae4, 0x036f86a0,
+ 0x03a1cac0, 0x03d4067c, 0x04064238, 0x04388658, 0x046ac218, 0x049cfdd0,
+ 0x04cf3990, 0x05017548, 0x0533a8a0, 0x0565e460, 0x05982020, 0x05ca5378,
+ 0x05fc86d0, 0x062ec288, 0x0660f5e8, 0x06932940, 0x06c55c98, 0x06f78788,
+ 0x0729bae8, 0x075bee40, 0x078e1930, 0x07c04428, 0x07f26f20, 0x08249a10,
+ 0x0856c510, 0x0888f000, 0x08bb1290, 0x08ed3520, 0x091f6010, 0x095182b0,
+ 0x09839ce0, 0x09b5bf70, 0x09e7e200, 0x0a19fc30, 0x0a4c1660, 0x0a7e3080,
+ 0x0ab04ab0, 0x0ae25c80, 0x0b146e50, 0x0b468880, 0x0b7891e0, 0x0baaa3b0,
+ 0x0bdcb580, 0x0c0ebee0, 0x0c40c840, 0x0c72d1b0, 0x0ca4d2b0, 0x0cd6dc20,
+ 0x0d08dd20, 0x0d3ade20, 0x0d6cd6c0, 0x0d9ed7c0, 0x0dd0d060, 0x0e02c910,
+ 0x0e34b940, 0x0e66b1e0, 0x0e98a220, 0x0eca9260, 0x0efc7a40, 0x0f2e6a70,
+ 0x0f605250, 0x0f9231c0, 0x0fc419a0, 0x0ff5f910, 0x1027d880, 0x1059afa0,
+ 0x108b8f20, 0x10bd6620, 0x10ef34e0, 0x11210be0, 0x1152daa0, 0x1184a0e0,
+ 0x11b66fa0, 0x11e835e0, 0x1219fc20, 0x124bba20, 0x127d7800, 0x12af35e0,
+ 0x12e0eb60, 0x1312a0e0, 0x13445680, 0x137603a0, 0x13a7b0c0, 0x13d95de0,
+ 0x140b02a0, 0x143ca760, 0x146e43a0, 0x149fe000, 0x14d17c60, 0x150318c0,
+ 0x1534aca0, 0x15663840, 0x1597c3e0, 0x15c94f60, 0x15fadb00, 0x162c5e20,
+ 0x165dd900, 0x168f53c0, 0x16c0cea0, 0x16f24100, 0x1723b360, 0x175525c0,
+ 0x17868fe0, 0x17b7f180, 0x17e95b80, 0x181ab4c0, 0x184c1660, 0x187d6fa0,
+ 0x18aec080, 0x18e01140, 0x19116220, 0x1942aaa0, 0x1973eac0, 0x19a52ac0,
+ 0x19d66ae0, 0x1a07a280, 0x1a38da40, 0x1a6a0980, 0x1a9b38e0, 0x1acc5fc0,
+ 0x1afd86a0, 0x1b2ea520, 0x1b5fc3c0, 0x1b90d9e0, 0x1bc1f000, 0x1bf2fdc0,
+ 0x1c240b80, 0x1c5510e0, 0x1c860dc0, 0x1cb71320, 0x1ce807c0, 0x1d18fc60,
+ 0x1d49f0e0, 0x1d7add20, 0x1dabc0e0, 0x1ddca4c0, 0x1e0d8880, 0x1e3e5b80,
+ 0x1e6f36e0, 0x1ea001a0, 0x1ed0d4a0, 0x1f0196e0, 0x1f325920, 0x1f631b60,
+ 0x1f93cce0, 0x1fc486a0, 0x1ff52fc0, 0x2025d8c0, 0x20568200, 0x20872280,
+ 0x20b7bb00, 0x20e85340, 0x2118e340, 0x21497300, 0x2179f240, 0x21aa79c0,
+ 0x21daf080, 0x220b6740, 0x223bde00, 0x226c4c40, 0x229cb240, 0x22cd1000,
+ 0x22fd6d80, 0x232dc2c0, 0x235e1800, 0x238e64c0, 0x23bea900, 0x23eeed80,
+ 0x241f2980, 0x244f5d40, 0x247f90c0, 0x24afbc00, 0x24dfdf00, 0x251001c0,
+ 0x25401c40, 0x25702e80, 0x25a03800, 0x25d041c0, 0x26004300, 0x26304480,
+ 0x26603d40, 0x26902e00, 0x26c01600, 0x26effe40, 0x271fde00, 0x274fb540,
+ 0x277f8440, 0x27af5340, 0x27df19c0, 0x280ed800, 0x283e9640, 0x286e4c00,
+ 0x289df980, 0x28cd9e80, 0x28fd4380, 0x292ce040, 0x295c7480, 0x298c0040,
+ 0x29bb83c0, 0x29eb0740, 0x2a1a8280, 0x2a49f500, 0x2a7967c0, 0x2aa8d200,
+ 0x2ad83400, 0x2b078d80, 0x2b36dec0, 0x2b662780, 0x2b957040, 0x2bc4b080,
+ 0x2bf3e880, 0x2c231840, 0x2c5247c0, 0x2c816f00, 0x2cb08dc0, 0x2cdfa440,
+ 0x2d0eb240, 0x2d3db800, 0x2d6cbd80, 0x2d9bb280, 0x2dcaa740, 0x2df993c0,
+ 0x2e288040, 0x2e575c00, 0x2e862f40, 0x2eb502c0, 0x2ee3cd80, 0x2f129040,
+ 0x2f414a40, 0x2f6ffc00, 0x2f9ea580, 0x2fcd4ec0, 0x2ffbe780, 0x302a8000,
+ 0x30591040, 0x30879800, 0x30b61780, 0x30e48e80, 0x3112fd40, 0x31416380,
+ 0x316fc9c0, 0x319e1f40, 0x31cc74c0, 0x31fab980, 0x3228fe40, 0x32573a80,
+ 0x32856e80, 0x32b39a00, 0x32e1bd00, 0x330fd800, 0x333dea40, 0x336bf440,
+ 0x3399fe40, 0x33c7f780, 0x33f5e840, 0x3423d940, 0x3451b940, 0x347f9940,
+ 0x34ad6880, 0x34db37c0, 0x3508fec0, 0x3536b4c0, 0x35646b00, 0x35921040,
+ 0x35bfb580, 0x35ed5280, 0x361ae700, 0x36486ac0, 0x3675ee80, 0x36a36a00,
+ 0x36d0d480, 0x36fe3f40, 0x372ba180, 0x3758f300, 0x37864440, 0x37b38d80,
+ 0x37e0c5c0, 0x380dfe00, 0x383b2580, 0x38684d00, 0x389563c0, 0x38c27a80,
+ 0x38ef8040, 0x391c8640, 0x39497b80, 0x39766840, 0x39a34cc0, 0x39d028c0,
+ 0x39fd04c0, 0x3a29cfc0, 0x3a568a40, 0x3a8344c0, 0x3aaff6c0, 0x3adca080,
+ 0x3b093980, 0x3b35d240, 0x3b625a80, 0x3b8ee280, 0x3bbb59c0, 0x3be7c8c0,
+ 0x3c142f80, 0x3c408d80, 0x3c6ce340, 0x3c9930c0, 0x3cc56d40, 0x3cf1aa00,
+ 0x3d1dd5c0, 0x3d4a01c0, 0x3d761cc0, 0x3da22f80, 0x3dce39c0, 0x3dfa3340,
+ 0x3e262cc0, 0x3e521580, 0x3e7dfe40, 0x3ea9d640, 0x3ed5a5c0, 0x3f016d00,
+ 0x3f2d2340, 0x3f58d9c0, 0x3f847f40, 0x3fb02500, 0x3fdbb9c0, 0x40073dff,
+ 0x4032c1ff, 0x405e3d7f, 0x4089a87f, 0x40b50aff, 0x40e064ff, 0x410bb6ff,
+ 0x4136f7ff, 0x416238ff, 0x418d68ff, 0x41b890ff, 0x41e3a7ff, 0x420ebeff,
+ 0x4239c4ff, 0x4264c2ff, 0x428fb87f, 0x42baa57f, 0x42e581ff, 0x43105dff,
+ 0x433b297f, 0x4365e47f, 0x43909eff, 0x43bb48ff, 0x43e5ea7f, 0x441083ff,
+ 0x443b0c7f, 0x4465947f, 0x449003ff, 0x44ba72ff, 0x44e4d9ff, 0x450f2fff,
+ 0x45397dff, 0x4563ba7f, 0x458df77f, 0x45b823ff, 0x45e2477f, 0x460c5a7f,
+ 0x46366d7f, 0x46606f7f, 0x468a60ff, 0x46b4527f, 0x46de32ff, 0x470802ff,
+ 0x4731d2ff, 0x475b91ff, 0x4785487f, 0x47aeee7f, 0x47d8947f, 0x4802217f,
+ 0x482badff, 0x485529ff, 0x487e9d7f, 0x48a808ff, 0x48d162ff, 0x48fab4ff,
+ 0x4923f67f, 0x494d37ff, 0x49765fff, 0x499f87ff, 0x49c89f7f, 0x49f1adff,
+ 0x4a1aac7f, 0x4a43a1ff, 0x4a6c8f7f, 0x4a95747f, 0x4abe487f, 0x4ae70bff,
+ 0x4b0fc6ff, 0x4b3879ff, 0x4b6123ff, 0x4b89bd7f, 0x4bb245ff, 0x4bdaceff,
+ 0x4c0346ff, 0x4c2badff, 0x4c540cff, 0x4c7c62ff, 0x4ca4a8ff, 0x4ccce5ff,
+ 0x4cf51aff, 0x4d1d3eff, 0x4d4551ff, 0x4d6d5cff, 0x4d955f7f, 0x4dbd597f,
+ 0x4de542ff, 0x4e0d1b7f, 0x4e34eb7f, 0x4e5cb37f, 0x4e846a7f, 0x4eac18ff,
+ 0x4ed3b6ff, 0x4efb4bff, 0x4f22d0ff, 0x4f4a4cff, 0x4f71c0ff, 0x4f9923ff,
+ 0x4fc0767f, 0x4fe7c07f, 0x500f01ff, 0x503632ff, 0x505d5aff, 0x508472ff,
+ 0x50ab81ff, 0x50d2807f, 0x50f9767f, 0x51205bff, 0x5147387f, 0x516e04ff,
+ 0x5194c87f, 0x51bb7b7f, 0x51e225ff, 0x5208bfff, 0x522f50ff, 0x5255d9ff,
+ 0x527c49ff, 0x52a2b17f, 0x52c9107f, 0x52ef5eff, 0x5315a47f, 0x533bd9ff,
+ 0x5362067f, 0x5388227f, 0x53ae2d7f, 0x53d4307f, 0x53fa2aff, 0x5420147f,
+ 0x5445ed7f, 0x546bbd7f, 0x54917d7f, 0x54b7347f, 0x54dcdaff, 0x5502797f,
+ 0x5528067f, 0x554d837f, 0x5572f77f, 0x559862ff, 0x55bdb5ff, 0x55e2ffff,
+ 0x560841ff, 0x562d72ff, 0x56529b7f, 0x5677aaff, 0x569cba7f, 0x56c1b0ff,
+ 0x56e69eff, 0x570b847f, 0x5730597f, 0x57551d7f, 0x5779d8ff, 0x579e83ff,
+ 0x57c31dff, 0x57e7af7f, 0x580c307f, 0x5830a8ff, 0x585510ff, 0x587967ff,
+ 0x589db67f, 0x58c1f3ff, 0x58e6297f, 0x590a45ff, 0x592e61ff, 0x595264ff,
+ 0x59765fff, 0x599a49ff, 0x59be2b7f, 0x59e1fbff, 0x5a05bbff, 0x5a29737f,
+ 0x5a4d1a7f, 0x5a70b07f, 0x5a943dff, 0x5ab7baff, 0x5adb26ff, 0x5afe8a7f,
+ 0x5b21dd7f, 0x5b451fff, 0x5b68597f, 0x5b8b827f, 0x5bae9a7f, 0x5bd1aa7f,
+ 0x5bf4a97f, 0x5c1797ff, 0x5c3a7d7f, 0x5c5d4a7f, 0x5c8016ff, 0x5ca2ca7f,
+ 0x5cc575ff, 0x5ce80fff, 0x5d0a997f, 0x5d2d1aff, 0x5d4f8b7f, 0x5d71eaff,
+ 0x5d9439ff, 0x5db6807f, 0x5dd8b5ff, 0x5dfadaff, 0x5e1cf77f, 0x5e3f037f,
+ 0x5e60fe7f, 0x5e82e87f, 0x5ea4ca7f, 0x5ec69b7f, 0x5ee85b7f, 0x5f0a0aff,
+ 0x5f2bb1ff, 0x5f4d487f, 0x5f6ecdff, 0x5f904aff, 0x5fb1aeff, 0x5fd30aff,
+ 0x5ff4557f, 0x601597ff, 0x6036c17f, 0x6057e1ff, 0x6078f27f, 0x6099f17f,
+ 0x60bae87f, 0x60dbceff, 0x60fca3ff, 0x611d68ff, 0x613e1c7f, 0x615ec7ff,
+ 0x617f627f, 0x619fec7f, 0x61c0657f, 0x61e0cdff, 0x62012dff, 0x62217cff,
+ 0x6241bb7f, 0x6261e8ff, 0x628205ff, 0x62a21a7f, 0x62c21dff, 0x62e210ff,
+ 0x6301f2ff, 0x6321c47f, 0x63418d7f, 0x63613cff, 0x6380e47f, 0x63a07aff,
+ 0x63c000ff, 0x63df7e7f, 0x63fee2ff, 0x641e3e7f, 0x643d89ff, 0x645cc3ff,
+ 0x647bed7f, 0x649b067f, 0x64ba16ff, 0x64d90dff, 0x64f7fcff, 0x6516daff,
+ 0x6535a87f, 0x655464ff, 0x657318ff, 0x6591b3ff, 0x65b0467f, 0x65cebfff,
+ 0x65ed30ff, 0x660b90ff, 0x6629e07f, 0x66481f7f, 0x6666557f, 0x668472ff,
+ 0x66a2877f, 0x66c082ff, 0x66de767f, 0x66fc587f, 0x671a2a7f, 0x6737eaff,
+ 0x67559aff, 0x677342ff, 0x6790d17f, 0x67ae577f, 0x67cbc47f, 0x67e928ff,
+ 0x68067cff, 0x6823bfff, 0x6840f1ff, 0x685e137f, 0x687b247f, 0x6898247f,
+ 0x68b5137f, 0x68d1f9ff, 0x68eec7ff, 0x690b8cff, 0x692838ff, 0x6944dc7f,
+ 0x696166ff, 0x697de8ff, 0x699a5a7f, 0x69b6baff, 0x69d30aff, 0x69ef49ff,
+ 0x6a0b77ff, 0x6a27957f, 0x6a43a1ff, 0x6a5f9dff, 0x6a7b88ff, 0x6a976bff,
+ 0x6ab3357f, 0x6aceedff, 0x6aea9e7f, 0x6b06357f, 0x6b21c47f, 0x6b3d39ff,
+ 0x6b58a77f, 0x6b73fb7f, 0x6b8f46ff, 0x6baa797f, 0x6bc5a3ff, 0x6be0bd7f,
+ 0x6bfbbd7f, 0x6c16b57f, 0x6c319c7f, 0x6c4c69ff, 0x6c672f7f, 0x6c81e47f,
+ 0x6c9c7fff, 0x6cb712ff, 0x6cd1957f, 0x6cec06ff, 0x6d065f7f, 0x6d20af7f,
+ 0x6d3aeeff, 0x6d5514ff, 0x6d6f327f, 0x6d893f7f, 0x6da3337f, 0x6dbd1eff,
+ 0x6dd6f97f, 0x6df0baff, 0x6e0a73ff, 0x6e2413ff, 0x6e3dab7f, 0x6e57297f,
+ 0x6e709f7f, 0x6e89fc7f, 0x6ea350ff, 0x6ebc8bff, 0x6ed5beff, 0x6eeed87f,
+ 0x6f07e17f, 0x6f20d97f, 0x6f39c97f, 0x6f529fff, 0x6f6b657f, 0x6f841a7f,
+ 0x6f9cbeff, 0x6fb5527f, 0x6fcdd4ff, 0x6fe646ff, 0x6ffe9f7f, 0x7016efff,
+ 0x702f2f7f, 0x704755ff, 0x705f73ff, 0x707778ff, 0x708f757f, 0x70a7587f,
+ 0x70bf2aff, 0x70d6ecff, 0x70eea5ff, 0x7106467f, 0x711dd5ff, 0x71354bff,
+ 0x714cb9ff, 0x716416ff, 0x717b637f, 0x7192967f, 0x71a9c0ff, 0x71c0d2ff,
+ 0x71d7d37f, 0x71eec37f, 0x7205a2ff, 0x721c717f, 0x72332eff, 0x7249dbff,
+ 0x726077ff, 0x7276faff, 0x728d757f, 0x72a3d6ff, 0x72ba2fff, 0x72d06fff,
+ 0x72e69eff, 0x72fcbd7f, 0x7312caff, 0x7328beff, 0x733eaaff, 0x73547dff,
+ 0x736a487f, 0x737ff97f, 0x739599ff, 0x73ab29ff, 0x73c0a8ff, 0x73d616ff,
+ 0x73eb6bff, 0x7400b87f, 0x7415ebff, 0x742b0e7f, 0x7440207f, 0x7455217f,
+ 0x746a11ff, 0x747ef17f, 0x7493b7ff, 0x74a875ff, 0x74bd1a7f, 0x74d1ae7f,
+ 0x74e631ff, 0x74faa47f, 0x750efdff, 0x75234e7f, 0x7537867f, 0x754bad7f,
+ 0x755fc37f, 0x7573c8ff, 0x7587bdff, 0x759b997f, 0x75af6c7f, 0x75c3267f,
+ 0x75d6cf7f, 0x75ea67ff, 0x75fdef7f, 0x76115dff, 0x7624c3ff, 0x763810ff,
+ 0x764b4cff, 0x765e787f, 0x76718a7f, 0x7684947f, 0x769784ff, 0x76aa64ff,
+ 0x76bd33ff, 0x76cff1ff, 0x76e29f7f, 0x76f533ff, 0x7707b77f, 0x771a2a7f,
+ 0x772c8c7f, 0x773edd7f, 0x7751157f, 0x77633cff, 0x77755bff, 0x778758ff,
+ 0x77994dff, 0x77ab327f, 0x77bcfd7f, 0x77ceb77f, 0x77e060ff, 0x77f1f97f,
+ 0x780378ff, 0x7814e7ff, 0x782645ff, 0x783792ff, 0x7848cf7f, 0x7859f27f,
+ 0x786b04ff, 0x787c06ff, 0x788cf7ff, 0x789dd7ff, 0x78ae9eff, 0x78bf54ff,
+ 0x78cffa7f, 0x78e08eff, 0x78f10a7f, 0x79017d7f, 0x7911d77f, 0x7922187f,
+ 0x7932507f, 0x79426fff, 0x79527e7f, 0x79627bff, 0x797268ff, 0x79823c7f,
+ 0x7991ff7f, 0x79a1b17f, 0x79b152ff, 0x79c0e37f, 0x79d05aff, 0x79dfc17f,
+ 0x79ef177f, 0x79fe53ff, 0x7a0d7fff, 0x7a1c9b7f, 0x7a2ba57f, 0x7a3a9eff,
+ 0x7a497f7f, 0x7a584f7f, 0x7a670dff, 0x7a75b3ff, 0x7a8450ff, 0x7a92d57f,
+ 0x7aa1487f, 0x7aafa2ff, 0x7abdec7f, 0x7acc24ff, 0x7ada4cff, 0x7ae863ff,
+ 0x7af661ff, 0x7b044eff, 0x7b122b7f, 0x7b1fee7f, 0x7b2da0ff, 0x7b3b42ff,
+ 0x7b48d37f, 0x7b564b7f, 0x7b63b27f, 0x7b71087f, 0x7b7e4dff, 0x7b8b79ff,
+ 0x7b98957f, 0x7ba59fff, 0x7bb299ff, 0x7bbf7aff, 0x7bcc4aff, 0x7bd9017f,
+ 0x7be5afff, 0x7bf244ff, 0x7bfec97f, 0x7c0b34ff, 0x7c1797ff, 0x7c23e17f,
+ 0x7c3011ff, 0x7c3c3a7f, 0x7c48497f, 0x7c54477f, 0x7c602c7f, 0x7c6c08ff,
+ 0x7c77ccff, 0x7c8376ff, 0x7c8f18ff, 0x7c9aa1ff, 0x7ca619ff, 0x7cb1787f,
+ 0x7cbcceff, 0x7cc80c7f, 0x7cd3307f, 0x7cde4c7f, 0x7ce94eff, 0x7cf4407f,
+ 0x7cff197f, 0x7d09e0ff, 0x7d1497ff, 0x7d1f3e7f, 0x7d29cb7f, 0x7d3447ff,
+ 0x7d3eb37f, 0x7d4905ff, 0x7d53477f, 0x7d5d787f, 0x7d67987f, 0x7d719f7f,
+ 0x7d7b957f, 0x7d85727f, 0x7d8f46ff, 0x7d99027f, 0x7da2a4ff, 0x7dac3e7f,
+ 0x7db5bf7f, 0x7dbf26ff, 0x7dc885ff, 0x7dd1cbff, 0x7ddb017f, 0x7de41d7f,
+ 0x7ded287f, 0x7df622ff, 0x7dff0c7f, 0x7e07dd7f, 0x7e109cff, 0x7e19437f,
+ 0x7e21d97f, 0x7e2a5e7f, 0x7e32d27f, 0x7e3b2dff, 0x7e4377ff, 0x7e4bb17f,
+ 0x7e53d1ff, 0x7e5be17f, 0x7e63e07f, 0x7e6bc5ff, 0x7e739aff, 0x7e7b5eff,
+ 0x7e8309ff, 0x7e8aac7f, 0x7e922d7f, 0x7e99a5ff, 0x7ea1057f, 0x7ea84bff,
+ 0x7eaf89ff, 0x7eb6ae7f, 0x7ebdc27f, 0x7ec4bcff, 0x7ecba6ff, 0x7ed2807f,
+ 0x7ed948ff, 0x7edff7ff, 0x7ee68dff, 0x7eed1bff, 0x7ef3907f, 0x7ef9f47f,
+ 0x7f003eff, 0x7f0678ff, 0x7f0ca1ff, 0x7f12b9ff, 0x7f18b8ff, 0x7f1e9eff,
+ 0x7f247c7f, 0x7f2a40ff, 0x7f2ff47f, 0x7f358eff, 0x7f3b18ff, 0x7f4091ff,
+ 0x7f45f17f, 0x7f4b407f, 0x7f507e7f, 0x7f55abff, 0x7f5abfff, 0x7f5fbb7f,
+ 0x7f64adff, 0x7f69877f, 0x7f6e47ff, 0x7f72ffff, 0x7f779e7f, 0x7f7c23ff,
+ 0x7f80a17f, 0x7f85057f, 0x7f89507f, 0x7f8d8a7f, 0x7f91b3ff, 0x7f95cc7f,
+ 0x7f99cbff, 0x7f9dba7f, 0x7fa1987f, 0x7fa55cff, 0x7fa910ff, 0x7facabff,
+ 0x7fb0357f, 0x7fb3aeff, 0x7fb70eff, 0x7fba667f, 0x7fbd9c7f, 0x7fc0ca7f,
+ 0x7fc3deff, 0x7fc6e27f, 0x7fc9ccff, 0x7fcca6ff, 0x7fcf6fff, 0x7fd21fff,
+ 0x7fd4beff, 0x7fd74d7f, 0x7fd9c27f, 0x7fdc26ff, 0x7fde71ff, 0x7fe0ac7f,
+ 0x7fe2d5ff, 0x7fe4eeff, 0x7fe6ee7f, 0x7fe8dd7f, 0x7feab37f, 0x7fec787f,
+ 0x7fee2c7f, 0x7fefcfff, 0x7ff15a7f, 0x7ff2cb7f, 0x7ff433ff, 0x7ff5837f,
+ 0x7ff6b9ff, 0x7ff7e7ff, 0x7ff8fcff, 0x7ff9f87f, 0x7ffae37f, 0x7ffbbd7f,
+ 0x7ffc86ff, 0x7ffd36ff, 0x7ffdd67f, 0x7ffe5c7f, 0x7ffed1ff, 0x7fff367f,
+ 0x7fff8a7f, 0x7fffc57f, 0x7fffe6ff, 0x7fffffff};
const WORD32 ixheaacd_sine_win_64[64] = {
- 0x019220ff, 0x04b6177f, 0x07d95dd7, 0x0afb655f, 0x0e1bc11f, 0x1139f33f,
- 0x1455757f, 0x176ddabf, 0x1a829cff, 0x1d934eff, 0x209f72ff, 0x23a68aff,
- 0x26a821ff, 0x29a3c1ff, 0x2c98fe7f, 0x2f8750bf, 0x326e547f, 0x354d93ff,
- 0x382491bf, 0x3af2f13f, 0x3db8347f, 0x4073eeff, 0x4325c3ff, 0x45cd357f,
- 0x4869e7ff, 0x4afb6dff, 0x4d81627f, 0x4ffb697f, 0x5269167f, 0x54ca0bff,
- 0x571deeff, 0x5964627f, 0x5b9d12ff, 0x5dc79aff, 0x5fe3afff, 0x61f0fdff,
- 0x63ef307f, 0x65ddfc7f, 0x67bd0dff, 0x698c21ff, 0x6b4af4ff, 0x6cf9337f,
- 0x6e96aaff, 0x70230fff, 0x719e2fff, 0x7307bfff, 0x745f9dff, 0x75a586ff,
- 0x76d948ff, 0x77fab97f, 0x7909a67f, 0x7a05ee7f, 0x7aef66ff, 0x7bc5de7f,
- 0x7c894c7f, 0x7d397dff, 0x7dd6627f, 0x7e5fe0ff, 0x7ed5e8ff, 0x7f3857ff,
- 0x7f872eff, 0x7fc2547f, 0x7fe9c87f, 0x7ffd8aff};
+ 0x019220ff, 0x04b6177f, 0x07d95dd7, 0x0afb655f, 0x0e1bc11f, 0x1139f33f,
+ 0x1455757f, 0x176ddabf, 0x1a829cff, 0x1d934eff, 0x209f72ff, 0x23a68aff,
+ 0x26a821ff, 0x29a3c1ff, 0x2c98fe7f, 0x2f8750bf, 0x326e547f, 0x354d93ff,
+ 0x382491bf, 0x3af2f13f, 0x3db8347f, 0x4073eeff, 0x4325c3ff, 0x45cd357f,
+ 0x4869e7ff, 0x4afb6dff, 0x4d81627f, 0x4ffb697f, 0x5269167f, 0x54ca0bff,
+ 0x571deeff, 0x5964627f, 0x5b9d12ff, 0x5dc79aff, 0x5fe3afff, 0x61f0fdff,
+ 0x63ef307f, 0x65ddfc7f, 0x67bd0dff, 0x698c21ff, 0x6b4af4ff, 0x6cf9337f,
+ 0x6e96aaff, 0x70230fff, 0x719e2fff, 0x7307bfff, 0x745f9dff, 0x75a586ff,
+ 0x76d948ff, 0x77fab97f, 0x7909a67f, 0x7a05ee7f, 0x7aef66ff, 0x7bc5de7f,
+ 0x7c894c7f, 0x7d397dff, 0x7dd6627f, 0x7e5fe0ff, 0x7ed5e8ff, 0x7f3857ff,
+ 0x7f872eff, 0x7fc2547f, 0x7fe9c87f, 0x7ffd8aff};
const WORD32 ixheaacd_sine_win_768[768] = {
- 0x0021858b, 0x0064883f, 0x00a78af3, 0x00ea960a, 0x012d98bf, 0x01709b73,
- 0x01b39e27, 0x01f6a0db, 0x0239a38f, 0x027ca643, 0x02bfa8f7, 0x0302abab,
- 0x0345ae5f, 0x0388a8af, 0x03cbab63, 0x040ea5b7, 0x0451a007, 0x04949a57,
- 0x04d794a7, 0x051a8ef7, 0x055d8947, 0x05a07b37, 0x05e36d1f, 0x06265f0f,
- 0x066950ff, 0x06ac42e7, 0x06ef2c6f, 0x073215ff, 0x0774ff87, 0x07b7e90f,
- 0x07faca37, 0x083db3bf, 0x088094df, 0x08c36daf, 0x09064ecf, 0x0949278f,
- 0x098bf7ef, 0x09ced0af, 0x0a11a10f, 0x0a54716f, 0x0a97396f, 0x0ada016f,
- 0x0b1cc95f, 0x0b5f915f, 0x0ba250ff, 0x0be5082f, 0x0c27bf5f, 0x0c6a768f,
- 0x0cad2dcf, 0x0cefdc9f, 0x0d32830f, 0x0d7531df, 0x0db7cfdf, 0x0dfa764f,
- 0x0e3d145f, 0x0e7fa9ff, 0x0ec23faf, 0x0f04ccef, 0x0f475a2f, 0x0f89e76f,
- 0x0fcc6c4f, 0x100ee8df, 0x1051653f, 0x1093d95f, 0x10d64d7f, 0x1118b93f,
- 0x115b24df, 0x119d883f, 0x11dfeb7f, 0x1222467f, 0x126498ff, 0x12a6eb9f,
- 0x12e935bf, 0x132b7fdf, 0x136db93f, 0x13affaff, 0x13f22bff, 0x14345cff,
- 0x14768dff, 0x14b8ae3f, 0x14face5f, 0x153cee9f, 0x157efdff, 0x15c10d7f,
- 0x1603147f, 0x16451b9f, 0x16871a3f, 0x16c9107f, 0x170afe5f, 0x174ce3df,
- 0x178ec95f, 0x17d0a67f, 0x18127b1f, 0x18544fdf, 0x189613df, 0x18d7d7bf,
- 0x1919933f, 0x195b467f, 0x199cf99f, 0x19de9bff, 0x1a203e5f, 0x1a61d85f,
- 0x1aa369ff, 0x1ae4f33f, 0x1b2673ff, 0x1b67ec7f, 0x1ba964df, 0x1beacc9f,
- 0x1c2c343f, 0x1c6d937f, 0x1caee1ff, 0x1cf0307f, 0x1d31769f, 0x1d72b45f,
- 0x1db3e99f, 0x1df5169f, 0x1e363b1f, 0x1e77573f, 0x1eb86b1f, 0x1ef9767f,
- 0x1f3a797f, 0x1f7b741f, 0x1fbc663f, 0x1ffd501f, 0x203e317f, 0x207f0abf,
- 0x20bfd2ff, 0x21009b3f, 0x21415aff, 0x21820a3f, 0x21c2b93f, 0x220357bf,
- 0x2243ed7f, 0x22847b3f, 0x22c5003f, 0x23057cff, 0x2345f17f, 0x238654ff,
- 0x23c6b8bf, 0x24070b7f, 0x244755ff, 0x248797ff, 0x24c7c93f, 0x2507fabf,
- 0x25481b3f, 0x2588333f, 0x25c842ff, 0x26084a3f, 0x264840ff, 0x26882eff,
- 0x26c814bf, 0x2707e9bf, 0x2747b67f, 0x27877abf, 0x27c7367f, 0x2806e9ff,
- 0x28468cbf, 0x28861e7f, 0x28c5b07f, 0x2905317f, 0x2944aa3f, 0x2984123f,
- 0x29c371bf, 0x2a02c8ff, 0x2a420f7f, 0x2a814d7f, 0x2ac082ff, 0x2affa7ff,
- 0x2b3ec47f, 0x2b7dcfff, 0x2bbcd33f, 0x2bfbc5bf, 0x2c3aafff, 0x2c7991bf,
- 0x2cb862bf, 0x2cf72b3f, 0x2d35e2ff, 0x2d74927f, 0x2db330ff, 0x2df1c73f,
- 0x2e304cbf, 0x2e6ec9ff, 0x2ead363f, 0x2eeb99ff, 0x2f29ed3f, 0x2f682f7f,
- 0x2fa671ff, 0x2fe49aff, 0x3022bbff, 0x3060cbff, 0x309ed37f, 0x30dcca7f,
- 0x311ab8ff, 0x3158967f, 0x3196637f, 0x31d427ff, 0x3211dbbf, 0x324f873f,
- 0x328d21bf, 0x32caab7f, 0x33082cff, 0x3345953f, 0x3382fd7f, 0x33c04c7f,
- 0x33fd933f, 0x343ac93f, 0x3477f6bf, 0x34b50aff, 0x34f216ff, 0x352f1a7f,
- 0x356c04ff, 0x35a8e6ff, 0x35e5b83f, 0x362278bf, 0x365f30ff, 0x369bcfbf,
- 0x36d8663f, 0x3714ec3f, 0x3751697f, 0x378dcdbf, 0x37ca297f, 0x3806747f,
- 0x3842aebf, 0x387ed83f, 0x38baf97f, 0x38f7013f, 0x393300bf, 0x396eefbf,
- 0x39aacd7f, 0x39e69abf, 0x3a22573f, 0x3a5e02ff, 0x3a999dbf, 0x3ad5303f,
- 0x3b10a97f, 0x3b4c1a7f, 0x3b87723f, 0x3bc2c1bf, 0x3bfe003f, 0x3c392dff,
- 0x3c7442bf, 0x3caf4eff, 0x3cea4a7f, 0x3d25353f, 0x3d600f3f, 0x3d9ad83f,
- 0x3dd5883f, 0x3e102fff, 0x3e4ac6bf, 0x3e854cbf, 0x3ebfb9bf, 0x3efa1e3f,
- 0x3f3471ff, 0x3f6eac7f, 0x3fa8debf, 0x3fe2f7bf, 0x401cffff, 0x4056ffff,
- 0x4090e67f, 0x40cabc7f, 0x4104817f, 0x413e2d7f, 0x4177d0ff, 0x41b15b7f,
- 0x41eadd7f, 0x422445ff, 0x425d9e7f, 0x4296e57f, 0x42d0137f, 0x4309397f,
- 0x434245ff, 0x437b417f, 0x43b42cff, 0x43ed06ff, 0x4425c7ff, 0x445e787f,
- 0x449717ff, 0x44cfa67f, 0x4508247f, 0x4540897f, 0x4578dd7f, 0x45b1207f,
- 0x45e94a7f, 0x462163ff, 0x46596c7f, 0x46915bff, 0x46c942ff, 0x4701107f,
- 0x4738c57f, 0x4770717f, 0x47a7fbff, 0x47df7e7f, 0x4816e77f, 0x484e3fff,
- 0x4885877f, 0x48bcb5ff, 0x48f3d37f, 0x492ad7ff, 0x4961cbff, 0x4998ae7f,
- 0x49cf787f, 0x4a06317f, 0x4a3cd17f, 0x4a73607f, 0x4aa9de7f, 0x4ae0437f,
- 0x4b168f7f, 0x4b4cd2ff, 0x4b82f4ff, 0x4bb90e7f, 0x4bef067f, 0x4c24f67f,
- 0x4c5ac47f, 0x4c9089ff, 0x4cc6367f, 0x4cfbc9ff, 0x4d314c7f, 0x4d66b5ff,
- 0x4d9c0e7f, 0x4dd14dff, 0x4e06747f, 0x4e3b927f, 0x4e708eff, 0x4ea57a7f,
- 0x4eda4cff, 0x4f0f0e7f, 0x4f43bf7f, 0x4f784eff, 0x4faccd7f, 0x4fe13aff,
- 0x50158f7f, 0x5049caff, 0x507ded7f, 0x50b1feff, 0x50e5ff7f, 0x5119deff,
- 0x514dacff, 0x51816aff, 0x51b50f7f, 0x51e89a7f, 0x521c0c7f, 0x524f6dff,
- 0x5282b5ff, 0x52b5e4ff, 0x52e9037f, 0x531c087f, 0x534ef47f, 0x5381c6ff,
- 0x53b488ff, 0x53e731ff, 0x5419c17f, 0x544c407f, 0x547e9d7f, 0x54b0e9ff,
- 0x54e325ff, 0x55153fff, 0x5547497f, 0x5579397f, 0x55ab107f, 0x55dcce7f,
- 0x560e737f, 0x5640077f, 0x567181ff, 0x56a2e3ff, 0x56d42bff, 0x57055b7f,
- 0x573679ff, 0x57677f7f, 0x579862ff, 0x57c935ff, 0x57f9efff, 0x582a98ff,
- 0x585b207f, 0x588b8eff, 0x58bbec7f, 0x58ec287f, 0x591c53ff, 0x594c65ff,
- 0x597c5eff, 0x59ac3e7f, 0x59dc057f, 0x5a0bb27f, 0x5a3b46ff, 0x5a6ac1ff,
- 0x5a9a2c7f, 0x5ac974ff, 0x5af8a4ff, 0x5b27c37f, 0x5b56c0ff, 0x5b85a4ff,
- 0x5bb4787f, 0x5be329ff, 0x5c11c27f, 0x5c404a7f, 0x5c6eb07f, 0x5c9d05ff,
- 0x5ccb39ff, 0x5cf954ff, 0x5d27567f, 0x5d55477f, 0x5d83167f, 0x5db0cc7f,
- 0x5dde697f, 0x5e0bed7f, 0x5e3957ff, 0x5e66a97f, 0x5e93d97f, 0x5ec0f87f,
- 0x5eedfe7f, 0x5f1ae2ff, 0x5f47adff, 0x5f74687f, 0x5fa1017f, 0x5fcd80ff,
- 0x5ff9df7f, 0x60262c7f, 0x605260ff, 0x607e737f, 0x60aa6cff, 0x60d64d7f,
- 0x6102147f, 0x612dc27f, 0x6159577f, 0x6184caff, 0x61b024ff, 0x61db65ff,
- 0x62068d7f, 0x62319c7f, 0x625c897f, 0x6287657f, 0x62b2207f, 0x62dcb97f,
- 0x630741ff, 0x6331a8ff, 0x635bf67f, 0x63862aff, 0x63b0467f, 0x63da407f,
- 0x640420ff, 0x642de87f, 0x64578e7f, 0x64811aff, 0x64aa8e7f, 0x64d3e8ff,
- 0x64fd21ff, 0x6526417f, 0x654f47ff, 0x65782cff, 0x65a0f8ff, 0x65c9ab7f,
- 0x65f244ff, 0x661abcff, 0x66431bff, 0x666b58ff, 0x66937cff, 0x66bb87ff,
- 0x66e3717f, 0x670b417f, 0x6732f87f, 0x675a8dff, 0x678209ff, 0x67a96d7f,
- 0x67d0aeff, 0x67f7d6ff, 0x681eddff, 0x6845cb7f, 0x686c97ff, 0x689352ff,
- 0x68b9e47f, 0x68e064ff, 0x6906bbff, 0x692d01ff, 0x695325ff, 0x697928ff,
- 0x699f127f, 0x69c4e2ff, 0x69ea91ff, 0x6a10277f, 0x6a359bff, 0x6a5af6ff,
- 0x6a802fff, 0x6aa5507f, 0x6aca577f, 0x6aef34ff, 0x6b1400ff, 0x6b38abff,
- 0x6b5d357f, 0x6b81a57f, 0x6ba5f3ff, 0x6bca297f, 0x6bee3d7f, 0x6c1237ff,
- 0x6c3610ff, 0x6c59d0ff, 0x6c7d6f7f, 0x6ca0f4ff, 0x6cc4587f, 0x6ce79a7f,
- 0x6d0ac37f, 0x6d2dd37f, 0x6d50b97f, 0x6d738e7f, 0x6d96397f, 0x6db8cb7f,
- 0x6ddb447f, 0x6dfd9b7f, 0x6e1fd17f, 0x6e41edff, 0x6e63e8ff, 0x6e85c27f,
- 0x6ea7827f, 0x6ec9297f, 0x6eeaa6ff, 0x6f0c0aff, 0x6f2d557f, 0x6f4e767f,
- 0x6f6f867f, 0x6f906cff, 0x6fb139ff, 0x6fd1e4ff, 0x6ff2777f, 0x7012e7ff,
- 0x7033377f, 0x705364ff, 0x7073797f, 0x70936c7f, 0x70b345ff, 0x70d2fdff,
- 0x70f294ff, 0x711209ff, 0x713165ff, 0x71509fff, 0x716fc17f, 0x718eb87f,
- 0x71ad967f, 0x71cc52ff, 0x71eaf67f, 0x7209787f, 0x7227d87f, 0x724616ff,
- 0x72643cff, 0x7282387f, 0x72a022ff, 0x72bde3ff, 0x72db8b7f, 0x72f9097f,
- 0x7316767f, 0x7333b97f, 0x7350daff, 0x736de2ff, 0x738ac9ff, 0x73a7977f,
- 0x73c43aff, 0x73e0c57f, 0x73fd2e7f, 0x741975ff, 0x74359bff, 0x7451a87f,
- 0x746d8aff, 0x7489547f, 0x74a4fc7f, 0x74c08b7f, 0x74dbf07f, 0x74f73bff,
- 0x751265ff, 0x752d6eff, 0x754855ff, 0x75631b7f, 0x757dc77f, 0x759849ff,
- 0x75b2b37f, 0x75ccfaff, 0x75e720ff, 0x76012dff, 0x761b10ff, 0x7634daff,
- 0x764e7a7f, 0x7668017f, 0x7681667f, 0x769aa9ff, 0x76b3d47f, 0x76ccd4ff,
- 0x76e5b3ff, 0x76fe79ff, 0x77171dff, 0x772f987f, 0x7747f97f, 0x776038ff,
- 0x777856ff, 0x77905bff, 0x77a836ff, 0x77bff07f, 0x77d7907f, 0x77ef067f,
- 0x780663ff, 0x781d9f7f, 0x7834b0ff, 0x784ba97f, 0x78627fff, 0x7879357f,
- 0x788fc8ff, 0x78a63b7f, 0x78bc8bff, 0x78d2c37f, 0x78e8d0ff, 0x78febcff,
- 0x7914877f, 0x792a387f, 0x793fbfff, 0x79552dff, 0x796a727f, 0x797f9d7f,
- 0x79949e7f, 0x79a9867f, 0x79be4cff, 0x79d2e97f, 0x79e76c7f, 0x79fbce7f,
- 0x7a1005ff, 0x7a24247f, 0x7a38217f, 0x7a4bfcff, 0x7a5fae7f, 0x7a7346ff,
- 0x7a86bdff, 0x7a9a0aff, 0x7aad3e7f, 0x7ac0507f, 0x7ad3417f, 0x7ae607ff,
- 0x7af8b57f, 0x7b0b38ff, 0x7b1da37f, 0x7b2fec7f, 0x7b420aff, 0x7b5410ff,
- 0x7b65ecff, 0x7b77af7f, 0x7b8947ff, 0x7b9ac77f, 0x7bac1cff, 0x7bbd50ff,
- 0x7bce6bff, 0x7bdf5cff, 0x7bf02c7f, 0x7c00d9ff, 0x7c11667f, 0x7c21d0ff,
- 0x7c3219ff, 0x7c4241ff, 0x7c5247ff, 0x7c622c7f, 0x7c71eeff, 0x7c8187ff,
- 0x7c9107ff, 0x7ca05dff, 0x7caf9a7f, 0x7cbead7f, 0x7ccd9e7f, 0x7cdc767f,
- 0x7ceb247f, 0x7cf9b0ff, 0x7d081bff, 0x7d16657f, 0x7d2484ff, 0x7d328b7f,
- 0x7d406fff, 0x7d4e2aff, 0x7d5bcc7f, 0x7d69447f, 0x7d769a7f, 0x7d83ceff,
- 0x7d90e1ff, 0x7d9dd37f, 0x7daaa37f, 0x7db751ff, 0x7dc3d67f, 0x7dd041ff,
- 0x7ddc82ff, 0x7de8a2ff, 0x7df4a97f, 0x7e0085ff, 0x7e0c38ff, 0x7e17d27f,
- 0x7e234a7f, 0x7e2ea0ff, 0x7e39cd7f, 0x7e44d87f, 0x7e4fc1ff, 0x7e5a897f,
- 0x7e652fff, 0x7e6fb4ff, 0x7e7a17ff, 0x7e8450ff, 0x7e8e717f, 0x7e98677f,
- 0x7ea23bff, 0x7eabeeff, 0x7eb5807f, 0x7ebef07f, 0x7ec8367f, 0x7ed15aff,
- 0x7eda65ff, 0x7ee3477f, 0x7eec06ff, 0x7ef4a57f, 0x7efd197f, 0x7f05747f,
- 0x7f0da5ff, 0x7f15b57f, 0x7f1da37f, 0x7f256fff, 0x7f2d1aff, 0x7f34a47f,
- 0x7f3c037f, 0x7f43417f, 0x7f4a667f, 0x7f5160ff, 0x7f5831ff, 0x7f5ee97f,
- 0x7f65777f, 0x7f6bebff, 0x7f72367f, 0x7f785f7f, 0x7f7e66ff, 0x7f84447f,
- 0x7f8a08ff, 0x7f8fa37f, 0x7f951c7f, 0x7f9a737f, 0x7f9fa97f, 0x7fa4bd7f,
- 0x7fa9a7ff, 0x7fae70ff, 0x7fb3207f, 0x7fb7a5ff, 0x7fbc017f, 0x7fc043ff,
- 0x7fc45c7f, 0x7fc85bff, 0x7fcc317f, 0x7fcfe57f, 0x7fd36f7f, 0x7fd6e07f,
- 0x7fda26ff, 0x7fdd4c7f, 0x7fe04fff, 0x7fe3327f, 0x7fe5f2ff, 0x7fe889ff,
- 0x7feafeff, 0x7fed5aff, 0x7fef8cff, 0x7ff194ff, 0x7ff383ff, 0x7ff548ff,
- 0x7ff6ec7f, 0x7ff86dff, 0x7ff9ce7f, 0x7ffb0d7f, 0x7ffc21ff, 0x7ffd1dff,
- 0x7ffdef7f, 0x7ffe9f7f, 0x7fff25ff, 0x7fff92ff, 0x7fffd5ff, 0x7ffff77f};
+ 0x0021858b, 0x0064883f, 0x00a78af3, 0x00ea960a, 0x012d98bf, 0x01709b73,
+ 0x01b39e27, 0x01f6a0db, 0x0239a38f, 0x027ca643, 0x02bfa8f7, 0x0302abab,
+ 0x0345ae5f, 0x0388a8af, 0x03cbab63, 0x040ea5b7, 0x0451a007, 0x04949a57,
+ 0x04d794a7, 0x051a8ef7, 0x055d8947, 0x05a07b37, 0x05e36d1f, 0x06265f0f,
+ 0x066950ff, 0x06ac42e7, 0x06ef2c6f, 0x073215ff, 0x0774ff87, 0x07b7e90f,
+ 0x07faca37, 0x083db3bf, 0x088094df, 0x08c36daf, 0x09064ecf, 0x0949278f,
+ 0x098bf7ef, 0x09ced0af, 0x0a11a10f, 0x0a54716f, 0x0a97396f, 0x0ada016f,
+ 0x0b1cc95f, 0x0b5f915f, 0x0ba250ff, 0x0be5082f, 0x0c27bf5f, 0x0c6a768f,
+ 0x0cad2dcf, 0x0cefdc9f, 0x0d32830f, 0x0d7531df, 0x0db7cfdf, 0x0dfa764f,
+ 0x0e3d145f, 0x0e7fa9ff, 0x0ec23faf, 0x0f04ccef, 0x0f475a2f, 0x0f89e76f,
+ 0x0fcc6c4f, 0x100ee8df, 0x1051653f, 0x1093d95f, 0x10d64d7f, 0x1118b93f,
+ 0x115b24df, 0x119d883f, 0x11dfeb7f, 0x1222467f, 0x126498ff, 0x12a6eb9f,
+ 0x12e935bf, 0x132b7fdf, 0x136db93f, 0x13affaff, 0x13f22bff, 0x14345cff,
+ 0x14768dff, 0x14b8ae3f, 0x14face5f, 0x153cee9f, 0x157efdff, 0x15c10d7f,
+ 0x1603147f, 0x16451b9f, 0x16871a3f, 0x16c9107f, 0x170afe5f, 0x174ce3df,
+ 0x178ec95f, 0x17d0a67f, 0x18127b1f, 0x18544fdf, 0x189613df, 0x18d7d7bf,
+ 0x1919933f, 0x195b467f, 0x199cf99f, 0x19de9bff, 0x1a203e5f, 0x1a61d85f,
+ 0x1aa369ff, 0x1ae4f33f, 0x1b2673ff, 0x1b67ec7f, 0x1ba964df, 0x1beacc9f,
+ 0x1c2c343f, 0x1c6d937f, 0x1caee1ff, 0x1cf0307f, 0x1d31769f, 0x1d72b45f,
+ 0x1db3e99f, 0x1df5169f, 0x1e363b1f, 0x1e77573f, 0x1eb86b1f, 0x1ef9767f,
+ 0x1f3a797f, 0x1f7b741f, 0x1fbc663f, 0x1ffd501f, 0x203e317f, 0x207f0abf,
+ 0x20bfd2ff, 0x21009b3f, 0x21415aff, 0x21820a3f, 0x21c2b93f, 0x220357bf,
+ 0x2243ed7f, 0x22847b3f, 0x22c5003f, 0x23057cff, 0x2345f17f, 0x238654ff,
+ 0x23c6b8bf, 0x24070b7f, 0x244755ff, 0x248797ff, 0x24c7c93f, 0x2507fabf,
+ 0x25481b3f, 0x2588333f, 0x25c842ff, 0x26084a3f, 0x264840ff, 0x26882eff,
+ 0x26c814bf, 0x2707e9bf, 0x2747b67f, 0x27877abf, 0x27c7367f, 0x2806e9ff,
+ 0x28468cbf, 0x28861e7f, 0x28c5b07f, 0x2905317f, 0x2944aa3f, 0x2984123f,
+ 0x29c371bf, 0x2a02c8ff, 0x2a420f7f, 0x2a814d7f, 0x2ac082ff, 0x2affa7ff,
+ 0x2b3ec47f, 0x2b7dcfff, 0x2bbcd33f, 0x2bfbc5bf, 0x2c3aafff, 0x2c7991bf,
+ 0x2cb862bf, 0x2cf72b3f, 0x2d35e2ff, 0x2d74927f, 0x2db330ff, 0x2df1c73f,
+ 0x2e304cbf, 0x2e6ec9ff, 0x2ead363f, 0x2eeb99ff, 0x2f29ed3f, 0x2f682f7f,
+ 0x2fa671ff, 0x2fe49aff, 0x3022bbff, 0x3060cbff, 0x309ed37f, 0x30dcca7f,
+ 0x311ab8ff, 0x3158967f, 0x3196637f, 0x31d427ff, 0x3211dbbf, 0x324f873f,
+ 0x328d21bf, 0x32caab7f, 0x33082cff, 0x3345953f, 0x3382fd7f, 0x33c04c7f,
+ 0x33fd933f, 0x343ac93f, 0x3477f6bf, 0x34b50aff, 0x34f216ff, 0x352f1a7f,
+ 0x356c04ff, 0x35a8e6ff, 0x35e5b83f, 0x362278bf, 0x365f30ff, 0x369bcfbf,
+ 0x36d8663f, 0x3714ec3f, 0x3751697f, 0x378dcdbf, 0x37ca297f, 0x3806747f,
+ 0x3842aebf, 0x387ed83f, 0x38baf97f, 0x38f7013f, 0x393300bf, 0x396eefbf,
+ 0x39aacd7f, 0x39e69abf, 0x3a22573f, 0x3a5e02ff, 0x3a999dbf, 0x3ad5303f,
+ 0x3b10a97f, 0x3b4c1a7f, 0x3b87723f, 0x3bc2c1bf, 0x3bfe003f, 0x3c392dff,
+ 0x3c7442bf, 0x3caf4eff, 0x3cea4a7f, 0x3d25353f, 0x3d600f3f, 0x3d9ad83f,
+ 0x3dd5883f, 0x3e102fff, 0x3e4ac6bf, 0x3e854cbf, 0x3ebfb9bf, 0x3efa1e3f,
+ 0x3f3471ff, 0x3f6eac7f, 0x3fa8debf, 0x3fe2f7bf, 0x401cffff, 0x4056ffff,
+ 0x4090e67f, 0x40cabc7f, 0x4104817f, 0x413e2d7f, 0x4177d0ff, 0x41b15b7f,
+ 0x41eadd7f, 0x422445ff, 0x425d9e7f, 0x4296e57f, 0x42d0137f, 0x4309397f,
+ 0x434245ff, 0x437b417f, 0x43b42cff, 0x43ed06ff, 0x4425c7ff, 0x445e787f,
+ 0x449717ff, 0x44cfa67f, 0x4508247f, 0x4540897f, 0x4578dd7f, 0x45b1207f,
+ 0x45e94a7f, 0x462163ff, 0x46596c7f, 0x46915bff, 0x46c942ff, 0x4701107f,
+ 0x4738c57f, 0x4770717f, 0x47a7fbff, 0x47df7e7f, 0x4816e77f, 0x484e3fff,
+ 0x4885877f, 0x48bcb5ff, 0x48f3d37f, 0x492ad7ff, 0x4961cbff, 0x4998ae7f,
+ 0x49cf787f, 0x4a06317f, 0x4a3cd17f, 0x4a73607f, 0x4aa9de7f, 0x4ae0437f,
+ 0x4b168f7f, 0x4b4cd2ff, 0x4b82f4ff, 0x4bb90e7f, 0x4bef067f, 0x4c24f67f,
+ 0x4c5ac47f, 0x4c9089ff, 0x4cc6367f, 0x4cfbc9ff, 0x4d314c7f, 0x4d66b5ff,
+ 0x4d9c0e7f, 0x4dd14dff, 0x4e06747f, 0x4e3b927f, 0x4e708eff, 0x4ea57a7f,
+ 0x4eda4cff, 0x4f0f0e7f, 0x4f43bf7f, 0x4f784eff, 0x4faccd7f, 0x4fe13aff,
+ 0x50158f7f, 0x5049caff, 0x507ded7f, 0x50b1feff, 0x50e5ff7f, 0x5119deff,
+ 0x514dacff, 0x51816aff, 0x51b50f7f, 0x51e89a7f, 0x521c0c7f, 0x524f6dff,
+ 0x5282b5ff, 0x52b5e4ff, 0x52e9037f, 0x531c087f, 0x534ef47f, 0x5381c6ff,
+ 0x53b488ff, 0x53e731ff, 0x5419c17f, 0x544c407f, 0x547e9d7f, 0x54b0e9ff,
+ 0x54e325ff, 0x55153fff, 0x5547497f, 0x5579397f, 0x55ab107f, 0x55dcce7f,
+ 0x560e737f, 0x5640077f, 0x567181ff, 0x56a2e3ff, 0x56d42bff, 0x57055b7f,
+ 0x573679ff, 0x57677f7f, 0x579862ff, 0x57c935ff, 0x57f9efff, 0x582a98ff,
+ 0x585b207f, 0x588b8eff, 0x58bbec7f, 0x58ec287f, 0x591c53ff, 0x594c65ff,
+ 0x597c5eff, 0x59ac3e7f, 0x59dc057f, 0x5a0bb27f, 0x5a3b46ff, 0x5a6ac1ff,
+ 0x5a9a2c7f, 0x5ac974ff, 0x5af8a4ff, 0x5b27c37f, 0x5b56c0ff, 0x5b85a4ff,
+ 0x5bb4787f, 0x5be329ff, 0x5c11c27f, 0x5c404a7f, 0x5c6eb07f, 0x5c9d05ff,
+ 0x5ccb39ff, 0x5cf954ff, 0x5d27567f, 0x5d55477f, 0x5d83167f, 0x5db0cc7f,
+ 0x5dde697f, 0x5e0bed7f, 0x5e3957ff, 0x5e66a97f, 0x5e93d97f, 0x5ec0f87f,
+ 0x5eedfe7f, 0x5f1ae2ff, 0x5f47adff, 0x5f74687f, 0x5fa1017f, 0x5fcd80ff,
+ 0x5ff9df7f, 0x60262c7f, 0x605260ff, 0x607e737f, 0x60aa6cff, 0x60d64d7f,
+ 0x6102147f, 0x612dc27f, 0x6159577f, 0x6184caff, 0x61b024ff, 0x61db65ff,
+ 0x62068d7f, 0x62319c7f, 0x625c897f, 0x6287657f, 0x62b2207f, 0x62dcb97f,
+ 0x630741ff, 0x6331a8ff, 0x635bf67f, 0x63862aff, 0x63b0467f, 0x63da407f,
+ 0x640420ff, 0x642de87f, 0x64578e7f, 0x64811aff, 0x64aa8e7f, 0x64d3e8ff,
+ 0x64fd21ff, 0x6526417f, 0x654f47ff, 0x65782cff, 0x65a0f8ff, 0x65c9ab7f,
+ 0x65f244ff, 0x661abcff, 0x66431bff, 0x666b58ff, 0x66937cff, 0x66bb87ff,
+ 0x66e3717f, 0x670b417f, 0x6732f87f, 0x675a8dff, 0x678209ff, 0x67a96d7f,
+ 0x67d0aeff, 0x67f7d6ff, 0x681eddff, 0x6845cb7f, 0x686c97ff, 0x689352ff,
+ 0x68b9e47f, 0x68e064ff, 0x6906bbff, 0x692d01ff, 0x695325ff, 0x697928ff,
+ 0x699f127f, 0x69c4e2ff, 0x69ea91ff, 0x6a10277f, 0x6a359bff, 0x6a5af6ff,
+ 0x6a802fff, 0x6aa5507f, 0x6aca577f, 0x6aef34ff, 0x6b1400ff, 0x6b38abff,
+ 0x6b5d357f, 0x6b81a57f, 0x6ba5f3ff, 0x6bca297f, 0x6bee3d7f, 0x6c1237ff,
+ 0x6c3610ff, 0x6c59d0ff, 0x6c7d6f7f, 0x6ca0f4ff, 0x6cc4587f, 0x6ce79a7f,
+ 0x6d0ac37f, 0x6d2dd37f, 0x6d50b97f, 0x6d738e7f, 0x6d96397f, 0x6db8cb7f,
+ 0x6ddb447f, 0x6dfd9b7f, 0x6e1fd17f, 0x6e41edff, 0x6e63e8ff, 0x6e85c27f,
+ 0x6ea7827f, 0x6ec9297f, 0x6eeaa6ff, 0x6f0c0aff, 0x6f2d557f, 0x6f4e767f,
+ 0x6f6f867f, 0x6f906cff, 0x6fb139ff, 0x6fd1e4ff, 0x6ff2777f, 0x7012e7ff,
+ 0x7033377f, 0x705364ff, 0x7073797f, 0x70936c7f, 0x70b345ff, 0x70d2fdff,
+ 0x70f294ff, 0x711209ff, 0x713165ff, 0x71509fff, 0x716fc17f, 0x718eb87f,
+ 0x71ad967f, 0x71cc52ff, 0x71eaf67f, 0x7209787f, 0x7227d87f, 0x724616ff,
+ 0x72643cff, 0x7282387f, 0x72a022ff, 0x72bde3ff, 0x72db8b7f, 0x72f9097f,
+ 0x7316767f, 0x7333b97f, 0x7350daff, 0x736de2ff, 0x738ac9ff, 0x73a7977f,
+ 0x73c43aff, 0x73e0c57f, 0x73fd2e7f, 0x741975ff, 0x74359bff, 0x7451a87f,
+ 0x746d8aff, 0x7489547f, 0x74a4fc7f, 0x74c08b7f, 0x74dbf07f, 0x74f73bff,
+ 0x751265ff, 0x752d6eff, 0x754855ff, 0x75631b7f, 0x757dc77f, 0x759849ff,
+ 0x75b2b37f, 0x75ccfaff, 0x75e720ff, 0x76012dff, 0x761b10ff, 0x7634daff,
+ 0x764e7a7f, 0x7668017f, 0x7681667f, 0x769aa9ff, 0x76b3d47f, 0x76ccd4ff,
+ 0x76e5b3ff, 0x76fe79ff, 0x77171dff, 0x772f987f, 0x7747f97f, 0x776038ff,
+ 0x777856ff, 0x77905bff, 0x77a836ff, 0x77bff07f, 0x77d7907f, 0x77ef067f,
+ 0x780663ff, 0x781d9f7f, 0x7834b0ff, 0x784ba97f, 0x78627fff, 0x7879357f,
+ 0x788fc8ff, 0x78a63b7f, 0x78bc8bff, 0x78d2c37f, 0x78e8d0ff, 0x78febcff,
+ 0x7914877f, 0x792a387f, 0x793fbfff, 0x79552dff, 0x796a727f, 0x797f9d7f,
+ 0x79949e7f, 0x79a9867f, 0x79be4cff, 0x79d2e97f, 0x79e76c7f, 0x79fbce7f,
+ 0x7a1005ff, 0x7a24247f, 0x7a38217f, 0x7a4bfcff, 0x7a5fae7f, 0x7a7346ff,
+ 0x7a86bdff, 0x7a9a0aff, 0x7aad3e7f, 0x7ac0507f, 0x7ad3417f, 0x7ae607ff,
+ 0x7af8b57f, 0x7b0b38ff, 0x7b1da37f, 0x7b2fec7f, 0x7b420aff, 0x7b5410ff,
+ 0x7b65ecff, 0x7b77af7f, 0x7b8947ff, 0x7b9ac77f, 0x7bac1cff, 0x7bbd50ff,
+ 0x7bce6bff, 0x7bdf5cff, 0x7bf02c7f, 0x7c00d9ff, 0x7c11667f, 0x7c21d0ff,
+ 0x7c3219ff, 0x7c4241ff, 0x7c5247ff, 0x7c622c7f, 0x7c71eeff, 0x7c8187ff,
+ 0x7c9107ff, 0x7ca05dff, 0x7caf9a7f, 0x7cbead7f, 0x7ccd9e7f, 0x7cdc767f,
+ 0x7ceb247f, 0x7cf9b0ff, 0x7d081bff, 0x7d16657f, 0x7d2484ff, 0x7d328b7f,
+ 0x7d406fff, 0x7d4e2aff, 0x7d5bcc7f, 0x7d69447f, 0x7d769a7f, 0x7d83ceff,
+ 0x7d90e1ff, 0x7d9dd37f, 0x7daaa37f, 0x7db751ff, 0x7dc3d67f, 0x7dd041ff,
+ 0x7ddc82ff, 0x7de8a2ff, 0x7df4a97f, 0x7e0085ff, 0x7e0c38ff, 0x7e17d27f,
+ 0x7e234a7f, 0x7e2ea0ff, 0x7e39cd7f, 0x7e44d87f, 0x7e4fc1ff, 0x7e5a897f,
+ 0x7e652fff, 0x7e6fb4ff, 0x7e7a17ff, 0x7e8450ff, 0x7e8e717f, 0x7e98677f,
+ 0x7ea23bff, 0x7eabeeff, 0x7eb5807f, 0x7ebef07f, 0x7ec8367f, 0x7ed15aff,
+ 0x7eda65ff, 0x7ee3477f, 0x7eec06ff, 0x7ef4a57f, 0x7efd197f, 0x7f05747f,
+ 0x7f0da5ff, 0x7f15b57f, 0x7f1da37f, 0x7f256fff, 0x7f2d1aff, 0x7f34a47f,
+ 0x7f3c037f, 0x7f43417f, 0x7f4a667f, 0x7f5160ff, 0x7f5831ff, 0x7f5ee97f,
+ 0x7f65777f, 0x7f6bebff, 0x7f72367f, 0x7f785f7f, 0x7f7e66ff, 0x7f84447f,
+ 0x7f8a08ff, 0x7f8fa37f, 0x7f951c7f, 0x7f9a737f, 0x7f9fa97f, 0x7fa4bd7f,
+ 0x7fa9a7ff, 0x7fae70ff, 0x7fb3207f, 0x7fb7a5ff, 0x7fbc017f, 0x7fc043ff,
+ 0x7fc45c7f, 0x7fc85bff, 0x7fcc317f, 0x7fcfe57f, 0x7fd36f7f, 0x7fd6e07f,
+ 0x7fda26ff, 0x7fdd4c7f, 0x7fe04fff, 0x7fe3327f, 0x7fe5f2ff, 0x7fe889ff,
+ 0x7feafeff, 0x7fed5aff, 0x7fef8cff, 0x7ff194ff, 0x7ff383ff, 0x7ff548ff,
+ 0x7ff6ec7f, 0x7ff86dff, 0x7ff9ce7f, 0x7ffb0d7f, 0x7ffc21ff, 0x7ffd1dff,
+ 0x7ffdef7f, 0x7ffe9f7f, 0x7fff25ff, 0x7fff92ff, 0x7fffd5ff, 0x7ffff77f};
const WORD32 ixheaacd_sine_win_192[192] = {
- 0x00860dcc, 0x01922100, 0x029e2bd0, 0x03aa25d8, 0x04b61780, 0x05c1f860,
- 0x06cdb7b0, 0x07d95dd8, 0x08e4da10, 0x09f034b0, 0x0afb6560, 0x0c0663c0,
- 0x0d112fd0, 0x0e1bc120, 0x0f2617c0, 0x103022e0, 0x1139f340, 0x12436fc0,
- 0x134ca0c0, 0x14557580, 0x155df660, 0x16661ae0, 0x176ddac0, 0x18753600,
- 0x197c2440, 0x1a829d00, 0x1b88a8c0, 0x1c8e3f00, 0x1d934f00, 0x1e97e140,
- 0x1f9bed40, 0x209f7300, 0x21a261c0, 0x22a4c200, 0x23a68b00, 0x24a7b500,
- 0x25a83f40, 0x26a82200, 0x27a75cc0, 0x28a5e780, 0x29a3c200, 0x2aa0ec80,
- 0x2b9d5600, 0x2c98fe80, 0x2d93e600, 0x2e8e0440, 0x2f8750c0, 0x307fd400,
- 0x31777d00, 0x326e5480, 0x33644940, 0x34596400, 0x354d9400, 0x3640d900,
- 0x37332ac0, 0x382491c0, 0x39150540, 0x3a0474c0, 0x3af2f140, 0x3be06100,
- 0x3cccccc0, 0x3db83480, 0x3ea28780, 0x3f8bc580, 0x4073eeff, 0x415b037f,
- 0x4240f1ff, 0x4325c3ff, 0x4409677f, 0x44ebe57f, 0x45cd357f, 0x46ad4f7f,
- 0x478c3aff, 0x4869e7ff, 0x494655ff, 0x4a21857f, 0x4afb6dff, 0x4bd40eff,
- 0x4cab607f, 0x4d81627f, 0x4e5614ff, 0x4f2966ff, 0x4ffb60ff, 0x50cc037f,
- 0x519b3cff, 0x5269167f, 0x53357e7f, 0x54007dff, 0x54ca0bff, 0x559220ff,
- 0x5658c47f, 0x571deeff, 0x57e1977f, 0x58a3bdff, 0x5964627f, 0x5a237cff,
- 0x5ae10cff, 0x5b9d12ff, 0x5c577d7f, 0x5d105dff, 0x5dc79aff, 0x5e7d457f,
- 0x5f314c7f, 0x5fe3afff, 0x609478ff, 0x61438cff, 0x61f0fdff, 0x629cc2ff,
- 0x6346d3ff, 0x63ef307f, 0x6495d8ff, 0x653acd7f, 0x65ddfc7f, 0x667f6f7f,
- 0x671f257f, 0x67bd0dff, 0x685939ff, 0x68f3907f, 0x698c21ff, 0x6a22e5ff,
- 0x6ab7d3ff, 0x6b4af4ff, 0x6bdc377f, 0x6c6ba47f, 0x6cf9337f, 0x6d84e3ff,
- 0x6e0eb67f, 0x6e96aaff, 0x6f1cafff, 0x6fa0d77f, 0x70230fff, 0x70a3617f,
- 0x7121bbff, 0x719e2fff, 0x7218ac7f, 0x729131ff, 0x7307bfff, 0x737c5eff,
- 0x73eefe7f, 0x745f9dff, 0x74ce3dff, 0x753ae67f, 0x75a586ff, 0x760e1f7f,
- 0x7674b7ff, 0x76d948ff, 0x773bd17f, 0x779c497f, 0x77fab97f, 0x785718ff,
- 0x78b167ff, 0x7909a67f, 0x795fd47f, 0x79b3e97f, 0x7a05ee7f, 0x7a55d9ff,
- 0x7aa3acff, 0x7aef66ff, 0x7b38ffff, 0x7b807fff, 0x7bc5de7f, 0x7c09247f,
- 0x7c4a48ff, 0x7c894c7f, 0x7cc62e7f, 0x7d00e67f, 0x7d397dff, 0x7d6ff37f,
- 0x7da43fff, 0x7dd6627f, 0x7e0663ff, 0x7e343b7f, 0x7e5fe0ff, 0x7e89657f,
- 0x7eb0b7ff, 0x7ed5e8ff, 0x7ef8df7f, 0x7f19b4ff, 0x7f3857ff, 0x7f54c97f,
- 0x7f6f10ff, 0x7f872eff, 0x7f9d12ff, 0x7fb0cc7f, 0x7fc2547f, 0x7fd1aa7f,
- 0x7fded67f, 0x7fe9c87f, 0x7ff2907f, 0x7ff926ff, 0x7ffd8aff, 0x7fffbcff,
+ 0x00860dcc, 0x01922100, 0x029e2bd0, 0x03aa25d8, 0x04b61780, 0x05c1f860,
+ 0x06cdb7b0, 0x07d95dd8, 0x08e4da10, 0x09f034b0, 0x0afb6560, 0x0c0663c0,
+ 0x0d112fd0, 0x0e1bc120, 0x0f2617c0, 0x103022e0, 0x1139f340, 0x12436fc0,
+ 0x134ca0c0, 0x14557580, 0x155df660, 0x16661ae0, 0x176ddac0, 0x18753600,
+ 0x197c2440, 0x1a829d00, 0x1b88a8c0, 0x1c8e3f00, 0x1d934f00, 0x1e97e140,
+ 0x1f9bed40, 0x209f7300, 0x21a261c0, 0x22a4c200, 0x23a68b00, 0x24a7b500,
+ 0x25a83f40, 0x26a82200, 0x27a75cc0, 0x28a5e780, 0x29a3c200, 0x2aa0ec80,
+ 0x2b9d5600, 0x2c98fe80, 0x2d93e600, 0x2e8e0440, 0x2f8750c0, 0x307fd400,
+ 0x31777d00, 0x326e5480, 0x33644940, 0x34596400, 0x354d9400, 0x3640d900,
+ 0x37332ac0, 0x382491c0, 0x39150540, 0x3a0474c0, 0x3af2f140, 0x3be06100,
+ 0x3cccccc0, 0x3db83480, 0x3ea28780, 0x3f8bc580, 0x4073eeff, 0x415b037f,
+ 0x4240f1ff, 0x4325c3ff, 0x4409677f, 0x44ebe57f, 0x45cd357f, 0x46ad4f7f,
+ 0x478c3aff, 0x4869e7ff, 0x494655ff, 0x4a21857f, 0x4afb6dff, 0x4bd40eff,
+ 0x4cab607f, 0x4d81627f, 0x4e5614ff, 0x4f2966ff, 0x4ffb60ff, 0x50cc037f,
+ 0x519b3cff, 0x5269167f, 0x53357e7f, 0x54007dff, 0x54ca0bff, 0x559220ff,
+ 0x5658c47f, 0x571deeff, 0x57e1977f, 0x58a3bdff, 0x5964627f, 0x5a237cff,
+ 0x5ae10cff, 0x5b9d12ff, 0x5c577d7f, 0x5d105dff, 0x5dc79aff, 0x5e7d457f,
+ 0x5f314c7f, 0x5fe3afff, 0x609478ff, 0x61438cff, 0x61f0fdff, 0x629cc2ff,
+ 0x6346d3ff, 0x63ef307f, 0x6495d8ff, 0x653acd7f, 0x65ddfc7f, 0x667f6f7f,
+ 0x671f257f, 0x67bd0dff, 0x685939ff, 0x68f3907f, 0x698c21ff, 0x6a22e5ff,
+ 0x6ab7d3ff, 0x6b4af4ff, 0x6bdc377f, 0x6c6ba47f, 0x6cf9337f, 0x6d84e3ff,
+ 0x6e0eb67f, 0x6e96aaff, 0x6f1cafff, 0x6fa0d77f, 0x70230fff, 0x70a3617f,
+ 0x7121bbff, 0x719e2fff, 0x7218ac7f, 0x729131ff, 0x7307bfff, 0x737c5eff,
+ 0x73eefe7f, 0x745f9dff, 0x74ce3dff, 0x753ae67f, 0x75a586ff, 0x760e1f7f,
+ 0x7674b7ff, 0x76d948ff, 0x773bd17f, 0x779c497f, 0x77fab97f, 0x785718ff,
+ 0x78b167ff, 0x7909a67f, 0x795fd47f, 0x79b3e97f, 0x7a05ee7f, 0x7a55d9ff,
+ 0x7aa3acff, 0x7aef66ff, 0x7b38ffff, 0x7b807fff, 0x7bc5de7f, 0x7c09247f,
+ 0x7c4a48ff, 0x7c894c7f, 0x7cc62e7f, 0x7d00e67f, 0x7d397dff, 0x7d6ff37f,
+ 0x7da43fff, 0x7dd6627f, 0x7e0663ff, 0x7e343b7f, 0x7e5fe0ff, 0x7e89657f,
+ 0x7eb0b7ff, 0x7ed5e8ff, 0x7ef8df7f, 0x7f19b4ff, 0x7f3857ff, 0x7f54c97f,
+ 0x7f6f10ff, 0x7f872eff, 0x7f9d12ff, 0x7fb0cc7f, 0x7fc2547f, 0x7fd1aa7f,
+ 0x7fded67f, 0x7fe9c87f, 0x7ff2907f, 0x7ff926ff, 0x7ffd8aff, 0x7fffbcff,
};
const WORD32 ixheaacd_sine_win_96[96] = {
- 0x010c1334, 0x032428d4, 0x053c0c20, 0x07538ac0, 0x096a93f0, 0x0b80ed00,
- 0x0d968510, 0x0fab29e0, 0x11beb9e0, 0x13d11380, 0x15e21540, 0x17f19500,
- 0x19ff7160, 0x1c0b8060, 0x1e15a8e0, 0x201dc0c0, 0x2223a6c0, 0x242730c0,
- 0x26284580, 0x2826bb40, 0x2a227080, 0x2c1b3b00, 0x2e110a00, 0x3003ab80,
- 0x31f30600, 0x33def000, 0x35c74fc0, 0x37abfb80, 0x398cda80, 0x3b69ca80,
- 0x3d42a240, 0x3f174800, 0x40e79a7f, 0x42b380ff, 0x447ad07f, 0x463d687f,
- 0x47fb377f, 0x49b4137f, 0x4b67e3ff, 0x4d168f7f, 0x4ebfebff, 0x5063e07f,
- 0x5202537f, 0x539b2c7f, 0x552e48ff, 0x56bb87ff, 0x5842e0ff, 0x59c421ff,
- 0x5b3f41ff, 0x5cb41fff, 0x5e22a2ff, 0x5f8ab0ff, 0x60ec397f, 0x62471b7f,
- 0x639b3cff, 0x64e8857f, 0x662eec7f, 0x676e4fff, 0x68a69fff, 0x69d7c2ff,
- 0x6b019eff, 0x6c242cff, 0x6d3f4a7f, 0x6e52ef7f, 0x6f5f02ff, 0x7063737f,
- 0x716030ff, 0x725529ff, 0x73424e7f, 0x74278cff, 0x7504d57f, 0x75da167f,
- 0x76a73f7f, 0x776c507f, 0x782927ff, 0x78ddce7f, 0x798a21ff, 0x7a2e22ff,
- 0x7ac9c8ff, 0x7b5d02ff, 0x7be7c8ff, 0x7c6a11ff, 0x7ce3cd7f, 0x7d54fbff,
- 0x7dbd9c7f, 0x7e1d96ff, 0x7e74ea7f, 0x7ec3977f, 0x7f09957f, 0x7f46dc7f,
- 0x7f7b637f, 0x7fa732ff, 0x7fca4aff, 0x7fe4927f, 0x7ff622ff, 0x7ffeeaff};
+ 0x010c1334, 0x032428d4, 0x053c0c20, 0x07538ac0, 0x096a93f0, 0x0b80ed00,
+ 0x0d968510, 0x0fab29e0, 0x11beb9e0, 0x13d11380, 0x15e21540, 0x17f19500,
+ 0x19ff7160, 0x1c0b8060, 0x1e15a8e0, 0x201dc0c0, 0x2223a6c0, 0x242730c0,
+ 0x26284580, 0x2826bb40, 0x2a227080, 0x2c1b3b00, 0x2e110a00, 0x3003ab80,
+ 0x31f30600, 0x33def000, 0x35c74fc0, 0x37abfb80, 0x398cda80, 0x3b69ca80,
+ 0x3d42a240, 0x3f174800, 0x40e79a7f, 0x42b380ff, 0x447ad07f, 0x463d687f,
+ 0x47fb377f, 0x49b4137f, 0x4b67e3ff, 0x4d168f7f, 0x4ebfebff, 0x5063e07f,
+ 0x5202537f, 0x539b2c7f, 0x552e48ff, 0x56bb87ff, 0x5842e0ff, 0x59c421ff,
+ 0x5b3f41ff, 0x5cb41fff, 0x5e22a2ff, 0x5f8ab0ff, 0x60ec397f, 0x62471b7f,
+ 0x639b3cff, 0x64e8857f, 0x662eec7f, 0x676e4fff, 0x68a69fff, 0x69d7c2ff,
+ 0x6b019eff, 0x6c242cff, 0x6d3f4a7f, 0x6e52ef7f, 0x6f5f02ff, 0x7063737f,
+ 0x716030ff, 0x725529ff, 0x73424e7f, 0x74278cff, 0x7504d57f, 0x75da167f,
+ 0x76a73f7f, 0x776c507f, 0x782927ff, 0x78ddce7f, 0x798a21ff, 0x7a2e22ff,
+ 0x7ac9c8ff, 0x7b5d02ff, 0x7be7c8ff, 0x7c6a11ff, 0x7ce3cd7f, 0x7d54fbff,
+ 0x7dbd9c7f, 0x7e1d96ff, 0x7e74ea7f, 0x7ec3977f, 0x7f09957f, 0x7f46dc7f,
+ 0x7f7b637f, 0x7fa732ff, 0x7fca4aff, 0x7fe4927f, 0x7ff622ff, 0x7ffeeaff};
const WORD32 ixheaacd_sine_win_256[256] = {
- 0x006487ea, 0x012d96a6, 0x01f6a29e, 0x02bfa9a4, 0x0388a9f4, 0x0451a170,
- 0x051a8e60, 0x05e36ea8, 0x06ac4068, 0x077501b8, 0x083db0a0, 0x09064b30,
- 0x09cecf80, 0x0a973ba0, 0x0b5f8da0, 0x0c27c390, 0x0cefdb70, 0x0db7d370,
- 0x0e7fa9a0, 0x0f475bf0, 0x100ee8a0, 0x10d64dc0, 0x119d8940, 0x12649940,
- 0x132b7be0, 0x13f22f60, 0x14b8b180, 0x157f0080, 0x16451a80, 0x170afd80,
- 0x17d0a7c0, 0x18961720, 0x195b49e0, 0x1a203e20, 0x1ae4f1e0, 0x1ba96340,
- 0x1c6d9060, 0x1d317740, 0x1df51640, 0x1eb86b40, 0x1f7b7480, 0x203e3000,
- 0x21009c00, 0x21c2b680, 0x22847e00, 0x2345f000, 0x24070b00, 0x24c7cd40,
- 0x25883480, 0x26483f80, 0x2707ebc0, 0x27c737c0, 0x288621c0, 0x2944a7c0,
- 0x2a02c7c0, 0x2ac08040, 0x2b7dcf00, 0x2c3ab2c0, 0x2cf72940, 0x2db330c0,
- 0x2e6ec780, 0x2f29ebc0, 0x2fe49bc0, 0x309ed540, 0x31589700, 0x3211df00,
- 0x32caab80, 0x3382fa80, 0x343aca80, 0x34f219c0, 0x35a8e640, 0x365f2e40,
- 0x3714f040, 0x37ca2a40, 0x387eda80, 0x3932ff80, 0x39e69780, 0x3a99a040,
- 0x3b4c18c0, 0x3bfdfec0, 0x3caf50c0, 0x3d600d40, 0x3e103200, 0x3ebfbdc0,
- 0x3f6eaec0, 0x401d02ff, 0x40cab97f, 0x4177cf7f, 0x4224447f, 0x42d015ff,
- 0x437b42ff, 0x4425c8ff, 0x44cfa77f, 0x4578db7f, 0x4621647f, 0x46c9407f,
- 0x47706d7f, 0x4816ea7f, 0x48bcb57f, 0x4961ccff, 0x4a062fff, 0x4aa9db7f,
- 0x4b4ccf7f, 0x4bef08ff, 0x4c90877f, 0x4d31497f, 0x4dd14c7f, 0x4e708f7f,
- 0x4f0f10ff, 0x4faccf7f, 0x5049c97f, 0x50e5fd7f, 0x5181697f, 0x521c0c7f,
- 0x52b5e4ff, 0x534ef17f, 0x53e7307f, 0x547ea07f, 0x55153fff, 0x55ab0d7f,
- 0x5640077f, 0x56d42c7f, 0x57677b7f, 0x57f9f2ff, 0x588b917f, 0x591c54ff,
- 0x59ac3cff, 0x5a3b477f, 0x5ac9737f, 0x5b56bf7f, 0x5be32a7f, 0x5c6eb27f,
- 0x5cf9567f, 0x5d83147f, 0x5e0bec7f, 0x5e93dbff, 0x5f1ae27f, 0x5fa0fdff,
- 0x60262dff, 0x60aa707f, 0x612dc47f, 0x61b0287f, 0x62319b7f, 0x62b21c7f,
- 0x6331a9ff, 0x63b0427f, 0x642de4ff, 0x64aa907f, 0x6526437f, 0x65a0fcff,
- 0x661abbff, 0x66937e7f, 0x670b447f, 0x67820b7f, 0x67f7d3ff, 0x686c9b7f,
- 0x68e060ff, 0x695323ff, 0x69c4e37f, 0x6a359d7f, 0x6aa551ff, 0x6b13feff,
- 0x6b81a3ff, 0x6bee3f7f, 0x6c59d07f, 0x6cc4567f, 0x6d2dcfff, 0x6d963c7f,
- 0x6dfd99ff, 0x6e63e87f, 0x6ec9267f, 0x6f2d52ff, 0x6f906d7f, 0x6ff2747f,
- 0x7053677f, 0x70b344ff, 0x71120cff, 0x716fbd7f, 0x71cc55ff, 0x7227d5ff,
- 0x72823c7f, 0x72db87ff, 0x7333b87f, 0x738acc7f, 0x73e0c37f, 0x74359cff,
- 0x748956ff, 0x74dbf1ff, 0x752d6c7f, 0x757dc5ff, 0x75ccfd7f, 0x761b11ff,
- 0x7668037f, 0x76b3d07f, 0x76fe78ff, 0x7747fbff, 0x779057ff, 0x77d78d7f,
- 0x781d9b7f, 0x7862807f, 0x78a63cff, 0x78e8cf7f, 0x792a37ff, 0x796a757f,
- 0x79a986ff, 0x79e76c7f, 0x7a24257f, 0x7a5fb0ff, 0x7a9a0e7f, 0x7ad33cff,
- 0x7b0b3cff, 0x7b420d7f, 0x7b77ad7f, 0x7bac1cff, 0x7bdf5b7f, 0x7c11687f,
- 0x7c4242ff, 0x7c71eaff, 0x7ca05fff, 0x7ccda17f, 0x7cf9aeff, 0x7d2487ff,
- 0x7d4e2c7f, 0x7d769b7f, 0x7d9dd57f, 0x7dc3d8ff, 0x7de8a67f, 0x7e0c3cff,
- 0x7e2e9cff, 0x7e4fc4ff, 0x7e6fb5ff, 0x7e8e6e7f, 0x7eabeeff, 0x7ec836ff,
- 0x7ee345ff, 0x7efd1bff, 0x7f15b8ff, 0x7f2d1bff, 0x7f43457f, 0x7f58347f,
- 0x7f6be9ff, 0x7f7e647f, 0x7f8fa47f, 0x7f9fa9ff, 0x7fae747f, 0x7fbc03ff,
- 0x7fc8587f, 0x7fd3717f, 0x7fdd4eff, 0x7fe5f0ff, 0x7fed577f, 0x7ff3827f,
- 0x7ff8717f, 0x7ffc24ff, 0x7ffe9c7f, 0x7fffd87f,
+ 0x006487ea, 0x012d96a6, 0x01f6a29e, 0x02bfa9a4, 0x0388a9f4, 0x0451a170,
+ 0x051a8e60, 0x05e36ea8, 0x06ac4068, 0x077501b8, 0x083db0a0, 0x09064b30,
+ 0x09cecf80, 0x0a973ba0, 0x0b5f8da0, 0x0c27c390, 0x0cefdb70, 0x0db7d370,
+ 0x0e7fa9a0, 0x0f475bf0, 0x100ee8a0, 0x10d64dc0, 0x119d8940, 0x12649940,
+ 0x132b7be0, 0x13f22f60, 0x14b8b180, 0x157f0080, 0x16451a80, 0x170afd80,
+ 0x17d0a7c0, 0x18961720, 0x195b49e0, 0x1a203e20, 0x1ae4f1e0, 0x1ba96340,
+ 0x1c6d9060, 0x1d317740, 0x1df51640, 0x1eb86b40, 0x1f7b7480, 0x203e3000,
+ 0x21009c00, 0x21c2b680, 0x22847e00, 0x2345f000, 0x24070b00, 0x24c7cd40,
+ 0x25883480, 0x26483f80, 0x2707ebc0, 0x27c737c0, 0x288621c0, 0x2944a7c0,
+ 0x2a02c7c0, 0x2ac08040, 0x2b7dcf00, 0x2c3ab2c0, 0x2cf72940, 0x2db330c0,
+ 0x2e6ec780, 0x2f29ebc0, 0x2fe49bc0, 0x309ed540, 0x31589700, 0x3211df00,
+ 0x32caab80, 0x3382fa80, 0x343aca80, 0x34f219c0, 0x35a8e640, 0x365f2e40,
+ 0x3714f040, 0x37ca2a40, 0x387eda80, 0x3932ff80, 0x39e69780, 0x3a99a040,
+ 0x3b4c18c0, 0x3bfdfec0, 0x3caf50c0, 0x3d600d40, 0x3e103200, 0x3ebfbdc0,
+ 0x3f6eaec0, 0x401d02ff, 0x40cab97f, 0x4177cf7f, 0x4224447f, 0x42d015ff,
+ 0x437b42ff, 0x4425c8ff, 0x44cfa77f, 0x4578db7f, 0x4621647f, 0x46c9407f,
+ 0x47706d7f, 0x4816ea7f, 0x48bcb57f, 0x4961ccff, 0x4a062fff, 0x4aa9db7f,
+ 0x4b4ccf7f, 0x4bef08ff, 0x4c90877f, 0x4d31497f, 0x4dd14c7f, 0x4e708f7f,
+ 0x4f0f10ff, 0x4faccf7f, 0x5049c97f, 0x50e5fd7f, 0x5181697f, 0x521c0c7f,
+ 0x52b5e4ff, 0x534ef17f, 0x53e7307f, 0x547ea07f, 0x55153fff, 0x55ab0d7f,
+ 0x5640077f, 0x56d42c7f, 0x57677b7f, 0x57f9f2ff, 0x588b917f, 0x591c54ff,
+ 0x59ac3cff, 0x5a3b477f, 0x5ac9737f, 0x5b56bf7f, 0x5be32a7f, 0x5c6eb27f,
+ 0x5cf9567f, 0x5d83147f, 0x5e0bec7f, 0x5e93dbff, 0x5f1ae27f, 0x5fa0fdff,
+ 0x60262dff, 0x60aa707f, 0x612dc47f, 0x61b0287f, 0x62319b7f, 0x62b21c7f,
+ 0x6331a9ff, 0x63b0427f, 0x642de4ff, 0x64aa907f, 0x6526437f, 0x65a0fcff,
+ 0x661abbff, 0x66937e7f, 0x670b447f, 0x67820b7f, 0x67f7d3ff, 0x686c9b7f,
+ 0x68e060ff, 0x695323ff, 0x69c4e37f, 0x6a359d7f, 0x6aa551ff, 0x6b13feff,
+ 0x6b81a3ff, 0x6bee3f7f, 0x6c59d07f, 0x6cc4567f, 0x6d2dcfff, 0x6d963c7f,
+ 0x6dfd99ff, 0x6e63e87f, 0x6ec9267f, 0x6f2d52ff, 0x6f906d7f, 0x6ff2747f,
+ 0x7053677f, 0x70b344ff, 0x71120cff, 0x716fbd7f, 0x71cc55ff, 0x7227d5ff,
+ 0x72823c7f, 0x72db87ff, 0x7333b87f, 0x738acc7f, 0x73e0c37f, 0x74359cff,
+ 0x748956ff, 0x74dbf1ff, 0x752d6c7f, 0x757dc5ff, 0x75ccfd7f, 0x761b11ff,
+ 0x7668037f, 0x76b3d07f, 0x76fe78ff, 0x7747fbff, 0x779057ff, 0x77d78d7f,
+ 0x781d9b7f, 0x7862807f, 0x78a63cff, 0x78e8cf7f, 0x792a37ff, 0x796a757f,
+ 0x79a986ff, 0x79e76c7f, 0x7a24257f, 0x7a5fb0ff, 0x7a9a0e7f, 0x7ad33cff,
+ 0x7b0b3cff, 0x7b420d7f, 0x7b77ad7f, 0x7bac1cff, 0x7bdf5b7f, 0x7c11687f,
+ 0x7c4242ff, 0x7c71eaff, 0x7ca05fff, 0x7ccda17f, 0x7cf9aeff, 0x7d2487ff,
+ 0x7d4e2c7f, 0x7d769b7f, 0x7d9dd57f, 0x7dc3d8ff, 0x7de8a67f, 0x7e0c3cff,
+ 0x7e2e9cff, 0x7e4fc4ff, 0x7e6fb5ff, 0x7e8e6e7f, 0x7eabeeff, 0x7ec836ff,
+ 0x7ee345ff, 0x7efd1bff, 0x7f15b8ff, 0x7f2d1bff, 0x7f43457f, 0x7f58347f,
+ 0x7f6be9ff, 0x7f7e647f, 0x7f8fa47f, 0x7f9fa9ff, 0x7fae747f, 0x7fbc03ff,
+ 0x7fc8587f, 0x7fd3717f, 0x7fdd4eff, 0x7fe5f0ff, 0x7fed577f, 0x7ff3827f,
+ 0x7ff8717f, 0x7ffc24ff, 0x7ffe9c7f, 0x7fffd87f,
};
const WORD32 ixheaacd_kbd_win120[120] = {
- 0x00017b6e, 0x00042d2e, 0x000849d0, 0x000e3494, 0x00165efc, 0x002149bd,
- 0x002f854b, 0x0041b235, 0x0058814f, 0x0074b3af, 0x00971a67, 0x00c0960d,
- 0x00f21602, 0x012c9774, 0x01712428, 0x01c0d0f7, 0x021cbc12, 0x02860b04,
- 0x02fde874, 0x038581b2, 0x041e040c, 0x04c899f3, 0x05866802, 0x065889d5,
- 0x07400ed3, 0x083df6e8, 0x09532f37, 0x0a808ed0, 0x0bc6d380, 0x0d269eb0,
- 0x0ea07270, 0x1034aeb5, 0x11e38ed2, 0x13ad2732, 0x1591636c, 0x179004a6,
- 0x19a8a05f, 0x1bda9fa1, 0x1e253ea1, 0x20878cce, 0x23006d5d, 0x258e9847,
- 0x28309bc5, 0x2ae4de3d, 0x2da9a0a7, 0x307d0162, 0x335cff71, 0x36477e1e,
- 0x393a48f0, 0x3c3317f8, 0x3f2f945b, 0x422d5d17, 0x452a0bf2, 0x48233a80,
- 0x4b16873d, 0x4e019a9c, 0x50e22c0a, 0x53b606ca, 0x567b0ea6, 0x592f445e,
- 0x5bd0c9c5, 0x5e5de587, 0x60d50688, 0x6334c6d0, 0x657bedf8, 0x67a97316,
- 0x69bc7e1d, 0x6bb468af, 0x6d90be60, 0x6f513c5f, 0x70f5d09a, 0x727e984c,
- 0x73ebde0f, 0x753e1762, 0x7675e1cb, 0x7793ff86, 0x789953de, 0x7986df3d,
- 0x7a5dbaff, 0x7b1f1524, 0x7bcc2be6, 0x7c664952, 0x7ceebeee, 0x7d66e18a,
- 0x7dd0053a, 0x7e2b79a1, 0x7e7a8685, 0x7ebe68c3, 0x7ef84fb5, 0x7f295af3,
- 0x7f529898, 0x7f7503f1, 0x7f918499, 0x7fa8ee08, 0x7fbbff80, 0x7fcb6458,
- 0x7fd7b492, 0x7fe175b9, 0x7fe91bf2, 0x7fef0b3a, 0x7ff398ba, 0x7ff70c37,
- 0x7ff9a17a, 0x7ffb89c1, 0x7ffced19, 0x7ffdebb1, 0x7ffe9f09, 0x7fff1b10,
- 0x7fff6f1d, 0x7fffa6ce, 0x7fffcacb, 0x7fffe165, 0x7fffef23, 0x7ffff72c,
- 0x7ffffbaa, 0x7ffffe0a, 0x7fffff35, 0x7fffffba, 0x7fffffed, 0x7ffffffc};
+ 0x00017b6e, 0x00042d2e, 0x000849d0, 0x000e3494, 0x00165efc, 0x002149bd,
+ 0x002f854b, 0x0041b235, 0x0058814f, 0x0074b3af, 0x00971a67, 0x00c0960d,
+ 0x00f21602, 0x012c9774, 0x01712428, 0x01c0d0f7, 0x021cbc12, 0x02860b04,
+ 0x02fde874, 0x038581b2, 0x041e040c, 0x04c899f3, 0x05866802, 0x065889d5,
+ 0x07400ed3, 0x083df6e8, 0x09532f37, 0x0a808ed0, 0x0bc6d380, 0x0d269eb0,
+ 0x0ea07270, 0x1034aeb5, 0x11e38ed2, 0x13ad2732, 0x1591636c, 0x179004a6,
+ 0x19a8a05f, 0x1bda9fa1, 0x1e253ea1, 0x20878cce, 0x23006d5d, 0x258e9847,
+ 0x28309bc5, 0x2ae4de3d, 0x2da9a0a7, 0x307d0162, 0x335cff71, 0x36477e1e,
+ 0x393a48f0, 0x3c3317f8, 0x3f2f945b, 0x422d5d17, 0x452a0bf2, 0x48233a80,
+ 0x4b16873d, 0x4e019a9c, 0x50e22c0a, 0x53b606ca, 0x567b0ea6, 0x592f445e,
+ 0x5bd0c9c5, 0x5e5de587, 0x60d50688, 0x6334c6d0, 0x657bedf8, 0x67a97316,
+ 0x69bc7e1d, 0x6bb468af, 0x6d90be60, 0x6f513c5f, 0x70f5d09a, 0x727e984c,
+ 0x73ebde0f, 0x753e1762, 0x7675e1cb, 0x7793ff86, 0x789953de, 0x7986df3d,
+ 0x7a5dbaff, 0x7b1f1524, 0x7bcc2be6, 0x7c664952, 0x7ceebeee, 0x7d66e18a,
+ 0x7dd0053a, 0x7e2b79a1, 0x7e7a8685, 0x7ebe68c3, 0x7ef84fb5, 0x7f295af3,
+ 0x7f529898, 0x7f7503f1, 0x7f918499, 0x7fa8ee08, 0x7fbbff80, 0x7fcb6458,
+ 0x7fd7b492, 0x7fe175b9, 0x7fe91bf2, 0x7fef0b3a, 0x7ff398ba, 0x7ff70c37,
+ 0x7ff9a17a, 0x7ffb89c1, 0x7ffced19, 0x7ffdebb1, 0x7ffe9f09, 0x7fff1b10,
+ 0x7fff6f1d, 0x7fffa6ce, 0x7fffcacb, 0x7fffe165, 0x7fffef23, 0x7ffff72c,
+ 0x7ffffbaa, 0x7ffffe0a, 0x7fffff35, 0x7fffffba, 0x7fffffed, 0x7ffffffc};
const WORD32 ixheaacd_kbd_win128[128] = {
- 0x00017119, 0x0003e63e, 0x000791c4, 0x000cbf2b, 0x0013db7f, 0x001d3aa3,
- 0x00295a6c, 0x0038b04a, 0x004bd33c, 0x006351de, 0x007fdc58, 0x00a21a71,
- 0x00cacd17, 0x00fab53c, 0x0132b55d, 0x017396cf, 0x01be4cd7, 0x0213b9ef,
- 0x0274d163, 0x02e28ed3, 0x035de58f, 0x03e7d133, 0x0481450f, 0x052b345f,
- 0x05e6926f, 0x06b43957, 0x07950b97, 0x0889d27f, 0x09934eff, 0x0ab2313f,
- 0x0be707df, 0x0d32591f, 0x0e9491ef, 0x100dfddf, 0x119ecf5f, 0x13471f7f,
- 0x1506dd5f, 0x16dde79f, 0x18cbe1df, 0x1ad06fdf, 0x1ceaf25f, 0x1f1ab8df,
- 0x215efa7f, 0x23b6aa3f, 0x2620bc3f, 0x289bf17f, 0x2b26f1bf, 0x2dc054ff,
- 0x3066773f, 0x3317c5ff, 0x35d27c3f, 0x3894ccbf, 0x3b5cd8ff, 0x3e28baff,
- 0x40f6727f, 0x43c408ff, 0x468f8e7f, 0x495703ff, 0x4c187a7f, 0x4ed2027f,
- 0x5181be7f, 0x5425e0ff, 0x56bcb5ff, 0x5944997f, 0x5bbc09ff, 0x5e218dff,
- 0x6073ddff, 0x62b1d4ff, 0x64da65ff, 0x66ecaeff, 0x68e7e5ff, 0x6acb857f,
- 0x6c970f7f, 0x6e4a37ff, 0x6fe4d5ff, 0x7166f8ff, 0x72d0bb7f, 0x74225f7f,
- 0x755c52ff, 0x767f1b7f, 0x778b4fff, 0x7881ba7f, 0x79632bff, 0x7a307eff,
- 0x7aeab77f, 0x7b92c8ff, 0x7c29c77f, 0x7cb0d0ff, 0x7d28f17f, 0x7d933dff,
- 0x7df0dc7f, 0x7e42d8ff, 0x7e8a3f7f, 0x7ec80c7f, 0x7efd3aff, 0x7f2ab67f,
- 0x7f5160ff, 0x7f7203ff, 0x7f8d68ff, 0x7fa42eff, 0x7fb7067f, 0x7fc6757f,
- 0x7fd3027f, 0x7fdd2aff, 0x7fe542ff, 0x7febaeff, 0x7ff0baff, 0x7ff4a97f,
- 0x7ff7ad7f, 0x7ff9f87f, 0x7ffbac7f, 0x7ffcf3ff, 0x7ffde6ff, 0x7ffe8eff,
- 0x7fff0c7f, 0x7fff607f, 0x7fff9b7f, 0x7fffbcff, 0x7fffd5ff, 0x7fffe6ff,
- 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
- 0x7fffffff, 0x7fffffff};
+ 0x00017119, 0x0003e63e, 0x000791c4, 0x000cbf2b, 0x0013db7f, 0x001d3aa3,
+ 0x00295a6c, 0x0038b04a, 0x004bd33c, 0x006351de, 0x007fdc58, 0x00a21a71,
+ 0x00cacd17, 0x00fab53c, 0x0132b55d, 0x017396cf, 0x01be4cd7, 0x0213b9ef,
+ 0x0274d163, 0x02e28ed3, 0x035de58f, 0x03e7d133, 0x0481450f, 0x052b345f,
+ 0x05e6926f, 0x06b43957, 0x07950b97, 0x0889d27f, 0x09934eff, 0x0ab2313f,
+ 0x0be707df, 0x0d32591f, 0x0e9491ef, 0x100dfddf, 0x119ecf5f, 0x13471f7f,
+ 0x1506dd5f, 0x16dde79f, 0x18cbe1df, 0x1ad06fdf, 0x1ceaf25f, 0x1f1ab8df,
+ 0x215efa7f, 0x23b6aa3f, 0x2620bc3f, 0x289bf17f, 0x2b26f1bf, 0x2dc054ff,
+ 0x3066773f, 0x3317c5ff, 0x35d27c3f, 0x3894ccbf, 0x3b5cd8ff, 0x3e28baff,
+ 0x40f6727f, 0x43c408ff, 0x468f8e7f, 0x495703ff, 0x4c187a7f, 0x4ed2027f,
+ 0x5181be7f, 0x5425e0ff, 0x56bcb5ff, 0x5944997f, 0x5bbc09ff, 0x5e218dff,
+ 0x6073ddff, 0x62b1d4ff, 0x64da65ff, 0x66ecaeff, 0x68e7e5ff, 0x6acb857f,
+ 0x6c970f7f, 0x6e4a37ff, 0x6fe4d5ff, 0x7166f8ff, 0x72d0bb7f, 0x74225f7f,
+ 0x755c52ff, 0x767f1b7f, 0x778b4fff, 0x7881ba7f, 0x79632bff, 0x7a307eff,
+ 0x7aeab77f, 0x7b92c8ff, 0x7c29c77f, 0x7cb0d0ff, 0x7d28f17f, 0x7d933dff,
+ 0x7df0dc7f, 0x7e42d8ff, 0x7e8a3f7f, 0x7ec80c7f, 0x7efd3aff, 0x7f2ab67f,
+ 0x7f5160ff, 0x7f7203ff, 0x7f8d68ff, 0x7fa42eff, 0x7fb7067f, 0x7fc6757f,
+ 0x7fd3027f, 0x7fdd2aff, 0x7fe542ff, 0x7febaeff, 0x7ff0baff, 0x7ff4a97f,
+ 0x7ff7ad7f, 0x7ff9f87f, 0x7ffbac7f, 0x7ffcf3ff, 0x7ffde6ff, 0x7ffe8eff,
+ 0x7fff0c7f, 0x7fff607f, 0x7fff9b7f, 0x7fffbcff, 0x7fffd5ff, 0x7fffe6ff,
+ 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff,
+ 0x7fffffff, 0x7fffffff};
const WORD32 kbd_win32[32] = {
- 0x0002dec5, 0x001e8ba8, 0x00693bb0, 0x01097406, 0x02311ec3, 0x041af00f,
- 0x0704b1f7, 0x0b274746, 0x10ad6b60, 0x17aaa83a, 0x2014320f, 0x29bd3b7d,
- 0x3457df96, 0x3f7b02c1, 0x4aaca77c, 0x556f55f4, 0x5f508afc, 0x67f5d1a0,
- 0x6f264993, 0x74ceee0d, 0x7900e380, 0x7bea421b, 0x7dcb051e, 0x7ee8ac51,
- 0x7f835d29, 0x7fceb4af, 0x7fef248c, 0x7ffb3200, 0x7ffeecbc, 0x7fffd4bc,
- 0x7ffffc59, 0x7ffffff6};
+ 0x0002dec5, 0x001e8ba8, 0x00693bb0, 0x01097406, 0x02311ec3, 0x041af00f,
+ 0x0704b1f7, 0x0b274746, 0x10ad6b60, 0x17aaa83a, 0x2014320f, 0x29bd3b7d,
+ 0x3457df96, 0x3f7b02c1, 0x4aaca77c, 0x556f55f4, 0x5f508afc, 0x67f5d1a0,
+ 0x6f264993, 0x74ceee0d, 0x7900e380, 0x7bea421b, 0x7dcb051e, 0x7ee8ac51,
+ 0x7f835d29, 0x7fceb4af, 0x7fef248c, 0x7ffb3200, 0x7ffeecbc, 0x7fffd4bc,
+ 0x7ffffc59, 0x7ffffff6};
const WORD32 ixheaacd_kbd_win960[960] = {
- 0x0009e6ab, 0x000e96d5, 0x0012987d, 0x001652b5, 0x0019ebce, 0x001d76bf,
- 0x0020fe78, 0x002489ef, 0x00281de1, 0x002bbdbb, 0x002f6c0d, 0x00332ad8,
- 0x0036fbb8, 0x003ae003, 0x003ed8d8, 0x0042e72f, 0x00470be3, 0x004b47b8,
- 0x004f9b5e, 0x00540779, 0x00588ca0, 0x005d2b61, 0x0061e441, 0x0066b7c1,
- 0x006ba65b, 0x0070b086, 0x0075d6b4, 0x007b1955, 0x008078d5, 0x0085f59f,
- 0x008b901c, 0x009148b4, 0x00971fcb, 0x009d15c7, 0x00a32b0a, 0x00a95ff9,
- 0x00afb4f3, 0x00b62a5c, 0x00bcc093, 0x00c377f8, 0x00ca50ea, 0x00d14bcb,
- 0x00d868f7, 0x00dfa8cd, 0x00e70bad, 0x00ee91f3, 0x00f63bfe, 0x00fe0a2b,
- 0x0105fcd8, 0x010e1462, 0x01165126, 0x011eb381, 0x01273bcf, 0x012fea6f,
- 0x0138bfbb, 0x0141bc11, 0x014adfce, 0x01542b4c, 0x015d9ee9, 0x01673b00,
- 0x0170ffee, 0x017aee0e, 0x018505bc, 0x018f4753, 0x0199b32f, 0x01a449ac,
- 0x01af0b24, 0x01b9f7f3, 0x01c51074, 0x01d05501, 0x01dbc5f5, 0x01e763ab,
- 0x01f32e7d, 0x01ff26c5, 0x020b4cdd, 0x0217a120, 0x022423e6, 0x0230d589,
- 0x023db663, 0x024ac6cd, 0x02580720, 0x026577b3, 0x027318e0, 0x0280eaff,
- 0x028eee67, 0x029d2371, 0x02ab8a74, 0x02ba23c6, 0x02c8efbf, 0x02d7eeb6,
- 0x02e72101, 0x02f686f5, 0x030620e9, 0x0315ef31, 0x0325f223, 0x03362a14,
- 0x03469757, 0x03573a42, 0x03681327, 0x0379225a, 0x038a682d, 0x039be4f4,
- 0x03ad9900, 0x03bf84a3, 0x03d1a82e, 0x03e403f2, 0x03f69840, 0x04096567,
- 0x041c6bb8, 0x042fab80, 0x0443250f, 0x0456d8b3, 0x046ac6ba, 0x047eef70,
- 0x04935322, 0x04a7f21c, 0x04bcccab, 0x04d1e318, 0x04e735af, 0x04fcc4b9,
- 0x05129080, 0x0528994d, 0x053edf67, 0x05556318, 0x056c24a5, 0x05832455,
- 0x059a626e, 0x05b1df35, 0x05c99aef, 0x05e195e0, 0x05f9d04b, 0x06124a72,
- 0x062b0499, 0x0643feff, 0x065d39e7, 0x0676b58f, 0x06907237, 0x06aa701d,
- 0x06c4af7f, 0x06df309b, 0x06f9f3ad, 0x0714f8f0, 0x0730409f, 0x074bcaf4,
- 0x07679829, 0x0783a876, 0x079ffc13, 0x07bc9337, 0x07d96e18, 0x07f68cec,
- 0x0813efe7, 0x0831973c, 0x084f831f, 0x086db3c2, 0x088c2956, 0x08aae40b,
- 0x08c9e411, 0x08e92996, 0x0908b4c9, 0x092885d5, 0x09489ce8, 0x0968fa2b,
- 0x09899dca, 0x09aa87ed, 0x09cbb8bd, 0x09ed3061, 0x0a0eef00, 0x0a30f4bf,
- 0x0a5341c2, 0x0a75d62d, 0x0a98b224, 0x0abbd5c7, 0x0adf4137, 0x0b02f494,
- 0x0b26effc, 0x0b4b338e, 0x0b6fbf66, 0x0b94939f, 0x0bb9b055, 0x0bdf15a1,
- 0x0c04c39c, 0x0c2aba5c, 0x0c50f9fa, 0x0c778289, 0x0c9e5420, 0x0cc56ed0,
- 0x0cecd2ad, 0x0d147fc7, 0x0d3c7630, 0x0d64b5f5, 0x0d8d3f25, 0x0db611cd,
- 0x0ddf2df9, 0x0e0893b3, 0x0e324306, 0x0e5c3bf9, 0x0e867e93, 0x0eb10add,
- 0x0edbe0d9, 0x0f07008d, 0x0f3269fb, 0x0f5e1d26, 0x0f8a1a0d, 0x0fb660b0,
- 0x0fe2f10e, 0x100fcb24, 0x103ceeed, 0x106a5c65, 0x10981385, 0x10c61446,
- 0x10f45ea0, 0x1122f287, 0x1151cff2, 0x1180f6d4, 0x11b06720, 0x11e020c7,
- 0x121023ba, 0x12406fe7, 0x1271053d, 0x12a1e3a8, 0x12d30b14, 0x13047b6c,
- 0x13363497, 0x1368367e, 0x139a8108, 0x13cd141a, 0x13ffef99, 0x14331367,
- 0x14667f67, 0x149a3378, 0x14ce2f7b, 0x1502734e, 0x1536fece, 0x156bd1d6,
- 0x15a0ec41, 0x15d64de8, 0x160bf6a4, 0x1641e64b, 0x16781cb3, 0x16ae99b1,
- 0x16e55d18, 0x171c66b9, 0x1753b666, 0x178b4bef, 0x17c32720, 0x17fb47c9,
- 0x1833adb4, 0x186c58ad, 0x18a5487c, 0x18de7ceb, 0x1917f5c0, 0x1951b2c1,
- 0x198bb3b3, 0x19c5f85a, 0x1a008076, 0x1a3b4bca, 0x1a765a16, 0x1ab1ab18,
- 0x1aed3e8d, 0x1b291431, 0x1b652bc0, 0x1ba184f4, 0x1bde1f85, 0x1c1afb2b,
- 0x1c58179b, 0x1c95748c, 0x1cd311b1, 0x1d10eebc, 0x1d4f0b5f, 0x1d8d674c,
- 0x1dcc0230, 0x1e0adbba, 0x1e49f397, 0x1e894973, 0x1ec8dcf8, 0x1f08adcf,
- 0x1f48bba2, 0x1f890617, 0x1fc98cd5, 0x200a4f80, 0x204b4dbc, 0x208c872b,
- 0x20cdfb70, 0x210faa2b, 0x215192fb, 0x2193b57f, 0x21d61153, 0x2218a613,
- 0x225b735c, 0x229e78c6, 0x22e1b5ea, 0x23252a61, 0x2368d5c1, 0x23acb79f,
- 0x23f0cf91, 0x24351d29, 0x24799ffb, 0x24be5798, 0x25034391, 0x25486374,
- 0x258db6d1, 0x25d33d34, 0x2618f62c, 0x265ee142, 0x26a4fe01, 0x26eb4bf4,
- 0x2731caa2, 0x27787994, 0x27bf5850, 0x2806665b, 0x284da33b, 0x28950e73,
- 0x28dca787, 0x29246df9, 0x296c6149, 0x29b480f9, 0x29fccc86, 0x2a454371,
- 0x2a8de537, 0x2ad6b154, 0x2b1fa744, 0x2b68c683, 0x2bb20e8b, 0x2bfb7ed6,
- 0x2c4516db, 0x2c8ed614, 0x2cd8bbf6, 0x2d22c7f9, 0x2d6cf992, 0x2db75036,
- 0x2e01cb58, 0x2e4c6a6c, 0x2e972ce5, 0x2ee21234, 0x2f2d19cb, 0x2f78431a,
- 0x2fc38d90, 0x300ef89d, 0x305a83ae, 0x30a62e33, 0x30f1f797, 0x313ddf48,
- 0x3189e4b0, 0x31d6073c, 0x32224656, 0x326ea167, 0x32bb17da, 0x3307a916,
- 0x33545485, 0x33a1198d, 0x33edf797, 0x343aee08, 0x3487fc48, 0x34d521ba,
- 0x35225dc6, 0x356fafcf, 0x35bd1739, 0x360a9368, 0x365823c0, 0x36a5c7a3,
- 0x36f37e74, 0x37414795, 0x378f2267, 0x37dd0e4b, 0x382b0aa3, 0x387916cf,
- 0x38c7322f, 0x39155c23, 0x3963940b, 0x39b1d945, 0x3a002b30, 0x3a4e892c,
- 0x3a9cf295, 0x3aeb66cb, 0x3b39e52b, 0x3b886d13, 0x3bd6fde0, 0x3c2596f0,
- 0x3c74379e, 0x3cc2df48, 0x3d118d4b, 0x3d604102, 0x3daef9cb, 0x3dfdb701,
- 0x3e4c77ff, 0x3e9b3c24, 0x3eea02c9, 0x3f38cb4a, 0x3f879504, 0x3fd65f52,
- 0x4025298f, 0x4073f317, 0x40c2bb45, 0x41118175, 0x41604503, 0x41af0549,
- 0x41fdc1a4, 0x424c796f, 0x429b2c05, 0x42e9d8c3, 0x43387f04, 0x43871e25,
- 0x43d5b580, 0x44244473, 0x4472ca59, 0x44c1468f, 0x450fb872, 0x455e1f5e,
- 0x45ac7ab1, 0x45fac9c7, 0x46490bfe, 0x469740b4, 0x46e56746, 0x47337f12,
- 0x47818778, 0x47cf7fd5, 0x481d6789, 0x486b3df2, 0x48b90271, 0x4906b465,
- 0x4954532f, 0x49a1de2f, 0x49ef54c7, 0x4a3cb656, 0x4a8a0241, 0x4ad737e7,
- 0x4b2456ad, 0x4b715df6, 0x4bbe4d24, 0x4c0b239b, 0x4c57e0c1, 0x4ca483f9,
- 0x4cf10caa, 0x4d3d7a3a, 0x4d89cc0e, 0x4dd6018d, 0x4e221a20, 0x4e6e152f,
- 0x4eb9f221, 0x4f05b060, 0x4f514f56, 0x4f9cce6e, 0x4fe82d12, 0x50336aae,
- 0x507e86af, 0x50c98080, 0x51145791, 0x515f0b50, 0x51a99b2a, 0x51f40691,
- 0x523e4cf3, 0x52886dc4, 0x52d26874, 0x531c3c75, 0x5365e93d, 0x53af6e3d,
- 0x53f8caec, 0x5441febf, 0x548b092d, 0x54d3e9ac, 0x551c9fb6, 0x55652ac2,
- 0x55ad8a4b, 0x55f5bdcc, 0x563dc4bf, 0x56859ea2, 0x56cd4af1, 0x5714c92b,
- 0x575c18cf, 0x57a3395d, 0x57ea2a55, 0x5830eb39, 0x58777b8d, 0x58bddad4,
- 0x59040892, 0x594a044d, 0x598fcd8d, 0x59d563d8, 0x5a1ac6b7, 0x5a5ff5b4,
- 0x5aa4f059, 0x5ae9b632, 0x5b2e46cc, 0x5b72a1b5, 0x5bb6c67b, 0x5bfab4ad,
- 0x5c3e6bde, 0x5c81eb9f, 0x5cc53382, 0x5d08431d, 0x5d4b1a04, 0x5d8db7ce,
- 0x5dd01c12, 0x5e124669, 0x5e54366c, 0x5e95ebb7, 0x5ed765e4, 0x5f18a493,
- 0x5f59a75f, 0x5f9a6dea, 0x5fdaf7d4, 0x601b44be, 0x605b544b, 0x609b2620,
- 0x60dab9e2, 0x611a0f37, 0x615925c8, 0x6197fd3d, 0x61d69540, 0x6214ed7c,
- 0x6253059f, 0x6290dd56, 0x62ce7450, 0x630bca3d, 0x6348ded0, 0x6385b1ba,
- 0x63c242b1, 0x63fe9168, 0x643a9d98, 0x647666f7, 0x64b1ed3e, 0x64ed3029,
- 0x65282f73, 0x6562ead9, 0x659d6218, 0x65d794f1, 0x66118325, 0x664b2c75,
- 0x668490a5, 0x66bdaf79, 0x66f688b9, 0x672f1c2a, 0x67676995, 0x679f70c5,
- 0x67d73185, 0x680eaba2, 0x6845dee8, 0x687ccb28, 0x68b37031, 0x68e9cdd7,
- 0x691fe3eb, 0x6955b242, 0x698b38b3, 0x69c07713, 0x69f56d3d, 0x6a2a1b09,
- 0x6a5e8052, 0x6a929cf5, 0x6ac670d0, 0x6af9fbc1, 0x6b2d3da9, 0x6b60366b,
- 0x6b92e5e7, 0x6bc54c04, 0x6bf768a7, 0x6c293bb7, 0x6c5ac51b, 0x6c8c04be,
- 0x6cbcfa8b, 0x6ceda66e, 0x6d1e0854, 0x6d4e202c, 0x6d7dede7, 0x6dad7176,
- 0x6ddcaacb, 0x6e0b99db, 0x6e3a3e9c, 0x6e689903, 0x6e96a90a, 0x6ec46ea8,
- 0x6ef1e9d9, 0x6f1f1a99, 0x6f4c00e4, 0x6f789cb9, 0x6fa4ee19, 0x6fd0f502,
- 0x6ffcb179, 0x70282380, 0x70534b1c, 0x707e2853, 0x70a8bb2d, 0x70d303b1,
- 0x70fd01e9, 0x7126b5e1, 0x71501fa5, 0x71793f41, 0x71a214c5, 0x71caa040,
- 0x71f2e1c4, 0x721ad962, 0x7242872f, 0x7269eb3e, 0x729105a5, 0x72b7d67c,
- 0x72de5dda, 0x73049bd9, 0x732a9094, 0x73503c25, 0x73759eaa, 0x739ab840,
- 0x73bf8908, 0x73e4111f, 0x740850a9, 0x742c47c8, 0x744ff69e, 0x74735d50,
- 0x74967c04, 0x74b952e1, 0x74dbe20f, 0x74fe29b6, 0x75202a00, 0x7541e319,
- 0x7563552c, 0x75848066, 0x75a564f5, 0x75c60308, 0x75e65ad0, 0x76066c7d,
- 0x76263841, 0x7645be50, 0x7664fedc, 0x7683fa1c, 0x76a2b045, 0x76c1218e,
- 0x76df4e2e, 0x76fd365f, 0x771ada59, 0x77383a56, 0x77555694, 0x77722f4d,
- 0x778ec4be, 0x77ab1726, 0x77c726c3, 0x77e2f3d5, 0x77fe7e9d, 0x7819c75b,
- 0x7834ce51, 0x784f93c3, 0x786a17f4, 0x78845b28, 0x789e5da5, 0x78b81fb0,
- 0x78d1a190, 0x78eae38c, 0x7903e5ed, 0x791ca8fb, 0x79352d00, 0x794d7246,
- 0x79657917, 0x797d41c0, 0x7994cc8b, 0x79ac19c8, 0x79c329c1, 0x79d9fcc6,
- 0x79f09325, 0x7a06ed2e, 0x7a1d0b2f, 0x7a32ed7a, 0x7a489460, 0x7a5e0031,
- 0x7a733141, 0x7a8827e0, 0x7a9ce463, 0x7ab1671d, 0x7ac5b061, 0x7ad9c085,
- 0x7aed97dd, 0x7b0136bf, 0x7b149d81, 0x7b27cc78, 0x7b3ac3fb, 0x7b4d8462,
- 0x7b600e03, 0x7b726138, 0x7b847e57, 0x7b9665b9, 0x7ba817b8, 0x7bb994ac,
- 0x7bcadcef, 0x7bdbf0db, 0x7becd0ca, 0x7bfd7d17, 0x7c0df61b, 0x7c1e3c32,
- 0x7c2e4fb8, 0x7c3e3107, 0x7c4de07b, 0x7c5d5e70, 0x7c6cab42, 0x7c7bc74d,
- 0x7c8ab2ee, 0x7c996e82, 0x7ca7fa64, 0x7cb656f1, 0x7cc48488, 0x7cd28384,
- 0x7ce05444, 0x7cedf723, 0x7cfb6c80, 0x7d08b4b9, 0x7d15d02a, 0x7d22bf31,
- 0x7d2f822c, 0x7d3c1978, 0x7d488573, 0x7d54c67a, 0x7d60dcec, 0x7d6cc925,
- 0x7d788b84, 0x7d842466, 0x7d8f9427, 0x7d9adb27, 0x7da5f9c2, 0x7db0f055,
- 0x7dbbbf3d, 0x7dc666d8, 0x7dd0e782, 0x7ddb4199, 0x7de57578, 0x7def837d,
- 0x7df96c03, 0x7e032f68, 0x7e0cce07, 0x7e16483c, 0x7e1f9e62, 0x7e28d0d5,
- 0x7e31dff1, 0x7e3acc0f, 0x7e43958c, 0x7e4c3cc2, 0x7e54c20a, 0x7e5d25bf,
- 0x7e65683b, 0x7e6d89d7, 0x7e758aed, 0x7e7d6bd5, 0x7e852ce7, 0x7e8cce7d,
- 0x7e9450ee, 0x7e9bb492, 0x7ea2f9c1, 0x7eaa20d0, 0x7eb12a17, 0x7eb815ec,
- 0x7ebee4a5, 0x7ec59697, 0x7ecc2c19, 0x7ed2a57d, 0x7ed90319, 0x7edf4541,
- 0x7ee56c49, 0x7eeb7882, 0x7ef16a41, 0x7ef741d7, 0x7efcff97, 0x7f02a3d1,
- 0x7f082ed7, 0x7f0da0f9, 0x7f12fa87, 0x7f183bd2, 0x7f1d6527, 0x7f2276d6,
- 0x7f27712d, 0x7f2c5479, 0x7f312109, 0x7f35d727, 0x7f3a7721, 0x7f3f0143,
- 0x7f4375d7, 0x7f47d528, 0x7f4c1f81, 0x7f50552b, 0x7f54766f, 0x7f588396,
- 0x7f5c7ce7, 0x7f6062ab, 0x7f643528, 0x7f67f4a4, 0x7f6ba167, 0x7f6f3bb4,
- 0x7f72c3d1, 0x7f763a01, 0x7f799e8a, 0x7f7cf1ac, 0x7f8033ad, 0x7f8364cc,
- 0x7f86854c, 0x7f89956d, 0x7f8c9570, 0x7f8f8594, 0x7f926619, 0x7f95373d,
- 0x7f97f93d, 0x7f9aac58, 0x7f9d50ca, 0x7f9fe6d0, 0x7fa26ea4, 0x7fa4e882,
- 0x7fa754a5, 0x7fa9b346, 0x7fac049e, 0x7fae48e7, 0x7fb08058, 0x7fb2ab29,
- 0x7fb4c991, 0x7fb6dbc6, 0x7fb8e1fe, 0x7fbadc6e, 0x7fbccb4b, 0x7fbeaec8,
- 0x7fc0871a, 0x7fc25472, 0x7fc41704, 0x7fc5cf00, 0x7fc77c98, 0x7fc91ffd,
- 0x7fcab95e, 0x7fcc48eb, 0x7fcdced2, 0x7fcf4b42, 0x7fd0be68, 0x7fd22872,
- 0x7fd3898b, 0x7fd4e1e0, 0x7fd6319c, 0x7fd778ea, 0x7fd8b7f4, 0x7fd9eee4,
- 0x7fdb1de2, 0x7fdc4518, 0x7fdd64ad, 0x7fde7cc9, 0x7fdf8d93, 0x7fe09731,
- 0x7fe199c9, 0x7fe29580, 0x7fe38a7b, 0x7fe478de, 0x7fe560cc, 0x7fe6426a,
- 0x7fe71dda, 0x7fe7f33d, 0x7fe8c2b5, 0x7fe98c64, 0x7fea506a, 0x7feb0ee6,
- 0x7febc7fa, 0x7fec7bc3, 0x7fed2a60, 0x7fedd3ef, 0x7fee788f, 0x7fef185b,
- 0x7fefb371, 0x7ff049ed, 0x7ff0dbeb, 0x7ff16985, 0x7ff1f2d6, 0x7ff277f9,
- 0x7ff2f908, 0x7ff3761c, 0x7ff3ef4d, 0x7ff464b5, 0x7ff4d66c, 0x7ff54488,
- 0x7ff5af22, 0x7ff61650, 0x7ff67a28, 0x7ff6dac0, 0x7ff7382e, 0x7ff79287,
- 0x7ff7e9df, 0x7ff83e4c, 0x7ff88fe0, 0x7ff8deb0, 0x7ff92ace, 0x7ff9744d,
- 0x7ff9bb3f, 0x7ff9ffb8, 0x7ffa41c7, 0x7ffa817f, 0x7ffabef0, 0x7ffafa2b,
- 0x7ffb3341, 0x7ffb6a40, 0x7ffb9f38, 0x7ffbd23a, 0x7ffc0353, 0x7ffc3292,
- 0x7ffc6005, 0x7ffc8bba, 0x7ffcb5bf, 0x7ffcde21, 0x7ffd04ed, 0x7ffd2a30,
- 0x7ffd4df5, 0x7ffd704a, 0x7ffd9139, 0x7ffdb0cf, 0x7ffdcf16, 0x7ffdec19,
- 0x7ffe07e4, 0x7ffe2280, 0x7ffe3bf8, 0x7ffe5456, 0x7ffe6ba3, 0x7ffe81e8,
- 0x7ffe9730, 0x7ffeab82, 0x7ffebee7, 0x7ffed169, 0x7ffee30e, 0x7ffef3e0,
- 0x7fff03e5, 0x7fff1326, 0x7fff21aa, 0x7fff2f78, 0x7fff3c96, 0x7fff490d,
- 0x7fff54e1, 0x7fff601a, 0x7fff6abe, 0x7fff74d3, 0x7fff7e5e, 0x7fff8765,
- 0x7fff8fee, 0x7fff97fe, 0x7fff9f9b, 0x7fffa6c8, 0x7fffad8b, 0x7fffb3e9,
- 0x7fffb9e5, 0x7fffbf85, 0x7fffc4cd, 0x7fffc9c0, 0x7fffce64, 0x7fffd2ba,
- 0x7fffd6c8, 0x7fffda90, 0x7fffde16, 0x7fffe15e, 0x7fffe46a, 0x7fffe73d,
- 0x7fffe9db, 0x7fffec47, 0x7fffee82, 0x7ffff091, 0x7ffff274, 0x7ffff42f,
- 0x7ffff5c4, 0x7ffff736, 0x7ffff885, 0x7ffff9b5, 0x7ffffac7, 0x7ffffbbe,
- 0x7ffffc9a, 0x7ffffd5f, 0x7ffffe0c, 0x7ffffea5, 0x7fffff2a, 0x7fffff9c};
+ 0x0009e6ab, 0x000e96d5, 0x0012987d, 0x001652b5, 0x0019ebce, 0x001d76bf,
+ 0x0020fe78, 0x002489ef, 0x00281de1, 0x002bbdbb, 0x002f6c0d, 0x00332ad8,
+ 0x0036fbb8, 0x003ae003, 0x003ed8d8, 0x0042e72f, 0x00470be3, 0x004b47b8,
+ 0x004f9b5e, 0x00540779, 0x00588ca0, 0x005d2b61, 0x0061e441, 0x0066b7c1,
+ 0x006ba65b, 0x0070b086, 0x0075d6b4, 0x007b1955, 0x008078d5, 0x0085f59f,
+ 0x008b901c, 0x009148b4, 0x00971fcb, 0x009d15c7, 0x00a32b0a, 0x00a95ff9,
+ 0x00afb4f3, 0x00b62a5c, 0x00bcc093, 0x00c377f8, 0x00ca50ea, 0x00d14bcb,
+ 0x00d868f7, 0x00dfa8cd, 0x00e70bad, 0x00ee91f3, 0x00f63bfe, 0x00fe0a2b,
+ 0x0105fcd8, 0x010e1462, 0x01165126, 0x011eb381, 0x01273bcf, 0x012fea6f,
+ 0x0138bfbb, 0x0141bc11, 0x014adfce, 0x01542b4c, 0x015d9ee9, 0x01673b00,
+ 0x0170ffee, 0x017aee0e, 0x018505bc, 0x018f4753, 0x0199b32f, 0x01a449ac,
+ 0x01af0b24, 0x01b9f7f3, 0x01c51074, 0x01d05501, 0x01dbc5f5, 0x01e763ab,
+ 0x01f32e7d, 0x01ff26c5, 0x020b4cdd, 0x0217a120, 0x022423e6, 0x0230d589,
+ 0x023db663, 0x024ac6cd, 0x02580720, 0x026577b3, 0x027318e0, 0x0280eaff,
+ 0x028eee67, 0x029d2371, 0x02ab8a74, 0x02ba23c6, 0x02c8efbf, 0x02d7eeb6,
+ 0x02e72101, 0x02f686f5, 0x030620e9, 0x0315ef31, 0x0325f223, 0x03362a14,
+ 0x03469757, 0x03573a42, 0x03681327, 0x0379225a, 0x038a682d, 0x039be4f4,
+ 0x03ad9900, 0x03bf84a3, 0x03d1a82e, 0x03e403f2, 0x03f69840, 0x04096567,
+ 0x041c6bb8, 0x042fab80, 0x0443250f, 0x0456d8b3, 0x046ac6ba, 0x047eef70,
+ 0x04935322, 0x04a7f21c, 0x04bcccab, 0x04d1e318, 0x04e735af, 0x04fcc4b9,
+ 0x05129080, 0x0528994d, 0x053edf67, 0x05556318, 0x056c24a5, 0x05832455,
+ 0x059a626e, 0x05b1df35, 0x05c99aef, 0x05e195e0, 0x05f9d04b, 0x06124a72,
+ 0x062b0499, 0x0643feff, 0x065d39e7, 0x0676b58f, 0x06907237, 0x06aa701d,
+ 0x06c4af7f, 0x06df309b, 0x06f9f3ad, 0x0714f8f0, 0x0730409f, 0x074bcaf4,
+ 0x07679829, 0x0783a876, 0x079ffc13, 0x07bc9337, 0x07d96e18, 0x07f68cec,
+ 0x0813efe7, 0x0831973c, 0x084f831f, 0x086db3c2, 0x088c2956, 0x08aae40b,
+ 0x08c9e411, 0x08e92996, 0x0908b4c9, 0x092885d5, 0x09489ce8, 0x0968fa2b,
+ 0x09899dca, 0x09aa87ed, 0x09cbb8bd, 0x09ed3061, 0x0a0eef00, 0x0a30f4bf,
+ 0x0a5341c2, 0x0a75d62d, 0x0a98b224, 0x0abbd5c7, 0x0adf4137, 0x0b02f494,
+ 0x0b26effc, 0x0b4b338e, 0x0b6fbf66, 0x0b94939f, 0x0bb9b055, 0x0bdf15a1,
+ 0x0c04c39c, 0x0c2aba5c, 0x0c50f9fa, 0x0c778289, 0x0c9e5420, 0x0cc56ed0,
+ 0x0cecd2ad, 0x0d147fc7, 0x0d3c7630, 0x0d64b5f5, 0x0d8d3f25, 0x0db611cd,
+ 0x0ddf2df9, 0x0e0893b3, 0x0e324306, 0x0e5c3bf9, 0x0e867e93, 0x0eb10add,
+ 0x0edbe0d9, 0x0f07008d, 0x0f3269fb, 0x0f5e1d26, 0x0f8a1a0d, 0x0fb660b0,
+ 0x0fe2f10e, 0x100fcb24, 0x103ceeed, 0x106a5c65, 0x10981385, 0x10c61446,
+ 0x10f45ea0, 0x1122f287, 0x1151cff2, 0x1180f6d4, 0x11b06720, 0x11e020c7,
+ 0x121023ba, 0x12406fe7, 0x1271053d, 0x12a1e3a8, 0x12d30b14, 0x13047b6c,
+ 0x13363497, 0x1368367e, 0x139a8108, 0x13cd141a, 0x13ffef99, 0x14331367,
+ 0x14667f67, 0x149a3378, 0x14ce2f7b, 0x1502734e, 0x1536fece, 0x156bd1d6,
+ 0x15a0ec41, 0x15d64de8, 0x160bf6a4, 0x1641e64b, 0x16781cb3, 0x16ae99b1,
+ 0x16e55d18, 0x171c66b9, 0x1753b666, 0x178b4bef, 0x17c32720, 0x17fb47c9,
+ 0x1833adb4, 0x186c58ad, 0x18a5487c, 0x18de7ceb, 0x1917f5c0, 0x1951b2c1,
+ 0x198bb3b3, 0x19c5f85a, 0x1a008076, 0x1a3b4bca, 0x1a765a16, 0x1ab1ab18,
+ 0x1aed3e8d, 0x1b291431, 0x1b652bc0, 0x1ba184f4, 0x1bde1f85, 0x1c1afb2b,
+ 0x1c58179b, 0x1c95748c, 0x1cd311b1, 0x1d10eebc, 0x1d4f0b5f, 0x1d8d674c,
+ 0x1dcc0230, 0x1e0adbba, 0x1e49f397, 0x1e894973, 0x1ec8dcf8, 0x1f08adcf,
+ 0x1f48bba2, 0x1f890617, 0x1fc98cd5, 0x200a4f80, 0x204b4dbc, 0x208c872b,
+ 0x20cdfb70, 0x210faa2b, 0x215192fb, 0x2193b57f, 0x21d61153, 0x2218a613,
+ 0x225b735c, 0x229e78c6, 0x22e1b5ea, 0x23252a61, 0x2368d5c1, 0x23acb79f,
+ 0x23f0cf91, 0x24351d29, 0x24799ffb, 0x24be5798, 0x25034391, 0x25486374,
+ 0x258db6d1, 0x25d33d34, 0x2618f62c, 0x265ee142, 0x26a4fe01, 0x26eb4bf4,
+ 0x2731caa2, 0x27787994, 0x27bf5850, 0x2806665b, 0x284da33b, 0x28950e73,
+ 0x28dca787, 0x29246df9, 0x296c6149, 0x29b480f9, 0x29fccc86, 0x2a454371,
+ 0x2a8de537, 0x2ad6b154, 0x2b1fa744, 0x2b68c683, 0x2bb20e8b, 0x2bfb7ed6,
+ 0x2c4516db, 0x2c8ed614, 0x2cd8bbf6, 0x2d22c7f9, 0x2d6cf992, 0x2db75036,
+ 0x2e01cb58, 0x2e4c6a6c, 0x2e972ce5, 0x2ee21234, 0x2f2d19cb, 0x2f78431a,
+ 0x2fc38d90, 0x300ef89d, 0x305a83ae, 0x30a62e33, 0x30f1f797, 0x313ddf48,
+ 0x3189e4b0, 0x31d6073c, 0x32224656, 0x326ea167, 0x32bb17da, 0x3307a916,
+ 0x33545485, 0x33a1198d, 0x33edf797, 0x343aee08, 0x3487fc48, 0x34d521ba,
+ 0x35225dc6, 0x356fafcf, 0x35bd1739, 0x360a9368, 0x365823c0, 0x36a5c7a3,
+ 0x36f37e74, 0x37414795, 0x378f2267, 0x37dd0e4b, 0x382b0aa3, 0x387916cf,
+ 0x38c7322f, 0x39155c23, 0x3963940b, 0x39b1d945, 0x3a002b30, 0x3a4e892c,
+ 0x3a9cf295, 0x3aeb66cb, 0x3b39e52b, 0x3b886d13, 0x3bd6fde0, 0x3c2596f0,
+ 0x3c74379e, 0x3cc2df48, 0x3d118d4b, 0x3d604102, 0x3daef9cb, 0x3dfdb701,
+ 0x3e4c77ff, 0x3e9b3c24, 0x3eea02c9, 0x3f38cb4a, 0x3f879504, 0x3fd65f52,
+ 0x4025298f, 0x4073f317, 0x40c2bb45, 0x41118175, 0x41604503, 0x41af0549,
+ 0x41fdc1a4, 0x424c796f, 0x429b2c05, 0x42e9d8c3, 0x43387f04, 0x43871e25,
+ 0x43d5b580, 0x44244473, 0x4472ca59, 0x44c1468f, 0x450fb872, 0x455e1f5e,
+ 0x45ac7ab1, 0x45fac9c7, 0x46490bfe, 0x469740b4, 0x46e56746, 0x47337f12,
+ 0x47818778, 0x47cf7fd5, 0x481d6789, 0x486b3df2, 0x48b90271, 0x4906b465,
+ 0x4954532f, 0x49a1de2f, 0x49ef54c7, 0x4a3cb656, 0x4a8a0241, 0x4ad737e7,
+ 0x4b2456ad, 0x4b715df6, 0x4bbe4d24, 0x4c0b239b, 0x4c57e0c1, 0x4ca483f9,
+ 0x4cf10caa, 0x4d3d7a3a, 0x4d89cc0e, 0x4dd6018d, 0x4e221a20, 0x4e6e152f,
+ 0x4eb9f221, 0x4f05b060, 0x4f514f56, 0x4f9cce6e, 0x4fe82d12, 0x50336aae,
+ 0x507e86af, 0x50c98080, 0x51145791, 0x515f0b50, 0x51a99b2a, 0x51f40691,
+ 0x523e4cf3, 0x52886dc4, 0x52d26874, 0x531c3c75, 0x5365e93d, 0x53af6e3d,
+ 0x53f8caec, 0x5441febf, 0x548b092d, 0x54d3e9ac, 0x551c9fb6, 0x55652ac2,
+ 0x55ad8a4b, 0x55f5bdcc, 0x563dc4bf, 0x56859ea2, 0x56cd4af1, 0x5714c92b,
+ 0x575c18cf, 0x57a3395d, 0x57ea2a55, 0x5830eb39, 0x58777b8d, 0x58bddad4,
+ 0x59040892, 0x594a044d, 0x598fcd8d, 0x59d563d8, 0x5a1ac6b7, 0x5a5ff5b4,
+ 0x5aa4f059, 0x5ae9b632, 0x5b2e46cc, 0x5b72a1b5, 0x5bb6c67b, 0x5bfab4ad,
+ 0x5c3e6bde, 0x5c81eb9f, 0x5cc53382, 0x5d08431d, 0x5d4b1a04, 0x5d8db7ce,
+ 0x5dd01c12, 0x5e124669, 0x5e54366c, 0x5e95ebb7, 0x5ed765e4, 0x5f18a493,
+ 0x5f59a75f, 0x5f9a6dea, 0x5fdaf7d4, 0x601b44be, 0x605b544b, 0x609b2620,
+ 0x60dab9e2, 0x611a0f37, 0x615925c8, 0x6197fd3d, 0x61d69540, 0x6214ed7c,
+ 0x6253059f, 0x6290dd56, 0x62ce7450, 0x630bca3d, 0x6348ded0, 0x6385b1ba,
+ 0x63c242b1, 0x63fe9168, 0x643a9d98, 0x647666f7, 0x64b1ed3e, 0x64ed3029,
+ 0x65282f73, 0x6562ead9, 0x659d6218, 0x65d794f1, 0x66118325, 0x664b2c75,
+ 0x668490a5, 0x66bdaf79, 0x66f688b9, 0x672f1c2a, 0x67676995, 0x679f70c5,
+ 0x67d73185, 0x680eaba2, 0x6845dee8, 0x687ccb28, 0x68b37031, 0x68e9cdd7,
+ 0x691fe3eb, 0x6955b242, 0x698b38b3, 0x69c07713, 0x69f56d3d, 0x6a2a1b09,
+ 0x6a5e8052, 0x6a929cf5, 0x6ac670d0, 0x6af9fbc1, 0x6b2d3da9, 0x6b60366b,
+ 0x6b92e5e7, 0x6bc54c04, 0x6bf768a7, 0x6c293bb7, 0x6c5ac51b, 0x6c8c04be,
+ 0x6cbcfa8b, 0x6ceda66e, 0x6d1e0854, 0x6d4e202c, 0x6d7dede7, 0x6dad7176,
+ 0x6ddcaacb, 0x6e0b99db, 0x6e3a3e9c, 0x6e689903, 0x6e96a90a, 0x6ec46ea8,
+ 0x6ef1e9d9, 0x6f1f1a99, 0x6f4c00e4, 0x6f789cb9, 0x6fa4ee19, 0x6fd0f502,
+ 0x6ffcb179, 0x70282380, 0x70534b1c, 0x707e2853, 0x70a8bb2d, 0x70d303b1,
+ 0x70fd01e9, 0x7126b5e1, 0x71501fa5, 0x71793f41, 0x71a214c5, 0x71caa040,
+ 0x71f2e1c4, 0x721ad962, 0x7242872f, 0x7269eb3e, 0x729105a5, 0x72b7d67c,
+ 0x72de5dda, 0x73049bd9, 0x732a9094, 0x73503c25, 0x73759eaa, 0x739ab840,
+ 0x73bf8908, 0x73e4111f, 0x740850a9, 0x742c47c8, 0x744ff69e, 0x74735d50,
+ 0x74967c04, 0x74b952e1, 0x74dbe20f, 0x74fe29b6, 0x75202a00, 0x7541e319,
+ 0x7563552c, 0x75848066, 0x75a564f5, 0x75c60308, 0x75e65ad0, 0x76066c7d,
+ 0x76263841, 0x7645be50, 0x7664fedc, 0x7683fa1c, 0x76a2b045, 0x76c1218e,
+ 0x76df4e2e, 0x76fd365f, 0x771ada59, 0x77383a56, 0x77555694, 0x77722f4d,
+ 0x778ec4be, 0x77ab1726, 0x77c726c3, 0x77e2f3d5, 0x77fe7e9d, 0x7819c75b,
+ 0x7834ce51, 0x784f93c3, 0x786a17f4, 0x78845b28, 0x789e5da5, 0x78b81fb0,
+ 0x78d1a190, 0x78eae38c, 0x7903e5ed, 0x791ca8fb, 0x79352d00, 0x794d7246,
+ 0x79657917, 0x797d41c0, 0x7994cc8b, 0x79ac19c8, 0x79c329c1, 0x79d9fcc6,
+ 0x79f09325, 0x7a06ed2e, 0x7a1d0b2f, 0x7a32ed7a, 0x7a489460, 0x7a5e0031,
+ 0x7a733141, 0x7a8827e0, 0x7a9ce463, 0x7ab1671d, 0x7ac5b061, 0x7ad9c085,
+ 0x7aed97dd, 0x7b0136bf, 0x7b149d81, 0x7b27cc78, 0x7b3ac3fb, 0x7b4d8462,
+ 0x7b600e03, 0x7b726138, 0x7b847e57, 0x7b9665b9, 0x7ba817b8, 0x7bb994ac,
+ 0x7bcadcef, 0x7bdbf0db, 0x7becd0ca, 0x7bfd7d17, 0x7c0df61b, 0x7c1e3c32,
+ 0x7c2e4fb8, 0x7c3e3107, 0x7c4de07b, 0x7c5d5e70, 0x7c6cab42, 0x7c7bc74d,
+ 0x7c8ab2ee, 0x7c996e82, 0x7ca7fa64, 0x7cb656f1, 0x7cc48488, 0x7cd28384,
+ 0x7ce05444, 0x7cedf723, 0x7cfb6c80, 0x7d08b4b9, 0x7d15d02a, 0x7d22bf31,
+ 0x7d2f822c, 0x7d3c1978, 0x7d488573, 0x7d54c67a, 0x7d60dcec, 0x7d6cc925,
+ 0x7d788b84, 0x7d842466, 0x7d8f9427, 0x7d9adb27, 0x7da5f9c2, 0x7db0f055,
+ 0x7dbbbf3d, 0x7dc666d8, 0x7dd0e782, 0x7ddb4199, 0x7de57578, 0x7def837d,
+ 0x7df96c03, 0x7e032f68, 0x7e0cce07, 0x7e16483c, 0x7e1f9e62, 0x7e28d0d5,
+ 0x7e31dff1, 0x7e3acc0f, 0x7e43958c, 0x7e4c3cc2, 0x7e54c20a, 0x7e5d25bf,
+ 0x7e65683b, 0x7e6d89d7, 0x7e758aed, 0x7e7d6bd5, 0x7e852ce7, 0x7e8cce7d,
+ 0x7e9450ee, 0x7e9bb492, 0x7ea2f9c1, 0x7eaa20d0, 0x7eb12a17, 0x7eb815ec,
+ 0x7ebee4a5, 0x7ec59697, 0x7ecc2c19, 0x7ed2a57d, 0x7ed90319, 0x7edf4541,
+ 0x7ee56c49, 0x7eeb7882, 0x7ef16a41, 0x7ef741d7, 0x7efcff97, 0x7f02a3d1,
+ 0x7f082ed7, 0x7f0da0f9, 0x7f12fa87, 0x7f183bd2, 0x7f1d6527, 0x7f2276d6,
+ 0x7f27712d, 0x7f2c5479, 0x7f312109, 0x7f35d727, 0x7f3a7721, 0x7f3f0143,
+ 0x7f4375d7, 0x7f47d528, 0x7f4c1f81, 0x7f50552b, 0x7f54766f, 0x7f588396,
+ 0x7f5c7ce7, 0x7f6062ab, 0x7f643528, 0x7f67f4a4, 0x7f6ba167, 0x7f6f3bb4,
+ 0x7f72c3d1, 0x7f763a01, 0x7f799e8a, 0x7f7cf1ac, 0x7f8033ad, 0x7f8364cc,
+ 0x7f86854c, 0x7f89956d, 0x7f8c9570, 0x7f8f8594, 0x7f926619, 0x7f95373d,
+ 0x7f97f93d, 0x7f9aac58, 0x7f9d50ca, 0x7f9fe6d0, 0x7fa26ea4, 0x7fa4e882,
+ 0x7fa754a5, 0x7fa9b346, 0x7fac049e, 0x7fae48e7, 0x7fb08058, 0x7fb2ab29,
+ 0x7fb4c991, 0x7fb6dbc6, 0x7fb8e1fe, 0x7fbadc6e, 0x7fbccb4b, 0x7fbeaec8,
+ 0x7fc0871a, 0x7fc25472, 0x7fc41704, 0x7fc5cf00, 0x7fc77c98, 0x7fc91ffd,
+ 0x7fcab95e, 0x7fcc48eb, 0x7fcdced2, 0x7fcf4b42, 0x7fd0be68, 0x7fd22872,
+ 0x7fd3898b, 0x7fd4e1e0, 0x7fd6319c, 0x7fd778ea, 0x7fd8b7f4, 0x7fd9eee4,
+ 0x7fdb1de2, 0x7fdc4518, 0x7fdd64ad, 0x7fde7cc9, 0x7fdf8d93, 0x7fe09731,
+ 0x7fe199c9, 0x7fe29580, 0x7fe38a7b, 0x7fe478de, 0x7fe560cc, 0x7fe6426a,
+ 0x7fe71dda, 0x7fe7f33d, 0x7fe8c2b5, 0x7fe98c64, 0x7fea506a, 0x7feb0ee6,
+ 0x7febc7fa, 0x7fec7bc3, 0x7fed2a60, 0x7fedd3ef, 0x7fee788f, 0x7fef185b,
+ 0x7fefb371, 0x7ff049ed, 0x7ff0dbeb, 0x7ff16985, 0x7ff1f2d6, 0x7ff277f9,
+ 0x7ff2f908, 0x7ff3761c, 0x7ff3ef4d, 0x7ff464b5, 0x7ff4d66c, 0x7ff54488,
+ 0x7ff5af22, 0x7ff61650, 0x7ff67a28, 0x7ff6dac0, 0x7ff7382e, 0x7ff79287,
+ 0x7ff7e9df, 0x7ff83e4c, 0x7ff88fe0, 0x7ff8deb0, 0x7ff92ace, 0x7ff9744d,
+ 0x7ff9bb3f, 0x7ff9ffb8, 0x7ffa41c7, 0x7ffa817f, 0x7ffabef0, 0x7ffafa2b,
+ 0x7ffb3341, 0x7ffb6a40, 0x7ffb9f38, 0x7ffbd23a, 0x7ffc0353, 0x7ffc3292,
+ 0x7ffc6005, 0x7ffc8bba, 0x7ffcb5bf, 0x7ffcde21, 0x7ffd04ed, 0x7ffd2a30,
+ 0x7ffd4df5, 0x7ffd704a, 0x7ffd9139, 0x7ffdb0cf, 0x7ffdcf16, 0x7ffdec19,
+ 0x7ffe07e4, 0x7ffe2280, 0x7ffe3bf8, 0x7ffe5456, 0x7ffe6ba3, 0x7ffe81e8,
+ 0x7ffe9730, 0x7ffeab82, 0x7ffebee7, 0x7ffed169, 0x7ffee30e, 0x7ffef3e0,
+ 0x7fff03e5, 0x7fff1326, 0x7fff21aa, 0x7fff2f78, 0x7fff3c96, 0x7fff490d,
+ 0x7fff54e1, 0x7fff601a, 0x7fff6abe, 0x7fff74d3, 0x7fff7e5e, 0x7fff8765,
+ 0x7fff8fee, 0x7fff97fe, 0x7fff9f9b, 0x7fffa6c8, 0x7fffad8b, 0x7fffb3e9,
+ 0x7fffb9e5, 0x7fffbf85, 0x7fffc4cd, 0x7fffc9c0, 0x7fffce64, 0x7fffd2ba,
+ 0x7fffd6c8, 0x7fffda90, 0x7fffde16, 0x7fffe15e, 0x7fffe46a, 0x7fffe73d,
+ 0x7fffe9db, 0x7fffec47, 0x7fffee82, 0x7ffff091, 0x7ffff274, 0x7ffff42f,
+ 0x7ffff5c4, 0x7ffff736, 0x7ffff885, 0x7ffff9b5, 0x7ffffac7, 0x7ffffbbe,
+ 0x7ffffc9a, 0x7ffffd5f, 0x7ffffe0c, 0x7ffffea5, 0x7fffff2a, 0x7fffff9c};
const WORD32 ixheaacd_kbd_win1024[1024] = {
- 0x000999dc, 0x000e1719, 0x0011ec91, 0x00157689, 0x0018def4, 0x001c3697,
- 0x001f85d7, 0x0022d516, 0x00262cba, 0x00298cc1, 0x002cf52b, 0x00306e5c,
- 0x0033f854, 0x00379314, 0x003b3636, 0x003ef283, 0x0042bf97, 0x0046a5d6,
- 0x004a9478, 0x004ea4a8, 0x0052c59f, 0x0056f75d, 0x005b4245, 0x005fa658,
- 0x00642395, 0x0068b19a, 0x006d58c8, 0x00722185, 0x0076fb08, 0x007bedb6,
- 0x0080f98f, 0x00861e92, 0x008b5cbf, 0x0090bc7a, 0x00963560, 0x009bc770,
- 0x00a172ab, 0x00a73710, 0x00ad1d03, 0x00b31c21, 0x00b93ccc, 0x00bf76a2,
- 0x00c5c9a2, 0x00cc4694, 0x00d2d44d, 0x00d98393, 0x00e05468, 0x00e746cb,
- 0x00ee5258, 0x00f57f72, 0x00fcce1b, 0x01043e53, 0x010bc7b3, 0x01137b07,
- 0x011b4783, 0x0123358f, 0x012b4527, 0x01337eb1, 0x013bd167, 0x014445a9,
- 0x014ce3dd, 0x0155a39f, 0x015e84ef, 0x016787cd, 0x0170b49d, 0x0179fa97,
- 0x018372e5, 0x018d045f, 0x0196bfc9, 0x01a09cc3, 0x01aaa3ad, 0x01b4d487,
- 0x01bf26f1, 0x01c99ae9, 0x01d44135, 0x01df090f, 0x01e9f277, 0x01f50e33,
- 0x02004b7f, 0x020bb2bb, 0x02173b83, 0x0222f6a3, 0x022ed353, 0x023ae253,
- 0x024712e3, 0x025375c7, 0x025ffa3b, 0x026cb103, 0x02798957, 0x02869403,
- 0x0293c89f, 0x02a12f8f, 0x02aeb80f, 0x02bc72e3, 0x02ca57a7, 0x02d8665f,
- 0x02e6a767, 0x02f51267, 0x0303afb7, 0x031276fb, 0x0321682f, 0x0330941b,
- 0x033fe197, 0x034f69cb, 0x035f1bef, 0x036ef803, 0x037f0ed3, 0x038f4f93,
- 0x039fc2a7, 0x03b05faf, 0x03c1376b, 0x03d2391b, 0x03e36d23, 0x03f4dbdf,
- 0x0406748f, 0x04183f8f, 0x042a3ce7, 0x043c6c97, 0x044ece97, 0x04616b57,
- 0x047431ff, 0x04873367, 0x049a671f, 0x04adcd2f, 0x04c1658f, 0x04d538af,
- 0x04e935b7, 0x04fd75df, 0x0511dfff, 0x052684cf, 0x053b6457, 0x05506dd7,
- 0x0565ba6f, 0x057b395f, 0x0590ea9f, 0x05a6d697, 0x05bcf4e7, 0x05d34def,
- 0x05e9e1af, 0x0600b027, 0x0617b0f7, 0x062ee417, 0x06465a57, 0x065e02e7,
- 0x0675e637, 0x068e0437, 0x06a65cf7, 0x06bef067, 0x06d7b637, 0x06f0b6b7,
- 0x0709fa57, 0x07237047, 0x073d20ef, 0x07570c57, 0x07713ad7, 0x078b9ba7,
- 0x07a63737, 0x07c10d77, 0x07dc26df, 0x07f77af7, 0x0813015f, 0x082ecaef,
- 0x084acf2f, 0x0867168f, 0x0883903f, 0x08a04d0f, 0x08bd449f, 0x08da76df,
- 0x08f7ec2f, 0x09159c4f, 0x0933870f, 0x0951b4ff, 0x0970153f, 0x098ec0ff,
- 0x09ad9f0f, 0x09ccc02f, 0x09ec247f, 0x0a0bc37f, 0x0a2b9d3f, 0x0a4bba0f,
- 0x0a6c19ff, 0x0a8cac4f, 0x0aad8a0f, 0x0acea28f, 0x0aeff5bf, 0x0b118c1f,
- 0x0b335d1f, 0x0b55714f, 0x0b77c88f, 0x0b9a5a8f, 0x0bbd2f9f, 0x0be03f6f,
- 0x0c03925f, 0x0c27285f, 0x0c4af91f, 0x0c6f0cff, 0x0c9363ef, 0x0cb7f59f,
- 0x0cdcca6f, 0x0d01e25f, 0x0d2734ff, 0x0d4ccaaf, 0x0d729b2f, 0x0d98b71f,
- 0x0dbf0dbf, 0x0de59f2f, 0x0e0c7c0f, 0x0e3393af, 0x0e5aee5f, 0x0e8283cf,
- 0x0eaa64bf, 0x0ed2806f, 0x0efad6cf, 0x0f2378af, 0x0f4c553f, 0x0f7574ef,
- 0x0f9ecf5f, 0x0fc8754f, 0x0ff255ef, 0x101c79bf, 0x1046d81f, 0x107179bf,
- 0x109c5e5f, 0x10c7863f, 0x10f2e8bf, 0x111e8e5f, 0x114a771f, 0x1176a2ff,
- 0x11a3097f, 0x11cfb33f, 0x11fc979f, 0x1229c77f, 0x125729bf, 0x1284d75f,
- 0x12b2bfdf, 0x12e0eb5f, 0x130f5a1f, 0x133e037f, 0x136ce77f, 0x139c171f,
- 0x13cb817f, 0x13fb267f, 0x142b0e9f, 0x145b39df, 0x148b9fdf, 0x14bc48ff,
- 0x14ed2cbf, 0x151e539f, 0x154fbd9f, 0x158159ff, 0x15b341df, 0x15e55bff,
- 0x1617c1bf, 0x164a59bf, 0x167d34df, 0x16b0531f, 0x16e3a39f, 0x17173fbf,
- 0x174b0e1f, 0x177f1f9f, 0x17b36bdf, 0x17e7f2bf, 0x181cbcbf, 0x1851c19f,
- 0x1887011f, 0x18bc7b3f, 0x18f2389f, 0x1928309f, 0x195e5aff, 0x1994c87f,
- 0x19cb709f, 0x1a02539f, 0x1a39713f, 0x1a70d1ff, 0x1aa864ff, 0x1ae032df,
- 0x1b183b5f, 0x1b507e9f, 0x1b88fc9f, 0x1bc1acdf, 0x1bfaa03f, 0x1c33c5ff,
- 0x1c6d267f, 0x1ca6c19f, 0x1ce0977f, 0x1d1a9fbf, 0x1d54e2bf, 0x1d8f57ff,
- 0x1dca105f, 0x1e04f29f, 0x1e40181f, 0x1e7b677f, 0x1eb6f9ff, 0x1ef2b65f,
- 0x1f2ead9f, 0x1f6adf7f, 0x1fa73b3f, 0x1fe3d1bf, 0x2020a2ff, 0x205d9e3f,
- 0x209ad43f, 0x20d83c7f, 0x2115d6ff, 0x2153a3ff, 0x2191a33f, 0x21cfd4bf,
- 0x220e38bf, 0x224cceff, 0x228b977f, 0x22ca923f, 0x2309bf7f, 0x234916bf,
- 0x2388a03f, 0x23c85c3f, 0x240841ff, 0x244859ff, 0x2488a47f, 0x24c918ff,
- 0x2509bf7f, 0x254a903f, 0x258b8aff, 0x25ccb7bf, 0x260e0ebf, 0x264f8f7f,
- 0x269142bf, 0x26d31fbf, 0x27151e7f, 0x27574f7f, 0x2799aa7f, 0x27dc2f3f,
- 0x281eddff, 0x2861b6bf, 0x28a4b13f, 0x28e7ddbf, 0x292b2bff, 0x296ea43f,
- 0x29b23dbf, 0x29f6017f, 0x2a39eeff, 0x2a7dfe3f, 0x2ac2373f, 0x2b0691ff,
- 0x2b4b0dff, 0x2b8fb43f, 0x2bd4737f, 0x2c195cbf, 0x2c5e6fff, 0x2ca39c3f,
- 0x2ce8ea3f, 0x2d2e61ff, 0x2d73f2ff, 0x2db9a5bf, 0x2dff79bf, 0x2e4566ff,
- 0x2e8b7e3f, 0x2ed1aebf, 0x2f1800bf, 0x2f5e6bbf, 0x2fa4efff, 0x2feb9e3f,
- 0x30325d3f, 0x30793dbf, 0x30c0377f, 0x31074a7f, 0x314e7eff, 0x3195cc7f,
- 0x31dd2aff, 0x3224aabf, 0x326c3b7f, 0x32b3edbf, 0x32fbb0ff, 0x33438cff,
- 0x338b827f, 0x33d388bf, 0x341ba7ff, 0x3463d7ff, 0x34ac213f, 0x34f483bf,
- 0x353cee7f, 0x3585727f, 0x35ce073f, 0x3616b53f, 0x365f6bbf, 0x36a832bf,
- 0x36f112ff, 0x3739fbbf, 0x3782f4ff, 0x37cbff3f, 0x38151a3f, 0x385e3dbf,
- 0x38a77a3f, 0x38f0b6bf, 0x393a03ff, 0x398361ff, 0x39ccc87f, 0x3a16377f,
- 0x3a5faebf, 0x3aa936bf, 0x3af2bebf, 0x3b3c577f, 0x3b85f8bf, 0x3bcfa27f,
- 0x3c194bff, 0x3c63063f, 0x3cacc0bf, 0x3cf6837f, 0x3d40463f, 0x3d8a117f,
- 0x3dd3e4ff, 0x3e1db87f, 0x3e678bff, 0x3eb167ff, 0x3efb3b7f, 0x3f45177f,
- 0x3f8efbbf, 0x3fd8d77f, 0x4022b37f, 0x406c8f7f, 0x40b66b7f, 0x4100477f,
- 0x414a1aff, 0x4193f6ff, 0x41ddc1ff, 0x4227957f, 0x4271607f, 0x42bb237f,
- 0x4304e5ff, 0x434ea07f, 0x4398527f, 0x43e1fbff, 0x442ba57f, 0x44753e7f,
- 0x44beceff, 0x45085f7f, 0x4551deff, 0x459b55ff, 0x45e4c4ff, 0x462e22ff,
- 0x4677817f, 0x46c0c5ff, 0x470a027f, 0x475336ff, 0x479c59ff, 0x47e56cff,
- 0x482e6e7f, 0x487767ff, 0x48c0487f, 0x49091fff, 0x4951e77f, 0x499a9d7f,
- 0x49e33aff, 0x4a2bc6ff, 0x4a744aff, 0x4abcad7f, 0x4b05077f, 0x4b4d487f,
- 0x4b956fff, 0x4bdd86ff, 0x4c2584ff, 0x4c6d71ff, 0x4cb545ff, 0x4cfd007f,
- 0x4d44a1ff, 0x4d8c327f, 0x4dd3a1ff, 0x4e1af7ff, 0x4e62347f, 0x4ea9587f,
- 0x4ef062ff, 0x4f3753ff, 0x4f7e23ff, 0x4fc4da7f, 0x500b77ff, 0x5051f3ff,
- 0x50984dff, 0x50de8f7f, 0x5124aeff, 0x516ab57f, 0x51b09a7f, 0x51f6557f,
- 0x523bff7f, 0x52817fff, 0x52c6de7f, 0x530c1b7f, 0x535136ff, 0x539630ff,
- 0x53db017f, 0x541fafff, 0x546444ff, 0x54a8a7ff, 0x54ece97f, 0x5531097f,
- 0x5574ff7f, 0x55b8d3ff, 0x55fc7e7f, 0x5640077f, 0x56835dff, 0x56c692ff,
- 0x57099dff, 0x574c877f, 0x578f3eff, 0x57d1cbff, 0x58142f7f, 0x585670ff,
- 0x5898807f, 0x58da65ff, 0x591c18ff, 0x595daaff, 0x599f09ff, 0x59e03f7f,
- 0x5a21427f, 0x5a621b7f, 0x5aa2ca7f, 0x5ae3477f, 0x5b2391ff, 0x5b63b27f,
- 0x5ba3a07f, 0x5be3647f, 0x5c22ee7f, 0x5c624dff, 0x5ca17aff, 0x5ce075ff,
- 0x5d1f46ff, 0x5d5ddcff, 0x5d9c40ff, 0x5dda727f, 0x5e187a7f, 0x5e5646ff,
- 0x5e93e1ff, 0x5ed1417f, 0x5f0e777f, 0x5f4b72ff, 0x5f883b7f, 0x5fc4d1ff,
- 0x60012dff, 0x603d577f, 0x607945ff, 0x60b5027f, 0x60f0847f, 0x612bd3ff,
- 0x6166e87f, 0x61a1caff, 0x61dc727f, 0x6216deff, 0x6251117f, 0x628b117f,
- 0x62c4d67f, 0x62fe68ff, 0x6337b8ff, 0x6370cdff, 0x63a9b07f, 0x63e2587f,
- 0x641abcff, 0x6452ef7f, 0x648ae77f, 0x64c29bff, 0x64fa1dff, 0x65315d7f,
- 0x65686a7f, 0x659f33ff, 0x65d5c2ff, 0x660c177f, 0x664230ff, 0x6678077f,
- 0x66ada2ff, 0x66e3047f, 0x67182a7f, 0x674d0dff, 0x6781b67f, 0x67b61b7f,
- 0x67ea4e7f, 0x681e367f, 0x6851eb7f, 0x68855d7f, 0x68b88c7f, 0x68eb80ff,
- 0x691e31ff, 0x6950a87f, 0x6982dbff, 0x69b4d47f, 0x69e6927f, 0x6a1804ff,
- 0x6a493c7f, 0x6a7a397f, 0x6aaaf37f, 0x6adb69ff, 0x6b0ba5ff, 0x6b3b9eff,
- 0x6b6b54ff, 0x6b9ac77f, 0x6bc9ff7f, 0x6bf8f47f, 0x6c27ae7f, 0x6c56257f,
- 0x6c84597f, 0x6cb24a7f, 0x6ce0007f, 0x6d0d6aff, 0x6d3a9aff, 0x6d678fff,
- 0x6d9439ff, 0x6dc0a8ff, 0x6decd47f, 0x6e18bd7f, 0x6e446b7f, 0x6e6fcdff,
- 0x6e9af57f, 0x6ec5da7f, 0x6ef07bff, 0x6f1ae2ff, 0x6f44fdff, 0x6f6edeff,
- 0x6f987c7f, 0x6fc1d6ff, 0x6feaf67f, 0x7013d2ff, 0x703c63ff, 0x7064ba7f,
- 0x708cd5ff, 0x70b4a67f, 0x70dc3bff, 0x71038dff, 0x712a9d7f, 0x7151697f,
- 0x7177faff, 0x719e40ff, 0x71c44bff, 0x71ea1c7f, 0x720fa17f, 0x7234eb7f,
- 0x7259f27f, 0x727eb67f, 0x72a33fff, 0x72c785ff, 0x72eb897f, 0x730f517f,
- 0x7332d6ff, 0x735618ff, 0x737917ff, 0x739bdc7f, 0x73be65ff, 0x73e0a3ff,
- 0x7402a77f, 0x74246fff, 0x7445f57f, 0x746737ff, 0x74883fff, 0x74a9047f,
- 0x74c98e7f, 0x74e9d4ff, 0x7509e0ff, 0x7529a9ff, 0x7549387f, 0x75688bff,
- 0x75879c7f, 0x75a6697f, 0x75c4fbff, 0x75e353ff, 0x760170ff, 0x761f4aff,
- 0x763cea7f, 0x765a467f, 0x767767ff, 0x76944eff, 0x76b0faff, 0x76cd6bff,
- 0x76e99a7f, 0x7705967f, 0x77214eff, 0x773cccff, 0x7758107f, 0x7773107f,
- 0x778dde7f, 0x77a8717f, 0x77c2c9ff, 0x77dce7ff, 0x77f6c27f, 0x78106a7f,
- 0x7829d87f, 0x78430aff, 0x785c0b7f, 0x7874c8ff, 0x788d53ff, 0x78a5a47f,
- 0x78bdb9ff, 0x78d594ff, 0x78ed3d7f, 0x7904ab7f, 0x791be6ff, 0x7932df7f,
- 0x7949adff, 0x796038ff, 0x79769a7f, 0x798cb8ff, 0x79a2acff, 0x79b85e7f,
- 0x79cde5ff, 0x79e3327f, 0x79f84c7f, 0x7a0d2bff, 0x7a21d97f, 0x7a36547f,
- 0x7a4a947f, 0x7a5eaa7f, 0x7a7285ff, 0x7a862f7f, 0x7a99ae7f, 0x7aacf2ff,
- 0x7ac004ff, 0x7ad2e4ff, 0x7ae5927f, 0x7af80dff, 0x7b0a567f, 0x7b1c6cff,
- 0x7b2e597f, 0x7b400b7f, 0x7b51937f, 0x7b62f17f, 0x7b74147f, 0x7b850dff,
- 0x7b95d4ff, 0x7ba671ff, 0x7bb6dc7f, 0x7bc71d7f, 0x7bd72bff, 0x7be707ff,
- 0x7bf6b9ff, 0x7c0641ff, 0x7c15a07f, 0x7c24cc7f, 0x7c33ce7f, 0x7c429dff,
- 0x7c514bff, 0x7c5fc7ff, 0x7c6e197f, 0x7c7c417f, 0x7c8a3f7f, 0x7c980aff,
- 0x7ca5b4ff, 0x7cb3357f, 0x7cc08b7f, 0x7ccdb77f, 0x7cdab9ff, 0x7ce79a7f,
- 0x7cf448ff, 0x7d00d5ff, 0x7d0d38ff, 0x7d1979ff, 0x7d25917f, 0x7d317eff,
- 0x7d3d427f, 0x7d48e47f, 0x7d5464ff, 0x7d5fbb7f, 0x7d6aefff, 0x7d75faff,
- 0x7d80e47f, 0x7d8bac7f, 0x7d964a7f, 0x7da0c67f, 0x7dab217f, 0x7db55aff,
- 0x7dbf69ff, 0x7dc95fff, 0x7dd32c7f, 0x7ddcdf7f, 0x7de6687f, 0x7defcfff,
- 0x7df91e7f, 0x7e0242ff, 0x7e0b4dff, 0x7e1437ff, 0x7e1cffff, 0x7e25aeff,
- 0x7e2e33ff, 0x7e369fff, 0x7e3ef27f, 0x7e471b7f, 0x7e4f2aff, 0x7e57217f,
- 0x7e5ef5ff, 0x7e66b1ff, 0x7e6e4bff, 0x7e75ccff, 0x7e7d2c7f, 0x7e8472ff,
- 0x7e8b9fff, 0x7e92ab7f, 0x7e99a5ff, 0x7ea07f7f, 0x7ea73f7f, 0x7eadddff,
- 0x7eb46b7f, 0x7ebadfff, 0x7ec132ff, 0x7ec7757f, 0x7ecd95ff, 0x7ed3a5ff,
- 0x7ed99c7f, 0x7edf7a7f, 0x7ee53e7f, 0x7eeae9ff, 0x7ef07bff, 0x7ef5fd7f,
- 0x7efb657f, 0x7f00b47f, 0x7f05f27f, 0x7f0b177f, 0x7f10237f, 0x7f151e7f,
- 0x7f1a007f, 0x7f1ed17f, 0x7f2391ff, 0x7f2838ff, 0x7f2cc6ff, 0x7f31447f,
- 0x7f35b07f, 0x7f3a0c7f, 0x7f3e4eff, 0x7f42807f, 0x7f46997f, 0x7f4aa97f,
- 0x7f4ea07f, 0x7f52867f, 0x7f565bff, 0x7f5a20ff, 0x7f5dd4ff, 0x7f6177ff,
- 0x7f650a7f, 0x7f688bff, 0x7f6bfc7f, 0x7f6f547f, 0x7f72abff, 0x7f75ea7f,
- 0x7f7917ff, 0x7f7c34ff, 0x7f7f497f, 0x7f824d7f, 0x7f85407f, 0x7f882aff,
- 0x7f8afc7f, 0x7f8dc57f, 0x7f9085ff, 0x7f9335ff, 0x7f95d4ff, 0x7f9862ff,
- 0x7f9ae8ff, 0x7f9d667f, 0x7f9fd37f, 0x7fa22f7f, 0x7fa482ff, 0x7fa6cdff,
- 0x7fa9087f, 0x7fab3a7f, 0x7fad5bff, 0x7faf74ff, 0x7fb1857f, 0x7fb384ff,
- 0x7fb5847f, 0x7fb76aff, 0x7fb951ff, 0x7fbb277f, 0x7fbcf4ff, 0x7fbeb9ff,
- 0x7fc0767f, 0x7fc22a7f, 0x7fc3cdff, 0x7fc5717f, 0x7fc703ff, 0x7fc88e7f,
- 0x7fca107f, 0x7fcb91ff, 0x7fcd037f, 0x7fce6bff, 0x7fcfcc7f, 0x7fd1247f,
- 0x7fd273ff, 0x7fd3c37f, 0x7fd501ff, 0x7fd6387f, 0x7fd76eff, 0x7fd89cff,
- 0x7fd9c27f, 0x7fdadf7f, 0x7fdbf47f, 0x7fdd00ff, 0x7fde0d7f, 0x7fdf117f,
- 0x7fe00cff, 0x7fe1007f, 0x7fe1f37f, 0x7fe2de7f, 0x7fe3c0ff, 0x7fe49aff,
- 0x7fe574ff, 0x7fe646ff, 0x7fe7187f, 0x7fe7e1ff, 0x7fe8a2ff, 0x7fe963ff,
- 0x7fea1c7f, 0x7feacc7f, 0x7feb7c7f, 0x7fec247f, 0x7feccc7f, 0x7fed73ff,
- 0x7fee0aff, 0x7feea1ff, 0x7fef38ff, 0x7fefc77f, 0x7ff055ff, 0x7ff0dc7f,
- 0x7ff1627f, 0x7ff1e8ff, 0x7ff2667f, 0x7ff2dbff, 0x7ff3517f, 0x7ff3c6ff,
- 0x7ff433ff, 0x7ff4a0ff, 0x7ff50dff, 0x7ff572ff, 0x7ff5ceff, 0x7ff633ff,
- 0x7ff68fff, 0x7ff6ec7f, 0x7ff73fff, 0x7ff793ff, 0x7ff7e7ff, 0x7ff8337f,
- 0x7ff8877f, 0x7ff8ca7f, 0x7ff915ff, 0x7ff958ff, 0x7ff99bff, 0x7ff9df7f,
- 0x7ffa227f, 0x7ffa5cff, 0x7ffa97ff, 0x7ffad27f, 0x7ffb04ff, 0x7ffb3f7f,
- 0x7ffb71ff, 0x7ffba47f, 0x7ffbce7f, 0x7ffc007f, 0x7ffc2a7f, 0x7ffc547f,
- 0x7ffc7e7f, 0x7ffca87f, 0x7ffcc9ff, 0x7ffcf3ff, 0x7ffd157f, 0x7ffd36ff,
- 0x7ffd587f, 0x7ffd79ff, 0x7ffd9b7f, 0x7ffdb4ff, 0x7ffdcdff, 0x7ffdef7f,
- 0x7ffe087f, 0x7ffe21ff, 0x7ffe3aff, 0x7ffe4bff, 0x7ffe64ff, 0x7ffe7dff,
- 0x7ffe8eff, 0x7ffe9f7f, 0x7ffeb07f, 0x7ffec97f, 0x7ffeda7f, 0x7ffeeaff,
- 0x7ffef37f, 0x7fff047f, 0x7fff14ff, 0x7fff25ff, 0x7fff2e7f, 0x7fff3eff,
- 0x7fff477f, 0x7fff4fff, 0x7fff607f, 0x7fff68ff, 0x7fff717f, 0x7fff79ff,
- 0x7fff81ff, 0x7fff8a7f, 0x7fff92ff, 0x7fff9b7f, 0x7fffa37f, 0x7fffabff,
- 0x7fffabff, 0x7fffb47f, 0x7fffbcff, 0x7fffbcff, 0x7fffc57f, 0x7fffc57f,
- 0x7fffcd7f, 0x7fffcd7f, 0x7fffd5ff, 0x7fffd5ff, 0x7fffde7f, 0x7fffde7f,
- 0x7fffde7f, 0x7fffe6ff, 0x7fffe6ff, 0x7fffe6ff, 0x7fffeeff, 0x7fffeeff,
- 0x7fffeeff, 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f,
- 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff,
- 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x000999dc, 0x000e1719, 0x0011ec91, 0x00157689, 0x0018def4, 0x001c3697,
+ 0x001f85d7, 0x0022d516, 0x00262cba, 0x00298cc1, 0x002cf52b, 0x00306e5c,
+ 0x0033f854, 0x00379314, 0x003b3636, 0x003ef283, 0x0042bf97, 0x0046a5d6,
+ 0x004a9478, 0x004ea4a8, 0x0052c59f, 0x0056f75d, 0x005b4245, 0x005fa658,
+ 0x00642395, 0x0068b19a, 0x006d58c8, 0x00722185, 0x0076fb08, 0x007bedb6,
+ 0x0080f98f, 0x00861e92, 0x008b5cbf, 0x0090bc7a, 0x00963560, 0x009bc770,
+ 0x00a172ab, 0x00a73710, 0x00ad1d03, 0x00b31c21, 0x00b93ccc, 0x00bf76a2,
+ 0x00c5c9a2, 0x00cc4694, 0x00d2d44d, 0x00d98393, 0x00e05468, 0x00e746cb,
+ 0x00ee5258, 0x00f57f72, 0x00fcce1b, 0x01043e53, 0x010bc7b3, 0x01137b07,
+ 0x011b4783, 0x0123358f, 0x012b4527, 0x01337eb1, 0x013bd167, 0x014445a9,
+ 0x014ce3dd, 0x0155a39f, 0x015e84ef, 0x016787cd, 0x0170b49d, 0x0179fa97,
+ 0x018372e5, 0x018d045f, 0x0196bfc9, 0x01a09cc3, 0x01aaa3ad, 0x01b4d487,
+ 0x01bf26f1, 0x01c99ae9, 0x01d44135, 0x01df090f, 0x01e9f277, 0x01f50e33,
+ 0x02004b7f, 0x020bb2bb, 0x02173b83, 0x0222f6a3, 0x022ed353, 0x023ae253,
+ 0x024712e3, 0x025375c7, 0x025ffa3b, 0x026cb103, 0x02798957, 0x02869403,
+ 0x0293c89f, 0x02a12f8f, 0x02aeb80f, 0x02bc72e3, 0x02ca57a7, 0x02d8665f,
+ 0x02e6a767, 0x02f51267, 0x0303afb7, 0x031276fb, 0x0321682f, 0x0330941b,
+ 0x033fe197, 0x034f69cb, 0x035f1bef, 0x036ef803, 0x037f0ed3, 0x038f4f93,
+ 0x039fc2a7, 0x03b05faf, 0x03c1376b, 0x03d2391b, 0x03e36d23, 0x03f4dbdf,
+ 0x0406748f, 0x04183f8f, 0x042a3ce7, 0x043c6c97, 0x044ece97, 0x04616b57,
+ 0x047431ff, 0x04873367, 0x049a671f, 0x04adcd2f, 0x04c1658f, 0x04d538af,
+ 0x04e935b7, 0x04fd75df, 0x0511dfff, 0x052684cf, 0x053b6457, 0x05506dd7,
+ 0x0565ba6f, 0x057b395f, 0x0590ea9f, 0x05a6d697, 0x05bcf4e7, 0x05d34def,
+ 0x05e9e1af, 0x0600b027, 0x0617b0f7, 0x062ee417, 0x06465a57, 0x065e02e7,
+ 0x0675e637, 0x068e0437, 0x06a65cf7, 0x06bef067, 0x06d7b637, 0x06f0b6b7,
+ 0x0709fa57, 0x07237047, 0x073d20ef, 0x07570c57, 0x07713ad7, 0x078b9ba7,
+ 0x07a63737, 0x07c10d77, 0x07dc26df, 0x07f77af7, 0x0813015f, 0x082ecaef,
+ 0x084acf2f, 0x0867168f, 0x0883903f, 0x08a04d0f, 0x08bd449f, 0x08da76df,
+ 0x08f7ec2f, 0x09159c4f, 0x0933870f, 0x0951b4ff, 0x0970153f, 0x098ec0ff,
+ 0x09ad9f0f, 0x09ccc02f, 0x09ec247f, 0x0a0bc37f, 0x0a2b9d3f, 0x0a4bba0f,
+ 0x0a6c19ff, 0x0a8cac4f, 0x0aad8a0f, 0x0acea28f, 0x0aeff5bf, 0x0b118c1f,
+ 0x0b335d1f, 0x0b55714f, 0x0b77c88f, 0x0b9a5a8f, 0x0bbd2f9f, 0x0be03f6f,
+ 0x0c03925f, 0x0c27285f, 0x0c4af91f, 0x0c6f0cff, 0x0c9363ef, 0x0cb7f59f,
+ 0x0cdcca6f, 0x0d01e25f, 0x0d2734ff, 0x0d4ccaaf, 0x0d729b2f, 0x0d98b71f,
+ 0x0dbf0dbf, 0x0de59f2f, 0x0e0c7c0f, 0x0e3393af, 0x0e5aee5f, 0x0e8283cf,
+ 0x0eaa64bf, 0x0ed2806f, 0x0efad6cf, 0x0f2378af, 0x0f4c553f, 0x0f7574ef,
+ 0x0f9ecf5f, 0x0fc8754f, 0x0ff255ef, 0x101c79bf, 0x1046d81f, 0x107179bf,
+ 0x109c5e5f, 0x10c7863f, 0x10f2e8bf, 0x111e8e5f, 0x114a771f, 0x1176a2ff,
+ 0x11a3097f, 0x11cfb33f, 0x11fc979f, 0x1229c77f, 0x125729bf, 0x1284d75f,
+ 0x12b2bfdf, 0x12e0eb5f, 0x130f5a1f, 0x133e037f, 0x136ce77f, 0x139c171f,
+ 0x13cb817f, 0x13fb267f, 0x142b0e9f, 0x145b39df, 0x148b9fdf, 0x14bc48ff,
+ 0x14ed2cbf, 0x151e539f, 0x154fbd9f, 0x158159ff, 0x15b341df, 0x15e55bff,
+ 0x1617c1bf, 0x164a59bf, 0x167d34df, 0x16b0531f, 0x16e3a39f, 0x17173fbf,
+ 0x174b0e1f, 0x177f1f9f, 0x17b36bdf, 0x17e7f2bf, 0x181cbcbf, 0x1851c19f,
+ 0x1887011f, 0x18bc7b3f, 0x18f2389f, 0x1928309f, 0x195e5aff, 0x1994c87f,
+ 0x19cb709f, 0x1a02539f, 0x1a39713f, 0x1a70d1ff, 0x1aa864ff, 0x1ae032df,
+ 0x1b183b5f, 0x1b507e9f, 0x1b88fc9f, 0x1bc1acdf, 0x1bfaa03f, 0x1c33c5ff,
+ 0x1c6d267f, 0x1ca6c19f, 0x1ce0977f, 0x1d1a9fbf, 0x1d54e2bf, 0x1d8f57ff,
+ 0x1dca105f, 0x1e04f29f, 0x1e40181f, 0x1e7b677f, 0x1eb6f9ff, 0x1ef2b65f,
+ 0x1f2ead9f, 0x1f6adf7f, 0x1fa73b3f, 0x1fe3d1bf, 0x2020a2ff, 0x205d9e3f,
+ 0x209ad43f, 0x20d83c7f, 0x2115d6ff, 0x2153a3ff, 0x2191a33f, 0x21cfd4bf,
+ 0x220e38bf, 0x224cceff, 0x228b977f, 0x22ca923f, 0x2309bf7f, 0x234916bf,
+ 0x2388a03f, 0x23c85c3f, 0x240841ff, 0x244859ff, 0x2488a47f, 0x24c918ff,
+ 0x2509bf7f, 0x254a903f, 0x258b8aff, 0x25ccb7bf, 0x260e0ebf, 0x264f8f7f,
+ 0x269142bf, 0x26d31fbf, 0x27151e7f, 0x27574f7f, 0x2799aa7f, 0x27dc2f3f,
+ 0x281eddff, 0x2861b6bf, 0x28a4b13f, 0x28e7ddbf, 0x292b2bff, 0x296ea43f,
+ 0x29b23dbf, 0x29f6017f, 0x2a39eeff, 0x2a7dfe3f, 0x2ac2373f, 0x2b0691ff,
+ 0x2b4b0dff, 0x2b8fb43f, 0x2bd4737f, 0x2c195cbf, 0x2c5e6fff, 0x2ca39c3f,
+ 0x2ce8ea3f, 0x2d2e61ff, 0x2d73f2ff, 0x2db9a5bf, 0x2dff79bf, 0x2e4566ff,
+ 0x2e8b7e3f, 0x2ed1aebf, 0x2f1800bf, 0x2f5e6bbf, 0x2fa4efff, 0x2feb9e3f,
+ 0x30325d3f, 0x30793dbf, 0x30c0377f, 0x31074a7f, 0x314e7eff, 0x3195cc7f,
+ 0x31dd2aff, 0x3224aabf, 0x326c3b7f, 0x32b3edbf, 0x32fbb0ff, 0x33438cff,
+ 0x338b827f, 0x33d388bf, 0x341ba7ff, 0x3463d7ff, 0x34ac213f, 0x34f483bf,
+ 0x353cee7f, 0x3585727f, 0x35ce073f, 0x3616b53f, 0x365f6bbf, 0x36a832bf,
+ 0x36f112ff, 0x3739fbbf, 0x3782f4ff, 0x37cbff3f, 0x38151a3f, 0x385e3dbf,
+ 0x38a77a3f, 0x38f0b6bf, 0x393a03ff, 0x398361ff, 0x39ccc87f, 0x3a16377f,
+ 0x3a5faebf, 0x3aa936bf, 0x3af2bebf, 0x3b3c577f, 0x3b85f8bf, 0x3bcfa27f,
+ 0x3c194bff, 0x3c63063f, 0x3cacc0bf, 0x3cf6837f, 0x3d40463f, 0x3d8a117f,
+ 0x3dd3e4ff, 0x3e1db87f, 0x3e678bff, 0x3eb167ff, 0x3efb3b7f, 0x3f45177f,
+ 0x3f8efbbf, 0x3fd8d77f, 0x4022b37f, 0x406c8f7f, 0x40b66b7f, 0x4100477f,
+ 0x414a1aff, 0x4193f6ff, 0x41ddc1ff, 0x4227957f, 0x4271607f, 0x42bb237f,
+ 0x4304e5ff, 0x434ea07f, 0x4398527f, 0x43e1fbff, 0x442ba57f, 0x44753e7f,
+ 0x44beceff, 0x45085f7f, 0x4551deff, 0x459b55ff, 0x45e4c4ff, 0x462e22ff,
+ 0x4677817f, 0x46c0c5ff, 0x470a027f, 0x475336ff, 0x479c59ff, 0x47e56cff,
+ 0x482e6e7f, 0x487767ff, 0x48c0487f, 0x49091fff, 0x4951e77f, 0x499a9d7f,
+ 0x49e33aff, 0x4a2bc6ff, 0x4a744aff, 0x4abcad7f, 0x4b05077f, 0x4b4d487f,
+ 0x4b956fff, 0x4bdd86ff, 0x4c2584ff, 0x4c6d71ff, 0x4cb545ff, 0x4cfd007f,
+ 0x4d44a1ff, 0x4d8c327f, 0x4dd3a1ff, 0x4e1af7ff, 0x4e62347f, 0x4ea9587f,
+ 0x4ef062ff, 0x4f3753ff, 0x4f7e23ff, 0x4fc4da7f, 0x500b77ff, 0x5051f3ff,
+ 0x50984dff, 0x50de8f7f, 0x5124aeff, 0x516ab57f, 0x51b09a7f, 0x51f6557f,
+ 0x523bff7f, 0x52817fff, 0x52c6de7f, 0x530c1b7f, 0x535136ff, 0x539630ff,
+ 0x53db017f, 0x541fafff, 0x546444ff, 0x54a8a7ff, 0x54ece97f, 0x5531097f,
+ 0x5574ff7f, 0x55b8d3ff, 0x55fc7e7f, 0x5640077f, 0x56835dff, 0x56c692ff,
+ 0x57099dff, 0x574c877f, 0x578f3eff, 0x57d1cbff, 0x58142f7f, 0x585670ff,
+ 0x5898807f, 0x58da65ff, 0x591c18ff, 0x595daaff, 0x599f09ff, 0x59e03f7f,
+ 0x5a21427f, 0x5a621b7f, 0x5aa2ca7f, 0x5ae3477f, 0x5b2391ff, 0x5b63b27f,
+ 0x5ba3a07f, 0x5be3647f, 0x5c22ee7f, 0x5c624dff, 0x5ca17aff, 0x5ce075ff,
+ 0x5d1f46ff, 0x5d5ddcff, 0x5d9c40ff, 0x5dda727f, 0x5e187a7f, 0x5e5646ff,
+ 0x5e93e1ff, 0x5ed1417f, 0x5f0e777f, 0x5f4b72ff, 0x5f883b7f, 0x5fc4d1ff,
+ 0x60012dff, 0x603d577f, 0x607945ff, 0x60b5027f, 0x60f0847f, 0x612bd3ff,
+ 0x6166e87f, 0x61a1caff, 0x61dc727f, 0x6216deff, 0x6251117f, 0x628b117f,
+ 0x62c4d67f, 0x62fe68ff, 0x6337b8ff, 0x6370cdff, 0x63a9b07f, 0x63e2587f,
+ 0x641abcff, 0x6452ef7f, 0x648ae77f, 0x64c29bff, 0x64fa1dff, 0x65315d7f,
+ 0x65686a7f, 0x659f33ff, 0x65d5c2ff, 0x660c177f, 0x664230ff, 0x6678077f,
+ 0x66ada2ff, 0x66e3047f, 0x67182a7f, 0x674d0dff, 0x6781b67f, 0x67b61b7f,
+ 0x67ea4e7f, 0x681e367f, 0x6851eb7f, 0x68855d7f, 0x68b88c7f, 0x68eb80ff,
+ 0x691e31ff, 0x6950a87f, 0x6982dbff, 0x69b4d47f, 0x69e6927f, 0x6a1804ff,
+ 0x6a493c7f, 0x6a7a397f, 0x6aaaf37f, 0x6adb69ff, 0x6b0ba5ff, 0x6b3b9eff,
+ 0x6b6b54ff, 0x6b9ac77f, 0x6bc9ff7f, 0x6bf8f47f, 0x6c27ae7f, 0x6c56257f,
+ 0x6c84597f, 0x6cb24a7f, 0x6ce0007f, 0x6d0d6aff, 0x6d3a9aff, 0x6d678fff,
+ 0x6d9439ff, 0x6dc0a8ff, 0x6decd47f, 0x6e18bd7f, 0x6e446b7f, 0x6e6fcdff,
+ 0x6e9af57f, 0x6ec5da7f, 0x6ef07bff, 0x6f1ae2ff, 0x6f44fdff, 0x6f6edeff,
+ 0x6f987c7f, 0x6fc1d6ff, 0x6feaf67f, 0x7013d2ff, 0x703c63ff, 0x7064ba7f,
+ 0x708cd5ff, 0x70b4a67f, 0x70dc3bff, 0x71038dff, 0x712a9d7f, 0x7151697f,
+ 0x7177faff, 0x719e40ff, 0x71c44bff, 0x71ea1c7f, 0x720fa17f, 0x7234eb7f,
+ 0x7259f27f, 0x727eb67f, 0x72a33fff, 0x72c785ff, 0x72eb897f, 0x730f517f,
+ 0x7332d6ff, 0x735618ff, 0x737917ff, 0x739bdc7f, 0x73be65ff, 0x73e0a3ff,
+ 0x7402a77f, 0x74246fff, 0x7445f57f, 0x746737ff, 0x74883fff, 0x74a9047f,
+ 0x74c98e7f, 0x74e9d4ff, 0x7509e0ff, 0x7529a9ff, 0x7549387f, 0x75688bff,
+ 0x75879c7f, 0x75a6697f, 0x75c4fbff, 0x75e353ff, 0x760170ff, 0x761f4aff,
+ 0x763cea7f, 0x765a467f, 0x767767ff, 0x76944eff, 0x76b0faff, 0x76cd6bff,
+ 0x76e99a7f, 0x7705967f, 0x77214eff, 0x773cccff, 0x7758107f, 0x7773107f,
+ 0x778dde7f, 0x77a8717f, 0x77c2c9ff, 0x77dce7ff, 0x77f6c27f, 0x78106a7f,
+ 0x7829d87f, 0x78430aff, 0x785c0b7f, 0x7874c8ff, 0x788d53ff, 0x78a5a47f,
+ 0x78bdb9ff, 0x78d594ff, 0x78ed3d7f, 0x7904ab7f, 0x791be6ff, 0x7932df7f,
+ 0x7949adff, 0x796038ff, 0x79769a7f, 0x798cb8ff, 0x79a2acff, 0x79b85e7f,
+ 0x79cde5ff, 0x79e3327f, 0x79f84c7f, 0x7a0d2bff, 0x7a21d97f, 0x7a36547f,
+ 0x7a4a947f, 0x7a5eaa7f, 0x7a7285ff, 0x7a862f7f, 0x7a99ae7f, 0x7aacf2ff,
+ 0x7ac004ff, 0x7ad2e4ff, 0x7ae5927f, 0x7af80dff, 0x7b0a567f, 0x7b1c6cff,
+ 0x7b2e597f, 0x7b400b7f, 0x7b51937f, 0x7b62f17f, 0x7b74147f, 0x7b850dff,
+ 0x7b95d4ff, 0x7ba671ff, 0x7bb6dc7f, 0x7bc71d7f, 0x7bd72bff, 0x7be707ff,
+ 0x7bf6b9ff, 0x7c0641ff, 0x7c15a07f, 0x7c24cc7f, 0x7c33ce7f, 0x7c429dff,
+ 0x7c514bff, 0x7c5fc7ff, 0x7c6e197f, 0x7c7c417f, 0x7c8a3f7f, 0x7c980aff,
+ 0x7ca5b4ff, 0x7cb3357f, 0x7cc08b7f, 0x7ccdb77f, 0x7cdab9ff, 0x7ce79a7f,
+ 0x7cf448ff, 0x7d00d5ff, 0x7d0d38ff, 0x7d1979ff, 0x7d25917f, 0x7d317eff,
+ 0x7d3d427f, 0x7d48e47f, 0x7d5464ff, 0x7d5fbb7f, 0x7d6aefff, 0x7d75faff,
+ 0x7d80e47f, 0x7d8bac7f, 0x7d964a7f, 0x7da0c67f, 0x7dab217f, 0x7db55aff,
+ 0x7dbf69ff, 0x7dc95fff, 0x7dd32c7f, 0x7ddcdf7f, 0x7de6687f, 0x7defcfff,
+ 0x7df91e7f, 0x7e0242ff, 0x7e0b4dff, 0x7e1437ff, 0x7e1cffff, 0x7e25aeff,
+ 0x7e2e33ff, 0x7e369fff, 0x7e3ef27f, 0x7e471b7f, 0x7e4f2aff, 0x7e57217f,
+ 0x7e5ef5ff, 0x7e66b1ff, 0x7e6e4bff, 0x7e75ccff, 0x7e7d2c7f, 0x7e8472ff,
+ 0x7e8b9fff, 0x7e92ab7f, 0x7e99a5ff, 0x7ea07f7f, 0x7ea73f7f, 0x7eadddff,
+ 0x7eb46b7f, 0x7ebadfff, 0x7ec132ff, 0x7ec7757f, 0x7ecd95ff, 0x7ed3a5ff,
+ 0x7ed99c7f, 0x7edf7a7f, 0x7ee53e7f, 0x7eeae9ff, 0x7ef07bff, 0x7ef5fd7f,
+ 0x7efb657f, 0x7f00b47f, 0x7f05f27f, 0x7f0b177f, 0x7f10237f, 0x7f151e7f,
+ 0x7f1a007f, 0x7f1ed17f, 0x7f2391ff, 0x7f2838ff, 0x7f2cc6ff, 0x7f31447f,
+ 0x7f35b07f, 0x7f3a0c7f, 0x7f3e4eff, 0x7f42807f, 0x7f46997f, 0x7f4aa97f,
+ 0x7f4ea07f, 0x7f52867f, 0x7f565bff, 0x7f5a20ff, 0x7f5dd4ff, 0x7f6177ff,
+ 0x7f650a7f, 0x7f688bff, 0x7f6bfc7f, 0x7f6f547f, 0x7f72abff, 0x7f75ea7f,
+ 0x7f7917ff, 0x7f7c34ff, 0x7f7f497f, 0x7f824d7f, 0x7f85407f, 0x7f882aff,
+ 0x7f8afc7f, 0x7f8dc57f, 0x7f9085ff, 0x7f9335ff, 0x7f95d4ff, 0x7f9862ff,
+ 0x7f9ae8ff, 0x7f9d667f, 0x7f9fd37f, 0x7fa22f7f, 0x7fa482ff, 0x7fa6cdff,
+ 0x7fa9087f, 0x7fab3a7f, 0x7fad5bff, 0x7faf74ff, 0x7fb1857f, 0x7fb384ff,
+ 0x7fb5847f, 0x7fb76aff, 0x7fb951ff, 0x7fbb277f, 0x7fbcf4ff, 0x7fbeb9ff,
+ 0x7fc0767f, 0x7fc22a7f, 0x7fc3cdff, 0x7fc5717f, 0x7fc703ff, 0x7fc88e7f,
+ 0x7fca107f, 0x7fcb91ff, 0x7fcd037f, 0x7fce6bff, 0x7fcfcc7f, 0x7fd1247f,
+ 0x7fd273ff, 0x7fd3c37f, 0x7fd501ff, 0x7fd6387f, 0x7fd76eff, 0x7fd89cff,
+ 0x7fd9c27f, 0x7fdadf7f, 0x7fdbf47f, 0x7fdd00ff, 0x7fde0d7f, 0x7fdf117f,
+ 0x7fe00cff, 0x7fe1007f, 0x7fe1f37f, 0x7fe2de7f, 0x7fe3c0ff, 0x7fe49aff,
+ 0x7fe574ff, 0x7fe646ff, 0x7fe7187f, 0x7fe7e1ff, 0x7fe8a2ff, 0x7fe963ff,
+ 0x7fea1c7f, 0x7feacc7f, 0x7feb7c7f, 0x7fec247f, 0x7feccc7f, 0x7fed73ff,
+ 0x7fee0aff, 0x7feea1ff, 0x7fef38ff, 0x7fefc77f, 0x7ff055ff, 0x7ff0dc7f,
+ 0x7ff1627f, 0x7ff1e8ff, 0x7ff2667f, 0x7ff2dbff, 0x7ff3517f, 0x7ff3c6ff,
+ 0x7ff433ff, 0x7ff4a0ff, 0x7ff50dff, 0x7ff572ff, 0x7ff5ceff, 0x7ff633ff,
+ 0x7ff68fff, 0x7ff6ec7f, 0x7ff73fff, 0x7ff793ff, 0x7ff7e7ff, 0x7ff8337f,
+ 0x7ff8877f, 0x7ff8ca7f, 0x7ff915ff, 0x7ff958ff, 0x7ff99bff, 0x7ff9df7f,
+ 0x7ffa227f, 0x7ffa5cff, 0x7ffa97ff, 0x7ffad27f, 0x7ffb04ff, 0x7ffb3f7f,
+ 0x7ffb71ff, 0x7ffba47f, 0x7ffbce7f, 0x7ffc007f, 0x7ffc2a7f, 0x7ffc547f,
+ 0x7ffc7e7f, 0x7ffca87f, 0x7ffcc9ff, 0x7ffcf3ff, 0x7ffd157f, 0x7ffd36ff,
+ 0x7ffd587f, 0x7ffd79ff, 0x7ffd9b7f, 0x7ffdb4ff, 0x7ffdcdff, 0x7ffdef7f,
+ 0x7ffe087f, 0x7ffe21ff, 0x7ffe3aff, 0x7ffe4bff, 0x7ffe64ff, 0x7ffe7dff,
+ 0x7ffe8eff, 0x7ffe9f7f, 0x7ffeb07f, 0x7ffec97f, 0x7ffeda7f, 0x7ffeeaff,
+ 0x7ffef37f, 0x7fff047f, 0x7fff14ff, 0x7fff25ff, 0x7fff2e7f, 0x7fff3eff,
+ 0x7fff477f, 0x7fff4fff, 0x7fff607f, 0x7fff68ff, 0x7fff717f, 0x7fff79ff,
+ 0x7fff81ff, 0x7fff8a7f, 0x7fff92ff, 0x7fff9b7f, 0x7fffa37f, 0x7fffabff,
+ 0x7fffabff, 0x7fffb47f, 0x7fffbcff, 0x7fffbcff, 0x7fffc57f, 0x7fffc57f,
+ 0x7fffcd7f, 0x7fffcd7f, 0x7fffd5ff, 0x7fffd5ff, 0x7fffde7f, 0x7fffde7f,
+ 0x7fffde7f, 0x7fffe6ff, 0x7fffe6ff, 0x7fffe6ff, 0x7fffeeff, 0x7fffeeff,
+ 0x7fffeeff, 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f,
+ 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff,
+ 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 kbd_win256[256] = {
- 0x00132c5e, 0x001f986b, 0x002c6d72, 0x003a3c1b, 0x00493eaa, 0x00599862,
- 0x006b63fc, 0x007eb86c, 0x0093aacb, 0x00aa4f3b, 0x00c2b958, 0x00dcfc70,
- 0x00f92ba8, 0x01175a0a, 0x01379a8f, 0x015a0023, 0x017e9da6, 0x01a585e6,
- 0x01cecba4, 0x01fa8186, 0x0228ba1b, 0x025987d1, 0x028cfcee, 0x02c32b8e,
- 0x02fc259c, 0x0337fcc8, 0x0376c285, 0x03b88801, 0x03fd5e1a, 0x04455560,
- 0x04907e06, 0x04dee7e0, 0x0530a25b, 0x0585bc76, 0x05de44bb, 0x063a4939,
- 0x0699d77f, 0x06fcfc92, 0x0763c4ea, 0x07ce3c6a, 0x083c6e59, 0x08ae655f,
- 0x09242b7d, 0x099dca06, 0x0a1b499d, 0x0a9cb22d, 0x0b220ae4, 0x0bab5a2f,
- 0x0c38a5b4, 0x0cc9f24f, 0x0d5f440b, 0x0df89e21, 0x0e9602f2, 0x0f377404,
- 0x0fdcf1ff, 0x10867ca8, 0x113412e1, 0x11e5b2a4, 0x129b5901, 0x13550220,
- 0x1412a936, 0x14d44890, 0x1599d986, 0x16635483, 0x1730b0fe, 0x1801e581,
- 0x18d6e7a1, 0x19afac06, 0x1a8c2664, 0x1b6c4986, 0x1c500746, 0x1d375093,
- 0x1e221575, 0x1f10450b, 0x2001cd93, 0x20f69c66, 0x21ee9e04, 0x22e9be10,
- 0x23e7e75a, 0x24e903de, 0x25ecfcd0, 0x26f3ba97, 0x27fd24db, 0x29092288,
- 0x2a1799d1, 0x2b28703a, 0x2c3b8a9b, 0x2d50cd2b, 0x2e681b83, 0x2f8158a5,
- 0x309c6709, 0x31b9289c, 0x32d77ed0, 0x33f74a9e, 0x35186c95, 0x363ac4d8,
- 0x375e3333, 0x3882971a, 0x39a7cfb6, 0x3acdbbf0, 0x3bf43a75, 0x3d1b29c5,
- 0x3e426836, 0x3f69d405, 0x40914b59, 0x41b8ac51, 0x42dfd50a, 0x4406a3ac,
- 0x452cf672, 0x4652abb4, 0x4777a1f0, 0x489bb7d4, 0x49becc4a, 0x4ae0be7e,
- 0x4c016de7, 0x4d20ba56, 0x4e3e83f8, 0x4f5aab65, 0x507511a6, 0x518d983d,
- 0x52a42131, 0x53b88f14, 0x54cac50d, 0x55daa6dc, 0x56e818ea, 0x57f30047,
- 0x58fb42b9, 0x5a00c6c1, 0x5b03739e, 0x5c03315a, 0x5cffe8cc, 0x5df983a1,
- 0x5eefec5d, 0x5fe30e66, 0x60d2d607, 0x61bf3073, 0x62a80bcb, 0x638d5722,
- 0x646f0282, 0x654cfeec, 0x66273e5f, 0x66fdb3d5, 0x67d0534d, 0x689f11c6,
- 0x6969e543, 0x6a30c4cc, 0x6af3a870, 0x6bb28941, 0x6c6d6159, 0x6d242bd6,
- 0x6dd6e4da, 0x6e85898a, 0x6f30180d, 0x6fd68f86, 0x7078f015, 0x71173ad6,
- 0x71b171d8, 0x7247981c, 0x72d9b193, 0x7367c317, 0x73f1d266, 0x7477e620,
- 0x74fa05bd, 0x7578398b, 0x75f28aa7, 0x766902f5, 0x76dbad1c, 0x774a947c,
- 0x77b5c529, 0x781d4be4, 0x78813611, 0x78e191b2, 0x793e6d5d, 0x7997d834,
- 0x79ede1dc, 0x7a409a77, 0x7a90129a, 0x7adc5b43, 0x7b2585d1, 0x7b6ba3fd,
- 0x7baec7ce, 0x7bef0393, 0x7c2c69d7, 0x7c670d5c, 0x7c9f0110, 0x7cd45801,
- 0x7d07255b, 0x7d377c5b, 0x7d657049, 0x7d91146a, 0x7dba7c02, 0x7de1ba42,
- 0x7e06e247, 0x7e2a070f, 0x7e4b3b72, 0x7e6a921d, 0x7e881d8a, 0x7ea3effa,
- 0x7ebe1b6d, 0x7ed6b19e, 0x7eedc3fe, 0x7f0363ae, 0x7f17a177, 0x7f2a8dcd,
- 0x7f3c38c3, 0x7f4cb20c, 0x7f5c08f4, 0x7f6a4c62, 0x7f778ad0, 0x7f83d24c,
- 0x7f8f3073, 0x7f99b274, 0x7fa36509, 0x7fac547b, 0x7fb48c9e, 0x7fbc18d2,
- 0x7fc30404, 0x7fc958ad, 0x7fcf20d1, 0x7fd46604, 0x7fd93169, 0x7fdd8bb1,
- 0x7fe17d22, 0x7fe50d93, 0x7fe84475, 0x7feb28ce, 0x7fedc13f, 0x7ff01409,
- 0x7ff2270b, 0x7ff3ffc7, 0x7ff5a368, 0x7ff716bf, 0x7ff85e4b, 0x7ff97e3b,
- 0x7ffa7a71, 0x7ffb5686, 0x7ffc15cb, 0x7ffcbb50, 0x7ffd49e5, 0x7ffdc41f,
- 0x7ffe2c57, 0x7ffe84b3, 0x7ffecf28, 0x7fff0d78, 0x7fff413b, 0x7fff6be1,
- 0x7fff8eb1, 0x7fffaad1, 0x7fffc144, 0x7fffd2f2, 0x7fffe0a3, 0x7fffeb0a,
- 0x7ffff2bf, 0x7ffff849, 0x7ffffc18, 0x7ffffe8f};
+ 0x00132c5e, 0x001f986b, 0x002c6d72, 0x003a3c1b, 0x00493eaa, 0x00599862,
+ 0x006b63fc, 0x007eb86c, 0x0093aacb, 0x00aa4f3b, 0x00c2b958, 0x00dcfc70,
+ 0x00f92ba8, 0x01175a0a, 0x01379a8f, 0x015a0023, 0x017e9da6, 0x01a585e6,
+ 0x01cecba4, 0x01fa8186, 0x0228ba1b, 0x025987d1, 0x028cfcee, 0x02c32b8e,
+ 0x02fc259c, 0x0337fcc8, 0x0376c285, 0x03b88801, 0x03fd5e1a, 0x04455560,
+ 0x04907e06, 0x04dee7e0, 0x0530a25b, 0x0585bc76, 0x05de44bb, 0x063a4939,
+ 0x0699d77f, 0x06fcfc92, 0x0763c4ea, 0x07ce3c6a, 0x083c6e59, 0x08ae655f,
+ 0x09242b7d, 0x099dca06, 0x0a1b499d, 0x0a9cb22d, 0x0b220ae4, 0x0bab5a2f,
+ 0x0c38a5b4, 0x0cc9f24f, 0x0d5f440b, 0x0df89e21, 0x0e9602f2, 0x0f377404,
+ 0x0fdcf1ff, 0x10867ca8, 0x113412e1, 0x11e5b2a4, 0x129b5901, 0x13550220,
+ 0x1412a936, 0x14d44890, 0x1599d986, 0x16635483, 0x1730b0fe, 0x1801e581,
+ 0x18d6e7a1, 0x19afac06, 0x1a8c2664, 0x1b6c4986, 0x1c500746, 0x1d375093,
+ 0x1e221575, 0x1f10450b, 0x2001cd93, 0x20f69c66, 0x21ee9e04, 0x22e9be10,
+ 0x23e7e75a, 0x24e903de, 0x25ecfcd0, 0x26f3ba97, 0x27fd24db, 0x29092288,
+ 0x2a1799d1, 0x2b28703a, 0x2c3b8a9b, 0x2d50cd2b, 0x2e681b83, 0x2f8158a5,
+ 0x309c6709, 0x31b9289c, 0x32d77ed0, 0x33f74a9e, 0x35186c95, 0x363ac4d8,
+ 0x375e3333, 0x3882971a, 0x39a7cfb6, 0x3acdbbf0, 0x3bf43a75, 0x3d1b29c5,
+ 0x3e426836, 0x3f69d405, 0x40914b59, 0x41b8ac51, 0x42dfd50a, 0x4406a3ac,
+ 0x452cf672, 0x4652abb4, 0x4777a1f0, 0x489bb7d4, 0x49becc4a, 0x4ae0be7e,
+ 0x4c016de7, 0x4d20ba56, 0x4e3e83f8, 0x4f5aab65, 0x507511a6, 0x518d983d,
+ 0x52a42131, 0x53b88f14, 0x54cac50d, 0x55daa6dc, 0x56e818ea, 0x57f30047,
+ 0x58fb42b9, 0x5a00c6c1, 0x5b03739e, 0x5c03315a, 0x5cffe8cc, 0x5df983a1,
+ 0x5eefec5d, 0x5fe30e66, 0x60d2d607, 0x61bf3073, 0x62a80bcb, 0x638d5722,
+ 0x646f0282, 0x654cfeec, 0x66273e5f, 0x66fdb3d5, 0x67d0534d, 0x689f11c6,
+ 0x6969e543, 0x6a30c4cc, 0x6af3a870, 0x6bb28941, 0x6c6d6159, 0x6d242bd6,
+ 0x6dd6e4da, 0x6e85898a, 0x6f30180d, 0x6fd68f86, 0x7078f015, 0x71173ad6,
+ 0x71b171d8, 0x7247981c, 0x72d9b193, 0x7367c317, 0x73f1d266, 0x7477e620,
+ 0x74fa05bd, 0x7578398b, 0x75f28aa7, 0x766902f5, 0x76dbad1c, 0x774a947c,
+ 0x77b5c529, 0x781d4be4, 0x78813611, 0x78e191b2, 0x793e6d5d, 0x7997d834,
+ 0x79ede1dc, 0x7a409a77, 0x7a90129a, 0x7adc5b43, 0x7b2585d1, 0x7b6ba3fd,
+ 0x7baec7ce, 0x7bef0393, 0x7c2c69d7, 0x7c670d5c, 0x7c9f0110, 0x7cd45801,
+ 0x7d07255b, 0x7d377c5b, 0x7d657049, 0x7d91146a, 0x7dba7c02, 0x7de1ba42,
+ 0x7e06e247, 0x7e2a070f, 0x7e4b3b72, 0x7e6a921d, 0x7e881d8a, 0x7ea3effa,
+ 0x7ebe1b6d, 0x7ed6b19e, 0x7eedc3fe, 0x7f0363ae, 0x7f17a177, 0x7f2a8dcd,
+ 0x7f3c38c3, 0x7f4cb20c, 0x7f5c08f4, 0x7f6a4c62, 0x7f778ad0, 0x7f83d24c,
+ 0x7f8f3073, 0x7f99b274, 0x7fa36509, 0x7fac547b, 0x7fb48c9e, 0x7fbc18d2,
+ 0x7fc30404, 0x7fc958ad, 0x7fcf20d1, 0x7fd46604, 0x7fd93169, 0x7fdd8bb1,
+ 0x7fe17d22, 0x7fe50d93, 0x7fe84475, 0x7feb28ce, 0x7fedc13f, 0x7ff01409,
+ 0x7ff2270b, 0x7ff3ffc7, 0x7ff5a368, 0x7ff716bf, 0x7ff85e4b, 0x7ff97e3b,
+ 0x7ffa7a71, 0x7ffb5686, 0x7ffc15cb, 0x7ffcbb50, 0x7ffd49e5, 0x7ffdc41f,
+ 0x7ffe2c57, 0x7ffe84b3, 0x7ffecf28, 0x7fff0d78, 0x7fff413b, 0x7fff6be1,
+ 0x7fff8eb1, 0x7fffaad1, 0x7fffc144, 0x7fffd2f2, 0x7fffe0a3, 0x7fffeb0a,
+ 0x7ffff2bf, 0x7ffff849, 0x7ffffc18, 0x7ffffe8f};
const WORD32 ixheaacd_kbd_win4[4] = {0x000807ab, 0x22b0608e, 0x7b35bb1c,
- 0x7fffffff};
+ 0x7fffffff};
const WORD32 ixheaacd_kbd_win16[16] = {
- 0x00040f1f, 0x008e78fe, 0x02c97f7b, 0x0884e8da, 0x137eb190, 0x244db0c4,
- 0x398f9632, 0x5009fdd5, 0x63e3825f, 0x7253cdb4, 0x7abe6e47, 0x7e81b826,
- 0x7fb757e1, 0x7ff83b3b, 0x7fffb0c4, 0x7fffffff};
+ 0x00040f1f, 0x008e78fe, 0x02c97f7b, 0x0884e8da, 0x137eb190, 0x244db0c4,
+ 0x398f9632, 0x5009fdd5, 0x63e3825f, 0x7253cdb4, 0x7abe6e47, 0x7e81b826,
+ 0x7fb757e1, 0x7ff83b3b, 0x7fffb0c4, 0x7fffffff};
const WORD32 ixheaacd_kbd_win_64[64] = {
- 0x00020817, 0x00096787, 0x0017763e, 0x002f8bde, 0x00559f6e, 0x008e7146,
- 0x00df9378, 0x014f3fd9, 0x01e45803, 0x02a63b67, 0x039c8c93, 0x04cf17ff,
- 0x06456f77, 0x0806b7af, 0x0a195ccf, 0x0c82be8f, 0x0f46ed1f, 0x1268555f,
- 0x15e7a73f, 0x19c38aff, 0x1df8875f, 0x2280f97f, 0x27552e3f, 0x2c6b58ff,
- 0x31b7e0bf, 0x372d903f, 0x3cbdf4bf, 0x4259b7ff, 0x47f11f7f, 0x4d745fff,
- 0x52d43cff, 0x580242ff, 0x5cf1777f, 0x6196747f, 0x65e7e1ff, 0x69de9bff,
- 0x6d75ea7f, 0x70ab607f, 0x737f0eff, 0x75f316ff, 0x780ba1ff, 0x79ce95ff,
- 0x7b4306ff, 0x7c7114ff, 0x7d615e7f, 0x7e1c9b7f, 0x7eab607f, 0x7f15c5ff,
- 0x7f631b7f, 0x7f99dc7f, 0x7fbf82ff, 0x7fd8a57f, 0x7fe8dd7f, 0x7ff2f57f,
- 0x7ff8fcff, 0x7ffc6d7f, 0x7ffe4bff, 0x7fff3eff, 0x7fffb47f, 0x7fffe6ff,
- 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x00020817, 0x00096787, 0x0017763e, 0x002f8bde, 0x00559f6e, 0x008e7146,
+ 0x00df9378, 0x014f3fd9, 0x01e45803, 0x02a63b67, 0x039c8c93, 0x04cf17ff,
+ 0x06456f77, 0x0806b7af, 0x0a195ccf, 0x0c82be8f, 0x0f46ed1f, 0x1268555f,
+ 0x15e7a73f, 0x19c38aff, 0x1df8875f, 0x2280f97f, 0x27552e3f, 0x2c6b58ff,
+ 0x31b7e0bf, 0x372d903f, 0x3cbdf4bf, 0x4259b7ff, 0x47f11f7f, 0x4d745fff,
+ 0x52d43cff, 0x580242ff, 0x5cf1777f, 0x6196747f, 0x65e7e1ff, 0x69de9bff,
+ 0x6d75ea7f, 0x70ab607f, 0x737f0eff, 0x75f316ff, 0x780ba1ff, 0x79ce95ff,
+ 0x7b4306ff, 0x7c7114ff, 0x7d615e7f, 0x7e1c9b7f, 0x7eab607f, 0x7f15c5ff,
+ 0x7f631b7f, 0x7f99dc7f, 0x7fbf82ff, 0x7fd8a57f, 0x7fe8dd7f, 0x7ff2f57f,
+ 0x7ff8fcff, 0x7ffc6d7f, 0x7ffe4bff, 0x7fff3eff, 0x7fffb47f, 0x7fffe6ff,
+ 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 ixheaacd_kbd_win768[768] = {
- 0x000b1359, 0x00107b78, 0x0015336d, 0x0019b0ab, 0x001e14bd, 0x002278d0,
- 0x0026e546, 0x002b6ae7, 0x0030014f, 0x0034b0e1, 0x00398201, 0x003e6c4c,
- 0x00438088, 0x0048adee, 0x004e0da9, 0x0053868f, 0x00592966, 0x005efe92,
- 0x0064f54c, 0x006b15f8, 0x00716095, 0x0077d523, 0x007e7c06, 0x00854cda,
- 0x008c5004, 0x00937d1f, 0x009adc8f, 0x00a26e53, 0x00aa326d, 0x00b22078,
- 0x00ba493c, 0x00c2a454, 0x00cb31c1, 0x00d3f9e7, 0x00dcf461, 0x00e62131,
- 0x00ef88b8, 0x00f92af9, 0x0102ff8d, 0x010d0edb, 0x01176145, 0x0121e603,
- 0x012ca579, 0x0137a80b, 0x0142dcf3, 0x014e5d5b, 0x015a1015, 0x016605ed,
- 0x01723ee1, 0x017eb28d, 0x018b6955, 0x01986337, 0x01a5a037, 0x01b32053,
- 0x01c0e389, 0x01cee9dd, 0x01dd3baf, 0x01ebc839, 0x01faa043, 0x0209c3cf,
- 0x021932d7, 0x0228e4fb, 0x0238da3b, 0x0249235f, 0x0259af9f, 0x026a8fbf,
- 0x027bb2ff, 0x028d2a1f, 0x029eecbf, 0x02b0fadf, 0x02c35cdf, 0x02d60a63,
- 0x02e90bc7, 0x02fc58ab, 0x030ff973, 0x0323ee1b, 0x033836a7, 0x034ccab3,
- 0x0361bb03, 0x0376ff3b, 0x038c8eef, 0x03a2834b, 0x03b8c32b, 0x03cf5f4f,
- 0x03e64f53, 0x03fd9b9f, 0x04154437, 0x042d40a7, 0x04459967, 0x045e4607,
- 0x0477574f, 0x0490c4df, 0x04aa864f, 0x04c4ac6f, 0x04df2ecf, 0x04fa0d77,
- 0x05154867, 0x0530e7ff, 0x054ce3df, 0x05694467, 0x05860997, 0x05a32b0f,
- 0x05c0a8cf, 0x05de939f, 0x05fcdaaf, 0x061b866f, 0x063a96d7, 0x065a0be7,
- 0x0679e59f, 0x069a23ff, 0x06bacf77, 0x06dbd727, 0x06fd4bef, 0x071f255f,
- 0x07416bd7, 0x076416ff, 0x07872f2f, 0x07aaac0f, 0x07ce8d97, 0x07f2e48f,
- 0x0817a02f, 0x083cc07f, 0x0862562f, 0x0888509f, 0x08aec06f, 0x08d594ef,
- 0x08fcd67f, 0x0924851f, 0x094ca0bf, 0x0975296f, 0x099e279f, 0x09c78a6f,
- 0x09f162af, 0x0a1ba7ff, 0x0a465a4f, 0x0a7179bf, 0x0a9d0e9f, 0x0ac9107f,
- 0x0af587cf, 0x0b226c3f, 0x0b4fbdaf, 0x0b7d848f, 0x0babb87f, 0x0bda61df,
- 0x0c09784f, 0x0c39042f, 0x0c69057f, 0x0c9973df, 0x0cca4f3f, 0x0cfba87f,
- 0x0d2d6ecf, 0x0d5fa21f, 0x0d92534f, 0x0dc5718f, 0x0df8fccf, 0x0e2d05ef,
- 0x0e617c1f, 0x0e9667af, 0x0ecbc05f, 0x0f0196df, 0x0f37da5f, 0x0f6e8aff,
- 0x0fa5b95f, 0x0fdd54df, 0x101565bf, 0x104dec1f, 0x1086df7f, 0x10c0485f,
- 0x10fa269f, 0x11347a5f, 0x116f3b1f, 0x11aa715f, 0x11e6149f, 0x122235bf,
- 0x125ec3df, 0x129bbeff, 0x12d92fbf, 0x131715bf, 0x135568df, 0x1394317f,
- 0x13d3671f, 0x1413121f, 0x14532a3f, 0x1493b7df, 0x14d4b27f, 0x15161a1f,
- 0x1557f73f, 0x159a415f, 0x15dcf89f, 0x1620253f, 0x1663bedf, 0x16a7c59f,
- 0x16ec397f, 0x17311a5f, 0x1776683f, 0x17bc233f, 0x18024b3f, 0x1848e03f,
- 0x188fe25f, 0x18d7517f, 0x191f255f, 0x1967663f, 0x19b0141f, 0x19f926bf,
- 0x1a42a65f, 0x1a8c8abf, 0x1ad6dc1f, 0x1b21921f, 0x1b6cacdf, 0x1bb8347f,
- 0x1c04189f, 0x1c50699f, 0x1c9d1f5f, 0x1cea39bf, 0x1d37b8df, 0x1d85941f,
- 0x1dd3d41f, 0x1e2278df, 0x1e7179bf, 0x1ec0df5f, 0x1f10a99f, 0x1f60d01f,
- 0x1fb152ff, 0x200231ff, 0x20536d7f, 0x20a504ff, 0x20f7013f, 0x2149517f,
- 0x219bf57f, 0x21eefe3f, 0x22425aff, 0x229613bf, 0x22ea207f, 0x233e813f,
- 0x239335bf, 0x23e846bf, 0x243da2ff, 0x24935b7f, 0x24e95fbf, 0x253fb7bf,
- 0x2596637f, 0x25ed5aff, 0x26449dbf, 0x269c347f, 0x26f416bf, 0x274c447f,
- 0x27a4bdbf, 0x27fd79ff, 0x28568a3f, 0x28afddbf, 0x29097c7f, 0x29635e7f,
- 0x29bd837f, 0x2a17f3ff, 0x2a729f3f, 0x2acd8dbf, 0x2b28c77f, 0x2b843c3f,
- 0x2bdfeb7f, 0x2c3bddff, 0x2c980b3f, 0x2cf47b7f, 0x2d511dff, 0x2dae03bf,
- 0x2e0b1bbf, 0x2e686e7f, 0x2ec5f37f, 0x2f23b37f, 0x2f81a57f, 0x2fdfd27f,
- 0x303e293f, 0x309cb23f, 0x30fb6dbf, 0x315a5b7f, 0x31b9733f, 0x3218bd7f,
- 0x327828ff, 0x32d7c6ff, 0x33378eff, 0x3397783f, 0x33f7943f, 0x3457d17f,
- 0x34b8303f, 0x3518b0bf, 0x35795b3f, 0x35da1ebf, 0x363b0c3f, 0x369c12ff,
- 0x36fd32bf, 0x375e743f, 0x37bfcebf, 0x38214abf, 0x3882d7bf, 0x38e47dbf,
- 0x39463cff, 0x39a80cff, 0x3a09f63f, 0x3a6befff, 0x3acdfabf, 0x3b30163f,
- 0x3b923a3f, 0x3bf4773f, 0x3c56b43f, 0x3cb90a7f, 0x3d1b60bf, 0x3d7dbf3f,
- 0x3de02ebf, 0x3e429dff, 0x3ea515bf, 0x3f078d7f, 0x3f6a053f, 0x3fcc857f,
- 0x402efd7f, 0x40917d7f, 0x40f3f4ff, 0x41566cff, 0x41b8dc7f, 0x421b437f,
- 0x427daa7f, 0x42e0007f, 0x43424e7f, 0x43a493ff, 0x4406d0ff, 0x4468f47f,
- 0x44cb0fff, 0x452d1aff, 0x458f14ff, 0x45f0fdff, 0x4652cdff, 0x46b48cff,
- 0x4716337f, 0x4777c87f, 0x47d93c7f, 0x483a96ff, 0x489bd7ff, 0x48fd007f,
- 0x495e06ff, 0x49beebff, 0x4a1fafff, 0x4a8059ff, 0x4ae0da7f, 0x4b41397f,
- 0x4ba176ff, 0x4c018a7f, 0x4c61737f, 0x4cc13b7f, 0x4d20d0ff, 0x4d8044ff,
- 0x4ddf86ff, 0x4e3e9e7f, 0x4e9d83ff, 0x4efc36ff, 0x4f5abfff, 0x4fb916ff,
- 0x501732ff, 0x5075257f, 0x50d2dc7f, 0x513061ff, 0x518dabff, 0x51eabbff,
- 0x5247907f, 0x52a4337f, 0x530092ff, 0x535cb77f, 0x53b898ff, 0x54143fff,
- 0x546fac7f, 0x54caccff, 0x5525b2ff, 0x558055ff, 0x55daad7f, 0x5634c9ff,
- 0x568e92ff, 0x56e820ff, 0x5741637f, 0x579a5a7f, 0x57f305ff, 0x584b65ff,
- 0x58a37aff, 0x58fb43ff, 0x5952c17f, 0x59a9eaff, 0x5a00c97f, 0x5a57537f,
- 0x5aad89ff, 0x5b0374ff, 0x5b59037f, 0x5bae46ff, 0x5c032d7f, 0x5c57c07f,
- 0x5cabffff, 0x5cffe27f, 0x5d53717f, 0x5da6a47f, 0x5df97a7f, 0x5e4bfcff,
- 0x5e9e1aff, 0x5eefe4ff, 0x5f414a7f, 0x5f925b7f, 0x5fe3087f, 0x6033507f,
- 0x60833c7f, 0x60d2cbff, 0x6121f6ff, 0x6170bcff, 0x61bf26ff, 0x620d23ff,
- 0x625ac47f, 0x62a8007f, 0x62f4cf7f, 0x634141ff, 0x638d477f, 0x63d8e87f,
- 0x6424247f, 0x646ef3ff, 0x64b955ff, 0x65035bff, 0x654cec7f, 0x659617ff,
- 0x65ded67f, 0x6627287f, 0x666f157f, 0x66b68cff, 0x66fd9fff, 0x6744457f,
- 0x678a75ff, 0x67d041ff, 0x681597ff, 0x685a817f, 0x689efd7f, 0x68e3047f,
- 0x6926a67f, 0x6969ca7f, 0x69ac89ff, 0x69eed47f, 0x6a30a8ff, 0x6a72107f,
- 0x6ab30b7f, 0x6af3907f, 0x6b33a07f, 0x6b7342ff, 0x6bb26fff, 0x6bf127ff,
- 0x6c2f727f, 0x6c6d47ff, 0x6caaa7ff, 0x6ce7927f, 0x6d240f7f, 0x6d60177f,
- 0x6d9ba9ff, 0x6dd6c6ff, 0x6e1176ff, 0x6e4ba97f, 0x6e856e7f, 0x6ebebdff,
- 0x6ef7987f, 0x6f2ffcff, 0x6f67ec7f, 0x6f9f667f, 0x6fd672ff, 0x700d0a7f,
- 0x7043247f, 0x7078d0ff, 0x70ae07ff, 0x70e2c97f, 0x71171dff, 0x714af4ff,
- 0x717e5e7f, 0x71b152ff, 0x71e3d1ff, 0x7215e37f, 0x7247777f, 0x72789e7f,
- 0x72a94fff, 0x72d9947f, 0x7309637f, 0x7338bcff, 0x7367a0ff, 0x739617ff,
- 0x73c421ff, 0x73f1b67f, 0x741ed57f, 0x744b877f, 0x7477c47f, 0x74a393ff,
- 0x74cef67f, 0x74f9e37f, 0x7524637f, 0x754e767f, 0x75781c7f, 0x75a14cff,
- 0x75ca107f, 0x75f26eff, 0x761a587f, 0x7641d47f, 0x7668e3ff, 0x768f85ff,
- 0x76b5c37f, 0x76db8b7f, 0x7700eeff, 0x7725e57f, 0x774a76ff, 0x776e9b7f,
- 0x7792537f, 0x77b5a5ff, 0x77d88bff, 0x77fb157f, 0x781d29ff, 0x783ee17f,
- 0x78602c7f, 0x78811aff, 0x78a19c7f, 0x78c1b97f, 0x78e1717f, 0x7900cd7f,
- 0x791fbc7f, 0x793e4eff, 0x795c7cff, 0x797a4e7f, 0x7997bb7f, 0x79b4cbff,
- 0x79d177ff, 0x79edc7ff, 0x7a09b2ff, 0x7a2549ff, 0x7a407cff, 0x7a5b52ff,
- 0x7a75d57f, 0x7a8ff2ff, 0x7aa9bcff, 0x7ac32a7f, 0x7adc3bff, 0x7af4f8ff,
- 0x7b0d5a7f, 0x7b25677f, 0x7b3d20ff, 0x7b547dff, 0x7b6b86ff, 0x7b823c7f,
- 0x7b989dff, 0x7baeab7f, 0x7bc464ff, 0x7bd9d37f, 0x7beeed7f, 0x7c03b3ff,
- 0x7c18267f, 0x7c2c4d7f, 0x7c4028ff, 0x7c53b8ff, 0x7c66f4ff, 0x7c79e57f,
- 0x7c8c8a7f, 0x7c9eec7f, 0x7cb0faff, 0x7cc2c5ff, 0x7cd43cff, 0x7ce5797f,
- 0x7cf66a7f, 0x7d070f7f, 0x7d1771ff, 0x7d2790ff, 0x7d3764ff, 0x7d46fdff,
- 0x7d564b7f, 0x7d655dff, 0x7d74257f, 0x7d82b1ff, 0x7d9103ff, 0x7d9f09ff,
- 0x7dacd57f, 0x7dba667f, 0x7dc7bcff, 0x7dd4cfff, 0x7de1a7ff, 0x7dee45ff,
- 0x7dfaa87f, 0x7e06d0ff, 0x7e12be7f, 0x7e1e797f, 0x7e29f17f, 0x7e353f7f,
- 0x7e4052ff, 0x7e4b2b7f, 0x7e55d1ff, 0x7e60457f, 0x7e6a7eff, 0x7e748e7f,
- 0x7e7e62ff, 0x7e880d7f, 0x7e9185ff, 0x7e9acbff, 0x7ea3df7f, 0x7eacc8ff,
- 0x7eb5807f, 0x7ebe0dff, 0x7ec668ff, 0x7ece99ff, 0x7ed6a17f, 0x7ede7e7f,
- 0x7ee631ff, 0x7eedb2ff, 0x7ef5127f, 0x7efc47ff, 0x7f03537f, 0x7f0a3d7f,
- 0x7f10fd7f, 0x7f17937f, 0x7f1e07ff, 0x7f245aff, 0x7f2a83ff, 0x7f308b7f,
- 0x7f36697f, 0x7f3c2d7f, 0x7f41d07f, 0x7f47497f, 0x7f4ca8ff, 0x7f51e77f,
- 0x7f5703ff, 0x7f5bfeff, 0x7f60e0ff, 0x7f65a17f, 0x7f6a3fff, 0x7f6ecdff,
- 0x7f7331ff, 0x7f77857f, 0x7f7bb6ff, 0x7f7fcfff, 0x7f83c6ff, 0x7f87acff,
- 0x7f8b79ff, 0x7f8f257f, 0x7f92c07f, 0x7f9641ff, 0x7f99aa7f, 0x7f9cf97f,
- 0x7fa037ff, 0x7fa35d7f, 0x7fa671ff, 0x7fa964ff, 0x7fac4f7f, 0x7faf20ff,
- 0x7fb1d8ff, 0x7fb488ff, 0x7fb71f7f, 0x7fb9a57f, 0x7fbc127f, 0x7fbe76ff,
- 0x7fc0c1ff, 0x7fc2fc7f, 0x7fc52e7f, 0x7fc7477f, 0x7fc957ff, 0x7fcb4eff,
- 0x7fcd3dff, 0x7fcf1bff, 0x7fd0e97f, 0x7fd2ae7f, 0x7fd462ff, 0x7fd605ff,
- 0x7fd7a0ff, 0x7fd92b7f, 0x7fdaad7f, 0x7fdc1e7f, 0x7fdd86ff, 0x7fdee77f,
- 0x7fe036ff, 0x7fe175ff, 0x7fe2b47f, 0x7fe3e27f, 0x7fe507ff, 0x7fe6257f,
- 0x7fe739ff, 0x7fe83e7f, 0x7fe9427f, 0x7fea357f, 0x7feb28ff, 0x7fec0b7f,
- 0x7fece57f, 0x7fedbf7f, 0x7fee88ff, 0x7fef51ff, 0x7ff012ff, 0x7ff0cb7f,
- 0x7ff17bff, 0x7ff2237f, 0x7ff2cb7f, 0x7ff3627f, 0x7ff401ff, 0x7ff4907f,
- 0x7ff51eff, 0x7ff5a4ff, 0x7ff622ff, 0x7ff6a0ff, 0x7ff7167f, 0x7ff7837f,
- 0x7ff7f07f, 0x7ff85d7f, 0x7ff8c1ff, 0x7ff91e7f, 0x7ff97a7f, 0x7ff9d6ff,
- 0x7ffa2aff, 0x7ffa767f, 0x7ffac9ff, 0x7ffb0d7f, 0x7ffb58ff, 0x7ffb9bff,
- 0x7ffbd67f, 0x7ffc117f, 0x7ffc4bff, 0x7ffc86ff, 0x7ffcb8ff, 0x7ffceb7f,
- 0x7ffd1dff, 0x7ffd477f, 0x7ffd717f, 0x7ffd9b7f, 0x7ffdc57f, 0x7ffde6ff,
- 0x7ffe087f, 0x7ffe29ff, 0x7ffe4bff, 0x7ffe64ff, 0x7ffe867f, 0x7ffe9f7f,
- 0x7ffeb8ff, 0x7ffed1ff, 0x7ffee2ff, 0x7ffefbff, 0x7fff0c7f, 0x7fff1d7f,
- 0x7fff2e7f, 0x7fff3eff, 0x7fff4fff, 0x7fff607f, 0x7fff68ff, 0x7fff79ff,
- 0x7fff81ff, 0x7fff92ff, 0x7fff9b7f, 0x7fffa37f, 0x7fffabff, 0x7fffb47f,
- 0x7fffbcff, 0x7fffc57f, 0x7fffc57f, 0x7fffcd7f, 0x7fffd5ff, 0x7fffd5ff,
- 0x7fffde7f, 0x7fffde7f, 0x7fffe6ff, 0x7fffe6ff, 0x7fffeeff, 0x7fffeeff,
- 0x7fffeeff, 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f,
- 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x000b1359, 0x00107b78, 0x0015336d, 0x0019b0ab, 0x001e14bd, 0x002278d0,
+ 0x0026e546, 0x002b6ae7, 0x0030014f, 0x0034b0e1, 0x00398201, 0x003e6c4c,
+ 0x00438088, 0x0048adee, 0x004e0da9, 0x0053868f, 0x00592966, 0x005efe92,
+ 0x0064f54c, 0x006b15f8, 0x00716095, 0x0077d523, 0x007e7c06, 0x00854cda,
+ 0x008c5004, 0x00937d1f, 0x009adc8f, 0x00a26e53, 0x00aa326d, 0x00b22078,
+ 0x00ba493c, 0x00c2a454, 0x00cb31c1, 0x00d3f9e7, 0x00dcf461, 0x00e62131,
+ 0x00ef88b8, 0x00f92af9, 0x0102ff8d, 0x010d0edb, 0x01176145, 0x0121e603,
+ 0x012ca579, 0x0137a80b, 0x0142dcf3, 0x014e5d5b, 0x015a1015, 0x016605ed,
+ 0x01723ee1, 0x017eb28d, 0x018b6955, 0x01986337, 0x01a5a037, 0x01b32053,
+ 0x01c0e389, 0x01cee9dd, 0x01dd3baf, 0x01ebc839, 0x01faa043, 0x0209c3cf,
+ 0x021932d7, 0x0228e4fb, 0x0238da3b, 0x0249235f, 0x0259af9f, 0x026a8fbf,
+ 0x027bb2ff, 0x028d2a1f, 0x029eecbf, 0x02b0fadf, 0x02c35cdf, 0x02d60a63,
+ 0x02e90bc7, 0x02fc58ab, 0x030ff973, 0x0323ee1b, 0x033836a7, 0x034ccab3,
+ 0x0361bb03, 0x0376ff3b, 0x038c8eef, 0x03a2834b, 0x03b8c32b, 0x03cf5f4f,
+ 0x03e64f53, 0x03fd9b9f, 0x04154437, 0x042d40a7, 0x04459967, 0x045e4607,
+ 0x0477574f, 0x0490c4df, 0x04aa864f, 0x04c4ac6f, 0x04df2ecf, 0x04fa0d77,
+ 0x05154867, 0x0530e7ff, 0x054ce3df, 0x05694467, 0x05860997, 0x05a32b0f,
+ 0x05c0a8cf, 0x05de939f, 0x05fcdaaf, 0x061b866f, 0x063a96d7, 0x065a0be7,
+ 0x0679e59f, 0x069a23ff, 0x06bacf77, 0x06dbd727, 0x06fd4bef, 0x071f255f,
+ 0x07416bd7, 0x076416ff, 0x07872f2f, 0x07aaac0f, 0x07ce8d97, 0x07f2e48f,
+ 0x0817a02f, 0x083cc07f, 0x0862562f, 0x0888509f, 0x08aec06f, 0x08d594ef,
+ 0x08fcd67f, 0x0924851f, 0x094ca0bf, 0x0975296f, 0x099e279f, 0x09c78a6f,
+ 0x09f162af, 0x0a1ba7ff, 0x0a465a4f, 0x0a7179bf, 0x0a9d0e9f, 0x0ac9107f,
+ 0x0af587cf, 0x0b226c3f, 0x0b4fbdaf, 0x0b7d848f, 0x0babb87f, 0x0bda61df,
+ 0x0c09784f, 0x0c39042f, 0x0c69057f, 0x0c9973df, 0x0cca4f3f, 0x0cfba87f,
+ 0x0d2d6ecf, 0x0d5fa21f, 0x0d92534f, 0x0dc5718f, 0x0df8fccf, 0x0e2d05ef,
+ 0x0e617c1f, 0x0e9667af, 0x0ecbc05f, 0x0f0196df, 0x0f37da5f, 0x0f6e8aff,
+ 0x0fa5b95f, 0x0fdd54df, 0x101565bf, 0x104dec1f, 0x1086df7f, 0x10c0485f,
+ 0x10fa269f, 0x11347a5f, 0x116f3b1f, 0x11aa715f, 0x11e6149f, 0x122235bf,
+ 0x125ec3df, 0x129bbeff, 0x12d92fbf, 0x131715bf, 0x135568df, 0x1394317f,
+ 0x13d3671f, 0x1413121f, 0x14532a3f, 0x1493b7df, 0x14d4b27f, 0x15161a1f,
+ 0x1557f73f, 0x159a415f, 0x15dcf89f, 0x1620253f, 0x1663bedf, 0x16a7c59f,
+ 0x16ec397f, 0x17311a5f, 0x1776683f, 0x17bc233f, 0x18024b3f, 0x1848e03f,
+ 0x188fe25f, 0x18d7517f, 0x191f255f, 0x1967663f, 0x19b0141f, 0x19f926bf,
+ 0x1a42a65f, 0x1a8c8abf, 0x1ad6dc1f, 0x1b21921f, 0x1b6cacdf, 0x1bb8347f,
+ 0x1c04189f, 0x1c50699f, 0x1c9d1f5f, 0x1cea39bf, 0x1d37b8df, 0x1d85941f,
+ 0x1dd3d41f, 0x1e2278df, 0x1e7179bf, 0x1ec0df5f, 0x1f10a99f, 0x1f60d01f,
+ 0x1fb152ff, 0x200231ff, 0x20536d7f, 0x20a504ff, 0x20f7013f, 0x2149517f,
+ 0x219bf57f, 0x21eefe3f, 0x22425aff, 0x229613bf, 0x22ea207f, 0x233e813f,
+ 0x239335bf, 0x23e846bf, 0x243da2ff, 0x24935b7f, 0x24e95fbf, 0x253fb7bf,
+ 0x2596637f, 0x25ed5aff, 0x26449dbf, 0x269c347f, 0x26f416bf, 0x274c447f,
+ 0x27a4bdbf, 0x27fd79ff, 0x28568a3f, 0x28afddbf, 0x29097c7f, 0x29635e7f,
+ 0x29bd837f, 0x2a17f3ff, 0x2a729f3f, 0x2acd8dbf, 0x2b28c77f, 0x2b843c3f,
+ 0x2bdfeb7f, 0x2c3bddff, 0x2c980b3f, 0x2cf47b7f, 0x2d511dff, 0x2dae03bf,
+ 0x2e0b1bbf, 0x2e686e7f, 0x2ec5f37f, 0x2f23b37f, 0x2f81a57f, 0x2fdfd27f,
+ 0x303e293f, 0x309cb23f, 0x30fb6dbf, 0x315a5b7f, 0x31b9733f, 0x3218bd7f,
+ 0x327828ff, 0x32d7c6ff, 0x33378eff, 0x3397783f, 0x33f7943f, 0x3457d17f,
+ 0x34b8303f, 0x3518b0bf, 0x35795b3f, 0x35da1ebf, 0x363b0c3f, 0x369c12ff,
+ 0x36fd32bf, 0x375e743f, 0x37bfcebf, 0x38214abf, 0x3882d7bf, 0x38e47dbf,
+ 0x39463cff, 0x39a80cff, 0x3a09f63f, 0x3a6befff, 0x3acdfabf, 0x3b30163f,
+ 0x3b923a3f, 0x3bf4773f, 0x3c56b43f, 0x3cb90a7f, 0x3d1b60bf, 0x3d7dbf3f,
+ 0x3de02ebf, 0x3e429dff, 0x3ea515bf, 0x3f078d7f, 0x3f6a053f, 0x3fcc857f,
+ 0x402efd7f, 0x40917d7f, 0x40f3f4ff, 0x41566cff, 0x41b8dc7f, 0x421b437f,
+ 0x427daa7f, 0x42e0007f, 0x43424e7f, 0x43a493ff, 0x4406d0ff, 0x4468f47f,
+ 0x44cb0fff, 0x452d1aff, 0x458f14ff, 0x45f0fdff, 0x4652cdff, 0x46b48cff,
+ 0x4716337f, 0x4777c87f, 0x47d93c7f, 0x483a96ff, 0x489bd7ff, 0x48fd007f,
+ 0x495e06ff, 0x49beebff, 0x4a1fafff, 0x4a8059ff, 0x4ae0da7f, 0x4b41397f,
+ 0x4ba176ff, 0x4c018a7f, 0x4c61737f, 0x4cc13b7f, 0x4d20d0ff, 0x4d8044ff,
+ 0x4ddf86ff, 0x4e3e9e7f, 0x4e9d83ff, 0x4efc36ff, 0x4f5abfff, 0x4fb916ff,
+ 0x501732ff, 0x5075257f, 0x50d2dc7f, 0x513061ff, 0x518dabff, 0x51eabbff,
+ 0x5247907f, 0x52a4337f, 0x530092ff, 0x535cb77f, 0x53b898ff, 0x54143fff,
+ 0x546fac7f, 0x54caccff, 0x5525b2ff, 0x558055ff, 0x55daad7f, 0x5634c9ff,
+ 0x568e92ff, 0x56e820ff, 0x5741637f, 0x579a5a7f, 0x57f305ff, 0x584b65ff,
+ 0x58a37aff, 0x58fb43ff, 0x5952c17f, 0x59a9eaff, 0x5a00c97f, 0x5a57537f,
+ 0x5aad89ff, 0x5b0374ff, 0x5b59037f, 0x5bae46ff, 0x5c032d7f, 0x5c57c07f,
+ 0x5cabffff, 0x5cffe27f, 0x5d53717f, 0x5da6a47f, 0x5df97a7f, 0x5e4bfcff,
+ 0x5e9e1aff, 0x5eefe4ff, 0x5f414a7f, 0x5f925b7f, 0x5fe3087f, 0x6033507f,
+ 0x60833c7f, 0x60d2cbff, 0x6121f6ff, 0x6170bcff, 0x61bf26ff, 0x620d23ff,
+ 0x625ac47f, 0x62a8007f, 0x62f4cf7f, 0x634141ff, 0x638d477f, 0x63d8e87f,
+ 0x6424247f, 0x646ef3ff, 0x64b955ff, 0x65035bff, 0x654cec7f, 0x659617ff,
+ 0x65ded67f, 0x6627287f, 0x666f157f, 0x66b68cff, 0x66fd9fff, 0x6744457f,
+ 0x678a75ff, 0x67d041ff, 0x681597ff, 0x685a817f, 0x689efd7f, 0x68e3047f,
+ 0x6926a67f, 0x6969ca7f, 0x69ac89ff, 0x69eed47f, 0x6a30a8ff, 0x6a72107f,
+ 0x6ab30b7f, 0x6af3907f, 0x6b33a07f, 0x6b7342ff, 0x6bb26fff, 0x6bf127ff,
+ 0x6c2f727f, 0x6c6d47ff, 0x6caaa7ff, 0x6ce7927f, 0x6d240f7f, 0x6d60177f,
+ 0x6d9ba9ff, 0x6dd6c6ff, 0x6e1176ff, 0x6e4ba97f, 0x6e856e7f, 0x6ebebdff,
+ 0x6ef7987f, 0x6f2ffcff, 0x6f67ec7f, 0x6f9f667f, 0x6fd672ff, 0x700d0a7f,
+ 0x7043247f, 0x7078d0ff, 0x70ae07ff, 0x70e2c97f, 0x71171dff, 0x714af4ff,
+ 0x717e5e7f, 0x71b152ff, 0x71e3d1ff, 0x7215e37f, 0x7247777f, 0x72789e7f,
+ 0x72a94fff, 0x72d9947f, 0x7309637f, 0x7338bcff, 0x7367a0ff, 0x739617ff,
+ 0x73c421ff, 0x73f1b67f, 0x741ed57f, 0x744b877f, 0x7477c47f, 0x74a393ff,
+ 0x74cef67f, 0x74f9e37f, 0x7524637f, 0x754e767f, 0x75781c7f, 0x75a14cff,
+ 0x75ca107f, 0x75f26eff, 0x761a587f, 0x7641d47f, 0x7668e3ff, 0x768f85ff,
+ 0x76b5c37f, 0x76db8b7f, 0x7700eeff, 0x7725e57f, 0x774a76ff, 0x776e9b7f,
+ 0x7792537f, 0x77b5a5ff, 0x77d88bff, 0x77fb157f, 0x781d29ff, 0x783ee17f,
+ 0x78602c7f, 0x78811aff, 0x78a19c7f, 0x78c1b97f, 0x78e1717f, 0x7900cd7f,
+ 0x791fbc7f, 0x793e4eff, 0x795c7cff, 0x797a4e7f, 0x7997bb7f, 0x79b4cbff,
+ 0x79d177ff, 0x79edc7ff, 0x7a09b2ff, 0x7a2549ff, 0x7a407cff, 0x7a5b52ff,
+ 0x7a75d57f, 0x7a8ff2ff, 0x7aa9bcff, 0x7ac32a7f, 0x7adc3bff, 0x7af4f8ff,
+ 0x7b0d5a7f, 0x7b25677f, 0x7b3d20ff, 0x7b547dff, 0x7b6b86ff, 0x7b823c7f,
+ 0x7b989dff, 0x7baeab7f, 0x7bc464ff, 0x7bd9d37f, 0x7beeed7f, 0x7c03b3ff,
+ 0x7c18267f, 0x7c2c4d7f, 0x7c4028ff, 0x7c53b8ff, 0x7c66f4ff, 0x7c79e57f,
+ 0x7c8c8a7f, 0x7c9eec7f, 0x7cb0faff, 0x7cc2c5ff, 0x7cd43cff, 0x7ce5797f,
+ 0x7cf66a7f, 0x7d070f7f, 0x7d1771ff, 0x7d2790ff, 0x7d3764ff, 0x7d46fdff,
+ 0x7d564b7f, 0x7d655dff, 0x7d74257f, 0x7d82b1ff, 0x7d9103ff, 0x7d9f09ff,
+ 0x7dacd57f, 0x7dba667f, 0x7dc7bcff, 0x7dd4cfff, 0x7de1a7ff, 0x7dee45ff,
+ 0x7dfaa87f, 0x7e06d0ff, 0x7e12be7f, 0x7e1e797f, 0x7e29f17f, 0x7e353f7f,
+ 0x7e4052ff, 0x7e4b2b7f, 0x7e55d1ff, 0x7e60457f, 0x7e6a7eff, 0x7e748e7f,
+ 0x7e7e62ff, 0x7e880d7f, 0x7e9185ff, 0x7e9acbff, 0x7ea3df7f, 0x7eacc8ff,
+ 0x7eb5807f, 0x7ebe0dff, 0x7ec668ff, 0x7ece99ff, 0x7ed6a17f, 0x7ede7e7f,
+ 0x7ee631ff, 0x7eedb2ff, 0x7ef5127f, 0x7efc47ff, 0x7f03537f, 0x7f0a3d7f,
+ 0x7f10fd7f, 0x7f17937f, 0x7f1e07ff, 0x7f245aff, 0x7f2a83ff, 0x7f308b7f,
+ 0x7f36697f, 0x7f3c2d7f, 0x7f41d07f, 0x7f47497f, 0x7f4ca8ff, 0x7f51e77f,
+ 0x7f5703ff, 0x7f5bfeff, 0x7f60e0ff, 0x7f65a17f, 0x7f6a3fff, 0x7f6ecdff,
+ 0x7f7331ff, 0x7f77857f, 0x7f7bb6ff, 0x7f7fcfff, 0x7f83c6ff, 0x7f87acff,
+ 0x7f8b79ff, 0x7f8f257f, 0x7f92c07f, 0x7f9641ff, 0x7f99aa7f, 0x7f9cf97f,
+ 0x7fa037ff, 0x7fa35d7f, 0x7fa671ff, 0x7fa964ff, 0x7fac4f7f, 0x7faf20ff,
+ 0x7fb1d8ff, 0x7fb488ff, 0x7fb71f7f, 0x7fb9a57f, 0x7fbc127f, 0x7fbe76ff,
+ 0x7fc0c1ff, 0x7fc2fc7f, 0x7fc52e7f, 0x7fc7477f, 0x7fc957ff, 0x7fcb4eff,
+ 0x7fcd3dff, 0x7fcf1bff, 0x7fd0e97f, 0x7fd2ae7f, 0x7fd462ff, 0x7fd605ff,
+ 0x7fd7a0ff, 0x7fd92b7f, 0x7fdaad7f, 0x7fdc1e7f, 0x7fdd86ff, 0x7fdee77f,
+ 0x7fe036ff, 0x7fe175ff, 0x7fe2b47f, 0x7fe3e27f, 0x7fe507ff, 0x7fe6257f,
+ 0x7fe739ff, 0x7fe83e7f, 0x7fe9427f, 0x7fea357f, 0x7feb28ff, 0x7fec0b7f,
+ 0x7fece57f, 0x7fedbf7f, 0x7fee88ff, 0x7fef51ff, 0x7ff012ff, 0x7ff0cb7f,
+ 0x7ff17bff, 0x7ff2237f, 0x7ff2cb7f, 0x7ff3627f, 0x7ff401ff, 0x7ff4907f,
+ 0x7ff51eff, 0x7ff5a4ff, 0x7ff622ff, 0x7ff6a0ff, 0x7ff7167f, 0x7ff7837f,
+ 0x7ff7f07f, 0x7ff85d7f, 0x7ff8c1ff, 0x7ff91e7f, 0x7ff97a7f, 0x7ff9d6ff,
+ 0x7ffa2aff, 0x7ffa767f, 0x7ffac9ff, 0x7ffb0d7f, 0x7ffb58ff, 0x7ffb9bff,
+ 0x7ffbd67f, 0x7ffc117f, 0x7ffc4bff, 0x7ffc86ff, 0x7ffcb8ff, 0x7ffceb7f,
+ 0x7ffd1dff, 0x7ffd477f, 0x7ffd717f, 0x7ffd9b7f, 0x7ffdc57f, 0x7ffde6ff,
+ 0x7ffe087f, 0x7ffe29ff, 0x7ffe4bff, 0x7ffe64ff, 0x7ffe867f, 0x7ffe9f7f,
+ 0x7ffeb8ff, 0x7ffed1ff, 0x7ffee2ff, 0x7ffefbff, 0x7fff0c7f, 0x7fff1d7f,
+ 0x7fff2e7f, 0x7fff3eff, 0x7fff4fff, 0x7fff607f, 0x7fff68ff, 0x7fff79ff,
+ 0x7fff81ff, 0x7fff92ff, 0x7fff9b7f, 0x7fffa37f, 0x7fffabff, 0x7fffb47f,
+ 0x7fffbcff, 0x7fffc57f, 0x7fffc57f, 0x7fffcd7f, 0x7fffd5ff, 0x7fffd5ff,
+ 0x7fffde7f, 0x7fffde7f, 0x7fffe6ff, 0x7fffe6ff, 0x7fffeeff, 0x7fffeeff,
+ 0x7fffeeff, 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f, 0x7ffff77f,
+ 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 ixheaacd_kbd_win192[192] = {
- 0x00012dfd, 0x000296b3, 0x00047d3d, 0x0006f262, 0x000a0f4d, 0x000ded28,
- 0x0012a51e, 0x0018611f, 0x001f31f4, 0x002749f0, 0x0030c23f, 0x003bcd35,
- 0x004894c4, 0x005742dc, 0x00680170, 0x007b0b38, 0x00908a25, 0x00a8c154,
- 0x00c3eb7c, 0x00e2328f, 0x0103ea6f, 0x01293d0f, 0x015275ed, 0x017fe089,
- 0x01b1af39, 0x01e835dd, 0x0223b793, 0x02647777, 0x02aac107, 0x02f6e827,
- 0x0349278f, 0x03a1cabf, 0x04012597, 0x04677b37, 0x04d50eb7, 0x054a2b9f,
- 0x05c714ff, 0x064c1657, 0x06d96a67, 0x076f5447, 0x080e064f, 0x08b5cbff,
- 0x0966cf3f, 0x0a214acf, 0x0ae5603f, 0x0bb34a3f, 0x0c8b2a6f, 0x0d6d223f,
- 0x0e594aef, 0x0f4fc60f, 0x1050939f, 0x115bcc9f, 0x127179bf, 0x1391925f,
- 0x14bc169f, 0x15f0ed3f, 0x1730163f, 0x1879701f, 0x19ccd0ff, 0x1b2a1f7f,
- 0x1c91211f, 0x1e01abdf, 0x1f7b741f, 0x20fe477f, 0x2289d27f, 0x241dc93f,
- 0x25b9cf7f, 0x275d91bf, 0x2908aabf, 0x2abaa57f, 0x2c73257f, 0x2e31ad3f,
- 0x2ff5c6bf, 0x31bef47f, 0x338cb07f, 0x355e7c7f, 0x3733ca3f, 0x390c133f,
- 0x3ae6c07f, 0x3cc343bf, 0x3ea10dff, 0x407f7fff, 0x425e0b7f, 0x443c20ff,
- 0x461921ff, 0x47f476ff, 0x49cd897f, 0x4ba3d2ff, 0x4d76b37f, 0x4f45ae7f,
- 0x5110237f, 0x52d594ff, 0x54957cff, 0x564f5cff, 0x5802afff, 0x59af0fff,
- 0x5b53f7ff, 0x5cf10a7f, 0x5e85db7f, 0x60120dff, 0x61954e7f, 0x630f387f,
- 0x647f98ff, 0x65e61cff, 0x674288ff, 0x6894aaff, 0x69dc58ff, 0x6b19697f,
- 0x6c4bc27f, 0x6d7342ff, 0x6e8feaff, 0x6fa1a8ff, 0x70a8867f, 0x71a482ff,
- 0x7295a6ff, 0x737c137f, 0x7457d9ff, 0x752923ff, 0x75f01b7f, 0x76ace27f,
- 0x775fb2ff, 0x7808bfff, 0x78a84bff, 0x793e9a7f, 0x79cbdd7f, 0x7a5071ff,
- 0x7acc91ff, 0x7b4091ff, 0x7bacbc7f, 0x7c11667f, 0x7c6ee2ff, 0x7cc57dff,
- 0x7d1593ff, 0x7d5f6fff, 0x7da36dff, 0x7de1da7f, 0x7e1affff, 0x7e4f3b7f,
- 0x7e7ecfff, 0x7eaa10ff, 0x7ed149ff, 0x7ef4be7f, 0x7f14b9ff, 0x7f31767f,
- 0x7f4b37ff, 0x7f62497f, 0x7f76ccff, 0x7f890d7f, 0x7f9934ff, 0x7fa77e7f,
- 0x7fb40aff, 0x7fbf0dff, 0x7fc8afff, 0x7fd10aff, 0x7fd8517f, 0x7fde9bff,
- 0x7fe403ff, 0x7fe8a2ff, 0x7fec99ff, 0x7feff9ff, 0x7ff2cb7f, 0x7ff52fff,
- 0x7ff737ff, 0x7ff8e37f, 0x7ffa43ff, 0x7ffb697f, 0x7ffc5cff, 0x7ffd1dff,
- 0x7ffdbcff, 0x7ffe437f, 0x7ffea7ff, 0x7ffefbff, 0x7fff367f, 0x7fff68ff,
- 0x7fff92ff, 0x7fffabff, 0x7fffc57f, 0x7fffd5ff, 0x7fffde7f, 0x7fffeeff,
- 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff,
- 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x00012dfd, 0x000296b3, 0x00047d3d, 0x0006f262, 0x000a0f4d, 0x000ded28,
+ 0x0012a51e, 0x0018611f, 0x001f31f4, 0x002749f0, 0x0030c23f, 0x003bcd35,
+ 0x004894c4, 0x005742dc, 0x00680170, 0x007b0b38, 0x00908a25, 0x00a8c154,
+ 0x00c3eb7c, 0x00e2328f, 0x0103ea6f, 0x01293d0f, 0x015275ed, 0x017fe089,
+ 0x01b1af39, 0x01e835dd, 0x0223b793, 0x02647777, 0x02aac107, 0x02f6e827,
+ 0x0349278f, 0x03a1cabf, 0x04012597, 0x04677b37, 0x04d50eb7, 0x054a2b9f,
+ 0x05c714ff, 0x064c1657, 0x06d96a67, 0x076f5447, 0x080e064f, 0x08b5cbff,
+ 0x0966cf3f, 0x0a214acf, 0x0ae5603f, 0x0bb34a3f, 0x0c8b2a6f, 0x0d6d223f,
+ 0x0e594aef, 0x0f4fc60f, 0x1050939f, 0x115bcc9f, 0x127179bf, 0x1391925f,
+ 0x14bc169f, 0x15f0ed3f, 0x1730163f, 0x1879701f, 0x19ccd0ff, 0x1b2a1f7f,
+ 0x1c91211f, 0x1e01abdf, 0x1f7b741f, 0x20fe477f, 0x2289d27f, 0x241dc93f,
+ 0x25b9cf7f, 0x275d91bf, 0x2908aabf, 0x2abaa57f, 0x2c73257f, 0x2e31ad3f,
+ 0x2ff5c6bf, 0x31bef47f, 0x338cb07f, 0x355e7c7f, 0x3733ca3f, 0x390c133f,
+ 0x3ae6c07f, 0x3cc343bf, 0x3ea10dff, 0x407f7fff, 0x425e0b7f, 0x443c20ff,
+ 0x461921ff, 0x47f476ff, 0x49cd897f, 0x4ba3d2ff, 0x4d76b37f, 0x4f45ae7f,
+ 0x5110237f, 0x52d594ff, 0x54957cff, 0x564f5cff, 0x5802afff, 0x59af0fff,
+ 0x5b53f7ff, 0x5cf10a7f, 0x5e85db7f, 0x60120dff, 0x61954e7f, 0x630f387f,
+ 0x647f98ff, 0x65e61cff, 0x674288ff, 0x6894aaff, 0x69dc58ff, 0x6b19697f,
+ 0x6c4bc27f, 0x6d7342ff, 0x6e8feaff, 0x6fa1a8ff, 0x70a8867f, 0x71a482ff,
+ 0x7295a6ff, 0x737c137f, 0x7457d9ff, 0x752923ff, 0x75f01b7f, 0x76ace27f,
+ 0x775fb2ff, 0x7808bfff, 0x78a84bff, 0x793e9a7f, 0x79cbdd7f, 0x7a5071ff,
+ 0x7acc91ff, 0x7b4091ff, 0x7bacbc7f, 0x7c11667f, 0x7c6ee2ff, 0x7cc57dff,
+ 0x7d1593ff, 0x7d5f6fff, 0x7da36dff, 0x7de1da7f, 0x7e1affff, 0x7e4f3b7f,
+ 0x7e7ecfff, 0x7eaa10ff, 0x7ed149ff, 0x7ef4be7f, 0x7f14b9ff, 0x7f31767f,
+ 0x7f4b37ff, 0x7f62497f, 0x7f76ccff, 0x7f890d7f, 0x7f9934ff, 0x7fa77e7f,
+ 0x7fb40aff, 0x7fbf0dff, 0x7fc8afff, 0x7fd10aff, 0x7fd8517f, 0x7fde9bff,
+ 0x7fe403ff, 0x7fe8a2ff, 0x7fec99ff, 0x7feff9ff, 0x7ff2cb7f, 0x7ff52fff,
+ 0x7ff737ff, 0x7ff8e37f, 0x7ffa43ff, 0x7ffb697f, 0x7ffc5cff, 0x7ffd1dff,
+ 0x7ffdbcff, 0x7ffe437f, 0x7ffea7ff, 0x7ffefbff, 0x7fff367f, 0x7fff68ff,
+ 0x7fff92ff, 0x7fffabff, 0x7fffc57f, 0x7fffd5ff, 0x7fffde7f, 0x7fffeeff,
+ 0x7fffeeff, 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff,
+ 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 ixheaacd_kbd_win96[96] = {
- 0x0001abd1, 0x00057082, 0x000ba1f4, 0x001511df, 0x0022ab25, 0x00359bc3,
- 0x004f11b5, 0x0070867a, 0x009b7bf1, 0x00d1b716, 0x01150549, 0x0167663f,
- 0x01caf2d7, 0x0241d4b7, 0x02ce570f, 0x0372bcb3, 0x043150d7, 0x050c5eaf,
- 0x06061847, 0x0720a73f, 0x085dfa7f, 0x09bfe7df, 0x0b480a5f, 0x0cf7b17f,
- 0x0ecff21f, 0x10d184bf, 0x12fcc5bf, 0x1551bd5f, 0x17cffebf, 0x1a76c05f,
- 0x1d44c37f, 0x203864bf, 0x234f7a7f, 0x268797ff, 0x29ddca3f, 0x2d4ed2bf,
- 0x30d70e7f, 0x34729f3f, 0x381d53bf, 0x3bd2bf3f, 0x3f8e6cff, 0x434ba4ff,
- 0x4705b7ff, 0x4ab8067f, 0x4e5de9ff, 0x51f2f57f, 0x5572de7f, 0x58d9ad7f,
- 0x5c239e7f, 0x5f4d617f, 0x6253eaff, 0x6534b4ff, 0x67eda67f, 0x6a7d137f,
- 0x6ce1d67f, 0x6f1b2e7f, 0x7128f17f, 0x730b527f, 0x74c2efff, 0x7650deff,
- 0x77b6887f, 0x78f5a0ff, 0x7a10387f, 0x7b0880ff, 0x7be0deff, 0x7c9bd7ff,
- 0x7d3c037f, 0x7dc3f7ff, 0x7e364bff, 0x7e957cff, 0x7ee3e6ff, 0x7f23dd7f,
- 0x7f57687f, 0x7f80777f, 0x7fa0ceff, 0x7fb9e8ff, 0x7fcd24ff, 0x7fdbb17f,
- 0x7fe6817f, 0x7fee677f, 0x7ff41aff, 0x7ff8227f, 0x7ffae37f, 0x7ffcc9ff,
- 0x7ffe087f, 0x7ffed1ff, 0x7fff4fff, 0x7fffa37f, 0x7fffcd7f, 0x7fffe6ff,
- 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
+ 0x0001abd1, 0x00057082, 0x000ba1f4, 0x001511df, 0x0022ab25, 0x00359bc3,
+ 0x004f11b5, 0x0070867a, 0x009b7bf1, 0x00d1b716, 0x01150549, 0x0167663f,
+ 0x01caf2d7, 0x0241d4b7, 0x02ce570f, 0x0372bcb3, 0x043150d7, 0x050c5eaf,
+ 0x06061847, 0x0720a73f, 0x085dfa7f, 0x09bfe7df, 0x0b480a5f, 0x0cf7b17f,
+ 0x0ecff21f, 0x10d184bf, 0x12fcc5bf, 0x1551bd5f, 0x17cffebf, 0x1a76c05f,
+ 0x1d44c37f, 0x203864bf, 0x234f7a7f, 0x268797ff, 0x29ddca3f, 0x2d4ed2bf,
+ 0x30d70e7f, 0x34729f3f, 0x381d53bf, 0x3bd2bf3f, 0x3f8e6cff, 0x434ba4ff,
+ 0x4705b7ff, 0x4ab8067f, 0x4e5de9ff, 0x51f2f57f, 0x5572de7f, 0x58d9ad7f,
+ 0x5c239e7f, 0x5f4d617f, 0x6253eaff, 0x6534b4ff, 0x67eda67f, 0x6a7d137f,
+ 0x6ce1d67f, 0x6f1b2e7f, 0x7128f17f, 0x730b527f, 0x74c2efff, 0x7650deff,
+ 0x77b6887f, 0x78f5a0ff, 0x7a10387f, 0x7b0880ff, 0x7be0deff, 0x7c9bd7ff,
+ 0x7d3c037f, 0x7dc3f7ff, 0x7e364bff, 0x7e957cff, 0x7ee3e6ff, 0x7f23dd7f,
+ 0x7f57687f, 0x7f80777f, 0x7fa0ceff, 0x7fb9e8ff, 0x7fcd24ff, 0x7fdbb17f,
+ 0x7fe6817f, 0x7fee677f, 0x7ff41aff, 0x7ff8227f, 0x7ffae37f, 0x7ffcc9ff,
+ 0x7ffe087f, 0x7ffed1ff, 0x7fff4fff, 0x7fffa37f, 0x7fffcd7f, 0x7fffe6ff,
+ 0x7ffff77f, 0x7ffff77f, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};
const WORD32 ixheaacd_kbd_win48[48] = {
- 0x000257ef, 0x000eb8da, 0x0029a9c3, 0x005c2d23, 0x00b19012, 0x0137851d,
- 0x01fddfc9, 0x0316102f, 0x04926117, 0x0684ff27, 0x08fed5af, 0x0c0e533f,
- 0x0fbe2c0f, 0x1414349f, 0x19106c7f, 0x1eac53df, 0x24da9d7f, 0x2b874cff,
- 0x3298467f, 0x39ee4b7f, 0x41665bff, 0x48db617f, 0x50280e7f, 0x5728c9ff,
- 0x5dbd86ff, 0x63cb63ff, 0x693def7f, 0x6e07fb7f, 0x7223ed7f, 0x759381ff,
- 0x785f127f, 0x7a9467ff, 0x7c453f7f, 0x7d85a5ff, 0x7e6a537f, 0x7f0737ff,
- 0x7f6e547f, 0x7faefb7f, 0x7fd577ff, 0x7feb177f, 0x7ff6797f, 0x7ffc087f,
- 0x7ffe84ff, 0x7fff84ff, 0x7fffdeff, 0x7ffff8ff, 0x7ffffeff, 0x7fffffff};
+ 0x000257ef, 0x000eb8da, 0x0029a9c3, 0x005c2d23, 0x00b19012, 0x0137851d,
+ 0x01fddfc9, 0x0316102f, 0x04926117, 0x0684ff27, 0x08fed5af, 0x0c0e533f,
+ 0x0fbe2c0f, 0x1414349f, 0x19106c7f, 0x1eac53df, 0x24da9d7f, 0x2b874cff,
+ 0x3298467f, 0x39ee4b7f, 0x41665bff, 0x48db617f, 0x50280e7f, 0x5728c9ff,
+ 0x5dbd86ff, 0x63cb63ff, 0x693def7f, 0x6e07fb7f, 0x7223ed7f, 0x759381ff,
+ 0x785f127f, 0x7a9467ff, 0x7c453f7f, 0x7d85a5ff, 0x7e6a537f, 0x7f0737ff,
+ 0x7f6e547f, 0x7faefb7f, 0x7fd577ff, 0x7feb177f, 0x7ff6797f, 0x7ffc087f,
+ 0x7ffe84ff, 0x7fff84ff, 0x7fffdeff, 0x7ffff8ff, 0x7ffffeff, 0x7fffffff};
const FLOAT32 mean_lsf_conc[16] = {
- 415.8089f, 810.0709f, 1291.5637f, 1674.4192f, 2077.4895f, 2464.5791f,
- 2841.3894f, 3217.6775f, 3587.4265f, 3976.9675f, 4366.0098f, 4766.7573f,
- 5149.4009f, 5545.2534f, 5918.0859f, 1577.0078f};
+ 415.8089f, 810.0709f, 1291.5637f, 1674.4192f, 2077.4895f, 2464.5791f,
+ 2841.3894f, 3217.6775f, 3587.4265f, 3976.9675f, 4366.0098f, 4766.7573f,
+ 5149.4009f, 5545.2534f, 5918.0859f, 1577.0078f};
const WORD32 ixheaacd_pre_post_twid_cos_sin_512[4][512] = {
- {2147483015, 2147467855, 2147432483, 2147376898, 2147301101, 2147205093,
- 2147088874, 2146952447, 2146795811, 2146618969, 2146421922, 2146204673,
- 2145967222, 2145709573, 2145431727, 2145133688, 2144815458, 2144477040,
- 2144118438, 2143739654, 2143340693, 2142921558, 2142482252, 2142022781,
- 2141543148, 2141043359, 2140523417, 2139983327, 2139423095, 2138842727,
- 2138242226, 2137621600, 2136980853, 2136319993, 2135639024, 2134937954,
- 2134216790, 2133475537, 2132714203, 2131932795, 2131131321, 2130309787,
- 2129468203, 2128606574, 2127724911, 2126823221, 2125901512, 2124959794,
- 2123998074, 2123016363, 2122014669, 2120993002, 2119951371, 2118889786,
- 2117808258, 2116706796, 2115585411, 2114444113, 2113282913, 2112101822,
- 2110900851, 2109680012, 2108439315, 2107178773, 2105898398, 2104598201,
- 2103278194, 2101938391, 2100578804, 2099199445, 2097800328, 2096381465,
- 2094942870, 2093484557, 2092006540, 2090508831, 2088991446, 2087454399,
- 2085897703, 2084321375, 2082725428, 2081109877, 2079474738, 2077820027,
- 2076145758, 2074451948, 2072738612, 2071005767, 2069253429, 2067481614,
- 2065690339, 2063879622, 2062049478, 2060199925, 2058330981, 2056442663,
- 2054534990, 2052607978, 2050661646, 2048696012, 2046711096, 2044706915,
- 2042683488, 2040640835, 2038578975, 2036497927, 2034397710, 2032278345,
- 2030139852, 2027982250, 2025805559, 2023609802, 2021394997, 2019161166,
- 2016908330, 2014636510, 2012345727, 2010036004, 2007707361, 2005359821,
- 2002993406, 2000608137, 1998204039, 1995781132, 1993339441, 1990878987,
- 1988399795, 1985901886, 1983385286, 1980850018, 1978296105, 1975723571,
- 1973132441, 1970522740, 1967894491, 1965247719, 1962582450, 1959898708,
- 1957196519, 1954475908, 1951736901, 1948979523, 1946203800, 1943409760,
- 1940597427, 1937766828, 1934917991, 1932050941, 1929165706, 1926262314,
- 1923340790, 1920401163, 1917443461, 1914467711, 1911473941, 1908462180,
- 1905432455, 1902384796, 1899319231, 1896235789, 1893134498, 1890015389,
- 1886878490, 1883723832, 1880551443, 1877361353, 1874153593, 1870928193,
- 1867685183, 1864424593, 1861146455, 1857850799, 1854537656, 1851207058,
- 1847859035, 1844493620, 1841110843, 1837710737, 1834293334, 1830858666,
- 1827406765, 1823937664, 1820451396, 1816947992, 1813427487, 1809889913,
- 1806335304, 1802763693, 1799175113, 1795569599, 1791947185, 1788307904,
- 1784651790, 1780978879, 1777289205, 1773582802, 1769859705, 1766119950,
- 1762363572, 1758590605, 1754801086, 1750995050, 1747172533, 1743333571,
- 1739478200, 1735606457, 1731718377, 1727813998, 1723893355, 1719956487,
- 1716003430, 1712034221, 1708048898, 1704047499, 1700030060, 1695996619,
- 1691947216, 1687881887, 1683800671, 1679703606, 1675590732, 1671462086,
- 1667317708, 1663157636, 1658981910, 1654790569, 1650583653, 1646361200,
- 1642123252, 1637869847, 1633601026, 1629316829, 1625017296, 1620702468,
- 1616372385, 1612027088, 1607666618, 1603291017, 1598900324, 1594494582,
- 1590073832, 1585638116, 1581187475, 1576721951, 1572241587, 1567746424,
- 1563236505, 1558711872, 1554172567, 1549618635, 1545050117, 1540467056,
- 1535869495, 1531257479, 1526631050, 1521990251, 1517335127, 1512665721,
- 1507982078, 1503284241, 1498572254, 1493846162, 1489106009, 1484351841,
- 1479583701, 1474801635, 1470005687, 1465195903, 1460372328, 1455535008,
- 1450683987, 1445819312, 1440941029, 1436049183, 1431143820, 1426224987,
- 1421292729, 1416347094, 1411388127, 1406415876, 1401430388, 1396431708,
- 1391419885, 1386394965, 1381356996, 1376306025, 1371242100, 1366165268,
- 1361075577, 1355973076, 1350857811, 1345729832, 1340589186, 1335435922,
- 1330270088, 1325091733, 1319900906, 1314697656, 1309482031, 1304254081,
- 1299013854, 1293761401, 1288496771, 1283220012, 1277931176, 1272630311,
- 1267317467, 1261992696, 1256656045, 1251307567, 1245947311, 1240575328,
- 1235191667, 1229796381, 1224389520, 1218971133, 1213541274, 1208099992,
- 1202647339, 1197183367, 1191708126, 1186221668, 1180724045, 1175215309,
- 1169695511, 1164164703, 1158622938, 1153070268, 1147506744, 1141932419,
- 1136347347, 1130751578, 1125145167, 1119528165, 1113900626, 1108262602,
- 1102614147, 1096955313, 1091286155, 1085606725, 1079917077, 1074217265,
- 1068507341, 1062787360, 1057057376, 1051317442, 1045567614, 1039807943,
- 1034038486, 1028259296, 1022470427, 1016671935, 1010863874, 1005046297,
- 999219261, 993382820, 987537029, 981681942, 975817616, 969944105,
- 964061464, 958169750, 952269016, 946359320, 940440716, 934513260,
- 928577009, 922632017, 916678341, 910716037, 904745160, 898765769,
- 892777917, 886781662, 880777061, 874764170, 868743044, 862713742,
- 856676320, 850630834, 844577342, 838515900, 832446566, 826369397,
- 820284450, 814191781, 808091449, 801983512, 795868025, 789745048,
- 783614637, 777476851, 771331746, 765179382, 759019815, 752853104,
- 746679307, 740498482, 734310687, 728115981, 721914421, 715706067,
- 709490975, 703269206, 697040818, 690805868, 684564417, 678316522,
- 672062242, 665801637, 659534765, 653261685, 646982457, 640697138,
- 634405790, 628108470, 621805238, 615496153, 609181275, 602860664,
- 596534378, 590202477, 583865021, 577522069, 571173681, 564819918,
- 558460838, 552096501, 545726969, 539352299, 532972553, 526587790,
- 520198071, 513803456, 507404004, 500999777, 494590834, 488177236,
- 481759043, 475336315, 468909113, 462477498, 456041530, 449601269,
- 443156776, 436708113, 430255339, 423798515, 417337702, 410872961,
- 404404353, 397931938, 391455778, 384975933, 378492465, 372005434,
- 365514902, 359020929, 352523578, 346022908, 339518981, 333011858,
- 326501601, 319988271, 313471929, 306952637, 300430455, 293905446,
- 287377670, 280847190, 274314066, 267778360, 261240133, 254699448,
- 248156365, 241610947, 235063254, 228513349, 221961293, 215407148,
- 208850976, 202292837, 195732795, 189170910, 182607245, 176041861,
- 169474820, 162906184, 156336014, 149764373, 143191322, 136616924,
- 130041240, 123464331, 116886261, 110307090, 103726882, 97145696,
- 90563597, 83980645, 77396903, 70812432, 64227294, 57641552,
- 51055268, 44468503, 37881319, 31293779, 24705944, 18117877,
- 11529639, 4941293},
- {-1647099, -8235476, -14823776, -21411936, -27999895,
- -34587590, -41174959, -47761942, -54348474, -60934495,
- -67519942, -74104754, -80688869, -87272224, -93854757,
- -100436407, -107017112, -113596809, -120175438, -126752935,
- -133329239, -139904288, -146478020, -153050374, -159621287,
- -166190697, -172758544, -179324764, -185889296, -192452079,
- -199013050, -205572148, -212129312, -218684478, -225237586,
- -231788574, -238337381, -244883944, -251428202, -257970094,
- -264509558, -271046532, -277580954, -284112764, -290641900,
- -297168300, -303691903, -310212648, -316730473, -323245317,
- -329757118, -336265815, -342771348, -349273654, -355772672,
- -362268342, -368760602, -375249391, -381734648, -388216312,
- -394694322, -401168617, -407639136, -414105819, -420568603,
- -427027429, -433482236, -439932962, -446379548, -452821932,
- -459260054, -465693853, -472123270, -478548242, -484968710,
- -491384613, -497795891, -504202484, -510604331, -517001372,
- -523393547, -529780795, -536163057, -542540272, -548912381,
- -555279323, -561641039, -567997468, -574348551, -580694228,
- -587034439, -593369125, -599698226, -606021683, -612339435,
- -618651423, -624957589, -631257872, -637552214, -643840555,
- -650122836, -656398997, -662668981, -668932727, -675190176,
- -681441271, -687685951, -693924159, -700155836, -706380922,
- -712599359, -718811090, -725016054, -731214195, -737405452,
- -743589770, -749767088, -755937349, -762100495, -768256468,
- -774405209, -780546662, -786680768, -792807469, -798926708,
- -805038428, -811142570, -817239077, -823327892, -829408958,
- -835482216, -841547611, -847605085, -853654581, -859696043,
- -865729412, -871754633, -877771648, -883780402, -889780837,
- -895772897, -901756525, -907731667, -913698264, -919656261,
- -925605602, -931546230, -937478091, -943401128, -949315285,
- -955220507, -961116738, -967003922, -972882005, -978750931,
- -984610644, -990461090, -996302213, -1002133958, -1007956271,
- -1013769097, -1019572381, -1025366068, -1031150104, -1036924435,
- -1042689005, -1048443762, -1054188650, -1059923615, -1065648604,
- -1071363563, -1077068438, -1082763175, -1088447721, -1094122022,
- -1099786024, -1105439675, -1111082921, -1116715709, -1122337986,
- -1127949700, -1133550796, -1139141223, -1144720928, -1150289859,
- -1155847963, -1161395187, -1166931480, -1172456789, -1177971063,
- -1183474249, -1188966296, -1194447152, -1199916765, -1205375084,
- -1210822058, -1216257635, -1221681764, -1227094394, -1232495474,
- -1237884954, -1243262782, -1248628908, -1253983282, -1259325852,
- -1264656569, -1269975383, -1275282244, -1280577101, -1285859904,
- -1291130605, -1296389153, -1301635499, -1306869593, -1312091387,
- -1317300831, -1322497876, -1327682472, -1332854573, -1338014128,
- -1343161089, -1348295408, -1353417036, -1358525925, -1363622027,
- -1368705294, -1373775679, -1378833133, -1383877609, -1388909059,
- -1393927437, -1398932694, -1403924784, -1408903660, -1413869274,
- -1418821581, -1423760533, -1428686084, -1433598188, -1438496798,
- -1443381869, -1448253354, -1453111207, -1457955383, -1462785837,
- -1467602522, -1472405393, -1477194406, -1481969514, -1486730674,
- -1491477840, -1496210968, -1500930013, -1505634931, -1510325677,
- -1515002207, -1519664477, -1524312444, -1528946063, -1533565291,
- -1538170085, -1542760401, -1547336196, -1551897427, -1556444051,
- -1560976025, -1565493306, -1569995852, -1574483621, -1578956571,
- -1583414658, -1587857842, -1592286081, -1596699332, -1601097554,
- -1605480706, -1609848747, -1614201636, -1618539331, -1622861791,
- -1627168977, -1631460847, -1635737361, -1639998479, -1644244161,
- -1648474366, -1652689055, -1656888189, -1661071727, -1665239631,
- -1669391861, -1673528378, -1677649143, -1681754117, -1685843262,
- -1689916539, -1693973910, -1698015337, -1702040782, -1706050206,
- -1710043572, -1714020842, -1717981980, -1721926947, -1725855707,
- -1729768222, -1733664457, -1737544373, -1741407935, -1745255106,
- -1749085850, -1752900131, -1756697913, -1760479160, -1764243837,
- -1767991908, -1771723338, -1775438092, -1779136135, -1782817432,
- -1786481949, -1790129650, -1793760503, -1797374471, -1800971522,
- -1804551622, -1808114736, -1811660832, -1815189875, -1818701834,
- -1822196674, -1825674363, -1829134868, -1832578156, -1836004196,
- -1839412954, -1842804399, -1846178499, -1849535222, -1852874537,
- -1856196411, -1859500815, -1862787716, -1866057083, -1869308887,
- -1872543096, -1875759680, -1878958608, -1882139852, -1885303379,
- -1888449162, -1891577169, -1894687373, -1897779743, -1900854250,
- -1903910866, -1906949561, -1909970307, -1912973077, -1915957840,
- -1918924570, -1921873238, -1924803816, -1927716278, -1930610595,
- -1933486741, -1936344688, -1939184409, -1942005878, -1944809068,
- -1947593953, -1950360506, -1953108702, -1955838514, -1958549918,
- -1961242886, -1963917395, -1966573418, -1969210932, -1971829910,
- -1974430329, -1977012164, -1979575390, -1982119984, -1984645921,
- -1987153178, -1989641732, -1992111558, -1994562633, -1996994935,
- -1999408441, -2001803127, -2004178971, -2006535952, -2008874046,
- -2011193232, -2013493487, -2015774791, -2018037122, -2020280458,
- -2022504779, -2024710063, -2026896289, -2029063438, -2031211488,
- -2033340420, -2035450213, -2037540848, -2039612305, -2041664564,
- -2043697606, -2045711412, -2047705963, -2049681241, -2051637226,
- -2053573900, -2055491245, -2057389243, -2059267876, -2061127127,
- -2062966977, -2064787410, -2066588408, -2068369955, -2070132034,
- -2071874627, -2073597720, -2075301295, -2076985336, -2078649828,
- -2080294755, -2081920102, -2083525853, -2085111992, -2086678506,
- -2088225379, -2089752597, -2091260146, -2092748011, -2094216178,
- -2095664633, -2097093364, -2098502355, -2099891595, -2101261070,
- -2102610767, -2103940673, -2105250776, -2106541064, -2107811524,
- -2109062145, -2110292914, -2111503821, -2112694853, -2113866000,
- -2115017250, -2116148593, -2117260018, -2118351514, -2119423072,
- -2120474681, -2121506331, -2122518013, -2123509717, -2124481433,
- -2125433154, -2126364868, -2127276569, -2128168247, -2129039893,
- -2129891501, -2130723061, -2131534566, -2132326008, -2133097379,
- -2133848674, -2134579883, -2135291001, -2135982021, -2136652937,
- -2137303741, -2137934428, -2138544992, -2139135428, -2139705729,
- -2140255890, -2140785906, -2141295773, -2141785485, -2142255037,
- -2142704426, -2143133647, -2143542696, -2143931569, -2144300262,
- -2144648773, -2144977097, -2145285232, -2145573174, -2145840922,
- -2146088472, -2146315823, -2146522971, -2146709916, -2146876655,
- -2147023187, -2147149510, -2147255623, -2147341526, -2147407217,
- -2147452695, -2147477962},
- {2147483647, 2147473540, 2147443221, 2147392689, 2147321945, 2147230990,
- 2147119824, 2146988448, 2146836865, 2146665074, 2146473078, 2146260879,
- 2146028478, 2145775879, 2145503082, 2145210091, 2144896908, 2144563537,
- 2144209981, 2143836242, 2143442325, 2143028233, 2142593969, 2142139539,
- 2141664947, 2141170196, 2140655291, 2140120238, 2139565041, 2138989706,
- 2138394238, 2137778643, 2137142926, 2136487093, 2135811151, 2135115106,
- 2134398964, 2133662733, 2132906418, 2132130028, 2131333570, 2130517051,
- 2129680478, 2128823860, 2127947205, 2127050521, 2126133816, 2125197099,
- 2124240379, 2123263664, 2122266965, 2121250290, 2120213650, 2119157053,
- 2118080509, 2116984030, 2115867624, 2114731304, 2113575078, 2112398959,
- 2111202957, 2109987084, 2108751350, 2107495769, 2106220350, 2104925108,
- 2103610052, 2102275197, 2100920555, 2099546137, 2098151959, 2096738031,
- 2095304368, 2093850983, 2092377891, 2090885104, 2089372636, 2087840503,
- 2086288718, 2084717297, 2083126253, 2081515602, 2079885359, 2078235539,
- 2076566158, 2074877232, 2073168776, 2071440807, 2069693340, 2067926393,
- 2066139982, 2064334123, 2062508834, 2060664132, 2058800034, 2056916558,
- 2055013722, 2053091543, 2051150039, 2049189229, 2047209132, 2045209765,
- 2043191148, 2041153300, 2039096240, 2037019987, 2034924560, 2032809981,
- 2030676267, 2028523440, 2026351520, 2024160527, 2021950482, 2019721406,
- 2017473319, 2015206243, 2012920199, 2010615209, 2008291294, 2005948476,
- 2003586778, 2001206221, 1998806828, 1996388621, 1993951623, 1991495858,
- 1989021348, 1986528117, 1984016187, 1981485584, 1978936329, 1976368449,
- 1973781966, 1971176905, 1968553290, 1965911147, 1963250500, 1960571374,
- 1957873794, 1955157786, 1952423376, 1949670588, 1946899449, 1944109986,
- 1941302224, 1938476189, 1935631909, 1932769410, 1929888719, 1926989863,
- 1924072869, 1921137766, 1918184579, 1915213339, 1912224071, 1909216805,
- 1906191569, 1903148391, 1900087299, 1897008324, 1893911493, 1890796835,
- 1887664381, 1884514160, 1881346200, 1878160533, 1874957188, 1871736195,
- 1868497584, 1865241387, 1861967633, 1858676353, 1855367579, 1852041342,
- 1848697672, 1845336602, 1841958163, 1838562387, 1835149305, 1831718950,
- 1828271354, 1824806550, 1821324571, 1817825448, 1814309215, 1810775905,
- 1807225552, 1803658188, 1800073847, 1796472564, 1792854371, 1789219303,
- 1785567395, 1781898680, 1778213193, 1774510969, 1770792043, 1767056449,
- 1763304223, 1759535400, 1755750016, 1751948106, 1748129706, 1744294851,
- 1740443579, 1736575926, 1732691926, 1728791618, 1724875039, 1720942223,
- 1716993210, 1713028036, 1709046738, 1705049354, 1701035921, 1697006477,
- 1692961061, 1688899710, 1684822462, 1680729356, 1676620430, 1672495724,
- 1668355275, 1664199123, 1660027307, 1655839866, 1651636840, 1647418268,
- 1643184190, 1638934645, 1634669674, 1630389317, 1626093615, 1621782607,
- 1617456334, 1613114836, 1608758156, 1604386334, 1599999410, 1595597426,
- 1591180424, 1586748446, 1582301532, 1577839725, 1573363067, 1568871600,
- 1564365365, 1559844407, 1555308767, 1550758487, 1546193611, 1541614182,
- 1537020242, 1532411836, 1527789006, 1523151796, 1518500249, 1513834409,
- 1509154321, 1504460028, 1499751575, 1495029005, 1490292363, 1485541694,
- 1480777043, 1475998454, 1471205973, 1466399644, 1461579512, 1456745624,
- 1451898024, 1447036759, 1442161873, 1437273413, 1432371425, 1427455955,
- 1422527049, 1417584754, 1412629116, 1407660182, 1402677998, 1397682612,
- 1392674071, 1387652420, 1382617709, 1377569984, 1372509293, 1367435684,
- 1362349203, 1357249900, 1352137821, 1347013016, 1341875532, 1336725418,
- 1331562722, 1326387493, 1321199779, 1315999630, 1310787094, 1305562221,
- 1300325059, 1295075658, 1289814067, 1284540336, 1279254514, 1273956652,
- 1268646799, 1263325004, 1257991319, 1252645793, 1247288476, 1241919420,
- 1236538674, 1231146290, 1225742317, 1220326808, 1214899812, 1209461381,
- 1204011566, 1198550418, 1193077990, 1187594331, 1182099495, 1176593532,
- 1171076494, 1165548434, 1160009404, 1154459455, 1148898639, 1143327010,
- 1137744620, 1132151520, 1126547764, 1120933405, 1115308495, 1109673088,
- 1104027236, 1098370992, 1092704410, 1087027543, 1081340444, 1075643168,
- 1069935767, 1064218295, 1058490807, 1052753356, 1047005996, 1041248781,
- 1035481765, 1029705003, 1023918549, 1018122458, 1012316783, 1006501580,
- 1000676904, 994842809, 988999350, 983146582, 977284561, 971413341,
- 965532977, 959643526, 953745042, 947837581, 941921199, 935995951,
- 930061893, 924119081, 918167571, 912207418, 906238680, 900261412,
- 894275670, 888281511, 882278991, 876268167, 870249094, 864221831,
- 858186434, 852142958, 846091463, 840032003, 833964637, 827889421,
- 821806412, 815715669, 809617248, 803511206, 797397601, 791276491,
- 785147933, 779011985, 772868705, 766718150, 760560379, 754395449,
- 748223418, 742044344, 735858286, 729665302, 723465451, 717258789,
- 711045377, 704825271, 698598532, 692365217, 686125386, 679879096,
- 673626407, 667367378, 661102067, 654830534, 648552837, 642269036,
- 635979189, 629683356, 623381597, 617073970, 610760535, 604441351,
- 598116478, 591785975, 585449902, 579108319, 572761285, 566408859,
- 560051103, 553688075, 547319836, 540946445, 534567962, 528184448,
- 521795962, 515402565, 509004317, 502601278, 496193509, 489781068,
- 483364018, 476942419, 470516330, 464085812, 457650927, 451211733,
- 444768293, 438320666, 431868914, 425413097, 418953276, 412489511,
- 406021864, 399550395, 393075166, 386596236, 380113668, 373627522,
- 367137860, 360644742, 354148229, 347648383, 341145265, 334638935,
- 328129456, 321616889, 315101294, 308582733, 302061268, 295536960,
- 289009870, 282480060, 275947591, 269412525, 262874923, 256334846,
- 249792357, 243247517, 236700387, 230151030, 223599506, 217045877,
- 210490205, 203932553, 197372981, 190811551, 184248325, 177683365,
- 171116732, 164548489, 157978697, 151407418, 144834714, 138260647,
- 131685278, 125108670, 118530884, 111951983, 105372028, 98791081,
- 92209204, 85626459, 79042909, 72458614, 65873638, 59288041,
- 52701886, 46115236, 39528151, 32940694, 26352927, 19764912,
- 13176711, 6588386},
- {0, -6588386, -13176711, -19764912, -26352927,
- -32940694, -39528151, -46115236, -52701886, -59288041,
- -65873638, -72458614, -79042909, -85626459, -92209204,
- -98791081, -105372028, -111951983, -118530884, -125108670,
- -131685278, -138260647, -144834714, -151407418, -157978697,
- -164548489, -171116732, -177683365, -184248325, -190811551,
- -197372981, -203932553, -210490205, -217045877, -223599506,
- -230151030, -236700387, -243247517, -249792357, -256334846,
- -262874923, -269412525, -275947591, -282480060, -289009870,
- -295536960, -302061268, -308582733, -315101294, -321616889,
- -328129456, -334638935, -341145265, -347648383, -354148229,
- -360644742, -367137860, -373627522, -380113668, -386596236,
- -393075166, -399550395, -406021864, -412489511, -418953276,
- -425413097, -431868914, -438320666, -444768293, -451211733,
- -457650927, -464085812, -470516330, -476942419, -483364018,
- -489781068, -496193509, -502601278, -509004317, -515402565,
- -521795962, -528184448, -534567962, -540946445, -547319836,
- -553688075, -560051103, -566408859, -572761285, -579108319,
- -585449902, -591785975, -598116478, -604441351, -610760535,
- -617073970, -623381597, -629683356, -635979189, -642269036,
- -648552837, -654830534, -661102067, -667367378, -673626407,
- -679879096, -686125386, -692365217, -698598532, -704825271,
- -711045377, -717258789, -723465451, -729665302, -735858286,
- -742044344, -748223418, -754395449, -760560379, -766718150,
- -772868705, -779011985, -785147933, -791276491, -797397601,
- -803511206, -809617248, -815715669, -821806412, -827889421,
- -833964637, -840032003, -846091463, -852142958, -858186434,
- -864221831, -870249094, -876268167, -882278991, -888281511,
- -894275670, -900261412, -906238680, -912207418, -918167571,
- -924119081, -930061893, -935995951, -941921199, -947837581,
- -953745042, -959643526, -965532977, -971413341, -977284561,
- -983146582, -988999350, -994842809, -1000676904, -1006501580,
- -1012316783, -1018122458, -1023918549, -1029705003, -1035481765,
- -1041248781, -1047005996, -1052753356, -1058490807, -1064218295,
- -1069935767, -1075643168, -1081340444, -1087027543, -1092704410,
- -1098370992, -1104027236, -1109673088, -1115308495, -1120933405,
- -1126547764, -1132151520, -1137744620, -1143327010, -1148898639,
- -1154459455, -1160009404, -1165548434, -1171076494, -1176593532,
- -1182099495, -1187594331, -1193077990, -1198550418, -1204011566,
- -1209461381, -1214899812, -1220326808, -1225742317, -1231146290,
- -1236538674, -1241919420, -1247288476, -1252645793, -1257991319,
- -1263325004, -1268646799, -1273956652, -1279254514, -1284540336,
- -1289814067, -1295075658, -1300325059, -1305562221, -1310787094,
- -1315999630, -1321199779, -1326387493, -1331562722, -1336725418,
- -1341875532, -1347013016, -1352137821, -1357249900, -1362349203,
- -1367435684, -1372509293, -1377569984, -1382617709, -1387652420,
- -1392674071, -1397682612, -1402677998, -1407660182, -1412629116,
- -1417584754, -1422527049, -1427455955, -1432371425, -1437273413,
- -1442161873, -1447036759, -1451898024, -1456745624, -1461579512,
- -1466399644, -1471205973, -1475998454, -1480777043, -1485541694,
- -1490292363, -1495029005, -1499751575, -1504460028, -1509154321,
- -1513834409, -1518500249, -1523151796, -1527789006, -1532411836,
- -1537020242, -1541614182, -1546193611, -1550758487, -1555308767,
- -1559844407, -1564365365, -1568871600, -1573363067, -1577839725,
- -1582301532, -1586748446, -1591180424, -1595597426, -1599999410,
- -1604386334, -1608758156, -1613114836, -1617456334, -1621782607,
- -1626093615, -1630389317, -1634669674, -1638934645, -1643184190,
- -1647418268, -1651636840, -1655839866, -1660027307, -1664199123,
- -1668355275, -1672495724, -1676620430, -1680729356, -1684822462,
- -1688899710, -1692961061, -1697006477, -1701035921, -1705049354,
- -1709046738, -1713028036, -1716993210, -1720942223, -1724875039,
- -1728791618, -1732691926, -1736575926, -1740443579, -1744294851,
- -1748129706, -1751948106, -1755750016, -1759535400, -1763304223,
- -1767056449, -1770792043, -1774510969, -1778213193, -1781898680,
- -1785567395, -1789219303, -1792854371, -1796472564, -1800073847,
- -1803658188, -1807225552, -1810775905, -1814309215, -1817825448,
- -1821324571, -1824806550, -1828271354, -1831718950, -1835149305,
- -1838562387, -1841958163, -1845336602, -1848697672, -1852041342,
- -1855367579, -1858676353, -1861967633, -1865241387, -1868497584,
- -1871736195, -1874957188, -1878160533, -1881346200, -1884514160,
- -1887664381, -1890796835, -1893911493, -1897008324, -1900087299,
- -1903148391, -1906191569, -1909216805, -1912224071, -1915213339,
- -1918184579, -1921137766, -1924072869, -1926989863, -1929888719,
- -1932769410, -1935631909, -1938476189, -1941302224, -1944109986,
- -1946899449, -1949670588, -1952423376, -1955157786, -1957873794,
- -1960571374, -1963250500, -1965911147, -1968553290, -1971176905,
- -1973781966, -1976368449, -1978936329, -1981485584, -1984016187,
- -1986528117, -1989021348, -1991495858, -1993951623, -1996388621,
- -1998806828, -2001206221, -2003586778, -2005948476, -2008291294,
- -2010615209, -2012920199, -2015206243, -2017473319, -2019721406,
- -2021950482, -2024160527, -2026351520, -2028523440, -2030676267,
- -2032809981, -2034924560, -2037019987, -2039096240, -2041153300,
- -2043191148, -2045209765, -2047209132, -2049189229, -2051150039,
- -2053091543, -2055013722, -2056916558, -2058800034, -2060664132,
- -2062508834, -2064334123, -2066139982, -2067926393, -2069693340,
- -2071440807, -2073168776, -2074877232, -2076566158, -2078235539,
- -2079885359, -2081515602, -2083126253, -2084717297, -2086288718,
- -2087840503, -2089372636, -2090885104, -2092377891, -2093850983,
- -2095304368, -2096738031, -2098151959, -2099546137, -2100920555,
- -2102275197, -2103610052, -2104925108, -2106220350, -2107495769,
- -2108751350, -2109987084, -2111202957, -2112398959, -2113575078,
- -2114731304, -2115867624, -2116984030, -2118080509, -2119157053,
- -2120213650, -2121250290, -2122266965, -2123263664, -2124240379,
- -2125197099, -2126133816, -2127050521, -2127947205, -2128823860,
- -2129680478, -2130517051, -2131333570, -2132130028, -2132906418,
- -2133662733, -2134398964, -2135115106, -2135811151, -2136487093,
- -2137142926, -2137778643, -2138394238, -2138989706, -2139565041,
- -2140120238, -2140655291, -2141170196, -2141664947, -2142139539,
- -2142593969, -2143028233, -2143442325, -2143836242, -2144209981,
- -2144563537, -2144896908, -2145210091, -2145503082, -2145775879,
- -2146028478, -2146260879, -2146473078, -2146665074, -2146836865,
- -2146988448, -2147119824, -2147230990, -2147321945, -2147392689,
- -2147443221, -2147473540}};
+ {
+ 2147483015, 2147467855, 2147432483, 2147376898, 2147301101, 2147205093,
+ 2147088874, 2146952447, 2146795811, 2146618969, 2146421922, 2146204673,
+ 2145967222, 2145709573, 2145431727, 2145133688, 2144815458, 2144477040,
+ 2144118438, 2143739654, 2143340693, 2142921558, 2142482252, 2142022781,
+ 2141543148, 2141043359, 2140523417, 2139983327, 2139423095, 2138842727,
+ 2138242226, 2137621600, 2136980853, 2136319993, 2135639024, 2134937954,
+ 2134216790, 2133475537, 2132714203, 2131932795, 2131131321, 2130309787,
+ 2129468203, 2128606574, 2127724911, 2126823221, 2125901512, 2124959794,
+ 2123998074, 2123016363, 2122014669, 2120993002, 2119951371, 2118889786,
+ 2117808258, 2116706796, 2115585411, 2114444113, 2113282913, 2112101822,
+ 2110900851, 2109680012, 2108439315, 2107178773, 2105898398, 2104598201,
+ 2103278194, 2101938391, 2100578804, 2099199445, 2097800328, 2096381465,
+ 2094942870, 2093484557, 2092006540, 2090508831, 2088991446, 2087454399,
+ 2085897703, 2084321375, 2082725428, 2081109877, 2079474738, 2077820027,
+ 2076145758, 2074451948, 2072738612, 2071005767, 2069253429, 2067481614,
+ 2065690339, 2063879622, 2062049478, 2060199925, 2058330981, 2056442663,
+ 2054534990, 2052607978, 2050661646, 2048696012, 2046711096, 2044706915,
+ 2042683488, 2040640835, 2038578975, 2036497927, 2034397710, 2032278345,
+ 2030139852, 2027982250, 2025805559, 2023609802, 2021394997, 2019161166,
+ 2016908330, 2014636510, 2012345727, 2010036004, 2007707361, 2005359821,
+ 2002993406, 2000608137, 1998204039, 1995781132, 1993339441, 1990878987,
+ 1988399795, 1985901886, 1983385286, 1980850018, 1978296105, 1975723571,
+ 1973132441, 1970522740, 1967894491, 1965247719, 1962582450, 1959898708,
+ 1957196519, 1954475908, 1951736901, 1948979523, 1946203800, 1943409760,
+ 1940597427, 1937766828, 1934917991, 1932050941, 1929165706, 1926262314,
+ 1923340790, 1920401163, 1917443461, 1914467711, 1911473941, 1908462180,
+ 1905432455, 1902384796, 1899319231, 1896235789, 1893134498, 1890015389,
+ 1886878490, 1883723832, 1880551443, 1877361353, 1874153593, 1870928193,
+ 1867685183, 1864424593, 1861146455, 1857850799, 1854537656, 1851207058,
+ 1847859035, 1844493620, 1841110843, 1837710737, 1834293334, 1830858666,
+ 1827406765, 1823937664, 1820451396, 1816947992, 1813427487, 1809889913,
+ 1806335304, 1802763693, 1799175113, 1795569599, 1791947185, 1788307904,
+ 1784651790, 1780978879, 1777289205, 1773582802, 1769859705, 1766119950,
+ 1762363572, 1758590605, 1754801086, 1750995050, 1747172533, 1743333571,
+ 1739478200, 1735606457, 1731718377, 1727813998, 1723893355, 1719956487,
+ 1716003430, 1712034221, 1708048898, 1704047499, 1700030060, 1695996619,
+ 1691947216, 1687881887, 1683800671, 1679703606, 1675590732, 1671462086,
+ 1667317708, 1663157636, 1658981910, 1654790569, 1650583653, 1646361200,
+ 1642123252, 1637869847, 1633601026, 1629316829, 1625017296, 1620702468,
+ 1616372385, 1612027088, 1607666618, 1603291017, 1598900324, 1594494582,
+ 1590073832, 1585638116, 1581187475, 1576721951, 1572241587, 1567746424,
+ 1563236505, 1558711872, 1554172567, 1549618635, 1545050117, 1540467056,
+ 1535869495, 1531257479, 1526631050, 1521990251, 1517335127, 1512665721,
+ 1507982078, 1503284241, 1498572254, 1493846162, 1489106009, 1484351841,
+ 1479583701, 1474801635, 1470005687, 1465195903, 1460372328, 1455535008,
+ 1450683987, 1445819312, 1440941029, 1436049183, 1431143820, 1426224987,
+ 1421292729, 1416347094, 1411388127, 1406415876, 1401430388, 1396431708,
+ 1391419885, 1386394965, 1381356996, 1376306025, 1371242100, 1366165268,
+ 1361075577, 1355973076, 1350857811, 1345729832, 1340589186, 1335435922,
+ 1330270088, 1325091733, 1319900906, 1314697656, 1309482031, 1304254081,
+ 1299013854, 1293761401, 1288496771, 1283220012, 1277931176, 1272630311,
+ 1267317467, 1261992696, 1256656045, 1251307567, 1245947311, 1240575328,
+ 1235191667, 1229796381, 1224389520, 1218971133, 1213541274, 1208099992,
+ 1202647339, 1197183367, 1191708126, 1186221668, 1180724045, 1175215309,
+ 1169695511, 1164164703, 1158622938, 1153070268, 1147506744, 1141932419,
+ 1136347347, 1130751578, 1125145167, 1119528165, 1113900626, 1108262602,
+ 1102614147, 1096955313, 1091286155, 1085606725, 1079917077, 1074217265,
+ 1068507341, 1062787360, 1057057376, 1051317442, 1045567614, 1039807943,
+ 1034038486, 1028259296, 1022470427, 1016671935, 1010863874, 1005046297,
+ 999219261, 993382820, 987537029, 981681942, 975817616, 969944105,
+ 964061464, 958169750, 952269016, 946359320, 940440716, 934513260,
+ 928577009, 922632017, 916678341, 910716037, 904745160, 898765769,
+ 892777917, 886781662, 880777061, 874764170, 868743044, 862713742,
+ 856676320, 850630834, 844577342, 838515900, 832446566, 826369397,
+ 820284450, 814191781, 808091449, 801983512, 795868025, 789745048,
+ 783614637, 777476851, 771331746, 765179382, 759019815, 752853104,
+ 746679307, 740498482, 734310687, 728115981, 721914421, 715706067,
+ 709490975, 703269206, 697040818, 690805868, 684564417, 678316522,
+ 672062242, 665801637, 659534765, 653261685, 646982457, 640697138,
+ 634405790, 628108470, 621805238, 615496153, 609181275, 602860664,
+ 596534378, 590202477, 583865021, 577522069, 571173681, 564819918,
+ 558460838, 552096501, 545726969, 539352299, 532972553, 526587790,
+ 520198071, 513803456, 507404004, 500999777, 494590834, 488177236,
+ 481759043, 475336315, 468909113, 462477498, 456041530, 449601269,
+ 443156776, 436708113, 430255339, 423798515, 417337702, 410872961,
+ 404404353, 397931938, 391455778, 384975933, 378492465, 372005434,
+ 365514902, 359020929, 352523578, 346022908, 339518981, 333011858,
+ 326501601, 319988271, 313471929, 306952637, 300430455, 293905446,
+ 287377670, 280847190, 274314066, 267778360, 261240133, 254699448,
+ 248156365, 241610947, 235063254, 228513349, 221961293, 215407148,
+ 208850976, 202292837, 195732795, 189170910, 182607245, 176041861,
+ 169474820, 162906184, 156336014, 149764373, 143191322, 136616924,
+ 130041240, 123464331, 116886261, 110307090, 103726882, 97145696,
+ 90563597, 83980645, 77396903, 70812432, 64227294, 57641552,
+ 51055268, 44468503, 37881319, 31293779, 24705944, 18117877,
+ 11529639, 4941293
+ },
+ {
+ -1647099, -8235476, -14823776, -21411936, -27999895,
+ -34587590, -41174959, -47761942, -54348474, -60934495,
+ -67519942, -74104754, -80688869, -87272224, -93854757,
+ -100436407, -107017112, -113596809, -120175438, -126752935,
+ -133329239, -139904288, -146478020, -153050374, -159621287,
+ -166190697, -172758544, -179324764, -185889296, -192452079,
+ -199013050, -205572148, -212129312, -218684478, -225237586,
+ -231788574, -238337381, -244883944, -251428202, -257970094,
+ -264509558, -271046532, -277580954, -284112764, -290641900,
+ -297168300, -303691903, -310212648, -316730473, -323245317,
+ -329757118, -336265815, -342771348, -349273654, -355772672,
+ -362268342, -368760602, -375249391, -381734648, -388216312,
+ -394694322, -401168617, -407639136, -414105819, -420568603,
+ -427027429, -433482236, -439932962, -446379548, -452821932,
+ -459260054, -465693853, -472123270, -478548242, -484968710,
+ -491384613, -497795891, -504202484, -510604331, -517001372,
+ -523393547, -529780795, -536163057, -542540272, -548912381,
+ -555279323, -561641039, -567997468, -574348551, -580694228,
+ -587034439, -593369125, -599698226, -606021683, -612339435,
+ -618651423, -624957589, -631257872, -637552214, -643840555,
+ -650122836, -656398997, -662668981, -668932727, -675190176,
+ -681441271, -687685951, -693924159, -700155836, -706380922,
+ -712599359, -718811090, -725016054, -731214195, -737405452,
+ -743589770, -749767088, -755937349, -762100495, -768256468,
+ -774405209, -780546662, -786680768, -792807469, -798926708,
+ -805038428, -811142570, -817239077, -823327892, -829408958,
+ -835482216, -841547611, -847605085, -853654581, -859696043,
+ -865729412, -871754633, -877771648, -883780402, -889780837,
+ -895772897, -901756525, -907731667, -913698264, -919656261,
+ -925605602, -931546230, -937478091, -943401128, -949315285,
+ -955220507, -961116738, -967003922, -972882005, -978750931,
+ -984610644, -990461090, -996302213, -1002133958, -1007956271,
+ -1013769097, -1019572381, -1025366068, -1031150104, -1036924435,
+ -1042689005, -1048443762, -1054188650, -1059923615, -1065648604,
+ -1071363563, -1077068438, -1082763175, -1088447721, -1094122022,
+ -1099786024, -1105439675, -1111082921, -1116715709, -1122337986,
+ -1127949700, -1133550796, -1139141223, -1144720928, -1150289859,
+ -1155847963, -1161395187, -1166931480, -1172456789, -1177971063,
+ -1183474249, -1188966296, -1194447152, -1199916765, -1205375084,
+ -1210822058, -1216257635, -1221681764, -1227094394, -1232495474,
+ -1237884954, -1243262782, -1248628908, -1253983282, -1259325852,
+ -1264656569, -1269975383, -1275282244, -1280577101, -1285859904,
+ -1291130605, -1296389153, -1301635499, -1306869593, -1312091387,
+ -1317300831, -1322497876, -1327682472, -1332854573, -1338014128,
+ -1343161089, -1348295408, -1353417036, -1358525925, -1363622027,
+ -1368705294, -1373775679, -1378833133, -1383877609, -1388909059,
+ -1393927437, -1398932694, -1403924784, -1408903660, -1413869274,
+ -1418821581, -1423760533, -1428686084, -1433598188, -1438496798,
+ -1443381869, -1448253354, -1453111207, -1457955383, -1462785837,
+ -1467602522, -1472405393, -1477194406, -1481969514, -1486730674,
+ -1491477840, -1496210968, -1500930013, -1505634931, -1510325677,
+ -1515002207, -1519664477, -1524312444, -1528946063, -1533565291,
+ -1538170085, -1542760401, -1547336196, -1551897427, -1556444051,
+ -1560976025, -1565493306, -1569995852, -1574483621, -1578956571,
+ -1583414658, -1587857842, -1592286081, -1596699332, -1601097554,
+ -1605480706, -1609848747, -1614201636, -1618539331, -1622861791,
+ -1627168977, -1631460847, -1635737361, -1639998479, -1644244161,
+ -1648474366, -1652689055, -1656888189, -1661071727, -1665239631,
+ -1669391861, -1673528378, -1677649143, -1681754117, -1685843262,
+ -1689916539, -1693973910, -1698015337, -1702040782, -1706050206,
+ -1710043572, -1714020842, -1717981980, -1721926947, -1725855707,
+ -1729768222, -1733664457, -1737544373, -1741407935, -1745255106,
+ -1749085850, -1752900131, -1756697913, -1760479160, -1764243837,
+ -1767991908, -1771723338, -1775438092, -1779136135, -1782817432,
+ -1786481949, -1790129650, -1793760503, -1797374471, -1800971522,
+ -1804551622, -1808114736, -1811660832, -1815189875, -1818701834,
+ -1822196674, -1825674363, -1829134868, -1832578156, -1836004196,
+ -1839412954, -1842804399, -1846178499, -1849535222, -1852874537,
+ -1856196411, -1859500815, -1862787716, -1866057083, -1869308887,
+ -1872543096, -1875759680, -1878958608, -1882139852, -1885303379,
+ -1888449162, -1891577169, -1894687373, -1897779743, -1900854250,
+ -1903910866, -1906949561, -1909970307, -1912973077, -1915957840,
+ -1918924570, -1921873238, -1924803816, -1927716278, -1930610595,
+ -1933486741, -1936344688, -1939184409, -1942005878, -1944809068,
+ -1947593953, -1950360506, -1953108702, -1955838514, -1958549918,
+ -1961242886, -1963917395, -1966573418, -1969210932, -1971829910,
+ -1974430329, -1977012164, -1979575390, -1982119984, -1984645921,
+ -1987153178, -1989641732, -1992111558, -1994562633, -1996994935,
+ -1999408441, -2001803127, -2004178971, -2006535952, -2008874046,
+ -2011193232, -2013493487, -2015774791, -2018037122, -2020280458,
+ -2022504779, -2024710063, -2026896289, -2029063438, -2031211488,
+ -2033340420, -2035450213, -2037540848, -2039612305, -2041664564,
+ -2043697606, -2045711412, -2047705963, -2049681241, -2051637226,
+ -2053573900, -2055491245, -2057389243, -2059267876, -2061127127,
+ -2062966977, -2064787410, -2066588408, -2068369955, -2070132034,
+ -2071874627, -2073597720, -2075301295, -2076985336, -2078649828,
+ -2080294755, -2081920102, -2083525853, -2085111992, -2086678506,
+ -2088225379, -2089752597, -2091260146, -2092748011, -2094216178,
+ -2095664633, -2097093364, -2098502355, -2099891595, -2101261070,
+ -2102610767, -2103940673, -2105250776, -2106541064, -2107811524,
+ -2109062145, -2110292914, -2111503821, -2112694853, -2113866000,
+ -2115017250, -2116148593, -2117260018, -2118351514, -2119423072,
+ -2120474681, -2121506331, -2122518013, -2123509717, -2124481433,
+ -2125433154, -2126364868, -2127276569, -2128168247, -2129039893,
+ -2129891501, -2130723061, -2131534566, -2132326008, -2133097379,
+ -2133848674, -2134579883, -2135291001, -2135982021, -2136652937,
+ -2137303741, -2137934428, -2138544992, -2139135428, -2139705729,
+ -2140255890, -2140785906, -2141295773, -2141785485, -2142255037,
+ -2142704426, -2143133647, -2143542696, -2143931569, -2144300262,
+ -2144648773, -2144977097, -2145285232, -2145573174, -2145840922,
+ -2146088472, -2146315823, -2146522971, -2146709916, -2146876655,
+ -2147023187, -2147149510, -2147255623, -2147341526, -2147407217,
+ -2147452695, -2147477962
+ },
+ {
+ 2147483647, 2147473540, 2147443221, 2147392689, 2147321945, 2147230990,
+ 2147119824, 2146988448, 2146836865, 2146665074, 2146473078, 2146260879,
+ 2146028478, 2145775879, 2145503082, 2145210091, 2144896908, 2144563537,
+ 2144209981, 2143836242, 2143442325, 2143028233, 2142593969, 2142139539,
+ 2141664947, 2141170196, 2140655291, 2140120238, 2139565041, 2138989706,
+ 2138394238, 2137778643, 2137142926, 2136487093, 2135811151, 2135115106,
+ 2134398964, 2133662733, 2132906418, 2132130028, 2131333570, 2130517051,
+ 2129680478, 2128823860, 2127947205, 2127050521, 2126133816, 2125197099,
+ 2124240379, 2123263664, 2122266965, 2121250290, 2120213650, 2119157053,
+ 2118080509, 2116984030, 2115867624, 2114731304, 2113575078, 2112398959,
+ 2111202957, 2109987084, 2108751350, 2107495769, 2106220350, 2104925108,
+ 2103610052, 2102275197, 2100920555, 2099546137, 2098151959, 2096738031,
+ 2095304368, 2093850983, 2092377891, 2090885104, 2089372636, 2087840503,
+ 2086288718, 2084717297, 2083126253, 2081515602, 2079885359, 2078235539,
+ 2076566158, 2074877232, 2073168776, 2071440807, 2069693340, 2067926393,
+ 2066139982, 2064334123, 2062508834, 2060664132, 2058800034, 2056916558,
+ 2055013722, 2053091543, 2051150039, 2049189229, 2047209132, 2045209765,
+ 2043191148, 2041153300, 2039096240, 2037019987, 2034924560, 2032809981,
+ 2030676267, 2028523440, 2026351520, 2024160527, 2021950482, 2019721406,
+ 2017473319, 2015206243, 2012920199, 2010615209, 2008291294, 2005948476,
+ 2003586778, 2001206221, 1998806828, 1996388621, 1993951623, 1991495858,
+ 1989021348, 1986528117, 1984016187, 1981485584, 1978936329, 1976368449,
+ 1973781966, 1971176905, 1968553290, 1965911147, 1963250500, 1960571374,
+ 1957873794, 1955157786, 1952423376, 1949670588, 1946899449, 1944109986,
+ 1941302224, 1938476189, 1935631909, 1932769410, 1929888719, 1926989863,
+ 1924072869, 1921137766, 1918184579, 1915213339, 1912224071, 1909216805,
+ 1906191569, 1903148391, 1900087299, 1897008324, 1893911493, 1890796835,
+ 1887664381, 1884514160, 1881346200, 1878160533, 1874957188, 1871736195,
+ 1868497584, 1865241387, 1861967633, 1858676353, 1855367579, 1852041342,
+ 1848697672, 1845336602, 1841958163, 1838562387, 1835149305, 1831718950,
+ 1828271354, 1824806550, 1821324571, 1817825448, 1814309215, 1810775905,
+ 1807225552, 1803658188, 1800073847, 1796472564, 1792854371, 1789219303,
+ 1785567395, 1781898680, 1778213193, 1774510969, 1770792043, 1767056449,
+ 1763304223, 1759535400, 1755750016, 1751948106, 1748129706, 1744294851,
+ 1740443579, 1736575926, 1732691926, 1728791618, 1724875039, 1720942223,
+ 1716993210, 1713028036, 1709046738, 1705049354, 1701035921, 1697006477,
+ 1692961061, 1688899710, 1684822462, 1680729356, 1676620430, 1672495724,
+ 1668355275, 1664199123, 1660027307, 1655839866, 1651636840, 1647418268,
+ 1643184190, 1638934645, 1634669674, 1630389317, 1626093615, 1621782607,
+ 1617456334, 1613114836, 1608758156, 1604386334, 1599999410, 1595597426,
+ 1591180424, 1586748446, 1582301532, 1577839725, 1573363067, 1568871600,
+ 1564365365, 1559844407, 1555308767, 1550758487, 1546193611, 1541614182,
+ 1537020242, 1532411836, 1527789006, 1523151796, 1518500249, 1513834409,
+ 1509154321, 1504460028, 1499751575, 1495029005, 1490292363, 1485541694,
+ 1480777043, 1475998454, 1471205973, 1466399644, 1461579512, 1456745624,
+ 1451898024, 1447036759, 1442161873, 1437273413, 1432371425, 1427455955,
+ 1422527049, 1417584754, 1412629116, 1407660182, 1402677998, 1397682612,
+ 1392674071, 1387652420, 1382617709, 1377569984, 1372509293, 1367435684,
+ 1362349203, 1357249900, 1352137821, 1347013016, 1341875532, 1336725418,
+ 1331562722, 1326387493, 1321199779, 1315999630, 1310787094, 1305562221,
+ 1300325059, 1295075658, 1289814067, 1284540336, 1279254514, 1273956652,
+ 1268646799, 1263325004, 1257991319, 1252645793, 1247288476, 1241919420,
+ 1236538674, 1231146290, 1225742317, 1220326808, 1214899812, 1209461381,
+ 1204011566, 1198550418, 1193077990, 1187594331, 1182099495, 1176593532,
+ 1171076494, 1165548434, 1160009404, 1154459455, 1148898639, 1143327010,
+ 1137744620, 1132151520, 1126547764, 1120933405, 1115308495, 1109673088,
+ 1104027236, 1098370992, 1092704410, 1087027543, 1081340444, 1075643168,
+ 1069935767, 1064218295, 1058490807, 1052753356, 1047005996, 1041248781,
+ 1035481765, 1029705003, 1023918549, 1018122458, 1012316783, 1006501580,
+ 1000676904, 994842809, 988999350, 983146582, 977284561, 971413341,
+ 965532977, 959643526, 953745042, 947837581, 941921199, 935995951,
+ 930061893, 924119081, 918167571, 912207418, 906238680, 900261412,
+ 894275670, 888281511, 882278991, 876268167, 870249094, 864221831,
+ 858186434, 852142958, 846091463, 840032003, 833964637, 827889421,
+ 821806412, 815715669, 809617248, 803511206, 797397601, 791276491,
+ 785147933, 779011985, 772868705, 766718150, 760560379, 754395449,
+ 748223418, 742044344, 735858286, 729665302, 723465451, 717258789,
+ 711045377, 704825271, 698598532, 692365217, 686125386, 679879096,
+ 673626407, 667367378, 661102067, 654830534, 648552837, 642269036,
+ 635979189, 629683356, 623381597, 617073970, 610760535, 604441351,
+ 598116478, 591785975, 585449902, 579108319, 572761285, 566408859,
+ 560051103, 553688075, 547319836, 540946445, 534567962, 528184448,
+ 521795962, 515402565, 509004317, 502601278, 496193509, 489781068,
+ 483364018, 476942419, 470516330, 464085812, 457650927, 451211733,
+ 444768293, 438320666, 431868914, 425413097, 418953276, 412489511,
+ 406021864, 399550395, 393075166, 386596236, 380113668, 373627522,
+ 367137860, 360644742, 354148229, 347648383, 341145265, 334638935,
+ 328129456, 321616889, 315101294, 308582733, 302061268, 295536960,
+ 289009870, 282480060, 275947591, 269412525, 262874923, 256334846,
+ 249792357, 243247517, 236700387, 230151030, 223599506, 217045877,
+ 210490205, 203932553, 197372981, 190811551, 184248325, 177683365,
+ 171116732, 164548489, 157978697, 151407418, 144834714, 138260647,
+ 131685278, 125108670, 118530884, 111951983, 105372028, 98791081,
+ 92209204, 85626459, 79042909, 72458614, 65873638, 59288041,
+ 52701886, 46115236, 39528151, 32940694, 26352927, 19764912,
+ 13176711, 6588386
+ },
+ {
+ 0, -6588386, -13176711, -19764912, -26352927,
+ -32940694, -39528151, -46115236, -52701886, -59288041,
+ -65873638, -72458614, -79042909, -85626459, -92209204,
+ -98791081, -105372028, -111951983, -118530884, -125108670,
+ -131685278, -138260647, -144834714, -151407418, -157978697,
+ -164548489, -171116732, -177683365, -184248325, -190811551,
+ -197372981, -203932553, -210490205, -217045877, -223599506,
+ -230151030, -236700387, -243247517, -249792357, -256334846,
+ -262874923, -269412525, -275947591, -282480060, -289009870,
+ -295536960, -302061268, -308582733, -315101294, -321616889,
+ -328129456, -334638935, -341145265, -347648383, -354148229,
+ -360644742, -367137860, -373627522, -380113668, -386596236,
+ -393075166, -399550395, -406021864, -412489511, -418953276,
+ -425413097, -431868914, -438320666, -444768293, -451211733,
+ -457650927, -464085812, -470516330, -476942419, -483364018,
+ -489781068, -496193509, -502601278, -509004317, -515402565,
+ -521795962, -528184448, -534567962, -540946445, -547319836,
+ -553688075, -560051103, -566408859, -572761285, -579108319,
+ -585449902, -591785975, -598116478, -604441351, -610760535,
+ -617073970, -623381597, -629683356, -635979189, -642269036,
+ -648552837, -654830534, -661102067, -667367378, -673626407,
+ -679879096, -686125386, -692365217, -698598532, -704825271,
+ -711045377, -717258789, -723465451, -729665302, -735858286,
+ -742044344, -748223418, -754395449, -760560379, -766718150,
+ -772868705, -779011985, -785147933, -791276491, -797397601,
+ -803511206, -809617248, -815715669, -821806412, -827889421,
+ -833964637, -840032003, -846091463, -852142958, -858186434,
+ -864221831, -870249094, -876268167, -882278991, -888281511,
+ -894275670, -900261412, -906238680, -912207418, -918167571,
+ -924119081, -930061893, -935995951, -941921199, -947837581,
+ -953745042, -959643526, -965532977, -971413341, -977284561,
+ -983146582, -988999350, -994842809, -1000676904, -1006501580,
+ -1012316783, -1018122458, -1023918549, -1029705003, -1035481765,
+ -1041248781, -1047005996, -1052753356, -1058490807, -1064218295,
+ -1069935767, -1075643168, -1081340444, -1087027543, -1092704410,
+ -1098370992, -1104027236, -1109673088, -1115308495, -1120933405,
+ -1126547764, -1132151520, -1137744620, -1143327010, -1148898639,
+ -1154459455, -1160009404, -1165548434, -1171076494, -1176593532,
+ -1182099495, -1187594331, -1193077990, -1198550418, -1204011566,
+ -1209461381, -1214899812, -1220326808, -1225742317, -1231146290,
+ -1236538674, -1241919420, -1247288476, -1252645793, -1257991319,
+ -1263325004, -1268646799, -1273956652, -1279254514, -1284540336,
+ -1289814067, -1295075658, -1300325059, -1305562221, -1310787094,
+ -1315999630, -1321199779, -1326387493, -1331562722, -1336725418,
+ -1341875532, -1347013016, -1352137821, -1357249900, -1362349203,
+ -1367435684, -1372509293, -1377569984, -1382617709, -1387652420,
+ -1392674071, -1397682612, -1402677998, -1407660182, -1412629116,
+ -1417584754, -1422527049, -1427455955, -1432371425, -1437273413,
+ -1442161873, -1447036759, -1451898024, -1456745624, -1461579512,
+ -1466399644, -1471205973, -1475998454, -1480777043, -1485541694,
+ -1490292363, -1495029005, -1499751575, -1504460028, -1509154321,
+ -1513834409, -1518500249, -1523151796, -1527789006, -1532411836,
+ -1537020242, -1541614182, -1546193611, -1550758487, -1555308767,
+ -1559844407, -1564365365, -1568871600, -1573363067, -1577839725,
+ -1582301532, -1586748446, -1591180424, -1595597426, -1599999410,
+ -1604386334, -1608758156, -1613114836, -1617456334, -1621782607,
+ -1626093615, -1630389317, -1634669674, -1638934645, -1643184190,
+ -1647418268, -1651636840, -1655839866, -1660027307, -1664199123,
+ -1668355275, -1672495724, -1676620430, -1680729356, -1684822462,
+ -1688899710, -1692961061, -1697006477, -1701035921, -1705049354,
+ -1709046738, -1713028036, -1716993210, -1720942223, -1724875039,
+ -1728791618, -1732691926, -1736575926, -1740443579, -1744294851,
+ -1748129706, -1751948106, -1755750016, -1759535400, -1763304223,
+ -1767056449, -1770792043, -1774510969, -1778213193, -1781898680,
+ -1785567395, -1789219303, -1792854371, -1796472564, -1800073847,
+ -1803658188, -1807225552, -1810775905, -1814309215, -1817825448,
+ -1821324571, -1824806550, -1828271354, -1831718950, -1835149305,
+ -1838562387, -1841958163, -1845336602, -1848697672, -1852041342,
+ -1855367579, -1858676353, -1861967633, -1865241387, -1868497584,
+ -1871736195, -1874957188, -1878160533, -1881346200, -1884514160,
+ -1887664381, -1890796835, -1893911493, -1897008324, -1900087299,
+ -1903148391, -1906191569, -1909216805, -1912224071, -1915213339,
+ -1918184579, -1921137766, -1924072869, -1926989863, -1929888719,
+ -1932769410, -1935631909, -1938476189, -1941302224, -1944109986,
+ -1946899449, -1949670588, -1952423376, -1955157786, -1957873794,
+ -1960571374, -1963250500, -1965911147, -1968553290, -1971176905,
+ -1973781966, -1976368449, -1978936329, -1981485584, -1984016187,
+ -1986528117, -1989021348, -1991495858, -1993951623, -1996388621,
+ -1998806828, -2001206221, -2003586778, -2005948476, -2008291294,
+ -2010615209, -2012920199, -2015206243, -2017473319, -2019721406,
+ -2021950482, -2024160527, -2026351520, -2028523440, -2030676267,
+ -2032809981, -2034924560, -2037019987, -2039096240, -2041153300,
+ -2043191148, -2045209765, -2047209132, -2049189229, -2051150039,
+ -2053091543, -2055013722, -2056916558, -2058800034, -2060664132,
+ -2062508834, -2064334123, -2066139982, -2067926393, -2069693340,
+ -2071440807, -2073168776, -2074877232, -2076566158, -2078235539,
+ -2079885359, -2081515602, -2083126253, -2084717297, -2086288718,
+ -2087840503, -2089372636, -2090885104, -2092377891, -2093850983,
+ -2095304368, -2096738031, -2098151959, -2099546137, -2100920555,
+ -2102275197, -2103610052, -2104925108, -2106220350, -2107495769,
+ -2108751350, -2109987084, -2111202957, -2112398959, -2113575078,
+ -2114731304, -2115867624, -2116984030, -2118080509, -2119157053,
+ -2120213650, -2121250290, -2122266965, -2123263664, -2124240379,
+ -2125197099, -2126133816, -2127050521, -2127947205, -2128823860,
+ -2129680478, -2130517051, -2131333570, -2132130028, -2132906418,
+ -2133662733, -2134398964, -2135115106, -2135811151, -2136487093,
+ -2137142926, -2137778643, -2138394238, -2138989706, -2139565041,
+ -2140120238, -2140655291, -2141170196, -2141664947, -2142139539,
+ -2142593969, -2143028233, -2143442325, -2143836242, -2144209981,
+ -2144563537, -2144896908, -2145210091, -2145503082, -2145775879,
+ -2146028478, -2146260879, -2146473078, -2146665074, -2146836865,
+ -2146988448, -2147119824, -2147230990, -2147321945, -2147392689,
+ -2147443221, -2147473540}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_384[4][384] = {
- {2147483647, 2147465679, 2147411779, 2147321945, 2147196180, 2147034485,
- 2146836865, 2146603320, 2146333857, 2146028478, 2145687190, 2145309998,
- 2144896908, 2144447928, 2143963064, 2143442325, 2142885719, 2142293256,
- 2141664947, 2141000800, 2140300828, 2139565041, 2138793454, 2137986077,
- 2137142926, 2136264013, 2135349354, 2134398964, 2133412859, 2132391055,
- 2131333570, 2130240421, 2129111626, 2127947205, 2126747176, 2125511561,
- 2124240379, 2122933651, 2121591401, 2120213650, 2118800421, 2117351737,
- 2115867624, 2114348106, 2112793208, 2111202957, 2109577379, 2107916501,
- 2106220350, 2104488957, 2102722348, 2100920555, 2099083606, 2097211534,
- 2095304368, 2093362142, 2091384887, 2089372636, 2087325424, 2085243285,
- 2083126253, 2080974364, 2078787653, 2076566158, 2074309916, 2072018964,
- 2069693340, 2067333084, 2064938236, 2062508834, 2060044920, 2057546536,
- 2055013722, 2052446521, 2049844977, 2047209132, 2044539031, 2041834718,
- 2039096240, 2036323641, 2033516967, 2030676267, 2027801588, 2024892976,
- 2021950482, 2018974155, 2015964044, 2012920199, 2009842672, 2006731514,
- 2003586778, 2000408515, 1997196779, 1993951623, 1990673103, 1987361273,
- 1984016187, 1980637903, 1977226477, 1973781966, 1970304427, 1966793919,
- 1963250500, 1959674230, 1956065168, 1952423376, 1948748913, 1945041841,
- 1941302224, 1937530122, 1933725599, 1929888719, 1926019545, 1922118144,
- 1918184579, 1914218918, 1910221225, 1906191569, 1902130016, 1898036634,
- 1893911493, 1889754660, 1885566206, 1881346200, 1877094714, 1872811818,
- 1868497584, 1864152085, 1859775392, 1855367579, 1850928721, 1846458890,
- 1841958163, 1837426614, 1832864319, 1828271354, 1823647797, 1818993725,
- 1814309215, 1809594346, 1804849197, 1800073847, 1795268377, 1790432865,
- 1785567395, 1780672046, 1775746901, 1770792043, 1765807553, 1760793516,
- 1755750016, 1750677136, 1745574962, 1740443579, 1735283073, 1730093531,
- 1724875039, 1719627684, 1714351554, 1709046738, 1703713324, 1698351402,
- 1692961061, 1687542392, 1682095484, 1676620430, 1671117321, 1665586249,
- 1660027307, 1654440587, 1648826183, 1643184190, 1637514700, 1631817810,
- 1626093615, 1620342210, 1614563691, 1608758156, 1602925701, 1597066425,
- 1591180424, 1585267799, 1579328646, 1573363067, 1567371160, 1561353026,
- 1555308767, 1549238481, 1543142273, 1537020242, 1530872493, 1524699127,
- 1518500249, 1512275961, 1506026368, 1499751575, 1493451686, 1487126807,
- 1480777043, 1474402502, 1468003289, 1461579512, 1455131279, 1448658696,
- 1442161873, 1435640918, 1429095940, 1422527049, 1415934355, 1409317968,
- 1402677998, 1396014558, 1389327757, 1382617709, 1375884526, 1369128319,
- 1362349203, 1355547290, 1348722695, 1341875532, 1335005915, 1328113959,
- 1321199779, 1314263492, 1307305213, 1300325059, 1293323146, 1286299592,
- 1279254514, 1272188031, 1265100259, 1257991319, 1250861328, 1243710407,
- 1236538674, 1229346251, 1222133256, 1214899812, 1207646038, 1200372057,
- 1193077990, 1185763959, 1178430086, 1171076494, 1163703307, 1156310648,
- 1148898639, 1141467406, 1134017073, 1126547764, 1119059605, 1111552720,
- 1104027236, 1096483277, 1088920971, 1081340444, 1073741823, 1066125235,
- 1058490807, 1050838667, 1043168944, 1035481765, 1027777259, 1020055555,
- 1012316783, 1004561071, 996788550, 988999350, 981193601, 973371433,
- 965532977, 957678366, 949807729, 941921199, 934018908, 926100988,
- 918167571, 910218790, 902254779, 894275670, 886281597, 878272694,
- 870249094, 862210933, 854158344, 846091463, 838010423, 829915361,
- 821806412, 813683712, 805547396, 797397601, 789234463, 781058119,
- 772868705, 764666359, 756451217, 748223418, 739983098, 731730396,
- 723465451, 715188399, 706899380, 698598532, 690285995, 681961907,
- 673626407, 665279636, 656921733, 648552837, 640173089, 631782629,
- 623381597, 614970134, 606548381, 598116478, 589674567, 581222788,
- 572761285, 564290197, 555809666, 547319836, 538820847, 530312841,
- 521795962, 513270352, 504736153, 496193509, 487642561, 479083454,
- 470516330, 461941333, 453358606, 444768293, 436170538, 427565484,
- 418953276, 410334057, 401707972, 393075166, 384435782, 375789965,
- 367137860, 358479612, 349815365, 341145265, 332469456, 323788084,
- 315101294, 306409231, 297712042, 289009870, 280302863, 271591165,
- 262874923, 254154282, 245429388, 236700387, 227967426, 219230650,
- 210490205, 201746239, 192998897, 184248325, 175494670, 166738078,
- 157978697, 149216672, 140452150, 131685278, 122916202, 114145070,
- 105372028, 96597222, 87820800, 79042909, 70263695, 61483305,
- 52701886, 43919586, 35136551, 26352927, 17568863, 8784505},
- {0, -8784505, -17568863, -26352927, -35136551,
- -43919586, -52701886, -61483305, -70263695, -79042909,
- -87820800, -96597222, -105372028, -114145070, -122916202,
- -131685278, -140452150, -149216672, -157978697, -166738078,
- -175494670, -184248325, -192998897, -201746239, -210490205,
- -219230650, -227967426, -236700387, -245429388, -254154282,
- -262874923, -271591165, -280302863, -289009870, -297712042,
- -306409231, -315101294, -323788084, -332469456, -341145265,
- -349815365, -358479612, -367137860, -375789965, -384435782,
- -393075166, -401707972, -410334057, -418953276, -427565484,
- -436170538, -444768293, -453358606, -461941333, -470516330,
- -479083454, -487642561, -496193509, -504736153, -513270352,
- -521795962, -530312841, -538820847, -547319836, -555809666,
- -564290197, -572761285, -581222788, -589674567, -598116478,
- -606548381, -614970134, -623381597, -631782629, -640173089,
- -648552837, -656921733, -665279636, -673626407, -681961907,
- -690285995, -698598532, -706899380, -715188399, -723465451,
- -731730396, -739983098, -748223418, -756451217, -764666359,
- -772868705, -781058119, -789234463, -797397601, -805547396,
- -813683712, -821806412, -829915361, -838010423, -846091463,
- -854158344, -862210933, -870249094, -878272694, -886281597,
- -894275670, -902254779, -910218790, -918167571, -926100988,
- -934018908, -941921199, -949807729, -957678366, -965532977,
- -973371433, -981193601, -988999350, -996788550, -1004561071,
- -1012316783, -1020055555, -1027777259, -1035481765, -1043168944,
- -1050838667, -1058490807, -1066125235, -1073741823, -1081340444,
- -1088920971, -1096483277, -1104027236, -1111552720, -1119059605,
- -1126547764, -1134017073, -1141467406, -1148898639, -1156310648,
- -1163703307, -1171076494, -1178430086, -1185763959, -1193077990,
- -1200372057, -1207646038, -1214899812, -1222133256, -1229346251,
- -1236538674, -1243710407, -1250861328, -1257991319, -1265100259,
- -1272188031, -1279254514, -1286299592, -1293323146, -1300325059,
- -1307305213, -1314263492, -1321199779, -1328113959, -1335005915,
- -1341875532, -1348722695, -1355547290, -1362349203, -1369128319,
- -1375884526, -1382617709, -1389327757, -1396014558, -1402677998,
- -1409317968, -1415934355, -1422527049, -1429095940, -1435640918,
- -1442161873, -1448658696, -1455131279, -1461579512, -1468003289,
- -1474402502, -1480777043, -1487126807, -1493451686, -1499751575,
- -1506026368, -1512275961, -1518500249, -1524699127, -1530872493,
- -1537020242, -1543142273, -1549238481, -1555308767, -1561353026,
- -1567371160, -1573363067, -1579328646, -1585267799, -1591180424,
- -1597066425, -1602925701, -1608758156, -1614563691, -1620342210,
- -1626093615, -1631817810, -1637514700, -1643184190, -1648826183,
- -1654440587, -1660027307, -1665586249, -1671117321, -1676620430,
- -1682095484, -1687542392, -1692961061, -1698351402, -1703713324,
- -1709046738, -1714351554, -1719627684, -1724875039, -1730093531,
- -1735283073, -1740443579, -1745574962, -1750677136, -1755750016,
- -1760793516, -1765807553, -1770792043, -1775746901, -1780672046,
- -1785567395, -1790432865, -1795268377, -1800073847, -1804849197,
- -1809594346, -1814309215, -1818993725, -1823647797, -1828271354,
- -1832864319, -1837426614, -1841958163, -1846458890, -1850928721,
- -1855367579, -1859775392, -1864152085, -1868497584, -1872811818,
- -1877094714, -1881346200, -1885566206, -1889754660, -1893911493,
- -1898036634, -1902130016, -1906191569, -1910221225, -1914218918,
- -1918184579, -1922118144, -1926019545, -1929888719, -1933725599,
- -1937530122, -1941302224, -1945041841, -1948748913, -1952423376,
- -1956065168, -1959674230, -1963250500, -1966793919, -1970304427,
- -1973781966, -1977226477, -1980637903, -1984016187, -1987361273,
- -1990673103, -1993951623, -1997196779, -2000408515, -2003586778,
- -2006731514, -2009842672, -2012920199, -2015964044, -2018974155,
- -2021950482, -2024892976, -2027801588, -2030676267, -2033516967,
- -2036323641, -2039096240, -2041834718, -2044539031, -2047209132,
- -2049844977, -2052446521, -2055013722, -2057546536, -2060044920,
- -2062508834, -2064938236, -2067333084, -2069693340, -2072018964,
- -2074309916, -2076566158, -2078787653, -2080974364, -2083126253,
- -2085243285, -2087325424, -2089372636, -2091384887, -2093362142,
- -2095304368, -2097211534, -2099083606, -2100920555, -2102722348,
- -2104488957, -2106220350, -2107916501, -2109577379, -2111202957,
- -2112793208, -2114348106, -2115867624, -2117351737, -2118800421,
- -2120213650, -2121591401, -2122933651, -2124240379, -2125511561,
- -2126747176, -2127947205, -2129111626, -2130240421, -2131333570,
- -2132391055, -2133412859, -2134398964, -2135349354, -2136264013,
- -2137142926, -2137986077, -2138793454, -2139565041, -2140300828,
- -2141000800, -2141664947, -2142293256, -2142885719, -2143442325,
- -2143963064, -2144447928, -2144896908, -2145309998, -2145687190,
- -2146028478, -2146333857, -2146603320, -2146836865, -2147034485,
- -2147196180, -2147321945, -2147411779, -2147465679},
- {2147482524, 2147455573, 2147392689, 2147293872, 2147159125, 2146988448,
- 2146781846, 2146539322, 2146260879, 2145946523, 2145596258, 2145210091,
- 2144788028, 2144330076, 2143836242, 2143306535, 2142740965, 2142139539,
- 2141502269, 2140829165, 2140120238, 2139375500, 2138594964, 2137778643,
- 2136926550, 2136038699, 2135115106, 2134155786, 2133160754, 2132130028,
- 2131063626, 2129961563, 2128823860, 2127650535, 2126441608, 2125197099,
- 2123917028, 2122601418, 2121250290, 2119863668, 2118441573, 2116984030,
- 2115491063, 2113962698, 2112398959, 2110799873, 2109165467, 2107495769,
- 2105790805, 2104050605, 2102275197, 2100464612, 2098618880, 2096738031,
- 2094822097, 2092871111, 2090885104, 2088864110, 2086808163, 2084717297,
- 2082591547, 2080430949, 2078235539, 2076005354, 2073740430, 2071440807,
- 2069106521, 2066737614, 2064334123, 2061896089, 2059423554, 2056916558,
- 2054375144, 2051799353, 2049189229, 2046544816, 2043866158, 2041153300,
- 2038406287, 2035625165, 2032809981, 2029960781, 2027077614, 2024160527,
- 2021209571, 2018224792, 2015206243, 2012153973, 2009068034, 2005948476,
- 2002795353, 1999608717, 1996388621, 1993135119, 1989848266, 1986528117,
- 1983174727, 1979788152, 1976368449, 1972915675, 1969429888, 1965911147,
- 1962359510, 1958775036, 1955157786, 1951507820, 1947825200, 1944109986,
- 1940362241, 1936582028, 1932769410, 1928924450, 1925047214, 1921137766,
- 1917196171, 1913222495, 1909216805, 1905179168, 1901109652, 1897008324,
- 1892875253, 1888710508, 1884514160, 1880286277, 1876026932, 1871736195,
- 1867414138, 1863060833, 1858676353, 1854260772, 1849814164, 1845336602,
- 1840828162, 1836288920, 1831718950, 1827118330, 1822487137, 1817825448,
- 1813133341, 1808410894, 1803658188, 1798875300, 1794062312, 1789219303,
- 1784346356, 1779443550, 1774510969, 1769548695, 1764556811, 1759535400,
- 1754484547, 1749404336, 1744294851, 1739156180, 1733988407, 1728791618,
- 1723565902, 1718311345, 1713028036, 1707716062, 1702375513, 1697006477,
- 1691609046, 1686183309, 1680729356, 1675247280, 1669737171, 1664199123,
- 1658633228, 1653039578, 1647418268, 1641769391, 1636093043, 1630389317,
- 1624658311, 1618900118, 1613114836, 1607302562, 1601463393, 1595597426,
- 1589704760, 1583785493, 1577839725, 1571867554, 1565869082, 1559844407,
- 1553793631, 1547716856, 1541614182, 1535485712, 1529331549, 1523151796,
- 1516946555, 1510715931, 1504460028, 1498178951, 1491872805, 1485541694,
- 1479185727, 1472805008, 1466399644, 1459969743, 1453515412, 1447036759,
- 1440533892, 1434006921, 1427455955, 1420881103, 1414282475, 1407660182,
- 1401014334, 1394345043, 1387652420, 1380936578, 1374197628, 1367435684,
- 1360650858, 1353843264, 1347013016, 1340160228, 1333285016, 1326387493,
- 1319467776, 1312525980, 1305562221, 1298576616, 1291569282, 1284540336,
- 1277489896, 1270418079, 1263325004, 1256210790, 1249075556, 1241919420,
- 1234742504, 1227544926, 1220326808, 1213088269, 1205829433, 1198550418,
- 1191251349, 1183932346, 1176593532, 1169235030, 1161856963, 1154459455,
- 1147042629, 1139606609, 1132151520, 1124677487, 1117184634, 1109673088,
- 1102142973, 1094594416, 1087027543, 1079442480, 1071839355, 1064218295,
- 1056579428, 1048922880, 1041248781, 1033557258, 1025848440, 1018122458,
- 1010379438, 1002619512, 994842809, 987049459, 979239593, 971413341,
- 963570834, 955712204, 947837581, 939947099, 932040888, 924119081,
- 916181811, 908229210, 900261412, 892278549, 884280756, 876268167,
- 868240914, 860199133, 852142958, 844072525, 835987967, 827889421,
- 819777021, 811650904, 803511206, 795358062, 787191610, 779011985,
- 770819326, 762613767, 754395449, 746164506, 737921078, 729665302,
- 721397317, 713117261, 704825271, 696521488, 688206050, 679879096,
- 671540766, 663191198, 654830534, 646458912, 638076473, 629683356,
- 621279704, 612865655, 604441351, 596006933, 587562542, 579108319,
- 570644406, 562170944, 553688075, 545195941, 536694685, 528184448,
- 519665373, 511137602, 502601278, 494056544, 485503544, 476942419,
- 468373313, 459796370, 451211733, 442619546, 434019953, 425413097,
- 416799123, 408178174, 399550395, 390915931, 382274925, 373627522,
- 364973868, 356314107, 347648383, 338976842, 330299629, 321616889,
- 312928767, 304235409, 295536960, 286833566, 278125372, 269412525,
- 260695169, 251973451, 243247517, 234517512, 225783584, 217045877,
- 208304538, 199559714, 190811551, 182060194, 173305792, 164548489,
- 155788433, 147025770, 138260647, 129493210, 120723606, 111951983,
- 103178486, 94403263, 85626459, 76848224, 68068702, 59288041,
- 50506388, 41723890, 32940694, 24156947, 15372795, 6588386},
- {-2196132, -10980614, -19764912, -28548880, -37332370,
- -46115236, -54897329, -63678505, -72458614, -81237511,
- -90015049, -98791081, -107565459, -116338038, -125108670,
- -133877208, -142643507, -151407418, -160168796, -168927494,
- -177683365, -186436262, -195186041, -203932553, -212675652,
- -221415193, -230151030, -238883014, -247611002, -256334846,
- -265054401, -273769521, -282480060, -291185872, -299886812,
- -308582733, -317273491, -325958940, -334638935, -343313330,
- -351981981, -360644742, -369301468, -377952014, -386596236,
- -395233990, -403865129, -412489511, -421106991, -429717424,
- -438320666, -446916575, -455505004, -464085812, -472658854,
- -481223988, -489781068, -498329954, -506870500, -515402565,
- -523926006, -532440680, -540946445, -549443158, -557930676,
- -566408859, -574877565, -583336650, -591785975, -600225397,
- -608654776, -617073970, -625482838, -633881240, -642269036,
- -650646084, -659012245, -667367378, -675711344, -684044004,
- -692365217, -700674845, -708972749, -717258789, -725532827,
- -733794725, -742044344, -750281547, -758506195, -766718150,
- -774917276, -783103436, -791276491, -799436306, -807582744,
- -815715669, -823834944, -831940434, -840032003, -848109516,
- -856172837, -864221831, -872256365, -880276303, -888281511,
- -896271855, -904247202, -912207418, -920152371, -928081926,
- -935995951, -943894314, -951776883, -959643526, -967494111,
- -975328507, -983146582, -990948207, -998733250, -1006501580,
- -1014253069, -1021987587, -1029705003, -1037405189, -1045088016,
- -1052753356, -1060401079, -1068031059, -1075643168, -1083237277,
- -1090813261, -1098370992, -1105910344, -1113431190, -1120933405,
- -1128416864, -1135881440, -1143327010, -1150753449, -1158160631,
- -1165548434, -1172916734, -1180265407, -1187594331, -1194903383,
- -1202192440, -1209461381, -1216710083, -1223938427, -1231146290,
- -1238333552, -1245500093, -1252645793, -1259770532, -1266874191,
- -1273956652, -1281017795, -1288057503, -1295075658, -1302072142,
- -1309046838, -1315999630, -1322930401, -1329839036, -1336725418,
- -1343589432, -1350430964, -1357249900, -1364046124, -1370819523,
- -1377569984, -1384297395, -1391001641, -1397682612, -1404340196,
- -1410974280, -1417584754, -1424171508, -1430734431, -1437273413,
- -1443788345, -1450279119, -1456745624, -1463187754, -1469605400,
- -1475998454, -1482366811, -1488710363, -1495029005, -1501322630,
- -1507591133, -1513834409, -1520052355, -1526244865, -1532411836,
- -1538553165, -1544668750, -1550758487, -1556822275, -1562860013,
- -1568871600, -1574856934, -1580815916, -1586748446, -1592654425,
- -1598533753, -1604386334, -1610212067, -1616010857, -1621782607,
- -1627527218, -1633244596, -1638934645, -1644597269, -1650232375,
- -1655839866, -1661419650, -1666971634, -1672495724, -1677991828,
- -1683459854, -1688899710, -1694311306, -1699694550, -1705049354,
- -1710375626, -1715673279, -1720942223, -1726182371, -1731393634,
- -1736575926, -1741729159, -1746853247, -1751948106, -1757013649,
- -1762049791, -1767056449, -1772033539, -1776980976, -1781898680,
- -1786786567, -1791644555, -1796472564, -1801270512, -1806038319,
- -1810775905, -1815483192, -1820160100, -1824806550, -1829422467,
- -1834007771, -1838562387, -1843086237, -1847579248, -1852041342,
- -1856472446, -1860872486, -1865241387, -1869579077, -1873885483,
- -1878160533, -1882404156, -1886616280, -1890796835, -1894945752,
- -1899062960, -1903148391, -1907201976, -1911223648, -1915213339,
- -1919170982, -1923096512, -1926989863, -1930850969, -1934679765,
- -1938476189, -1942240176, -1945971663, -1949670588, -1953336889,
- -1956970504, -1960571374, -1964139437, -1967674633, -1971176905,
- -1974646192, -1978082438, -1981485584, -1984855573, -1988192350,
- -1991495858, -1994766042, -1998002848, -2001206221, -2004376107,
- -2007512454, -2010615209, -2013684320, -2016719736, -2019721406,
- -2022689280, -2025623308, -2028523440, -2031389630, -2034221828,
- -2037019987, -2039784060, -2042514001, -2045209765, -2047871306,
- -2050498580, -2053091543, -2055650151, -2058174361, -2060664132,
- -2063119422, -2065540189, -2067926393, -2070277994, -2072594954,
- -2074877232, -2077124791, -2079337593, -2081515602, -2083658780,
- -2085767092, -2087840503, -2089878978, -2091882483, -2093850983,
- -2095784448, -2097682843, -2099546137, -2101374300, -2103167300,
- -2104925108, -2106647693, -2108335028, -2109987084, -2111603833,
- -2113185248, -2114731304, -2116241973, -2117717231, -2119157053,
- -2120561414, -2121930293, -2123263664, -2124561507, -2125823800,
- -2127050521, -2128241649, -2129397166, -2130517051, -2131601286,
- -2132649852, -2133662733, -2134639911, -2135581369, -2136487093,
- -2137357067, -2138191276, -2138989706, -2139752345, -2140479179,
- -2141170196, -2141825384, -2142444733, -2143028233, -2143575872,
- -2144087643, -2144563537, -2145003546, -2145407662, -2145775879,
- -2146108190, -2146404590, -2146665074, -2146889638, -2147078277,
- -2147230990, -2147347772, -2147428623, -2147473540}};
+ {
+ 2147483647, 2147465679, 2147411779, 2147321945, 2147196180, 2147034485,
+ 2146836865, 2146603320, 2146333857, 2146028478, 2145687190, 2145309998,
+ 2144896908, 2144447928, 2143963064, 2143442325, 2142885719, 2142293256,
+ 2141664947, 2141000800, 2140300828, 2139565041, 2138793454, 2137986077,
+ 2137142926, 2136264013, 2135349354, 2134398964, 2133412859, 2132391055,
+ 2131333570, 2130240421, 2129111626, 2127947205, 2126747176, 2125511561,
+ 2124240379, 2122933651, 2121591401, 2120213650, 2118800421, 2117351737,
+ 2115867624, 2114348106, 2112793208, 2111202957, 2109577379, 2107916501,
+ 2106220350, 2104488957, 2102722348, 2100920555, 2099083606, 2097211534,
+ 2095304368, 2093362142, 2091384887, 2089372636, 2087325424, 2085243285,
+ 2083126253, 2080974364, 2078787653, 2076566158, 2074309916, 2072018964,
+ 2069693340, 2067333084, 2064938236, 2062508834, 2060044920, 2057546536,
+ 2055013722, 2052446521, 2049844977, 2047209132, 2044539031, 2041834718,
+ 2039096240, 2036323641, 2033516967, 2030676267, 2027801588, 2024892976,
+ 2021950482, 2018974155, 2015964044, 2012920199, 2009842672, 2006731514,
+ 2003586778, 2000408515, 1997196779, 1993951623, 1990673103, 1987361273,
+ 1984016187, 1980637903, 1977226477, 1973781966, 1970304427, 1966793919,
+ 1963250500, 1959674230, 1956065168, 1952423376, 1948748913, 1945041841,
+ 1941302224, 1937530122, 1933725599, 1929888719, 1926019545, 1922118144,
+ 1918184579, 1914218918, 1910221225, 1906191569, 1902130016, 1898036634,
+ 1893911493, 1889754660, 1885566206, 1881346200, 1877094714, 1872811818,
+ 1868497584, 1864152085, 1859775392, 1855367579, 1850928721, 1846458890,
+ 1841958163, 1837426614, 1832864319, 1828271354, 1823647797, 1818993725,
+ 1814309215, 1809594346, 1804849197, 1800073847, 1795268377, 1790432865,
+ 1785567395, 1780672046, 1775746901, 1770792043, 1765807553, 1760793516,
+ 1755750016, 1750677136, 1745574962, 1740443579, 1735283073, 1730093531,
+ 1724875039, 1719627684, 1714351554, 1709046738, 1703713324, 1698351402,
+ 1692961061, 1687542392, 1682095484, 1676620430, 1671117321, 1665586249,
+ 1660027307, 1654440587, 1648826183, 1643184190, 1637514700, 1631817810,
+ 1626093615, 1620342210, 1614563691, 1608758156, 1602925701, 1597066425,
+ 1591180424, 1585267799, 1579328646, 1573363067, 1567371160, 1561353026,
+ 1555308767, 1549238481, 1543142273, 1537020242, 1530872493, 1524699127,
+ 1518500249, 1512275961, 1506026368, 1499751575, 1493451686, 1487126807,
+ 1480777043, 1474402502, 1468003289, 1461579512, 1455131279, 1448658696,
+ 1442161873, 1435640918, 1429095940, 1422527049, 1415934355, 1409317968,
+ 1402677998, 1396014558, 1389327757, 1382617709, 1375884526, 1369128319,
+ 1362349203, 1355547290, 1348722695, 1341875532, 1335005915, 1328113959,
+ 1321199779, 1314263492, 1307305213, 1300325059, 1293323146, 1286299592,
+ 1279254514, 1272188031, 1265100259, 1257991319, 1250861328, 1243710407,
+ 1236538674, 1229346251, 1222133256, 1214899812, 1207646038, 1200372057,
+ 1193077990, 1185763959, 1178430086, 1171076494, 1163703307, 1156310648,
+ 1148898639, 1141467406, 1134017073, 1126547764, 1119059605, 1111552720,
+ 1104027236, 1096483277, 1088920971, 1081340444, 1073741823, 1066125235,
+ 1058490807, 1050838667, 1043168944, 1035481765, 1027777259, 1020055555,
+ 1012316783, 1004561071, 996788550, 988999350, 981193601, 973371433,
+ 965532977, 957678366, 949807729, 941921199, 934018908, 926100988,
+ 918167571, 910218790, 902254779, 894275670, 886281597, 878272694,
+ 870249094, 862210933, 854158344, 846091463, 838010423, 829915361,
+ 821806412, 813683712, 805547396, 797397601, 789234463, 781058119,
+ 772868705, 764666359, 756451217, 748223418, 739983098, 731730396,
+ 723465451, 715188399, 706899380, 698598532, 690285995, 681961907,
+ 673626407, 665279636, 656921733, 648552837, 640173089, 631782629,
+ 623381597, 614970134, 606548381, 598116478, 589674567, 581222788,
+ 572761285, 564290197, 555809666, 547319836, 538820847, 530312841,
+ 521795962, 513270352, 504736153, 496193509, 487642561, 479083454,
+ 470516330, 461941333, 453358606, 444768293, 436170538, 427565484,
+ 418953276, 410334057, 401707972, 393075166, 384435782, 375789965,
+ 367137860, 358479612, 349815365, 341145265, 332469456, 323788084,
+ 315101294, 306409231, 297712042, 289009870, 280302863, 271591165,
+ 262874923, 254154282, 245429388, 236700387, 227967426, 219230650,
+ 210490205, 201746239, 192998897, 184248325, 175494670, 166738078,
+ 157978697, 149216672, 140452150, 131685278, 122916202, 114145070,
+ 105372028, 96597222, 87820800, 79042909, 70263695, 61483305,
+ 52701886, 43919586, 35136551, 26352927, 17568863, 8784505
+ },
+ {
+ 0, -8784505, -17568863, -26352927, -35136551,
+ -43919586, -52701886, -61483305, -70263695, -79042909,
+ -87820800, -96597222, -105372028, -114145070, -122916202,
+ -131685278, -140452150, -149216672, -157978697, -166738078,
+ -175494670, -184248325, -192998897, -201746239, -210490205,
+ -219230650, -227967426, -236700387, -245429388, -254154282,
+ -262874923, -271591165, -280302863, -289009870, -297712042,
+ -306409231, -315101294, -323788084, -332469456, -341145265,
+ -349815365, -358479612, -367137860, -375789965, -384435782,
+ -393075166, -401707972, -410334057, -418953276, -427565484,
+ -436170538, -444768293, -453358606, -461941333, -470516330,
+ -479083454, -487642561, -496193509, -504736153, -513270352,
+ -521795962, -530312841, -538820847, -547319836, -555809666,
+ -564290197, -572761285, -581222788, -589674567, -598116478,
+ -606548381, -614970134, -623381597, -631782629, -640173089,
+ -648552837, -656921733, -665279636, -673626407, -681961907,
+ -690285995, -698598532, -706899380, -715188399, -723465451,
+ -731730396, -739983098, -748223418, -756451217, -764666359,
+ -772868705, -781058119, -789234463, -797397601, -805547396,
+ -813683712, -821806412, -829915361, -838010423, -846091463,
+ -854158344, -862210933, -870249094, -878272694, -886281597,
+ -894275670, -902254779, -910218790, -918167571, -926100988,
+ -934018908, -941921199, -949807729, -957678366, -965532977,
+ -973371433, -981193601, -988999350, -996788550, -1004561071,
+ -1012316783, -1020055555, -1027777259, -1035481765, -1043168944,
+ -1050838667, -1058490807, -1066125235, -1073741823, -1081340444,
+ -1088920971, -1096483277, -1104027236, -1111552720, -1119059605,
+ -1126547764, -1134017073, -1141467406, -1148898639, -1156310648,
+ -1163703307, -1171076494, -1178430086, -1185763959, -1193077990,
+ -1200372057, -1207646038, -1214899812, -1222133256, -1229346251,
+ -1236538674, -1243710407, -1250861328, -1257991319, -1265100259,
+ -1272188031, -1279254514, -1286299592, -1293323146, -1300325059,
+ -1307305213, -1314263492, -1321199779, -1328113959, -1335005915,
+ -1341875532, -1348722695, -1355547290, -1362349203, -1369128319,
+ -1375884526, -1382617709, -1389327757, -1396014558, -1402677998,
+ -1409317968, -1415934355, -1422527049, -1429095940, -1435640918,
+ -1442161873, -1448658696, -1455131279, -1461579512, -1468003289,
+ -1474402502, -1480777043, -1487126807, -1493451686, -1499751575,
+ -1506026368, -1512275961, -1518500249, -1524699127, -1530872493,
+ -1537020242, -1543142273, -1549238481, -1555308767, -1561353026,
+ -1567371160, -1573363067, -1579328646, -1585267799, -1591180424,
+ -1597066425, -1602925701, -1608758156, -1614563691, -1620342210,
+ -1626093615, -1631817810, -1637514700, -1643184190, -1648826183,
+ -1654440587, -1660027307, -1665586249, -1671117321, -1676620430,
+ -1682095484, -1687542392, -1692961061, -1698351402, -1703713324,
+ -1709046738, -1714351554, -1719627684, -1724875039, -1730093531,
+ -1735283073, -1740443579, -1745574962, -1750677136, -1755750016,
+ -1760793516, -1765807553, -1770792043, -1775746901, -1780672046,
+ -1785567395, -1790432865, -1795268377, -1800073847, -1804849197,
+ -1809594346, -1814309215, -1818993725, -1823647797, -1828271354,
+ -1832864319, -1837426614, -1841958163, -1846458890, -1850928721,
+ -1855367579, -1859775392, -1864152085, -1868497584, -1872811818,
+ -1877094714, -1881346200, -1885566206, -1889754660, -1893911493,
+ -1898036634, -1902130016, -1906191569, -1910221225, -1914218918,
+ -1918184579, -1922118144, -1926019545, -1929888719, -1933725599,
+ -1937530122, -1941302224, -1945041841, -1948748913, -1952423376,
+ -1956065168, -1959674230, -1963250500, -1966793919, -1970304427,
+ -1973781966, -1977226477, -1980637903, -1984016187, -1987361273,
+ -1990673103, -1993951623, -1997196779, -2000408515, -2003586778,
+ -2006731514, -2009842672, -2012920199, -2015964044, -2018974155,
+ -2021950482, -2024892976, -2027801588, -2030676267, -2033516967,
+ -2036323641, -2039096240, -2041834718, -2044539031, -2047209132,
+ -2049844977, -2052446521, -2055013722, -2057546536, -2060044920,
+ -2062508834, -2064938236, -2067333084, -2069693340, -2072018964,
+ -2074309916, -2076566158, -2078787653, -2080974364, -2083126253,
+ -2085243285, -2087325424, -2089372636, -2091384887, -2093362142,
+ -2095304368, -2097211534, -2099083606, -2100920555, -2102722348,
+ -2104488957, -2106220350, -2107916501, -2109577379, -2111202957,
+ -2112793208, -2114348106, -2115867624, -2117351737, -2118800421,
+ -2120213650, -2121591401, -2122933651, -2124240379, -2125511561,
+ -2126747176, -2127947205, -2129111626, -2130240421, -2131333570,
+ -2132391055, -2133412859, -2134398964, -2135349354, -2136264013,
+ -2137142926, -2137986077, -2138793454, -2139565041, -2140300828,
+ -2141000800, -2141664947, -2142293256, -2142885719, -2143442325,
+ -2143963064, -2144447928, -2144896908, -2145309998, -2145687190,
+ -2146028478, -2146333857, -2146603320, -2146836865, -2147034485,
+ -2147196180, -2147321945, -2147411779, -2147465679
+ },
+ {
+ 2147482524, 2147455573, 2147392689, 2147293872, 2147159125, 2146988448,
+ 2146781846, 2146539322, 2146260879, 2145946523, 2145596258, 2145210091,
+ 2144788028, 2144330076, 2143836242, 2143306535, 2142740965, 2142139539,
+ 2141502269, 2140829165, 2140120238, 2139375500, 2138594964, 2137778643,
+ 2136926550, 2136038699, 2135115106, 2134155786, 2133160754, 2132130028,
+ 2131063626, 2129961563, 2128823860, 2127650535, 2126441608, 2125197099,
+ 2123917028, 2122601418, 2121250290, 2119863668, 2118441573, 2116984030,
+ 2115491063, 2113962698, 2112398959, 2110799873, 2109165467, 2107495769,
+ 2105790805, 2104050605, 2102275197, 2100464612, 2098618880, 2096738031,
+ 2094822097, 2092871111, 2090885104, 2088864110, 2086808163, 2084717297,
+ 2082591547, 2080430949, 2078235539, 2076005354, 2073740430, 2071440807,
+ 2069106521, 2066737614, 2064334123, 2061896089, 2059423554, 2056916558,
+ 2054375144, 2051799353, 2049189229, 2046544816, 2043866158, 2041153300,
+ 2038406287, 2035625165, 2032809981, 2029960781, 2027077614, 2024160527,
+ 2021209571, 2018224792, 2015206243, 2012153973, 2009068034, 2005948476,
+ 2002795353, 1999608717, 1996388621, 1993135119, 1989848266, 1986528117,
+ 1983174727, 1979788152, 1976368449, 1972915675, 1969429888, 1965911147,
+ 1962359510, 1958775036, 1955157786, 1951507820, 1947825200, 1944109986,
+ 1940362241, 1936582028, 1932769410, 1928924450, 1925047214, 1921137766,
+ 1917196171, 1913222495, 1909216805, 1905179168, 1901109652, 1897008324,
+ 1892875253, 1888710508, 1884514160, 1880286277, 1876026932, 1871736195,
+ 1867414138, 1863060833, 1858676353, 1854260772, 1849814164, 1845336602,
+ 1840828162, 1836288920, 1831718950, 1827118330, 1822487137, 1817825448,
+ 1813133341, 1808410894, 1803658188, 1798875300, 1794062312, 1789219303,
+ 1784346356, 1779443550, 1774510969, 1769548695, 1764556811, 1759535400,
+ 1754484547, 1749404336, 1744294851, 1739156180, 1733988407, 1728791618,
+ 1723565902, 1718311345, 1713028036, 1707716062, 1702375513, 1697006477,
+ 1691609046, 1686183309, 1680729356, 1675247280, 1669737171, 1664199123,
+ 1658633228, 1653039578, 1647418268, 1641769391, 1636093043, 1630389317,
+ 1624658311, 1618900118, 1613114836, 1607302562, 1601463393, 1595597426,
+ 1589704760, 1583785493, 1577839725, 1571867554, 1565869082, 1559844407,
+ 1553793631, 1547716856, 1541614182, 1535485712, 1529331549, 1523151796,
+ 1516946555, 1510715931, 1504460028, 1498178951, 1491872805, 1485541694,
+ 1479185727, 1472805008, 1466399644, 1459969743, 1453515412, 1447036759,
+ 1440533892, 1434006921, 1427455955, 1420881103, 1414282475, 1407660182,
+ 1401014334, 1394345043, 1387652420, 1380936578, 1374197628, 1367435684,
+ 1360650858, 1353843264, 1347013016, 1340160228, 1333285016, 1326387493,
+ 1319467776, 1312525980, 1305562221, 1298576616, 1291569282, 1284540336,
+ 1277489896, 1270418079, 1263325004, 1256210790, 1249075556, 1241919420,
+ 1234742504, 1227544926, 1220326808, 1213088269, 1205829433, 1198550418,
+ 1191251349, 1183932346, 1176593532, 1169235030, 1161856963, 1154459455,
+ 1147042629, 1139606609, 1132151520, 1124677487, 1117184634, 1109673088,
+ 1102142973, 1094594416, 1087027543, 1079442480, 1071839355, 1064218295,
+ 1056579428, 1048922880, 1041248781, 1033557258, 1025848440, 1018122458,
+ 1010379438, 1002619512, 994842809, 987049459, 979239593, 971413341,
+ 963570834, 955712204, 947837581, 939947099, 932040888, 924119081,
+ 916181811, 908229210, 900261412, 892278549, 884280756, 876268167,
+ 868240914, 860199133, 852142958, 844072525, 835987967, 827889421,
+ 819777021, 811650904, 803511206, 795358062, 787191610, 779011985,
+ 770819326, 762613767, 754395449, 746164506, 737921078, 729665302,
+ 721397317, 713117261, 704825271, 696521488, 688206050, 679879096,
+ 671540766, 663191198, 654830534, 646458912, 638076473, 629683356,
+ 621279704, 612865655, 604441351, 596006933, 587562542, 579108319,
+ 570644406, 562170944, 553688075, 545195941, 536694685, 528184448,
+ 519665373, 511137602, 502601278, 494056544, 485503544, 476942419,
+ 468373313, 459796370, 451211733, 442619546, 434019953, 425413097,
+ 416799123, 408178174, 399550395, 390915931, 382274925, 373627522,
+ 364973868, 356314107, 347648383, 338976842, 330299629, 321616889,
+ 312928767, 304235409, 295536960, 286833566, 278125372, 269412525,
+ 260695169, 251973451, 243247517, 234517512, 225783584, 217045877,
+ 208304538, 199559714, 190811551, 182060194, 173305792, 164548489,
+ 155788433, 147025770, 138260647, 129493210, 120723606, 111951983,
+ 103178486, 94403263, 85626459, 76848224, 68068702, 59288041,
+ 50506388, 41723890, 32940694, 24156947, 15372795, 6588386
+ },
+ {
+ -2196132, -10980614, -19764912, -28548880, -37332370,
+ -46115236, -54897329, -63678505, -72458614, -81237511,
+ -90015049, -98791081, -107565459, -116338038, -125108670,
+ -133877208, -142643507, -151407418, -160168796, -168927494,
+ -177683365, -186436262, -195186041, -203932553, -212675652,
+ -221415193, -230151030, -238883014, -247611002, -256334846,
+ -265054401, -273769521, -282480060, -291185872, -299886812,
+ -308582733, -317273491, -325958940, -334638935, -343313330,
+ -351981981, -360644742, -369301468, -377952014, -386596236,
+ -395233990, -403865129, -412489511, -421106991, -429717424,
+ -438320666, -446916575, -455505004, -464085812, -472658854,
+ -481223988, -489781068, -498329954, -506870500, -515402565,
+ -523926006, -532440680, -540946445, -549443158, -557930676,
+ -566408859, -574877565, -583336650, -591785975, -600225397,
+ -608654776, -617073970, -625482838, -633881240, -642269036,
+ -650646084, -659012245, -667367378, -675711344, -684044004,
+ -692365217, -700674845, -708972749, -717258789, -725532827,
+ -733794725, -742044344, -750281547, -758506195, -766718150,
+ -774917276, -783103436, -791276491, -799436306, -807582744,
+ -815715669, -823834944, -831940434, -840032003, -848109516,
+ -856172837, -864221831, -872256365, -880276303, -888281511,
+ -896271855, -904247202, -912207418, -920152371, -928081926,
+ -935995951, -943894314, -951776883, -959643526, -967494111,
+ -975328507, -983146582, -990948207, -998733250, -1006501580,
+ -1014253069, -1021987587, -1029705003, -1037405189, -1045088016,
+ -1052753356, -1060401079, -1068031059, -1075643168, -1083237277,
+ -1090813261, -1098370992, -1105910344, -1113431190, -1120933405,
+ -1128416864, -1135881440, -1143327010, -1150753449, -1158160631,
+ -1165548434, -1172916734, -1180265407, -1187594331, -1194903383,
+ -1202192440, -1209461381, -1216710083, -1223938427, -1231146290,
+ -1238333552, -1245500093, -1252645793, -1259770532, -1266874191,
+ -1273956652, -1281017795, -1288057503, -1295075658, -1302072142,
+ -1309046838, -1315999630, -1322930401, -1329839036, -1336725418,
+ -1343589432, -1350430964, -1357249900, -1364046124, -1370819523,
+ -1377569984, -1384297395, -1391001641, -1397682612, -1404340196,
+ -1410974280, -1417584754, -1424171508, -1430734431, -1437273413,
+ -1443788345, -1450279119, -1456745624, -1463187754, -1469605400,
+ -1475998454, -1482366811, -1488710363, -1495029005, -1501322630,
+ -1507591133, -1513834409, -1520052355, -1526244865, -1532411836,
+ -1538553165, -1544668750, -1550758487, -1556822275, -1562860013,
+ -1568871600, -1574856934, -1580815916, -1586748446, -1592654425,
+ -1598533753, -1604386334, -1610212067, -1616010857, -1621782607,
+ -1627527218, -1633244596, -1638934645, -1644597269, -1650232375,
+ -1655839866, -1661419650, -1666971634, -1672495724, -1677991828,
+ -1683459854, -1688899710, -1694311306, -1699694550, -1705049354,
+ -1710375626, -1715673279, -1720942223, -1726182371, -1731393634,
+ -1736575926, -1741729159, -1746853247, -1751948106, -1757013649,
+ -1762049791, -1767056449, -1772033539, -1776980976, -1781898680,
+ -1786786567, -1791644555, -1796472564, -1801270512, -1806038319,
+ -1810775905, -1815483192, -1820160100, -1824806550, -1829422467,
+ -1834007771, -1838562387, -1843086237, -1847579248, -1852041342,
+ -1856472446, -1860872486, -1865241387, -1869579077, -1873885483,
+ -1878160533, -1882404156, -1886616280, -1890796835, -1894945752,
+ -1899062960, -1903148391, -1907201976, -1911223648, -1915213339,
+ -1919170982, -1923096512, -1926989863, -1930850969, -1934679765,
+ -1938476189, -1942240176, -1945971663, -1949670588, -1953336889,
+ -1956970504, -1960571374, -1964139437, -1967674633, -1971176905,
+ -1974646192, -1978082438, -1981485584, -1984855573, -1988192350,
+ -1991495858, -1994766042, -1998002848, -2001206221, -2004376107,
+ -2007512454, -2010615209, -2013684320, -2016719736, -2019721406,
+ -2022689280, -2025623308, -2028523440, -2031389630, -2034221828,
+ -2037019987, -2039784060, -2042514001, -2045209765, -2047871306,
+ -2050498580, -2053091543, -2055650151, -2058174361, -2060664132,
+ -2063119422, -2065540189, -2067926393, -2070277994, -2072594954,
+ -2074877232, -2077124791, -2079337593, -2081515602, -2083658780,
+ -2085767092, -2087840503, -2089878978, -2091882483, -2093850983,
+ -2095784448, -2097682843, -2099546137, -2101374300, -2103167300,
+ -2104925108, -2106647693, -2108335028, -2109987084, -2111603833,
+ -2113185248, -2114731304, -2116241973, -2117717231, -2119157053,
+ -2120561414, -2121930293, -2123263664, -2124561507, -2125823800,
+ -2127050521, -2128241649, -2129397166, -2130517051, -2131601286,
+ -2132649852, -2133662733, -2134639911, -2135581369, -2136487093,
+ -2137357067, -2138191276, -2138989706, -2139752345, -2140479179,
+ -2141170196, -2141825384, -2142444733, -2143028233, -2143575872,
+ -2144087643, -2144563537, -2145003546, -2145407662, -2145775879,
+ -2146108190, -2146404590, -2146665074, -2146889638, -2147078277,
+ -2147230990, -2147347772, -2147428623, -2147473540}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_256[4][256] = {
- {2147481120, 2147420481, 2147278994, 2147056662, 2146753495, 2146369504,
- 2145904703, 2145359111, 2144732746, 2144025634, 2143237800, 2142369275,
- 2141420091, 2140390283, 2139279891, 2138088956, 2136817524, 2135465641,
- 2134033359, 2132520732, 2130927817, 2129254674, 2127501366, 2125667958,
- 2123754520, 2121761124, 2119687845, 2117534761, 2115301953, 2112989505,
- 2110597504, 2108126040, 2105575206, 2102945099, 2100235817, 2097447462,
- 2094580140, 2091633958, 2088609027, 2085505461, 2082323377, 2079062895,
- 2075724137, 2072307229, 2068812301, 2065239482, 2061588909, 2057860717,
- 2054055049, 2050172046, 2046211856, 2042174627, 2038060511, 2033869663,
- 2029602242, 2025258407, 2020838322, 2016342154, 2011770071, 2007122247,
- 2002398855, 1997600075, 1992726085, 1987777071, 1982753218, 1977654716,
- 1972481756, 1967234533, 1961913245, 1956518092, 1951049277, 1945507007,
- 1939891489, 1934202935, 1928441559, 1922607579, 1916701214, 1910722686,
- 1904672221, 1898550045, 1892356390, 1886091490, 1879755578, 1873348896,
- 1866871682, 1860324182, 1853706642, 1847019310, 1840262440, 1833436285,
- 1826541101, 1819577150, 1812544693, 1805443994, 1798275321, 1791038944,
- 1783735136, 1776364171, 1768926327, 1761421884, 1753851124, 1746214333,
- 1738511798, 1730743809, 1722910658, 1715012641, 1707050054, 1699023198,
- 1690932375, 1682777889, 1674560047, 1666279160, 1657935537, 1649529495,
- 1641061348, 1632531417, 1623940021, 1615287485, 1606574135, 1597800298,
- 1588966305, 1580072488, 1571119182, 1562106724, 1553035454, 1543905713,
- 1534717845, 1525472195, 1516169113, 1506808947, 1497392051, 1487918779,
- 1478389488, 1468804536, 1459164285, 1449469097, 1439719337, 1429915373,
- 1420057573, 1410146308, 1400181953, 1390164881, 1380095471, 1369974100,
- 1359801151, 1349577006, 1339302051, 1328976671, 1318601256, 1308176197,
- 1297701885, 1287178716, 1276607085, 1265987391, 1255320033, 1244605413,
- 1233843934, 1223036001, 1212182022, 1201282406, 1190337561, 1179347901,
- 1168313839, 1157235791, 1146114173, 1134949405, 1123741907, 1112492100,
- 1101200409, 1089867258, 1078493075, 1067078287, 1055623323, 1044128616,
- 1032594599, 1021021705, 1009410369, 997761030, 986074126, 974350097,
- 962589384, 950792430, 938959680, 927091578, 915188571, 903251109,
- 891279639, 879274613, 867236483, 855165702, 843062725, 830928006,
- 818762004, 806565176, 794337981, 782080880, 769794333, 757478805,
- 745134758, 732762657, 720362967, 707936157, 695482693, 683003045,
- 670497682, 657967075, 645411696, 632832017, 620228513, 607601658,
- 594951926, 582279796, 569585742, 556870244, 544133780, 531376830,
- 518599874, 505803393, 492987869, 480153783, 467301621, 454431865,
- 441544999, 428641510, 415721883, 402786603, 389836160, 376871039,
- 363891729, 350898719, 337892497, 324873555, 311842381, 298799466,
- 285745301, 272680379, 259605190, 246520227, 233425983, 220322950,
- 207211623, 194092494, 180966058, 167832808, 154693239, 141547847,
- 128397125, 115241569, 102081674, 88917936, 75750851, 62580913,
- 49408619, 36234465, 23058947, 9882561},
- {-3294197, -16470831, -29646846, -42821744, -55995030,
- -69166207, -82334781, -95500255, -108662133, -121819920,
- -134973121, -148121240, -161263783, -174400253, -187530158,
- -200653003, -213768293, -226875534, -239974234, -253063900,
- -266144037, -279214154, -292273759, -305322360, -318359466,
- -331384586, -344397229, -357396906, -370383127, -383355403,
- -396313247, -409256169, -422183683, -435095302, -447990540,
- -460868912, -473729932, -486573116, -499397981, -512204044,
- -524990823, -537757836, -550504603, -563230644, -575935479,
- -588618631, -601279622, -613917975, -626533214, -639124864,
- -651692452, -664235504, -676753548, -689246113, -701712727,
- -714152923, -726566231, -738952185, -751310317, -763640163,
- -775941258, -788213140, -800455345, -812667415, -824848887,
- -836999305, -849118210, -861205146, -873259658, -885281292,
- -897269597, -909224119, -921144410, -933030020, -944880502,
- -956695410, -968474299, -980216725, -991922247, -1003590423,
- -1015220815, -1026812984, -1038366494, -1049880911, -1061355800,
- -1072790729, -1084185269, -1095538990, -1106851464, -1118122266,
- -1129350971, -1140537157, -1151680402, -1162780287, -1173836394,
- -1184848307, -1195815611, -1206737893, -1217614742, -1228445749,
- -1239230505, -1249968605, -1260659645, -1271303221, -1281898933,
- -1292446383, -1302945173, -1313394908, -1323795194, -1334145640,
- -1344445856, -1354695454, -1364894049, -1375041257, -1385136695,
- -1395179983, -1405170743, -1415108600, -1424993179, -1434824107,
- -1444601016, -1454323535, -1463991301, -1473603947, -1483161114,
- -1492662440, -1502107569, -1511496144, -1520827811, -1530102221,
- -1539319023, -1548477871, -1557578419, -1566620326, -1575603250,
- -1584526853, -1593390800, -1602194757, -1610938392, -1619621376,
- -1628243382, -1636804086, -1645303165, -1653740299, -1662115171,
- -1670427465, -1678676868, -1686863071, -1694985763, -1703044641,
- -1711039400, -1718969739, -1726835360, -1734635967, -1742371265,
- -1750040965, -1757644776, -1765182413, -1772653592, -1780058031,
- -1787395452, -1794665579, -1801868137, -1809002857, -1816069468,
- -1823067705, -1829997305, -1836858007, -1843649552, -1850371684,
- -1857024151, -1863606703, -1870119090, -1876561068, -1882932395,
- -1889232831, -1895462138, -1901620082, -1907706431, -1913720956,
- -1919663431, -1925533631, -1931331336, -1937056328, -1942708390,
- -1948287311, -1953792880, -1959224889, -1964583135, -1969867415,
- -1975077531, -1980213286, -1985274488, -1990260945, -1995172470,
- -2000008877, -2004769986, -2009455616, -2014065591, -2018599738,
- -2023057885, -2027439866, -2031745514, -2035974669, -2040127170,
- -2044202862, -2048201590, -2052123205, -2055967559, -2059734506,
- -2063423906, -2067035619, -2070569510, -2074025444, -2077403293,
- -2080702928, -2083924227, -2087067066, -2090131329, -2093116900,
- -2096023666, -2098851517, -2101600349, -2104270056, -2106860538,
- -2109371699, -2111803443, -2114155678, -2116428317, -2118621274,
- -2120734465, -2122767812, -2124721239, -2126594670, -2128388037,
- -2130101271, -2131734307, -2133287086, -2134759547, -2136151635,
- -2137463299, -2138694489, -2139845157, -2140915262, -2141904763,
- -2142813622, -2143641805, -2144389282, -2145056023, -2145642005,
- -2146147204, -2146571602, -2146915182, -2147177933, -2147359843,
- -2147460907},
- {2147483647, 2147443221, 2147321945, 2147119824, 2146836865, 2146473078,
- 2146028478, 2145503082, 2144896908, 2144209981, 2143442325, 2142593969,
- 2141664947, 2140655291, 2139565041, 2138394238, 2137142926, 2135811151,
- 2134398964, 2132906418, 2131333570, 2129680478, 2127947205, 2126133816,
- 2124240379, 2122266965, 2120213650, 2118080509, 2115867624, 2113575078,
- 2111202957, 2108751350, 2106220350, 2103610052, 2100920555, 2098151959,
- 2095304368, 2092377891, 2089372636, 2086288718, 2083126253, 2079885359,
- 2076566158, 2073168776, 2069693340, 2066139982, 2062508834, 2058800034,
- 2055013722, 2051150039, 2047209132, 2043191148, 2039096240, 2034924560,
- 2030676267, 2026351520, 2021950482, 2017473319, 2012920199, 2008291294,
- 2003586778, 1998806828, 1993951623, 1989021348, 1984016187, 1978936329,
- 1973781966, 1968553290, 1963250500, 1957873794, 1952423376, 1946899449,
- 1941302224, 1935631909, 1929888719, 1924072869, 1918184579, 1912224071,
- 1906191569, 1900087299, 1893911493, 1887664381, 1881346200, 1874957188,
- 1868497584, 1861967633, 1855367579, 1848697672, 1841958163, 1835149305,
- 1828271354, 1821324571, 1814309215, 1807225552, 1800073847, 1792854371,
- 1785567395, 1778213193, 1770792043, 1763304223, 1755750016, 1748129706,
- 1740443579, 1732691926, 1724875039, 1716993210, 1709046738, 1701035921,
- 1692961061, 1684822462, 1676620430, 1668355275, 1660027307, 1651636840,
- 1643184190, 1634669674, 1626093615, 1617456334, 1608758156, 1599999410,
- 1591180424, 1582301532, 1573363067, 1564365365, 1555308767, 1546193611,
- 1537020242, 1527789006, 1518500249, 1509154321, 1499751575, 1490292363,
- 1480777043, 1471205973, 1461579512, 1451898024, 1442161873, 1432371425,
- 1422527049, 1412629116, 1402677998, 1392674071, 1382617709, 1372509293,
- 1362349203, 1352137821, 1341875532, 1331562722, 1321199779, 1310787094,
- 1300325059, 1289814067, 1279254514, 1268646799, 1257991319, 1247288476,
- 1236538674, 1225742317, 1214899812, 1204011566, 1193077990, 1182099495,
- 1171076494, 1160009404, 1148898639, 1137744620, 1126547764, 1115308495,
- 1104027236, 1092704410, 1081340444, 1069935767, 1058490807, 1047005996,
- 1035481765, 1023918549, 1012316783, 1000676904, 988999350, 977284561,
- 965532977, 953745042, 941921199, 930061893, 918167571, 906238680,
- 894275670, 882278991, 870249094, 858186434, 846091463, 833964637,
- 821806412, 809617248, 797397601, 785147933, 772868705, 760560379,
- 748223418, 735858286, 723465451, 711045377, 698598532, 686125386,
- 673626407, 661102067, 648552837, 635979189, 623381597, 610760535,
- 598116478, 585449902, 572761285, 560051103, 547319836, 534567962,
- 521795962, 509004317, 496193509, 483364018, 470516330, 457650927,
- 444768293, 431868914, 418953276, 406021864, 393075166, 380113668,
- 367137860, 354148229, 341145265, 328129456, 315101294, 302061268,
- 289009870, 275947591, 262874923, 249792357, 236700387, 223599506,
- 210490205, 197372981, 184248325, 171116732, 157978697, 144834714,
- 131685278, 118530884, 105372028, 92209204, 79042909, 65873638,
- 52701886, 39528151, 26352927, 13176711},
- {0, -13176711, -26352927, -39528151, -52701886,
- -65873638, -79042909, -92209204, -105372028, -118530884,
- -131685278, -144834714, -157978697, -171116732, -184248325,
- -197372981, -210490205, -223599506, -236700387, -249792357,
- -262874923, -275947591, -289009870, -302061268, -315101294,
- -328129456, -341145265, -354148229, -367137860, -380113668,
- -393075166, -406021864, -418953276, -431868914, -444768293,
- -457650927, -470516330, -483364018, -496193509, -509004317,
- -521795962, -534567962, -547319836, -560051103, -572761285,
- -585449902, -598116478, -610760535, -623381597, -635979189,
- -648552837, -661102067, -673626407, -686125386, -698598532,
- -711045377, -723465451, -735858286, -748223418, -760560379,
- -772868705, -785147933, -797397601, -809617248, -821806412,
- -833964637, -846091463, -858186434, -870249094, -882278991,
- -894275670, -906238680, -918167571, -930061893, -941921199,
- -953745042, -965532977, -977284561, -988999350, -1000676904,
- -1012316783, -1023918549, -1035481765, -1047005996, -1058490807,
- -1069935767, -1081340444, -1092704410, -1104027236, -1115308495,
- -1126547764, -1137744620, -1148898639, -1160009404, -1171076494,
- -1182099495, -1193077990, -1204011566, -1214899812, -1225742317,
- -1236538674, -1247288476, -1257991319, -1268646799, -1279254514,
- -1289814067, -1300325059, -1310787094, -1321199779, -1331562722,
- -1341875532, -1352137821, -1362349203, -1372509293, -1382617709,
- -1392674071, -1402677998, -1412629116, -1422527049, -1432371425,
- -1442161873, -1451898024, -1461579512, -1471205973, -1480777043,
- -1490292363, -1499751575, -1509154321, -1518500249, -1527789006,
- -1537020242, -1546193611, -1555308767, -1564365365, -1573363067,
- -1582301532, -1591180424, -1599999410, -1608758156, -1617456334,
- -1626093615, -1634669674, -1643184190, -1651636840, -1660027307,
- -1668355275, -1676620430, -1684822462, -1692961061, -1701035921,
- -1709046738, -1716993210, -1724875039, -1732691926, -1740443579,
- -1748129706, -1755750016, -1763304223, -1770792043, -1778213193,
- -1785567395, -1792854371, -1800073847, -1807225552, -1814309215,
- -1821324571, -1828271354, -1835149305, -1841958163, -1848697672,
- -1855367579, -1861967633, -1868497584, -1874957188, -1881346200,
- -1887664381, -1893911493, -1900087299, -1906191569, -1912224071,
- -1918184579, -1924072869, -1929888719, -1935631909, -1941302224,
- -1946899449, -1952423376, -1957873794, -1963250500, -1968553290,
- -1973781966, -1978936329, -1984016187, -1989021348, -1993951623,
- -1998806828, -2003586778, -2008291294, -2012920199, -2017473319,
- -2021950482, -2026351520, -2030676267, -2034924560, -2039096240,
- -2043191148, -2047209132, -2051150039, -2055013722, -2058800034,
- -2062508834, -2066139982, -2069693340, -2073168776, -2076566158,
- -2079885359, -2083126253, -2086288718, -2089372636, -2092377891,
- -2095304368, -2098151959, -2100920555, -2103610052, -2106220350,
- -2108751350, -2111202957, -2113575078, -2115867624, -2118080509,
- -2120213650, -2122266965, -2124240379, -2126133816, -2127947205,
- -2129680478, -2131333570, -2132906418, -2134398964, -2135811151,
- -2137142926, -2138394238, -2139565041, -2140655291, -2141664947,
- -2142593969, -2143442325, -2144209981, -2144896908, -2145503082,
- -2146028478, -2146473078, -2146836865, -2147119824, -2147321945,
- -2147443221}};
+ {
+ 2147481120, 2147420481, 2147278994, 2147056662, 2146753495, 2146369504,
+ 2145904703, 2145359111, 2144732746, 2144025634, 2143237800, 2142369275,
+ 2141420091, 2140390283, 2139279891, 2138088956, 2136817524, 2135465641,
+ 2134033359, 2132520732, 2130927817, 2129254674, 2127501366, 2125667958,
+ 2123754520, 2121761124, 2119687845, 2117534761, 2115301953, 2112989505,
+ 2110597504, 2108126040, 2105575206, 2102945099, 2100235817, 2097447462,
+ 2094580140, 2091633958, 2088609027, 2085505461, 2082323377, 2079062895,
+ 2075724137, 2072307229, 2068812301, 2065239482, 2061588909, 2057860717,
+ 2054055049, 2050172046, 2046211856, 2042174627, 2038060511, 2033869663,
+ 2029602242, 2025258407, 2020838322, 2016342154, 2011770071, 2007122247,
+ 2002398855, 1997600075, 1992726085, 1987777071, 1982753218, 1977654716,
+ 1972481756, 1967234533, 1961913245, 1956518092, 1951049277, 1945507007,
+ 1939891489, 1934202935, 1928441559, 1922607579, 1916701214, 1910722686,
+ 1904672221, 1898550045, 1892356390, 1886091490, 1879755578, 1873348896,
+ 1866871682, 1860324182, 1853706642, 1847019310, 1840262440, 1833436285,
+ 1826541101, 1819577150, 1812544693, 1805443994, 1798275321, 1791038944,
+ 1783735136, 1776364171, 1768926327, 1761421884, 1753851124, 1746214333,
+ 1738511798, 1730743809, 1722910658, 1715012641, 1707050054, 1699023198,
+ 1690932375, 1682777889, 1674560047, 1666279160, 1657935537, 1649529495,
+ 1641061348, 1632531417, 1623940021, 1615287485, 1606574135, 1597800298,
+ 1588966305, 1580072488, 1571119182, 1562106724, 1553035454, 1543905713,
+ 1534717845, 1525472195, 1516169113, 1506808947, 1497392051, 1487918779,
+ 1478389488, 1468804536, 1459164285, 1449469097, 1439719337, 1429915373,
+ 1420057573, 1410146308, 1400181953, 1390164881, 1380095471, 1369974100,
+ 1359801151, 1349577006, 1339302051, 1328976671, 1318601256, 1308176197,
+ 1297701885, 1287178716, 1276607085, 1265987391, 1255320033, 1244605413,
+ 1233843934, 1223036001, 1212182022, 1201282406, 1190337561, 1179347901,
+ 1168313839, 1157235791, 1146114173, 1134949405, 1123741907, 1112492100,
+ 1101200409, 1089867258, 1078493075, 1067078287, 1055623323, 1044128616,
+ 1032594599, 1021021705, 1009410369, 997761030, 986074126, 974350097,
+ 962589384, 950792430, 938959680, 927091578, 915188571, 903251109,
+ 891279639, 879274613, 867236483, 855165702, 843062725, 830928006,
+ 818762004, 806565176, 794337981, 782080880, 769794333, 757478805,
+ 745134758, 732762657, 720362967, 707936157, 695482693, 683003045,
+ 670497682, 657967075, 645411696, 632832017, 620228513, 607601658,
+ 594951926, 582279796, 569585742, 556870244, 544133780, 531376830,
+ 518599874, 505803393, 492987869, 480153783, 467301621, 454431865,
+ 441544999, 428641510, 415721883, 402786603, 389836160, 376871039,
+ 363891729, 350898719, 337892497, 324873555, 311842381, 298799466,
+ 285745301, 272680379, 259605190, 246520227, 233425983, 220322950,
+ 207211623, 194092494, 180966058, 167832808, 154693239, 141547847,
+ 128397125, 115241569, 102081674, 88917936, 75750851, 62580913,
+ 49408619, 36234465, 23058947, 9882561
+ },
+ {
+ -3294197, -16470831, -29646846, -42821744, -55995030,
+ -69166207, -82334781, -95500255, -108662133, -121819920,
+ -134973121, -148121240, -161263783, -174400253, -187530158,
+ -200653003, -213768293, -226875534, -239974234, -253063900,
+ -266144037, -279214154, -292273759, -305322360, -318359466,
+ -331384586, -344397229, -357396906, -370383127, -383355403,
+ -396313247, -409256169, -422183683, -435095302, -447990540,
+ -460868912, -473729932, -486573116, -499397981, -512204044,
+ -524990823, -537757836, -550504603, -563230644, -575935479,
+ -588618631, -601279622, -613917975, -626533214, -639124864,
+ -651692452, -664235504, -676753548, -689246113, -701712727,
+ -714152923, -726566231, -738952185, -751310317, -763640163,
+ -775941258, -788213140, -800455345, -812667415, -824848887,
+ -836999305, -849118210, -861205146, -873259658, -885281292,
+ -897269597, -909224119, -921144410, -933030020, -944880502,
+ -956695410, -968474299, -980216725, -991922247, -1003590423,
+ -1015220815, -1026812984, -1038366494, -1049880911, -1061355800,
+ -1072790729, -1084185269, -1095538990, -1106851464, -1118122266,
+ -1129350971, -1140537157, -1151680402, -1162780287, -1173836394,
+ -1184848307, -1195815611, -1206737893, -1217614742, -1228445749,
+ -1239230505, -1249968605, -1260659645, -1271303221, -1281898933,
+ -1292446383, -1302945173, -1313394908, -1323795194, -1334145640,
+ -1344445856, -1354695454, -1364894049, -1375041257, -1385136695,
+ -1395179983, -1405170743, -1415108600, -1424993179, -1434824107,
+ -1444601016, -1454323535, -1463991301, -1473603947, -1483161114,
+ -1492662440, -1502107569, -1511496144, -1520827811, -1530102221,
+ -1539319023, -1548477871, -1557578419, -1566620326, -1575603250,
+ -1584526853, -1593390800, -1602194757, -1610938392, -1619621376,
+ -1628243382, -1636804086, -1645303165, -1653740299, -1662115171,
+ -1670427465, -1678676868, -1686863071, -1694985763, -1703044641,
+ -1711039400, -1718969739, -1726835360, -1734635967, -1742371265,
+ -1750040965, -1757644776, -1765182413, -1772653592, -1780058031,
+ -1787395452, -1794665579, -1801868137, -1809002857, -1816069468,
+ -1823067705, -1829997305, -1836858007, -1843649552, -1850371684,
+ -1857024151, -1863606703, -1870119090, -1876561068, -1882932395,
+ -1889232831, -1895462138, -1901620082, -1907706431, -1913720956,
+ -1919663431, -1925533631, -1931331336, -1937056328, -1942708390,
+ -1948287311, -1953792880, -1959224889, -1964583135, -1969867415,
+ -1975077531, -1980213286, -1985274488, -1990260945, -1995172470,
+ -2000008877, -2004769986, -2009455616, -2014065591, -2018599738,
+ -2023057885, -2027439866, -2031745514, -2035974669, -2040127170,
+ -2044202862, -2048201590, -2052123205, -2055967559, -2059734506,
+ -2063423906, -2067035619, -2070569510, -2074025444, -2077403293,
+ -2080702928, -2083924227, -2087067066, -2090131329, -2093116900,
+ -2096023666, -2098851517, -2101600349, -2104270056, -2106860538,
+ -2109371699, -2111803443, -2114155678, -2116428317, -2118621274,
+ -2120734465, -2122767812, -2124721239, -2126594670, -2128388037,
+ -2130101271, -2131734307, -2133287086, -2134759547, -2136151635,
+ -2137463299, -2138694489, -2139845157, -2140915262, -2141904763,
+ -2142813622, -2143641805, -2144389282, -2145056023, -2145642005,
+ -2146147204, -2146571602, -2146915182, -2147177933, -2147359843,
+ -2147460907
+ },
+ {
+ 2147483647, 2147443221, 2147321945, 2147119824, 2146836865, 2146473078,
+ 2146028478, 2145503082, 2144896908, 2144209981, 2143442325, 2142593969,
+ 2141664947, 2140655291, 2139565041, 2138394238, 2137142926, 2135811151,
+ 2134398964, 2132906418, 2131333570, 2129680478, 2127947205, 2126133816,
+ 2124240379, 2122266965, 2120213650, 2118080509, 2115867624, 2113575078,
+ 2111202957, 2108751350, 2106220350, 2103610052, 2100920555, 2098151959,
+ 2095304368, 2092377891, 2089372636, 2086288718, 2083126253, 2079885359,
+ 2076566158, 2073168776, 2069693340, 2066139982, 2062508834, 2058800034,
+ 2055013722, 2051150039, 2047209132, 2043191148, 2039096240, 2034924560,
+ 2030676267, 2026351520, 2021950482, 2017473319, 2012920199, 2008291294,
+ 2003586778, 1998806828, 1993951623, 1989021348, 1984016187, 1978936329,
+ 1973781966, 1968553290, 1963250500, 1957873794, 1952423376, 1946899449,
+ 1941302224, 1935631909, 1929888719, 1924072869, 1918184579, 1912224071,
+ 1906191569, 1900087299, 1893911493, 1887664381, 1881346200, 1874957188,
+ 1868497584, 1861967633, 1855367579, 1848697672, 1841958163, 1835149305,
+ 1828271354, 1821324571, 1814309215, 1807225552, 1800073847, 1792854371,
+ 1785567395, 1778213193, 1770792043, 1763304223, 1755750016, 1748129706,
+ 1740443579, 1732691926, 1724875039, 1716993210, 1709046738, 1701035921,
+ 1692961061, 1684822462, 1676620430, 1668355275, 1660027307, 1651636840,
+ 1643184190, 1634669674, 1626093615, 1617456334, 1608758156, 1599999410,
+ 1591180424, 1582301532, 1573363067, 1564365365, 1555308767, 1546193611,
+ 1537020242, 1527789006, 1518500249, 1509154321, 1499751575, 1490292363,
+ 1480777043, 1471205973, 1461579512, 1451898024, 1442161873, 1432371425,
+ 1422527049, 1412629116, 1402677998, 1392674071, 1382617709, 1372509293,
+ 1362349203, 1352137821, 1341875532, 1331562722, 1321199779, 1310787094,
+ 1300325059, 1289814067, 1279254514, 1268646799, 1257991319, 1247288476,
+ 1236538674, 1225742317, 1214899812, 1204011566, 1193077990, 1182099495,
+ 1171076494, 1160009404, 1148898639, 1137744620, 1126547764, 1115308495,
+ 1104027236, 1092704410, 1081340444, 1069935767, 1058490807, 1047005996,
+ 1035481765, 1023918549, 1012316783, 1000676904, 988999350, 977284561,
+ 965532977, 953745042, 941921199, 930061893, 918167571, 906238680,
+ 894275670, 882278991, 870249094, 858186434, 846091463, 833964637,
+ 821806412, 809617248, 797397601, 785147933, 772868705, 760560379,
+ 748223418, 735858286, 723465451, 711045377, 698598532, 686125386,
+ 673626407, 661102067, 648552837, 635979189, 623381597, 610760535,
+ 598116478, 585449902, 572761285, 560051103, 547319836, 534567962,
+ 521795962, 509004317, 496193509, 483364018, 470516330, 457650927,
+ 444768293, 431868914, 418953276, 406021864, 393075166, 380113668,
+ 367137860, 354148229, 341145265, 328129456, 315101294, 302061268,
+ 289009870, 275947591, 262874923, 249792357, 236700387, 223599506,
+ 210490205, 197372981, 184248325, 171116732, 157978697, 144834714,
+ 131685278, 118530884, 105372028, 92209204, 79042909, 65873638,
+ 52701886, 39528151, 26352927, 13176711
+ },
+ {
+ 0, -13176711, -26352927, -39528151, -52701886,
+ -65873638, -79042909, -92209204, -105372028, -118530884,
+ -131685278, -144834714, -157978697, -171116732, -184248325,
+ -197372981, -210490205, -223599506, -236700387, -249792357,
+ -262874923, -275947591, -289009870, -302061268, -315101294,
+ -328129456, -341145265, -354148229, -367137860, -380113668,
+ -393075166, -406021864, -418953276, -431868914, -444768293,
+ -457650927, -470516330, -483364018, -496193509, -509004317,
+ -521795962, -534567962, -547319836, -560051103, -572761285,
+ -585449902, -598116478, -610760535, -623381597, -635979189,
+ -648552837, -661102067, -673626407, -686125386, -698598532,
+ -711045377, -723465451, -735858286, -748223418, -760560379,
+ -772868705, -785147933, -797397601, -809617248, -821806412,
+ -833964637, -846091463, -858186434, -870249094, -882278991,
+ -894275670, -906238680, -918167571, -930061893, -941921199,
+ -953745042, -965532977, -977284561, -988999350, -1000676904,
+ -1012316783, -1023918549, -1035481765, -1047005996, -1058490807,
+ -1069935767, -1081340444, -1092704410, -1104027236, -1115308495,
+ -1126547764, -1137744620, -1148898639, -1160009404, -1171076494,
+ -1182099495, -1193077990, -1204011566, -1214899812, -1225742317,
+ -1236538674, -1247288476, -1257991319, -1268646799, -1279254514,
+ -1289814067, -1300325059, -1310787094, -1321199779, -1331562722,
+ -1341875532, -1352137821, -1362349203, -1372509293, -1382617709,
+ -1392674071, -1402677998, -1412629116, -1422527049, -1432371425,
+ -1442161873, -1451898024, -1461579512, -1471205973, -1480777043,
+ -1490292363, -1499751575, -1509154321, -1518500249, -1527789006,
+ -1537020242, -1546193611, -1555308767, -1564365365, -1573363067,
+ -1582301532, -1591180424, -1599999410, -1608758156, -1617456334,
+ -1626093615, -1634669674, -1643184190, -1651636840, -1660027307,
+ -1668355275, -1676620430, -1684822462, -1692961061, -1701035921,
+ -1709046738, -1716993210, -1724875039, -1732691926, -1740443579,
+ -1748129706, -1755750016, -1763304223, -1770792043, -1778213193,
+ -1785567395, -1792854371, -1800073847, -1807225552, -1814309215,
+ -1821324571, -1828271354, -1835149305, -1841958163, -1848697672,
+ -1855367579, -1861967633, -1868497584, -1874957188, -1881346200,
+ -1887664381, -1893911493, -1900087299, -1906191569, -1912224071,
+ -1918184579, -1924072869, -1929888719, -1935631909, -1941302224,
+ -1946899449, -1952423376, -1957873794, -1963250500, -1968553290,
+ -1973781966, -1978936329, -1984016187, -1989021348, -1993951623,
+ -1998806828, -2003586778, -2008291294, -2012920199, -2017473319,
+ -2021950482, -2026351520, -2030676267, -2034924560, -2039096240,
+ -2043191148, -2047209132, -2051150039, -2055013722, -2058800034,
+ -2062508834, -2066139982, -2069693340, -2073168776, -2076566158,
+ -2079885359, -2083126253, -2086288718, -2089372636, -2092377891,
+ -2095304368, -2098151959, -2100920555, -2103610052, -2106220350,
+ -2108751350, -2111202957, -2113575078, -2115867624, -2118080509,
+ -2120213650, -2122266965, -2124240379, -2126133816, -2127947205,
+ -2129680478, -2131333570, -2132906418, -2134398964, -2135811151,
+ -2137142926, -2138394238, -2139565041, -2140655291, -2141664947,
+ -2142593969, -2143442325, -2144209981, -2144896908, -2145503082,
+ -2146028478, -2146473078, -2146836865, -2147119824, -2147321945,
+ -2147443221}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_192[4][192] = {
- {2147479155, 2147371353, 2147119824, 2146724583, 2146185657, 2145503082,
- 2144676904, 2143707178, 2142593969, 2141337352, 2139937411, 2138394238,
- 2136707939, 2134878625, 2132906418, 2130791452, 2128533868, 2126133816,
- 2123591457, 2120906961, 2118080509, 2115112289, 2112002500, 2108751350,
- 2105359057, 2101825848, 2098151959, 2094337635, 2090383134, 2086288718,
- 2082054663, 2077681251, 2073168776, 2068517539, 2063727851, 2058800034,
- 2053734417, 2048531339, 2043191148, 2037714202, 2032100868, 2026351520,
- 2020466545, 2014446335, 2008291294, 2002001834, 1995578375, 1989021348,
- 1982331192, 1975508353, 1968553290, 1961466467, 1954248359, 1946899449,
- 1939420229, 1931811199, 1924072869, 1916205757, 1908210388, 1900087299,
- 1891837033, 1883460143, 1874957188, 1866328738, 1857575371, 1848697672,
- 1839696236, 1830571666, 1821324571, 1811955570, 1802465292, 1792854371,
- 1783123450, 1773273181, 1763304223, 1753217243, 1743012917, 1732691926,
- 1722254963, 1711702726, 1701035921, 1690255262, 1679361470, 1668355275,
- 1657237413, 1646008629, 1634669674, 1623221307, 1611664295, 1599999410,
- 1588227433, 1576349154, 1564365365, 1552276871, 1540084479, 1527789006,
- 1515391275, 1502892115, 1490292363, 1477592863, 1464794465, 1451898024,
- 1438904405, 1425814477, 1412629116, 1399349205, 1385975632, 1372509293,
- 1358951089, 1345301928, 1331562722, 1317734392, 1303817863, 1289814067,
- 1275723941, 1261548428, 1247288476, 1232945041, 1218519083, 1204011566,
- 1189423462, 1174755747, 1160009404, 1145185418, 1130284783, 1115308495,
- 1100257558, 1085132977, 1069935767, 1054666943, 1039327528, 1023918549,
- 1008441037, 992896027, 977284561, 961607683, 945866442, 930061893,
- 914195093, 898267103, 882278991, 866231826, 850126682, 833964637,
- 817746773, 801474175, 785147933, 768769140, 752338891, 735858286,
- 719328429, 702750426, 686125386, 669454422, 652738650, 635979189,
- 619177160, 602333689, 585449902, 568526930, 551565905, 534567962,
- 517534240, 500465878, 483364018, 466229806, 449064389, 431868914,
- 414644534, 397392400, 380113668, 362809495, 345481037, 328129456,
- 310755913, 293361570, 275947591, 258515143, 241065392, 223599506,
- 206118653, 188624005, 171116732, 153598006, 136068999, 118530884,
- 100984836, 83432029, 65873638, 48310837, 30744803, 13176711},
- {-4392261, -21960941, -39528151, -57092715, -74653458,
- -92209204, -109758778, -127301006, -144834714, -162358727,
- -179871873, -197372981, -214860877, -232334392, -249792357,
- -267233603, -284656962, -302061268, -319445357, -336808065,
- -354148229, -371464689, -388756287, -406021864, -423260265,
- -440470337, -457650927, -474800885, -491919064, -509004317,
- -526055502, -543071477, -560051103, -576993243, -593896764,
- -610760535, -627583425, -644364311, -661102067, -677795575,
- -694443716, -711045377, -727599445, -744104814, -760560379,
- -776965037, -793317692, -809617248, -825862614, -842052704,
- -858186434, -874262723, -890280496, -906238680, -922136208,
- -937972015, -953745042, -969454233, -985098536, -1000676904,
- -1016188295, -1031631670, -1047005996, -1062310243, -1077543387,
- -1092704410, -1107792295, -1122806033, -1137744620, -1152607054,
- -1167392343, -1182099495, -1196727526, -1211275459, -1225742317,
- -1240127135, -1254428947, -1268646799, -1282779736, -1296826815,
- -1310787094, -1324659640, -1338443523, -1352137821, -1365741618,
- -1379254002, -1392674071, -1406000924, -1419233671, -1432371425,
- -1445413308, -1458358446, -1471205973, -1483955029, -1496604760,
- -1509154321, -1521602871, -1533949576, -1546193611, -1558334156,
- -1570370398, -1582301532, -1594126759, -1605845288, -1617456334,
- -1628959120, -1640352876, -1651636840, -1662810256, -1673872377,
- -1684822462, -1695659778, -1706383600, -1716993210, -1727487898,
- -1737866961, -1748129706, -1758275444, -1768303497, -1778213193,
- -1788003870, -1797674872, -1807225552, -1816655270, -1825963395,
- -1835149305, -1844212384, -1853152026, -1861967633, -1870658614,
- -1879224388, -1887664381, -1895978029, -1904164775, -1912224071,
- -1920155378, -1927958165, -1935631909, -1943176097, -1950590224,
- -1957873794, -1965026319, -1972047321, -1978936329, -1985692883,
- -1992316530, -1998806828, -2005163340, -2011385643, -2017473319,
- -2023425962, -2029243172, -2034924560, -2040469747, -2045878361,
- -2051150039, -2056284430, -2061281189, -2066139982, -2070860483,
- -2075442378, -2079885359, -2084189128, -2088353398, -2092377891,
- -2096262335, -2100006473, -2103610052, -2107072833, -2110394582,
- -2113575078, -2116614108, -2119511468, -2122266965, -2124880414,
- -2127351640, -2129680478, -2131866772, -2133910375, -2135811151,
- -2137568973, -2139183722, -2140655291, -2141983582, -2143168505,
- -2144209981, -2145107940, -2145862323, -2146473078, -2146940166,
- -2147263554, -2147443221},
- {2147483647, 2147411779, 2147196180, 2146836865, 2146333857, 2145687190,
- 2144896908, 2143963064, 2142885719, 2141664947, 2140300828, 2138793454,
- 2137142926, 2135349354, 2133412859, 2131333570, 2129111626, 2126747176,
- 2124240379, 2121591401, 2118800421, 2115867624, 2112793208, 2109577379,
- 2106220350, 2102722348, 2099083606, 2095304368, 2091384887, 2087325424,
- 2083126253, 2078787653, 2074309916, 2069693340, 2064938236, 2060044920,
- 2055013722, 2049844977, 2044539031, 2039096240, 2033516967, 2027801588,
- 2021950482, 2015964044, 2009842672, 2003586778, 1997196779, 1990673103,
- 1984016187, 1977226477, 1970304427, 1963250500, 1956065168, 1948748913,
- 1941302224, 1933725599, 1926019545, 1918184579, 1910221225, 1902130016,
- 1893911493, 1885566206, 1877094714, 1868497584, 1859775392, 1850928721,
- 1841958163, 1832864319, 1823647797, 1814309215, 1804849197, 1795268377,
- 1785567395, 1775746901, 1765807553, 1755750016, 1745574962, 1735283073,
- 1724875039, 1714351554, 1703713324, 1692961061, 1682095484, 1671117321,
- 1660027307, 1648826183, 1637514700, 1626093615, 1614563691, 1602925701,
- 1591180424, 1579328646, 1567371160, 1555308767, 1543142273, 1530872493,
- 1518500249, 1506026368, 1493451686, 1480777043, 1468003289, 1455131279,
- 1442161873, 1429095940, 1415934355, 1402677998, 1389327757, 1375884526,
- 1362349203, 1348722695, 1335005915, 1321199779, 1307305213, 1293323146,
- 1279254514, 1265100259, 1250861328, 1236538674, 1222133256, 1207646038,
- 1193077990, 1178430086, 1163703307, 1148898639, 1134017073, 1119059605,
- 1104027236, 1088920971, 1073741823, 1058490807, 1043168944, 1027777259,
- 1012316783, 996788550, 981193601, 965532977, 949807729, 934018908,
- 918167571, 902254779, 886281597, 870249094, 854158344, 838010423,
- 821806412, 805547396, 789234463, 772868705, 756451217, 739983098,
- 723465451, 706899380, 690285995, 673626407, 656921733, 640173089,
- 623381597, 606548381, 589674567, 572761285, 555809666, 538820847,
- 521795962, 504736153, 487642561, 470516330, 453358606, 436170538,
- 418953276, 401707972, 384435782, 367137860, 349815365, 332469456,
- 315101294, 297712042, 280302863, 262874923, 245429388, 227967426,
- 210490205, 192998897, 175494670, 157978697, 140452150, 122916202,
- 105372028, 87820800, 70263695, 52701886, 35136551, 17568863},
- {0, -17568863, -35136551, -52701886, -70263695,
- -87820800, -105372028, -122916202, -140452150, -157978697,
- -175494670, -192998897, -210490205, -227967426, -245429388,
- -262874923, -280302863, -297712042, -315101294, -332469456,
- -349815365, -367137860, -384435782, -401707972, -418953276,
- -436170538, -453358606, -470516330, -487642561, -504736153,
- -521795962, -538820847, -555809666, -572761285, -589674567,
- -606548381, -623381597, -640173089, -656921733, -673626407,
- -690285995, -706899380, -723465451, -739983098, -756451217,
- -772868705, -789234463, -805547396, -821806412, -838010423,
- -854158344, -870249094, -886281597, -902254779, -918167571,
- -934018908, -949807729, -965532977, -981193601, -996788550,
- -1012316783, -1027777259, -1043168944, -1058490807, -1073741823,
- -1088920971, -1104027236, -1119059605, -1134017073, -1148898639,
- -1163703307, -1178430086, -1193077990, -1207646038, -1222133256,
- -1236538674, -1250861328, -1265100259, -1279254514, -1293323146,
- -1307305213, -1321199779, -1335005915, -1348722695, -1362349203,
- -1375884526, -1389327757, -1402677998, -1415934355, -1429095940,
- -1442161873, -1455131279, -1468003289, -1480777043, -1493451686,
- -1506026368, -1518500249, -1530872493, -1543142273, -1555308767,
- -1567371160, -1579328646, -1591180424, -1602925701, -1614563691,
- -1626093615, -1637514700, -1648826183, -1660027307, -1671117321,
- -1682095484, -1692961061, -1703713324, -1714351554, -1724875039,
- -1735283073, -1745574962, -1755750016, -1765807553, -1775746901,
- -1785567395, -1795268377, -1804849197, -1814309215, -1823647797,
- -1832864319, -1841958163, -1850928721, -1859775392, -1868497584,
- -1877094714, -1885566206, -1893911493, -1902130016, -1910221225,
- -1918184579, -1926019545, -1933725599, -1941302224, -1948748913,
- -1956065168, -1963250500, -1970304427, -1977226477, -1984016187,
- -1990673103, -1997196779, -2003586778, -2009842672, -2015964044,
- -2021950482, -2027801588, -2033516967, -2039096240, -2044539031,
- -2049844977, -2055013722, -2060044920, -2064938236, -2069693340,
- -2074309916, -2078787653, -2083126253, -2087325424, -2091384887,
- -2095304368, -2099083606, -2102722348, -2106220350, -2109577379,
- -2112793208, -2115867624, -2118800421, -2121591401, -2124240379,
- -2126747176, -2129111626, -2131333570, -2133412859, -2135349354,
- -2137142926, -2138793454, -2140300828, -2141664947, -2142885719,
- -2143963064, -2144896908, -2145687190, -2146333857, -2146836865,
- -2147196180, -2147411779}};
+ {
+ 2147479155, 2147371353, 2147119824, 2146724583, 2146185657, 2145503082,
+ 2144676904, 2143707178, 2142593969, 2141337352, 2139937411, 2138394238,
+ 2136707939, 2134878625, 2132906418, 2130791452, 2128533868, 2126133816,
+ 2123591457, 2120906961, 2118080509, 2115112289, 2112002500, 2108751350,
+ 2105359057, 2101825848, 2098151959, 2094337635, 2090383134, 2086288718,
+ 2082054663, 2077681251, 2073168776, 2068517539, 2063727851, 2058800034,
+ 2053734417, 2048531339, 2043191148, 2037714202, 2032100868, 2026351520,
+ 2020466545, 2014446335, 2008291294, 2002001834, 1995578375, 1989021348,
+ 1982331192, 1975508353, 1968553290, 1961466467, 1954248359, 1946899449,
+ 1939420229, 1931811199, 1924072869, 1916205757, 1908210388, 1900087299,
+ 1891837033, 1883460143, 1874957188, 1866328738, 1857575371, 1848697672,
+ 1839696236, 1830571666, 1821324571, 1811955570, 1802465292, 1792854371,
+ 1783123450, 1773273181, 1763304223, 1753217243, 1743012917, 1732691926,
+ 1722254963, 1711702726, 1701035921, 1690255262, 1679361470, 1668355275,
+ 1657237413, 1646008629, 1634669674, 1623221307, 1611664295, 1599999410,
+ 1588227433, 1576349154, 1564365365, 1552276871, 1540084479, 1527789006,
+ 1515391275, 1502892115, 1490292363, 1477592863, 1464794465, 1451898024,
+ 1438904405, 1425814477, 1412629116, 1399349205, 1385975632, 1372509293,
+ 1358951089, 1345301928, 1331562722, 1317734392, 1303817863, 1289814067,
+ 1275723941, 1261548428, 1247288476, 1232945041, 1218519083, 1204011566,
+ 1189423462, 1174755747, 1160009404, 1145185418, 1130284783, 1115308495,
+ 1100257558, 1085132977, 1069935767, 1054666943, 1039327528, 1023918549,
+ 1008441037, 992896027, 977284561, 961607683, 945866442, 930061893,
+ 914195093, 898267103, 882278991, 866231826, 850126682, 833964637,
+ 817746773, 801474175, 785147933, 768769140, 752338891, 735858286,
+ 719328429, 702750426, 686125386, 669454422, 652738650, 635979189,
+ 619177160, 602333689, 585449902, 568526930, 551565905, 534567962,
+ 517534240, 500465878, 483364018, 466229806, 449064389, 431868914,
+ 414644534, 397392400, 380113668, 362809495, 345481037, 328129456,
+ 310755913, 293361570, 275947591, 258515143, 241065392, 223599506,
+ 206118653, 188624005, 171116732, 153598006, 136068999, 118530884,
+ 100984836, 83432029, 65873638, 48310837, 30744803, 13176711
+ },
+ {
+ -4392261, -21960941, -39528151, -57092715, -74653458,
+ -92209204, -109758778, -127301006, -144834714, -162358727,
+ -179871873, -197372981, -214860877, -232334392, -249792357,
+ -267233603, -284656962, -302061268, -319445357, -336808065,
+ -354148229, -371464689, -388756287, -406021864, -423260265,
+ -440470337, -457650927, -474800885, -491919064, -509004317,
+ -526055502, -543071477, -560051103, -576993243, -593896764,
+ -610760535, -627583425, -644364311, -661102067, -677795575,
+ -694443716, -711045377, -727599445, -744104814, -760560379,
+ -776965037, -793317692, -809617248, -825862614, -842052704,
+ -858186434, -874262723, -890280496, -906238680, -922136208,
+ -937972015, -953745042, -969454233, -985098536, -1000676904,
+ -1016188295, -1031631670, -1047005996, -1062310243, -1077543387,
+ -1092704410, -1107792295, -1122806033, -1137744620, -1152607054,
+ -1167392343, -1182099495, -1196727526, -1211275459, -1225742317,
+ -1240127135, -1254428947, -1268646799, -1282779736, -1296826815,
+ -1310787094, -1324659640, -1338443523, -1352137821, -1365741618,
+ -1379254002, -1392674071, -1406000924, -1419233671, -1432371425,
+ -1445413308, -1458358446, -1471205973, -1483955029, -1496604760,
+ -1509154321, -1521602871, -1533949576, -1546193611, -1558334156,
+ -1570370398, -1582301532, -1594126759, -1605845288, -1617456334,
+ -1628959120, -1640352876, -1651636840, -1662810256, -1673872377,
+ -1684822462, -1695659778, -1706383600, -1716993210, -1727487898,
+ -1737866961, -1748129706, -1758275444, -1768303497, -1778213193,
+ -1788003870, -1797674872, -1807225552, -1816655270, -1825963395,
+ -1835149305, -1844212384, -1853152026, -1861967633, -1870658614,
+ -1879224388, -1887664381, -1895978029, -1904164775, -1912224071,
+ -1920155378, -1927958165, -1935631909, -1943176097, -1950590224,
+ -1957873794, -1965026319, -1972047321, -1978936329, -1985692883,
+ -1992316530, -1998806828, -2005163340, -2011385643, -2017473319,
+ -2023425962, -2029243172, -2034924560, -2040469747, -2045878361,
+ -2051150039, -2056284430, -2061281189, -2066139982, -2070860483,
+ -2075442378, -2079885359, -2084189128, -2088353398, -2092377891,
+ -2096262335, -2100006473, -2103610052, -2107072833, -2110394582,
+ -2113575078, -2116614108, -2119511468, -2122266965, -2124880414,
+ -2127351640, -2129680478, -2131866772, -2133910375, -2135811151,
+ -2137568973, -2139183722, -2140655291, -2141983582, -2143168505,
+ -2144209981, -2145107940, -2145862323, -2146473078, -2146940166,
+ -2147263554, -2147443221
+ },
+ {
+ 2147483647, 2147411779, 2147196180, 2146836865, 2146333857, 2145687190,
+ 2144896908, 2143963064, 2142885719, 2141664947, 2140300828, 2138793454,
+ 2137142926, 2135349354, 2133412859, 2131333570, 2129111626, 2126747176,
+ 2124240379, 2121591401, 2118800421, 2115867624, 2112793208, 2109577379,
+ 2106220350, 2102722348, 2099083606, 2095304368, 2091384887, 2087325424,
+ 2083126253, 2078787653, 2074309916, 2069693340, 2064938236, 2060044920,
+ 2055013722, 2049844977, 2044539031, 2039096240, 2033516967, 2027801588,
+ 2021950482, 2015964044, 2009842672, 2003586778, 1997196779, 1990673103,
+ 1984016187, 1977226477, 1970304427, 1963250500, 1956065168, 1948748913,
+ 1941302224, 1933725599, 1926019545, 1918184579, 1910221225, 1902130016,
+ 1893911493, 1885566206, 1877094714, 1868497584, 1859775392, 1850928721,
+ 1841958163, 1832864319, 1823647797, 1814309215, 1804849197, 1795268377,
+ 1785567395, 1775746901, 1765807553, 1755750016, 1745574962, 1735283073,
+ 1724875039, 1714351554, 1703713324, 1692961061, 1682095484, 1671117321,
+ 1660027307, 1648826183, 1637514700, 1626093615, 1614563691, 1602925701,
+ 1591180424, 1579328646, 1567371160, 1555308767, 1543142273, 1530872493,
+ 1518500249, 1506026368, 1493451686, 1480777043, 1468003289, 1455131279,
+ 1442161873, 1429095940, 1415934355, 1402677998, 1389327757, 1375884526,
+ 1362349203, 1348722695, 1335005915, 1321199779, 1307305213, 1293323146,
+ 1279254514, 1265100259, 1250861328, 1236538674, 1222133256, 1207646038,
+ 1193077990, 1178430086, 1163703307, 1148898639, 1134017073, 1119059605,
+ 1104027236, 1088920971, 1073741823, 1058490807, 1043168944, 1027777259,
+ 1012316783, 996788550, 981193601, 965532977, 949807729, 934018908,
+ 918167571, 902254779, 886281597, 870249094, 854158344, 838010423,
+ 821806412, 805547396, 789234463, 772868705, 756451217, 739983098,
+ 723465451, 706899380, 690285995, 673626407, 656921733, 640173089,
+ 623381597, 606548381, 589674567, 572761285, 555809666, 538820847,
+ 521795962, 504736153, 487642561, 470516330, 453358606, 436170538,
+ 418953276, 401707972, 384435782, 367137860, 349815365, 332469456,
+ 315101294, 297712042, 280302863, 262874923, 245429388, 227967426,
+ 210490205, 192998897, 175494670, 157978697, 140452150, 122916202,
+ 105372028, 87820800, 70263695, 52701886, 35136551, 17568863
+ },
+ {
+ 0, -17568863, -35136551, -52701886, -70263695,
+ -87820800, -105372028, -122916202, -140452150, -157978697,
+ -175494670, -192998897, -210490205, -227967426, -245429388,
+ -262874923, -280302863, -297712042, -315101294, -332469456,
+ -349815365, -367137860, -384435782, -401707972, -418953276,
+ -436170538, -453358606, -470516330, -487642561, -504736153,
+ -521795962, -538820847, -555809666, -572761285, -589674567,
+ -606548381, -623381597, -640173089, -656921733, -673626407,
+ -690285995, -706899380, -723465451, -739983098, -756451217,
+ -772868705, -789234463, -805547396, -821806412, -838010423,
+ -854158344, -870249094, -886281597, -902254779, -918167571,
+ -934018908, -949807729, -965532977, -981193601, -996788550,
+ -1012316783, -1027777259, -1043168944, -1058490807, -1073741823,
+ -1088920971, -1104027236, -1119059605, -1134017073, -1148898639,
+ -1163703307, -1178430086, -1193077990, -1207646038, -1222133256,
+ -1236538674, -1250861328, -1265100259, -1279254514, -1293323146,
+ -1307305213, -1321199779, -1335005915, -1348722695, -1362349203,
+ -1375884526, -1389327757, -1402677998, -1415934355, -1429095940,
+ -1442161873, -1455131279, -1468003289, -1480777043, -1493451686,
+ -1506026368, -1518500249, -1530872493, -1543142273, -1555308767,
+ -1567371160, -1579328646, -1591180424, -1602925701, -1614563691,
+ -1626093615, -1637514700, -1648826183, -1660027307, -1671117321,
+ -1682095484, -1692961061, -1703713324, -1714351554, -1724875039,
+ -1735283073, -1745574962, -1755750016, -1765807553, -1775746901,
+ -1785567395, -1795268377, -1804849197, -1814309215, -1823647797,
+ -1832864319, -1841958163, -1850928721, -1859775392, -1868497584,
+ -1877094714, -1885566206, -1893911493, -1902130016, -1910221225,
+ -1918184579, -1926019545, -1933725599, -1941302224, -1948748913,
+ -1956065168, -1963250500, -1970304427, -1977226477, -1984016187,
+ -1990673103, -1997196779, -2003586778, -2009842672, -2015964044,
+ -2021950482, -2027801588, -2033516967, -2039096240, -2044539031,
+ -2049844977, -2055013722, -2060044920, -2064938236, -2069693340,
+ -2074309916, -2078787653, -2083126253, -2087325424, -2091384887,
+ -2095304368, -2099083606, -2102722348, -2106220350, -2109577379,
+ -2112793208, -2115867624, -2118800421, -2121591401, -2124240379,
+ -2126747176, -2129111626, -2131333570, -2133412859, -2135349354,
+ -2137142926, -2138793454, -2140300828, -2141664947, -2142885719,
+ -2143963064, -2144896908, -2145687190, -2146333857, -2146836865,
+ -2147196180, -2147411779}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_128[4][128] = {
- {2147473540, 2147230990, 2146665074, 2145775879, 2144563537, 2143028233,
- 2141170196, 2138989706, 2136487093, 2133662733, 2130517051, 2127050521,
- 2123263664, 2119157053, 2114731304, 2109987084, 2104925108, 2099546137,
- 2093850983, 2087840503, 2081515602, 2074877232, 2067926393, 2060664132,
- 2053091543, 2045209765, 2037019987, 2028523440, 2019721406, 2010615209,
- 2001206221, 1991495858, 1981485584, 1971176905, 1960571374, 1949670588,
- 1938476189, 1926989863, 1915213339, 1903148391, 1890796835, 1878160533,
- 1865241387, 1852041342, 1838562387, 1824806550, 1810775905, 1796472564,
- 1781898680, 1767056449, 1751948106, 1736575926, 1720942223, 1705049354,
- 1688899710, 1672495724, 1655839866, 1638934645, 1621782607, 1604386334,
- 1586748446, 1568871600, 1550758487, 1532411836, 1513834409, 1495029005,
- 1475998454, 1456745624, 1437273413, 1417584754, 1397682612, 1377569984,
- 1357249900, 1336725418, 1315999630, 1295075658, 1273956652, 1252645793,
- 1231146290, 1209461381, 1187594331, 1165548434, 1143327010, 1120933405,
- 1098370992, 1075643168, 1052753356, 1029705003, 1006501580, 983146582,
- 959643526, 935995951, 912207418, 888281511, 864221831, 840032003,
- 815715669, 791276491, 766718150, 742044344, 717258789, 692365217,
- 667367378, 642269036, 617073970, 591785975, 566408859, 540946445,
- 515402565, 489781068, 464085812, 438320666, 412489511, 386596236,
- 360644742, 334638935, 308582733, 282480060, 256334846, 230151030,
- 203932553, 177683365, 151407418, 125108670, 98791081, 72458614,
- 46115236, 19764912},
- {-6588386, -32940694, -59288041, -85626459, -111951983,
- -138260647, -164548489, -190811551, -217045877, -243247517,
- -269412525, -295536960, -321616889, -347648383, -373627522,
- -399550395, -425413097, -451211733, -476942419, -502601278,
- -528184448, -553688075, -579108319, -604441351, -629683356,
- -654830534, -679879096, -704825271, -729665302, -754395449,
- -779011985, -803511206, -827889421, -852142958, -876268167,
- -900261412, -924119081, -947837581, -971413341, -994842809,
- -1018122458, -1041248781, -1064218295, -1087027543, -1109673088,
- -1132151520, -1154459455, -1176593532, -1198550418, -1220326808,
- -1241919420, -1263325004, -1284540336, -1305562221, -1326387493,
- -1347013016, -1367435684, -1387652420, -1407660182, -1427455955,
- -1447036759, -1466399644, -1485541694, -1504460028, -1523151796,
- -1541614182, -1559844407, -1577839725, -1595597426, -1613114836,
- -1630389317, -1647418268, -1664199123, -1680729356, -1697006477,
- -1713028036, -1728791618, -1744294851, -1759535400, -1774510969,
- -1789219303, -1803658188, -1817825448, -1831718950, -1845336602,
- -1858676353, -1871736195, -1884514160, -1897008324, -1909216805,
- -1921137766, -1932769410, -1944109986, -1955157786, -1965911147,
- -1976368449, -1986528117, -1996388621, -2005948476, -2015206243,
- -2024160527, -2032809981, -2041153300, -2049189229, -2056916558,
- -2064334123, -2071440807, -2078235539, -2084717297, -2090885104,
- -2096738031, -2102275197, -2107495769, -2112398959, -2116984030,
- -2121250290, -2125197099, -2128823860, -2132130028, -2135115106,
- -2137778643, -2140120238, -2142139539, -2143836242, -2145210091,
- -2146260879, -2146988448, -2147392689},
- {2147483647, 2147321945, 2146836865, 2146028478, 2144896908, 2143442325,
- 2141664947, 2139565041, 2137142926, 2134398964, 2131333570, 2127947205,
- 2124240379, 2120213650, 2115867624, 2111202957, 2106220350, 2100920555,
- 2095304368, 2089372636, 2083126253, 2076566158, 2069693340, 2062508834,
- 2055013722, 2047209132, 2039096240, 2030676267, 2021950482, 2012920199,
- 2003586778, 1993951623, 1984016187, 1973781966, 1963250500, 1952423376,
- 1941302224, 1929888719, 1918184579, 1906191569, 1893911493, 1881346200,
- 1868497584, 1855367579, 1841958163, 1828271354, 1814309215, 1800073847,
- 1785567395, 1770792043, 1755750016, 1740443579, 1724875039, 1709046738,
- 1692961061, 1676620430, 1660027307, 1643184190, 1626093615, 1608758156,
- 1591180424, 1573363067, 1555308767, 1537020242, 1518500249, 1499751575,
- 1480777043, 1461579512, 1442161873, 1422527049, 1402677998, 1382617709,
- 1362349203, 1341875532, 1321199779, 1300325059, 1279254514, 1257991319,
- 1236538674, 1214899812, 1193077990, 1171076494, 1148898639, 1126547764,
- 1104027236, 1081340444, 1058490807, 1035481765, 1012316783, 988999350,
- 965532977, 941921199, 918167571, 894275670, 870249094, 846091463,
- 821806412, 797397601, 772868705, 748223418, 723465451, 698598532,
- 673626407, 648552837, 623381597, 598116478, 572761285, 547319836,
- 521795962, 496193509, 470516330, 444768293, 418953276, 393075166,
- 367137860, 341145265, 315101294, 289009870, 262874923, 236700387,
- 210490205, 184248325, 157978697, 131685278, 105372028, 79042909,
- 52701886, 26352927},
- {0, -26352927, -52701886, -79042909, -105372028,
- -131685278, -157978697, -184248325, -210490205, -236700387,
- -262874923, -289009870, -315101294, -341145265, -367137860,
- -393075166, -418953276, -444768293, -470516330, -496193509,
- -521795962, -547319836, -572761285, -598116478, -623381597,
- -648552837, -673626407, -698598532, -723465451, -748223418,
- -772868705, -797397601, -821806412, -846091463, -870249094,
- -894275670, -918167571, -941921199, -965532977, -988999350,
- -1012316783, -1035481765, -1058490807, -1081340444, -1104027236,
- -1126547764, -1148898639, -1171076494, -1193077990, -1214899812,
- -1236538674, -1257991319, -1279254514, -1300325059, -1321199779,
- -1341875532, -1362349203, -1382617709, -1402677998, -1422527049,
- -1442161873, -1461579512, -1480777043, -1499751575, -1518500249,
- -1537020242, -1555308767, -1573363067, -1591180424, -1608758156,
- -1626093615, -1643184190, -1660027307, -1676620430, -1692961061,
- -1709046738, -1724875039, -1740443579, -1755750016, -1770792043,
- -1785567395, -1800073847, -1814309215, -1828271354, -1841958163,
- -1855367579, -1868497584, -1881346200, -1893911493, -1906191569,
- -1918184579, -1929888719, -1941302224, -1952423376, -1963250500,
- -1973781966, -1984016187, -1993951623, -2003586778, -2012920199,
- -2021950482, -2030676267, -2039096240, -2047209132, -2055013722,
- -2062508834, -2069693340, -2076566158, -2083126253, -2089372636,
- -2095304368, -2100920555, -2106220350, -2111202957, -2115867624,
- -2120213650, -2124240379, -2127947205, -2131333570, -2134398964,
- -2137142926, -2139565041, -2141664947, -2143442325, -2144896908,
- -2146028478, -2146836865, -2147321945}};
+ {
+ 2147473540, 2147230990, 2146665074, 2145775879, 2144563537, 2143028233,
+ 2141170196, 2138989706, 2136487093, 2133662733, 2130517051, 2127050521,
+ 2123263664, 2119157053, 2114731304, 2109987084, 2104925108, 2099546137,
+ 2093850983, 2087840503, 2081515602, 2074877232, 2067926393, 2060664132,
+ 2053091543, 2045209765, 2037019987, 2028523440, 2019721406, 2010615209,
+ 2001206221, 1991495858, 1981485584, 1971176905, 1960571374, 1949670588,
+ 1938476189, 1926989863, 1915213339, 1903148391, 1890796835, 1878160533,
+ 1865241387, 1852041342, 1838562387, 1824806550, 1810775905, 1796472564,
+ 1781898680, 1767056449, 1751948106, 1736575926, 1720942223, 1705049354,
+ 1688899710, 1672495724, 1655839866, 1638934645, 1621782607, 1604386334,
+ 1586748446, 1568871600, 1550758487, 1532411836, 1513834409, 1495029005,
+ 1475998454, 1456745624, 1437273413, 1417584754, 1397682612, 1377569984,
+ 1357249900, 1336725418, 1315999630, 1295075658, 1273956652, 1252645793,
+ 1231146290, 1209461381, 1187594331, 1165548434, 1143327010, 1120933405,
+ 1098370992, 1075643168, 1052753356, 1029705003, 1006501580, 983146582,
+ 959643526, 935995951, 912207418, 888281511, 864221831, 840032003,
+ 815715669, 791276491, 766718150, 742044344, 717258789, 692365217,
+ 667367378, 642269036, 617073970, 591785975, 566408859, 540946445,
+ 515402565, 489781068, 464085812, 438320666, 412489511, 386596236,
+ 360644742, 334638935, 308582733, 282480060, 256334846, 230151030,
+ 203932553, 177683365, 151407418, 125108670, 98791081, 72458614,
+ 46115236, 19764912
+ },
+ {
+ -6588386, -32940694, -59288041, -85626459, -111951983,
+ -138260647, -164548489, -190811551, -217045877, -243247517,
+ -269412525, -295536960, -321616889, -347648383, -373627522,
+ -399550395, -425413097, -451211733, -476942419, -502601278,
+ -528184448, -553688075, -579108319, -604441351, -629683356,
+ -654830534, -679879096, -704825271, -729665302, -754395449,
+ -779011985, -803511206, -827889421, -852142958, -876268167,
+ -900261412, -924119081, -947837581, -971413341, -994842809,
+ -1018122458, -1041248781, -1064218295, -1087027543, -1109673088,
+ -1132151520, -1154459455, -1176593532, -1198550418, -1220326808,
+ -1241919420, -1263325004, -1284540336, -1305562221, -1326387493,
+ -1347013016, -1367435684, -1387652420, -1407660182, -1427455955,
+ -1447036759, -1466399644, -1485541694, -1504460028, -1523151796,
+ -1541614182, -1559844407, -1577839725, -1595597426, -1613114836,
+ -1630389317, -1647418268, -1664199123, -1680729356, -1697006477,
+ -1713028036, -1728791618, -1744294851, -1759535400, -1774510969,
+ -1789219303, -1803658188, -1817825448, -1831718950, -1845336602,
+ -1858676353, -1871736195, -1884514160, -1897008324, -1909216805,
+ -1921137766, -1932769410, -1944109986, -1955157786, -1965911147,
+ -1976368449, -1986528117, -1996388621, -2005948476, -2015206243,
+ -2024160527, -2032809981, -2041153300, -2049189229, -2056916558,
+ -2064334123, -2071440807, -2078235539, -2084717297, -2090885104,
+ -2096738031, -2102275197, -2107495769, -2112398959, -2116984030,
+ -2121250290, -2125197099, -2128823860, -2132130028, -2135115106,
+ -2137778643, -2140120238, -2142139539, -2143836242, -2145210091,
+ -2146260879, -2146988448, -2147392689
+ },
+ {
+ 2147483647, 2147321945, 2146836865, 2146028478, 2144896908, 2143442325,
+ 2141664947, 2139565041, 2137142926, 2134398964, 2131333570, 2127947205,
+ 2124240379, 2120213650, 2115867624, 2111202957, 2106220350, 2100920555,
+ 2095304368, 2089372636, 2083126253, 2076566158, 2069693340, 2062508834,
+ 2055013722, 2047209132, 2039096240, 2030676267, 2021950482, 2012920199,
+ 2003586778, 1993951623, 1984016187, 1973781966, 1963250500, 1952423376,
+ 1941302224, 1929888719, 1918184579, 1906191569, 1893911493, 1881346200,
+ 1868497584, 1855367579, 1841958163, 1828271354, 1814309215, 1800073847,
+ 1785567395, 1770792043, 1755750016, 1740443579, 1724875039, 1709046738,
+ 1692961061, 1676620430, 1660027307, 1643184190, 1626093615, 1608758156,
+ 1591180424, 1573363067, 1555308767, 1537020242, 1518500249, 1499751575,
+ 1480777043, 1461579512, 1442161873, 1422527049, 1402677998, 1382617709,
+ 1362349203, 1341875532, 1321199779, 1300325059, 1279254514, 1257991319,
+ 1236538674, 1214899812, 1193077990, 1171076494, 1148898639, 1126547764,
+ 1104027236, 1081340444, 1058490807, 1035481765, 1012316783, 988999350,
+ 965532977, 941921199, 918167571, 894275670, 870249094, 846091463,
+ 821806412, 797397601, 772868705, 748223418, 723465451, 698598532,
+ 673626407, 648552837, 623381597, 598116478, 572761285, 547319836,
+ 521795962, 496193509, 470516330, 444768293, 418953276, 393075166,
+ 367137860, 341145265, 315101294, 289009870, 262874923, 236700387,
+ 210490205, 184248325, 157978697, 131685278, 105372028, 79042909,
+ 52701886, 26352927
+ },
+ {
+ 0, -26352927, -52701886, -79042909, -105372028,
+ -131685278, -157978697, -184248325, -210490205, -236700387,
+ -262874923, -289009870, -315101294, -341145265, -367137860,
+ -393075166, -418953276, -444768293, -470516330, -496193509,
+ -521795962, -547319836, -572761285, -598116478, -623381597,
+ -648552837, -673626407, -698598532, -723465451, -748223418,
+ -772868705, -797397601, -821806412, -846091463, -870249094,
+ -894275670, -918167571, -941921199, -965532977, -988999350,
+ -1012316783, -1035481765, -1058490807, -1081340444, -1104027236,
+ -1126547764, -1148898639, -1171076494, -1193077990, -1214899812,
+ -1236538674, -1257991319, -1279254514, -1300325059, -1321199779,
+ -1341875532, -1362349203, -1382617709, -1402677998, -1422527049,
+ -1442161873, -1461579512, -1480777043, -1499751575, -1518500249,
+ -1537020242, -1555308767, -1573363067, -1591180424, -1608758156,
+ -1626093615, -1643184190, -1660027307, -1676620430, -1692961061,
+ -1709046738, -1724875039, -1740443579, -1755750016, -1770792043,
+ -1785567395, -1800073847, -1814309215, -1828271354, -1841958163,
+ -1855367579, -1868497584, -1881346200, -1893911493, -1906191569,
+ -1918184579, -1929888719, -1941302224, -1952423376, -1963250500,
+ -1973781966, -1984016187, -1993951623, -2003586778, -2012920199,
+ -2021950482, -2030676267, -2039096240, -2047209132, -2055013722,
+ -2062508834, -2069693340, -2076566158, -2083126253, -2089372636,
+ -2095304368, -2100920555, -2106220350, -2111202957, -2115867624,
+ -2120213650, -2124240379, -2127947205, -2131333570, -2134398964,
+ -2137142926, -2139565041, -2141664947, -2143442325, -2144896908,
+ -2146028478, -2146836865, -2147321945}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_96[4][96] = {
- {2147465679, 2147034485, 2146028478, 2144447928, 2142293256, 2139565041,
- 2136264013, 2132391055, 2127947205, 2122933651, 2117351737, 2111202957,
- 2104488957, 2097211534, 2089372636, 2080974364, 2072018964, 2062508834,
- 2052446521, 2041834718, 2030676267, 2018974155, 2006731514, 1993951623,
- 1980637903, 1966793919, 1952423376, 1937530122, 1922118144, 1906191569,
- 1889754660, 1872811818, 1855367579, 1837426614, 1818993725, 1800073847,
- 1780672046, 1760793516, 1740443579, 1719627684, 1698351402, 1676620430,
- 1654440587, 1631817810, 1608758156, 1585267799, 1561353026, 1537020242,
- 1512275961, 1487126807, 1461579512, 1435640918, 1409317968, 1382617709,
- 1355547290, 1328113959, 1300325059, 1272188031, 1243710407, 1214899812,
- 1185763959, 1156310648, 1126547764, 1096483277, 1066125235, 1035481765,
- 1004561071, 973371433, 941921199, 910218790, 878272694, 846091463,
- 813683712, 781058119, 748223418, 715188399, 681961907, 648552837,
- 614970134, 581222788, 547319836, 513270352, 479083454, 444768293,
- 410334057, 375789965, 341145265, 306409231, 271591165, 236700387,
- 201746239, 166738078, 131685278, 96597222, 61483305, 26352927},
- {-8784505, -43919586, -79042909, -114145070, -149216672,
- -184248325, -219230650, -254154282, -289009870, -323788084,
- -358479612, -393075166, -427565484, -461941333, -496193509,
- -530312841, -564290197, -598116478, -631782629, -665279636,
- -698598532, -731730396, -764666359, -797397601, -829915361,
- -862210933, -894275670, -926100988, -957678366, -988999350,
- -1020055555, -1050838667, -1081340444, -1111552720, -1141467406,
- -1171076494, -1200372057, -1229346251, -1257991319, -1286299592,
- -1314263492, -1341875532, -1369128319, -1396014558, -1422527049,
- -1448658696, -1474402502, -1499751575, -1524699127, -1549238481,
- -1573363067, -1597066425, -1620342210, -1643184190, -1665586249,
- -1687542392, -1709046738, -1730093531, -1750677136, -1770792043,
- -1790432865, -1809594346, -1828271354, -1846458890, -1864152085,
- -1881346200, -1898036634, -1914218918, -1929888719, -1945041841,
- -1959674230, -1973781966, -1987361273, -2000408515, -2012920199,
- -2024892976, -2036323641, -2047209132, -2057546536, -2067333084,
- -2076566158, -2085243285, -2093362142, -2100920555, -2107916501,
- -2114348106, -2120213650, -2125511561, -2130240421, -2134398964,
- -2137986077, -2141000800, -2143442325, -2145309998, -2146603320,
- -2147321945},
- {2147483647, 2147196180, 2146333857, 2144896908, 2142885719, 2140300828,
- 2137142926, 2133412859, 2129111626, 2124240379, 2118800421, 2112793208,
- 2106220350, 2099083606, 2091384887, 2083126253, 2074309916, 2064938236,
- 2055013722, 2044539031, 2033516967, 2021950482, 2009842672, 1997196779,
- 1984016187, 1970304427, 1956065168, 1941302224, 1926019545, 1910221225,
- 1893911493, 1877094714, 1859775392, 1841958163, 1823647797, 1804849197,
- 1785567395, 1765807553, 1745574962, 1724875039, 1703713324, 1682095484,
- 1660027307, 1637514700, 1614563691, 1591180424, 1567371160, 1543142273,
- 1518500249, 1493451686, 1468003289, 1442161873, 1415934355, 1389327757,
- 1362349203, 1335005915, 1307305213, 1279254514, 1250861328, 1222133256,
- 1193077990, 1163703307, 1134017073, 1104027236, 1073741823, 1043168944,
- 1012316783, 981193601, 949807729, 918167571, 886281597, 854158344,
- 821806412, 789234463, 756451217, 723465451, 690285995, 656921733,
- 623381597, 589674567, 555809666, 521795962, 487642561, 453358606,
- 418953276, 384435782, 349815365, 315101294, 280302863, 245429388,
- 210490205, 175494670, 140452150, 105372028, 70263695, 35136551},
- {0, -35136551, -70263695, -105372028, -140452150,
- -175494670, -210490205, -245429388, -280302863, -315101294,
- -349815365, -384435782, -418953276, -453358606, -487642561,
- -521795962, -555809666, -589674567, -623381597, -656921733,
- -690285995, -723465451, -756451217, -789234463, -821806412,
- -854158344, -886281597, -918167571, -949807729, -981193601,
- -1012316783, -1043168944, -1073741823, -1104027236, -1134017073,
- -1163703307, -1193077990, -1222133256, -1250861328, -1279254514,
- -1307305213, -1335005915, -1362349203, -1389327757, -1415934355,
- -1442161873, -1468003289, -1493451686, -1518500249, -1543142273,
- -1567371160, -1591180424, -1614563691, -1637514700, -1660027307,
- -1682095484, -1703713324, -1724875039, -1745574962, -1765807553,
- -1785567395, -1804849197, -1823647797, -1841958163, -1859775392,
- -1877094714, -1893911493, -1910221225, -1926019545, -1941302224,
- -1956065168, -1970304427, -1984016187, -1997196779, -2009842672,
- -2021950482, -2033516967, -2044539031, -2055013722, -2064938236,
- -2074309916, -2083126253, -2091384887, -2099083606, -2106220350,
- -2112793208, -2118800421, -2124240379, -2129111626, -2133412859,
- -2137142926, -2140300828, -2142885719, -2144896908, -2146333857,
- -2147196180}};
+ {
+ 2147465679, 2147034485, 2146028478, 2144447928, 2142293256, 2139565041,
+ 2136264013, 2132391055, 2127947205, 2122933651, 2117351737, 2111202957,
+ 2104488957, 2097211534, 2089372636, 2080974364, 2072018964, 2062508834,
+ 2052446521, 2041834718, 2030676267, 2018974155, 2006731514, 1993951623,
+ 1980637903, 1966793919, 1952423376, 1937530122, 1922118144, 1906191569,
+ 1889754660, 1872811818, 1855367579, 1837426614, 1818993725, 1800073847,
+ 1780672046, 1760793516, 1740443579, 1719627684, 1698351402, 1676620430,
+ 1654440587, 1631817810, 1608758156, 1585267799, 1561353026, 1537020242,
+ 1512275961, 1487126807, 1461579512, 1435640918, 1409317968, 1382617709,
+ 1355547290, 1328113959, 1300325059, 1272188031, 1243710407, 1214899812,
+ 1185763959, 1156310648, 1126547764, 1096483277, 1066125235, 1035481765,
+ 1004561071, 973371433, 941921199, 910218790, 878272694, 846091463,
+ 813683712, 781058119, 748223418, 715188399, 681961907, 648552837,
+ 614970134, 581222788, 547319836, 513270352, 479083454, 444768293,
+ 410334057, 375789965, 341145265, 306409231, 271591165, 236700387,
+ 201746239, 166738078, 131685278, 96597222, 61483305, 26352927
+ },
+ {
+ -8784505, -43919586, -79042909, -114145070, -149216672,
+ -184248325, -219230650, -254154282, -289009870, -323788084,
+ -358479612, -393075166, -427565484, -461941333, -496193509,
+ -530312841, -564290197, -598116478, -631782629, -665279636,
+ -698598532, -731730396, -764666359, -797397601, -829915361,
+ -862210933, -894275670, -926100988, -957678366, -988999350,
+ -1020055555, -1050838667, -1081340444, -1111552720, -1141467406,
+ -1171076494, -1200372057, -1229346251, -1257991319, -1286299592,
+ -1314263492, -1341875532, -1369128319, -1396014558, -1422527049,
+ -1448658696, -1474402502, -1499751575, -1524699127, -1549238481,
+ -1573363067, -1597066425, -1620342210, -1643184190, -1665586249,
+ -1687542392, -1709046738, -1730093531, -1750677136, -1770792043,
+ -1790432865, -1809594346, -1828271354, -1846458890, -1864152085,
+ -1881346200, -1898036634, -1914218918, -1929888719, -1945041841,
+ -1959674230, -1973781966, -1987361273, -2000408515, -2012920199,
+ -2024892976, -2036323641, -2047209132, -2057546536, -2067333084,
+ -2076566158, -2085243285, -2093362142, -2100920555, -2107916501,
+ -2114348106, -2120213650, -2125511561, -2130240421, -2134398964,
+ -2137986077, -2141000800, -2143442325, -2145309998, -2146603320,
+ -2147321945
+ },
+ {
+ 2147483647, 2147196180, 2146333857, 2144896908, 2142885719, 2140300828,
+ 2137142926, 2133412859, 2129111626, 2124240379, 2118800421, 2112793208,
+ 2106220350, 2099083606, 2091384887, 2083126253, 2074309916, 2064938236,
+ 2055013722, 2044539031, 2033516967, 2021950482, 2009842672, 1997196779,
+ 1984016187, 1970304427, 1956065168, 1941302224, 1926019545, 1910221225,
+ 1893911493, 1877094714, 1859775392, 1841958163, 1823647797, 1804849197,
+ 1785567395, 1765807553, 1745574962, 1724875039, 1703713324, 1682095484,
+ 1660027307, 1637514700, 1614563691, 1591180424, 1567371160, 1543142273,
+ 1518500249, 1493451686, 1468003289, 1442161873, 1415934355, 1389327757,
+ 1362349203, 1335005915, 1307305213, 1279254514, 1250861328, 1222133256,
+ 1193077990, 1163703307, 1134017073, 1104027236, 1073741823, 1043168944,
+ 1012316783, 981193601, 949807729, 918167571, 886281597, 854158344,
+ 821806412, 789234463, 756451217, 723465451, 690285995, 656921733,
+ 623381597, 589674567, 555809666, 521795962, 487642561, 453358606,
+ 418953276, 384435782, 349815365, 315101294, 280302863, 245429388,
+ 210490205, 175494670, 140452150, 105372028, 70263695, 35136551
+ },
+ {
+ 0, -35136551, -70263695, -105372028, -140452150,
+ -175494670, -210490205, -245429388, -280302863, -315101294,
+ -349815365, -384435782, -418953276, -453358606, -487642561,
+ -521795962, -555809666, -589674567, -623381597, -656921733,
+ -690285995, -723465451, -756451217, -789234463, -821806412,
+ -854158344, -886281597, -918167571, -949807729, -981193601,
+ -1012316783, -1043168944, -1073741823, -1104027236, -1134017073,
+ -1163703307, -1193077990, -1222133256, -1250861328, -1279254514,
+ -1307305213, -1335005915, -1362349203, -1389327757, -1415934355,
+ -1442161873, -1468003289, -1493451686, -1518500249, -1543142273,
+ -1567371160, -1591180424, -1614563691, -1637514700, -1660027307,
+ -1682095484, -1703713324, -1724875039, -1745574962, -1765807553,
+ -1785567395, -1804849197, -1823647797, -1841958163, -1859775392,
+ -1877094714, -1893911493, -1910221225, -1926019545, -1941302224,
+ -1956065168, -1970304427, -1984016187, -1997196779, -2009842672,
+ -2021950482, -2033516967, -2044539031, -2055013722, -2064938236,
+ -2074309916, -2083126253, -2091384887, -2099083606, -2106220350,
+ -2112793208, -2118800421, -2124240379, -2129111626, -2133412859,
+ -2137142926, -2140300828, -2142885719, -2144896908, -2146333857,
+ -2147196180}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_64[4][64] = {
- {2147443221, 2146473078, 2144209981, 2140655291, 2135811151, 2129680478,
- 2122266965, 2113575078, 2103610052, 2092377891, 2079885359, 2066139982,
- 2051150039, 2034924560, 2017473319, 1998806828, 1978936329, 1957873794,
- 1935631909, 1912224071, 1887664381, 1861967633, 1835149305, 1807225552,
- 1778213193, 1748129706, 1716993210, 1684822462, 1651636840, 1617456334,
- 1582301532, 1546193611, 1509154321, 1471205973, 1432371425, 1392674071,
- 1352137821, 1310787094, 1268646799, 1225742317, 1182099495, 1137744620,
- 1092704410, 1047005996, 1000676904, 953745042, 906238680, 858186434,
- 809617248, 760560379, 711045377, 661102067, 610760535, 560051103,
- 509004317, 457650927, 406021864, 354148229, 302061268, 249792357,
- 197372981, 144834714, 92209204, 39528151},
- {-13176711, -65873638, -118530884, -171116732, -223599506,
- -275947591, -328129456, -380113668, -431868914, -483364018,
- -534567962, -585449902, -635979189, -686125386, -735858286,
- -785147933, -833964637, -882278991, -930061893, -977284561,
- -1023918549, -1069935767, -1115308495, -1160009404, -1204011566,
- -1247288476, -1289814067, -1331562722, -1372509293, -1412629116,
- -1451898024, -1490292363, -1527789006, -1564365365, -1599999410,
- -1634669674, -1668355275, -1701035921, -1732691926, -1763304223,
- -1792854371, -1821324571, -1848697672, -1874957188, -1900087299,
- -1924072869, -1946899449, -1968553290, -1989021348, -2008291294,
- -2026351520, -2043191148, -2058800034, -2073168776, -2086288718,
- -2098151959, -2108751350, -2118080509, -2126133816, -2132906418,
- -2138394238, -2142593969, -2145503082, -2147119824},
- {2147483647, 2146836865, 2144896908, 2141664947, 2137142926, 2131333570,
- 2124240379, 2115867624, 2106220350, 2095304368, 2083126253, 2069693340,
- 2055013722, 2039096240, 2021950482, 2003586778, 1984016187, 1963250500,
- 1941302224, 1918184579, 1893911493, 1868497584, 1841958163, 1814309215,
- 1785567395, 1755750016, 1724875039, 1692961061, 1660027307, 1626093615,
- 1591180424, 1555308767, 1518500249, 1480777043, 1442161873, 1402677998,
- 1362349203, 1321199779, 1279254514, 1236538674, 1193077990, 1148898639,
- 1104027236, 1058490807, 1012316783, 965532977, 918167571, 870249094,
- 821806412, 772868705, 723465451, 673626407, 623381597, 572761285,
- 521795962, 470516330, 418953276, 367137860, 315101294, 262874923,
- 210490205, 157978697, 105372028, 52701886},
- {0, -52701886, -105372028, -157978697, -210490205,
- -262874923, -315101294, -367137860, -418953276, -470516330,
- -521795962, -572761285, -623381597, -673626407, -723465451,
- -772868705, -821806412, -870249094, -918167571, -965532977,
- -1012316783, -1058490807, -1104027236, -1148898639, -1193077990,
- -1236538674, -1279254514, -1321199779, -1362349203, -1402677998,
- -1442161873, -1480777043, -1518500249, -1555308767, -1591180424,
- -1626093615, -1660027307, -1692961061, -1724875039, -1755750016,
- -1785567395, -1814309215, -1841958163, -1868497584, -1893911493,
- -1918184579, -1941302224, -1963250500, -1984016187, -2003586778,
- -2021950482, -2039096240, -2055013722, -2069693340, -2083126253,
- -2095304368, -2106220350, -2115867624, -2124240379, -2131333570,
- -2137142926, -2141664947, -2144896908, -2146836865}};
+ {
+ 2147443221, 2146473078, 2144209981, 2140655291, 2135811151, 2129680478,
+ 2122266965, 2113575078, 2103610052, 2092377891, 2079885359, 2066139982,
+ 2051150039, 2034924560, 2017473319, 1998806828, 1978936329, 1957873794,
+ 1935631909, 1912224071, 1887664381, 1861967633, 1835149305, 1807225552,
+ 1778213193, 1748129706, 1716993210, 1684822462, 1651636840, 1617456334,
+ 1582301532, 1546193611, 1509154321, 1471205973, 1432371425, 1392674071,
+ 1352137821, 1310787094, 1268646799, 1225742317, 1182099495, 1137744620,
+ 1092704410, 1047005996, 1000676904, 953745042, 906238680, 858186434,
+ 809617248, 760560379, 711045377, 661102067, 610760535, 560051103,
+ 509004317, 457650927, 406021864, 354148229, 302061268, 249792357,
+ 197372981, 144834714, 92209204, 39528151
+ },
+ {
+ -13176711, -65873638, -118530884, -171116732, -223599506,
+ -275947591, -328129456, -380113668, -431868914, -483364018,
+ -534567962, -585449902, -635979189, -686125386, -735858286,
+ -785147933, -833964637, -882278991, -930061893, -977284561,
+ -1023918549, -1069935767, -1115308495, -1160009404, -1204011566,
+ -1247288476, -1289814067, -1331562722, -1372509293, -1412629116,
+ -1451898024, -1490292363, -1527789006, -1564365365, -1599999410,
+ -1634669674, -1668355275, -1701035921, -1732691926, -1763304223,
+ -1792854371, -1821324571, -1848697672, -1874957188, -1900087299,
+ -1924072869, -1946899449, -1968553290, -1989021348, -2008291294,
+ -2026351520, -2043191148, -2058800034, -2073168776, -2086288718,
+ -2098151959, -2108751350, -2118080509, -2126133816, -2132906418,
+ -2138394238, -2142593969, -2145503082, -2147119824
+ },
+ {
+ 2147483647, 2146836865, 2144896908, 2141664947, 2137142926, 2131333570,
+ 2124240379, 2115867624, 2106220350, 2095304368, 2083126253, 2069693340,
+ 2055013722, 2039096240, 2021950482, 2003586778, 1984016187, 1963250500,
+ 1941302224, 1918184579, 1893911493, 1868497584, 1841958163, 1814309215,
+ 1785567395, 1755750016, 1724875039, 1692961061, 1660027307, 1626093615,
+ 1591180424, 1555308767, 1518500249, 1480777043, 1442161873, 1402677998,
+ 1362349203, 1321199779, 1279254514, 1236538674, 1193077990, 1148898639,
+ 1104027236, 1058490807, 1012316783, 965532977, 918167571, 870249094,
+ 821806412, 772868705, 723465451, 673626407, 623381597, 572761285,
+ 521795962, 470516330, 418953276, 367137860, 315101294, 262874923,
+ 210490205, 157978697, 105372028, 52701886
+ },
+ {
+ 0, -52701886, -105372028, -157978697, -210490205,
+ -262874923, -315101294, -367137860, -418953276, -470516330,
+ -521795962, -572761285, -623381597, -673626407, -723465451,
+ -772868705, -821806412, -870249094, -918167571, -965532977,
+ -1012316783, -1058490807, -1104027236, -1148898639, -1193077990,
+ -1236538674, -1279254514, -1321199779, -1362349203, -1402677998,
+ -1442161873, -1480777043, -1518500249, -1555308767, -1591180424,
+ -1626093615, -1660027307, -1692961061, -1724875039, -1755750016,
+ -1785567395, -1814309215, -1841958163, -1868497584, -1893911493,
+ -1918184579, -1941302224, -1963250500, -1984016187, -2003586778,
+ -2021950482, -2039096240, -2055013722, -2069693340, -2083126253,
+ -2095304368, -2106220350, -2115867624, -2124240379, -2131333570,
+ -2137142926, -2141664947, -2144896908, -2146836865}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_48[4][48] = {
- {2147411779, 2145687190, 2141664947, 2135349354, 2126747176, 2115867624,
- 2102722348, 2087325424, 2069693340, 2049844977, 2027801588, 2003586778,
- 1977226477, 1948748913, 1918184579, 1885566206, 1850928721, 1814309215,
- 1775746901, 1735283073, 1692961061, 1648826183, 1602925701, 1555308767,
- 1506026368, 1455131279, 1402677998, 1348722695, 1293323146, 1236538674,
- 1178430086, 1119059605, 1058490807, 996788550, 934018908, 870249094,
- 805547396, 739983098, 673626407, 606548381, 538820847, 470516330,
- 401707972, 332469456, 262874923, 192998897, 122916202, 52701886},
- {-17568863, -87820800, -157978697, -227967426, -297712042,
- -367137860, -436170538, -504736153, -572761285, -640173089,
- -706899380, -772868705, -838010423, -902254779, -965532977,
- -1027777259, -1088920971, -1148898639, -1207646038, -1265100259,
- -1321199779, -1375884526, -1429095940, -1480777043, -1530872493,
- -1579328646, -1626093615, -1671117321, -1714351554, -1755750016,
- -1795268377, -1832864319, -1868497584, -1902130016, -1933725599,
- -1963250500, -1990673103, -2015964044, -2039096240, -2060044920,
- -2078787653, -2095304368, -2109577379, -2121591401, -2131333570,
- -2138793454, -2143963064, -2146836865},
- {2147483647, 2146333857, 2142885719, 2137142926, 2129111626, 2118800421,
- 2106220350, 2091384887, 2074309916, 2055013722, 2033516967, 2009842672,
- 1984016187, 1956065168, 1926019545, 1893911493, 1859775392, 1823647797,
- 1785567395, 1745574962, 1703713324, 1660027307, 1614563691, 1567371160,
- 1518500249, 1468003289, 1415934355, 1362349203, 1307305213, 1250861328,
- 1193077990, 1134017073, 1073741823, 1012316783, 949807729, 886281597,
- 821806412, 756451217, 690285995, 623381597, 555809666, 487642561,
- 418953276, 349815365, 280302863, 210490205, 140452150, 70263695},
- {0, -70263695, -140452150, -210490205, -280302863,
- -349815365, -418953276, -487642561, -555809666, -623381597,
- -690285995, -756451217, -821806412, -886281597, -949807729,
- -1012316783, -1073741823, -1134017073, -1193077990, -1250861328,
- -1307305213, -1362349203, -1415934355, -1468003289, -1518500249,
- -1567371160, -1614563691, -1660027307, -1703713324, -1745574962,
- -1785567395, -1823647797, -1859775392, -1893911493, -1926019545,
- -1956065168, -1984016187, -2009842672, -2033516967, -2055013722,
- -2074309916, -2091384887, -2106220350, -2118800421, -2129111626,
- -2137142926, -2142885719, -2146333857}};
+ {
+ 2147411779, 2145687190, 2141664947, 2135349354, 2126747176, 2115867624,
+ 2102722348, 2087325424, 2069693340, 2049844977, 2027801588, 2003586778,
+ 1977226477, 1948748913, 1918184579, 1885566206, 1850928721, 1814309215,
+ 1775746901, 1735283073, 1692961061, 1648826183, 1602925701, 1555308767,
+ 1506026368, 1455131279, 1402677998, 1348722695, 1293323146, 1236538674,
+ 1178430086, 1119059605, 1058490807, 996788550, 934018908, 870249094,
+ 805547396, 739983098, 673626407, 606548381, 538820847, 470516330,
+ 401707972, 332469456, 262874923, 192998897, 122916202, 52701886
+ },
+ {
+ -17568863, -87820800, -157978697, -227967426, -297712042,
+ -367137860, -436170538, -504736153, -572761285, -640173089,
+ -706899380, -772868705, -838010423, -902254779, -965532977,
+ -1027777259, -1088920971, -1148898639, -1207646038, -1265100259,
+ -1321199779, -1375884526, -1429095940, -1480777043, -1530872493,
+ -1579328646, -1626093615, -1671117321, -1714351554, -1755750016,
+ -1795268377, -1832864319, -1868497584, -1902130016, -1933725599,
+ -1963250500, -1990673103, -2015964044, -2039096240, -2060044920,
+ -2078787653, -2095304368, -2109577379, -2121591401, -2131333570,
+ -2138793454, -2143963064, -2146836865
+ },
+ {
+ 2147483647, 2146333857, 2142885719, 2137142926, 2129111626, 2118800421,
+ 2106220350, 2091384887, 2074309916, 2055013722, 2033516967, 2009842672,
+ 1984016187, 1956065168, 1926019545, 1893911493, 1859775392, 1823647797,
+ 1785567395, 1745574962, 1703713324, 1660027307, 1614563691, 1567371160,
+ 1518500249, 1468003289, 1415934355, 1362349203, 1307305213, 1250861328,
+ 1193077990, 1134017073, 1073741823, 1012316783, 949807729, 886281597,
+ 821806412, 756451217, 690285995, 623381597, 555809666, 487642561,
+ 418953276, 349815365, 280302863, 210490205, 140452150, 70263695
+ },
+ {
+ 0, -70263695, -140452150, -210490205, -280302863,
+ -349815365, -418953276, -487642561, -555809666, -623381597,
+ -690285995, -756451217, -821806412, -886281597, -949807729,
+ -1012316783, -1073741823, -1134017073, -1193077990, -1250861328,
+ -1307305213, -1362349203, -1415934355, -1468003289, -1518500249,
+ -1567371160, -1614563691, -1660027307, -1703713324, -1745574962,
+ -1785567395, -1823647797, -1859775392, -1893911493, -1926019545,
+ -1956065168, -1984016187, -2009842672, -2033516967, -2055013722,
+ -2074309916, -2091384887, -2106220350, -2118800421, -2129111626,
+ -2137142926, -2142885719, -2146333857}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_32[4][32] = {
- {2147321945, 2143442325, 2134398964, 2120213650, 2100920555, 2076566158,
- 2047209132, 2012920199, 1973781966, 1929888719, 1881346200, 1828271354,
- 1770792043, 1709046738, 1643184190, 1573363067, 1499751575, 1422527049,
- 1341875532, 1257991319, 1171076494, 1081340444, 988999350, 894275670,
- 797397601, 698598532, 598116478, 496193509, 393075166, 289009870,
- 184248325, 79042909},
- {-26352927, -131685278, -236700387, -341145265, -444768293,
- -547319836, -648552837, -748223418, -846091463, -941921199,
- -1035481765, -1126547764, -1214899812, -1300325059, -1382617709,
- -1461579512, -1537020242, -1608758156, -1676620430, -1740443579,
- -1800073847, -1855367579, -1906191569, -1952423376, -1993951623,
- -2030676267, -2062508834, -2089372636, -2111202957, -2127947205,
- -2139565041, -2146028478},
- {2147483647, 2144896908, 2137142926, 2124240379, 2106220350, 2083126253,
- 2055013722, 2021950482, 1984016187, 1941302224, 1893911493, 1841958163,
- 1785567395, 1724875039, 1660027307, 1591180424, 1518500249, 1442161873,
- 1362349203, 1279254514, 1193077990, 1104027236, 1012316783, 918167571,
- 821806412, 723465451, 623381597, 521795962, 418953276, 315101294,
- 210490205, 105372028},
- {0, -105372028, -210490205, -315101294, -418953276,
- -521795962, -623381597, -723465451, -821806412, -918167571,
- -1012316783, -1104027236, -1193077990, -1279254514, -1362349203,
- -1442161873, -1518500249, -1591180424, -1660027307, -1724875039,
- -1785567395, -1841958163, -1893911493, -1941302224, -1984016187,
- -2021950482, -2055013722, -2083126253, -2106220350, -2124240379,
- -2137142926, -2144896908}};
+ {
+ 2147321945, 2143442325, 2134398964, 2120213650, 2100920555, 2076566158,
+ 2047209132, 2012920199, 1973781966, 1929888719, 1881346200, 1828271354,
+ 1770792043, 1709046738, 1643184190, 1573363067, 1499751575, 1422527049,
+ 1341875532, 1257991319, 1171076494, 1081340444, 988999350, 894275670,
+ 797397601, 698598532, 598116478, 496193509, 393075166, 289009870,
+ 184248325, 79042909
+ },
+ {
+ -26352927, -131685278, -236700387, -341145265, -444768293,
+ -547319836, -648552837, -748223418, -846091463, -941921199,
+ -1035481765, -1126547764, -1214899812, -1300325059, -1382617709,
+ -1461579512, -1537020242, -1608758156, -1676620430, -1740443579,
+ -1800073847, -1855367579, -1906191569, -1952423376, -1993951623,
+ -2030676267, -2062508834, -2089372636, -2111202957, -2127947205,
+ -2139565041, -2146028478
+ },
+ {
+ 2147483647, 2144896908, 2137142926, 2124240379, 2106220350, 2083126253,
+ 2055013722, 2021950482, 1984016187, 1941302224, 1893911493, 1841958163,
+ 1785567395, 1724875039, 1660027307, 1591180424, 1518500249, 1442161873,
+ 1362349203, 1279254514, 1193077990, 1104027236, 1012316783, 918167571,
+ 821806412, 723465451, 623381597, 521795962, 418953276, 315101294,
+ 210490205, 105372028
+ },
+ {
+ 0, -105372028, -210490205, -315101294, -418953276,
+ -521795962, -623381597, -723465451, -821806412, -918167571,
+ -1012316783, -1104027236, -1193077990, -1279254514, -1362349203,
+ -1442161873, -1518500249, -1591180424, -1660027307, -1724875039,
+ -1785567395, -1841958163, -1893911493, -1941302224, -1984016187,
+ -2021950482, -2055013722, -2083126253, -2106220350, -2124240379,
+ -2137142926, -2144896908}};
const WORD32 ixheaacd_pre_post_twid_cos_sin_24[4][24] = {
- {2147196180, 2140300828, 2124240379, 2099083606, 2064938236, 2021950482,
- 1970304427, 1910221225, 1841958163, 1765807553, 1682095484, 1591180424,
- 1493451686, 1389327757, 1279254514, 1163703307, 1043168944, 918167571,
- 789234463, 656921733, 521795962, 384435782, 245429388, 105372028},
- {-35136551, -175494670, -315101294, -453358606, -589674567,
- -723465451, -854158344, -981193601, -1104027236, -1222133256,
- -1335005915, -1442161873, -1543142273, -1637514700, -1724875039,
- -1804849197, -1877094714, -1941302224, -1997196779, -2044539031,
- -2083126253, -2112793208, -2133412859, -2144896908},
- {2147483647, 2142885719, 2129111626, 2106220350, 2074309916, 2033516967,
- 1984016187, 1926019545, 1859775392, 1785567395, 1703713324, 1614563691,
- 1518500249, 1415934355, 1307305213, 1193077990, 1073741823, 949807729,
- 821806412, 690285995, 555809666, 418953276, 280302863, 140452150},
- {0, -140452150, -280302863, -418953276, -555809666,
- -690285995, -821806412, -949807729, -1073741823, -1193077990,
- -1307305213, -1415934355, -1518500249, -1614563691, -1703713324,
- -1785567395, -1859775392, -1926019545, -1984016187, -2033516967,
- -2074309916, -2106220350, -2129111626, -2142885719}};
+ {
+ 2147196180, 2140300828, 2124240379, 2099083606, 2064938236, 2021950482,
+ 1970304427, 1910221225, 1841958163, 1765807553, 1682095484, 1591180424,
+ 1493451686, 1389327757, 1279254514, 1163703307, 1043168944, 918167571,
+ 789234463, 656921733, 521795962, 384435782, 245429388, 105372028
+ },
+ {
+ -35136551, -175494670, -315101294, -453358606, -589674567,
+ -723465451, -854158344, -981193601, -1104027236, -1222133256,
+ -1335005915, -1442161873, -1543142273, -1637514700, -1724875039,
+ -1804849197, -1877094714, -1941302224, -1997196779, -2044539031,
+ -2083126253, -2112793208, -2133412859, -2144896908
+ },
+ {
+ 2147483647, 2142885719, 2129111626, 2106220350, 2074309916, 2033516967,
+ 1984016187, 1926019545, 1859775392, 1785567395, 1703713324, 1614563691,
+ 1518500249, 1415934355, 1307305213, 1193077990, 1073741823, 949807729,
+ 821806412, 690285995, 555809666, 418953276, 280302863, 140452150
+ },
+ {
+ 0, -140452150, -280302863, -418953276, -555809666,
+ -690285995, -821806412, -949807729, -1073741823, -1193077990,
+ -1307305213, -1415934355, -1518500249, -1614563691, -1703713324,
+ -1785567395, -1859775392, -1926019545, -1984016187, -2033516967,
+ -2074309916, -2106220350, -2129111626, -2142885719}};
const FLOAT64 ixheaacd_power_10_table[28] = {
- 1.000000000000, 1.085711119402, 1.178768634794, 1.279802213998,
- 1.389495494373, 1.508590708600, 1.637893706954, 1.778279410039,
- 1.930697728883, 2.096179992453, 2.275845926075, 2.470911227986,
- 2.682695795280, 2.912632654909, 3.162277660168, 3.433320018282,
- 3.727593720315, 4.047089950760, 4.393970560761, 4.770582696144,
- 5.179474679231, 5.623413251903, 6.105402296585, 6.628703161826,
- 7.196856730012, 7.813707376518, 8.483428982441, 9.210553176895};
+ 1.000000000000, 1.085711119402, 1.178768634794, 1.279802213998,
+ 1.389495494373, 1.508590708600, 1.637893706954, 1.778279410039,
+ 1.930697728883, 2.096179992453, 2.275845926075, 2.470911227986,
+ 2.682695795280, 2.912632654909, 3.162277660168, 3.433320018282,
+ 3.727593720315, 4.047089950760, 4.393970560761, 4.770582696144,
+ 5.179474679231, 5.623413251903, 6.105402296585, 6.628703161826,
+ 7.196856730012, 7.813707376518, 8.483428982441, 9.210553176895};
const FLOAT32 ixheaacd_dico_lsf_abs_8b_flt[16 * 256] = {
- 377.3749f, 688.0079f, 1147.3799f, 1461.0438f, 1786.7794f, 2143.6711f,
- 2522.1946f, 2889.7402f, 3263.6023f, 3628.4624f, 4005.4351f, 4379.4170f,
- 4783.9556f, 5157.1753f, 5555.1797f, 5926.6816f, 601.5123f, 1066.8242f,
- 1384.3585f, 1652.9448f, 1978.3910f, 2311.2676f, 2674.0537f, 3010.3896f,
- 3360.0623f, 3725.9336f, 4093.3335f, 4470.6431f, 4859.1006f, 5210.4717f,
- 5598.3716f, 5954.4204f, 552.5036f, 859.7047f, 1355.2023f, 1624.9041f,
- 1887.5609f, 2173.1638f, 2540.7429f, 2926.8169f, 3323.2173f, 3680.7197f,
- 4008.3447f, 4330.8442f, 4692.8228f, 5033.9697f, 5443.3467f, 5875.4497f,
- 459.4534f, 793.3189f, 1293.7278f, 1617.3970f, 1920.0642f, 2192.2153f,
- 2487.5627f, 2772.1514f, 3111.3823f, 3461.2671f, 3867.0176f, 4279.8550f,
- 4741.0664f, 5141.0181f, 5552.8237f, 5933.6934f, 327.9834f, 430.4954f,
- 723.9031f, 1528.6172f, 1763.1125f, 2013.7936f, 2334.2153f, 2569.0334f,
- 3017.9436f, 3308.0610f, 3591.7820f, 3865.5430f, 4693.5786f, 5286.7646f,
- 5647.7036f, 5987.2305f, 455.0753f, 606.0817f, 963.7564f, 1374.9937f,
- 1536.4897f, 1914.7618f, 2376.9631f, 2580.8184f, 2989.1501f, 3258.8386f,
- 3485.1460f, 3741.1270f, 4297.4912f, 5207.3779f, 5672.3818f, 5980.5322f,
- 434.9507f, 558.8508f, 890.7061f, 1355.7625f, 1552.6155f, 1895.7960f,
- 2222.5579f, 2502.6079f, 2841.8738f, 3137.5264f, 3367.7336f, 3860.7769f,
- 4795.2554f, 5090.9370f, 5421.8218f, 5874.4287f, 281.0164f, 404.5417f,
- 729.2898f, 997.1851f, 1699.8862f, 1961.3673f, 2255.7202f, 2540.9187f,
- 2804.4553f, 3057.1843f, 3750.2288f, 4340.9893f, 4716.8647f, 5002.7471f,
- 5477.2998f, 5965.7402f, 372.2410f, 505.3570f, 762.3755f, 997.3586f,
- 1174.4255f, 1986.1741f, 2368.1367f, 2624.1733f, 3194.6084f, 3403.2793f,
- 3877.7622f, 4425.7676f, 4824.7837f, 5158.1606f, 5532.7466f, 5893.5483f,
- 367.3766f, 501.1806f, 824.5358f, 1090.6857f, 1271.9792f, 1527.7137f,
- 2381.4382f, 2694.4634f, 2964.5359f, 3639.4832f, 3946.4038f, 4254.3916f,
- 4645.8076f, 5033.5396f, 5373.8735f, 5878.4385f, 229.4505f, 352.5671f,
- 701.0831f, 1226.4518f, 1678.3601f, 1895.7949f, 2140.0664f, 2526.5515f,
- 3080.3391f, 3297.8284f, 3845.3987f, 4427.9785f, 4704.4551f, 4997.4155f,
- 5434.0698f, 5918.4785f, 336.3082f, 516.7915f, 881.9847f, 1272.5824f,
- 1505.1870f, 1880.7520f, 2274.9458f, 2611.0083f, 3126.5256f, 3655.5332f,
- 4183.3877f, 4668.2993f, 5004.0029f, 5305.3491f, 5650.4985f, 5943.7383f,
- 296.0867f, 469.6519f, 956.5997f, 1224.1262f, 1443.0049f, 1727.6880f,
- 2216.1677f, 2689.3677f, 3060.4456f, 3520.9438f, 3916.6050f, 4343.7954f,
- 4763.8906f, 5156.0132f, 5553.8115f, 5936.9634f, 407.1503f, 577.5120f,
- 839.7361f, 1455.3907f, 1665.2137f, 1935.0054f, 2398.0537f, 2652.2605f,
- 3111.1831f, 3505.5962f, 3766.7554f, 4204.8730f, 4699.1631f, 4970.8652f,
- 5295.5962f, 5695.6919f, 281.0083f, 361.8386f, 950.9102f, 1464.1158f,
- 1634.7019f, 1965.4950f, 2211.1406f, 2662.1055f, 2846.0122f, 3585.8884f,
- 4048.7148f, 4358.9150f, 4683.8755f, 5046.0908f, 5400.0859f, 5956.1040f,
- 279.1811f, 393.9142f, 876.8306f, 1502.2417f, 1673.0590f, 2288.7161f,
- 2545.3674f, 3028.9507f, 3517.5840f, 3824.4246f, 4144.8486f, 4481.8140f,
- 4821.2769f, 5162.3975f, 5542.8560f, 5928.5854f, 379.7892f, 500.9199f,
- 725.0223f, 998.7143f, 1179.6127f, 1771.9886f, 2775.4812f, 3136.8457f,
- 3378.6143f, 3674.0188f, 3946.3604f, 4184.4824f, 4521.5454f, 4934.8940f,
- 5315.5029f, 5759.7544f, 317.4339f, 442.2628f, 778.7388f, 1167.8633f,
- 1356.1576f, 1578.5603f, 1840.1584f, 2870.7527f, 3236.1504f, 3502.7249f,
- 3876.3696f, 4100.5244f, 4650.2632f, 5235.1890f, 5665.2285f, 5999.0649f,
- 350.2696f, 492.2163f, 763.0640f, 1264.7550f, 1515.0244f, 1755.7783f,
- 2489.3274f, 2898.6252f, 3143.1018f, 3643.0640f, 4035.0657f, 4255.0889f,
- 4641.7231f, 5138.5107f, 5557.1318f, 5920.2402f, 301.3833f, 464.9852f,
- 762.3419f, 1012.2126f, 1803.5172f, 2192.4214f, 2651.6287f, 3013.6697f,
- 3251.3591f, 3539.4675f, 3946.3433f, 4469.3560f, 4890.7446f, 5200.4878f,
- 5509.6753f, 5910.2397f, 253.1752f, 356.8990f, 630.3325f, 1163.1683f,
- 1528.6230f, 2023.4438f, 2488.6001f, 2745.5627f, 2933.7024f, 3237.4414f,
- 3976.9258f, 4415.2534f, 4789.9131f, 5194.3423f, 5714.6445f, 6032.4160f,
- 265.1815f, 364.7549f, 590.0148f, 805.2595f, 1564.7582f, 2150.6536f,
- 2365.6501f, 2598.7876f, 2861.5334f, 3514.1265f, 4005.6328f, 4609.3091f,
- 4955.4478f, 5238.4116f, 5519.5884f, 5890.7925f, 209.3544f, 313.1497f,
- 503.2642f, 949.4504f, 1729.7280f, 1912.6814f, 2117.5051f, 2498.6272f,
- 3284.6587f, 3810.8555f, 4105.0195f, 4349.5151f, 4770.3682f, 5210.2910f,
- 5585.1533f, 5970.3638f, 302.3150f, 415.6502f, 684.1018f, 922.3598f,
- 1489.4418f, 2235.6252f, 2449.9773f, 2800.6938f, 3061.3721f, 3526.1001f,
- 3905.8174f, 4170.7891f, 4446.4209f, 4907.9937f, 5470.7158f, 5914.7261f,
- 264.9068f, 366.4342f, 582.8182f, 790.8568f, 1619.4548f, 2034.0782f,
- 2337.6724f, 2632.1714f, 2933.2356f, 3430.1858f, 3815.0198f, 4276.3931f,
- 4748.3149f, 5164.0098f, 5553.3320f, 5974.9092f, 249.6359f, 361.9234f,
- 581.9844f, 841.1097f, 1657.5543f, 2184.4114f, 2525.9739f, 2820.0503f,
- 3120.7190f, 3623.7678f, 4050.5435f, 4434.5742f, 4802.6782f, 5171.8438f,
- 5575.0068f, 5963.7402f, 290.1085f, 404.2538f, 664.1223f, 878.2748f,
- 1237.1085f, 2237.4707f, 2497.5647f, 2957.7786f, 3289.3928f, 3626.5276f,
- 4190.9243f, 4594.6450f, 4981.7456f, 5283.5513f, 5617.1538f, 5938.3760f,
- 182.7846f, 270.3831f, 490.2131f, 1070.2524f, 1674.5724f, 2092.4905f,
- 2524.1472f, 2929.3523f, 3334.8005f, 3712.0061f, 4101.2896f, 4475.7324f,
- 4866.1919f, 5231.7559f, 5606.4077f, 5960.9644f, 286.7701f, 386.1487f,
- 577.4210f, 764.3087f, 1151.2404f, 2014.4502f, 2399.8547f, 2879.0371f,
- 3160.2502f, 3450.6274f, 3869.8240f, 4368.3618f, 4816.7861f, 5187.6450f,
- 5564.7231f, 5962.0386f, 179.9538f, 266.0682f, 647.9122f, 1380.2810f,
- 1776.1240f, 2208.4592f, 2590.6843f, 2993.6758f, 3368.2034f, 3753.2156f,
- 4125.2124f, 4508.6050f, 4878.9932f, 5249.3291f, 5612.5049f, 5965.2134f,
- 309.2416f, 434.7111f, 724.6614f, 936.5360f, 1264.9886f, 2272.1338f,
- 2548.4519f, 2904.0798f, 3313.4990f, 3579.7854f, 3914.5811f, 4297.5938f,
- 4756.9072f, 5163.2017f, 5592.2822f, 5943.7222f, 256.9009f, 393.7155f,
- 769.3966f, 1200.9640f, 1774.4797f, 2307.9629f, 2794.6799f, 3165.9431f,
- 3507.7952f, 3840.5791f, 4142.8877f, 4453.5078f, 4790.6973f, 5142.6123f,
- 5530.5977f, 5923.2188f, 394.1425f, 602.0079f, 934.5173f, 1352.9718f,
- 1813.9639f, 2172.5435f, 2603.7295f, 2963.9590f, 3335.2344f, 3732.0515f,
- 4120.0151f, 4487.9668f, 4877.6294f, 5238.9336f, 5596.1479f, 5939.6489f,
- 373.0307f, 665.4328f, 1227.4684f, 1524.6017f, 1947.3784f, 2361.6384f,
- 2778.1921f, 3134.5396f, 3462.3992f, 3752.4592f, 4069.0352f, 4404.2720f,
- 4782.2241f, 5145.0581f, 5541.9980f, 5932.9136f, 449.9942f, 814.1862f,
- 1344.2784f, 1682.7061f, 2086.3599f, 2486.9709f, 2916.1177f, 3265.9099f,
- 3616.3977f, 3919.6345f, 4218.5342f, 4519.2207f, 4857.5220f, 5193.5269f,
- 5573.7339f, 5934.5400f, 531.4455f, 965.7403f, 1458.5353f, 1773.3784f,
- 2236.0146f, 2650.9109f, 3099.2871f, 3467.1567f, 3809.7056f, 4094.6472f,
- 4378.5811f, 4660.2471f, 4962.5078f, 5270.9863f, 5629.4160f, 5973.6450f,
- 565.5986f, 1091.1300f, 1561.4944f, 1983.5482f, 2492.8821f, 2897.5085f,
- 3233.5361f, 3539.8831f, 3838.6494f, 4093.4460f, 4372.1924f, 4678.2251f,
- 4999.2646f, 5325.0371f, 5672.8887f, 5998.9990f, 581.0623f, 976.0275f,
- 1447.0302f, 1779.9243f, 2148.2158f, 2543.8347f, 2979.5061f, 3373.6099f,
- 3796.8259f, 4164.8242f, 4510.5493f, 4853.5527f, 5175.6318f, 5465.3647f,
- 5763.2334f, 6050.6582f, 429.4613f, 802.5781f, 1229.0529f, 1512.6678f,
- 1835.8625f, 2216.9915f, 2625.3999f, 2995.9927f, 3379.5146f, 3764.7837f,
- 4156.1382f, 4532.4570f, 4906.4678f, 5262.8960f, 5626.6519f, 5970.6504f,
- 224.5468f, 328.6938f, 615.8844f, 1207.4470f, 1520.9565f, 1865.9806f,
- 2182.4731f, 2431.4897f, 3239.3486f, 3490.9065f, 3775.7139f, 4291.4312f,
- 4740.0815f, 5192.0786f, 5532.9302f, 5928.7236f, 312.1133f, 424.3103f,
- 716.4448f, 921.9969f, 1244.5491f, 2017.9143f, 2248.4170f, 2840.0688f,
- 3138.9390f, 3399.7288f, 3723.3479f, 3999.6824f, 4582.2339f, 5148.5166f,
- 5631.8989f, 6000.7192f, 373.5378f, 506.7356f, 789.6149f, 942.6201f,
- 1695.8035f, 2021.6426f, 2323.3867f, 2649.5979f, 2853.1729f, 3169.5815f,
- 3524.9375f, 3848.6399f, 4261.7319f, 4978.9668f, 5505.4004f, 5924.7939f,
- 503.2296f, 724.8124f, 940.3833f, 1220.5646f, 1439.8641f, 1726.9827f,
- 2215.5464f, 2476.0925f, 2846.8127f, 3232.0950f, 3638.5989f, 3986.3333f,
- 4371.3052f, 5022.0664f, 5657.4897f, 6040.3452f, 398.3355f, 530.8898f,
- 835.5377f, 1058.3699f, 1327.2036f, 1814.9178f, 2114.2439f, 2515.8892f,
- 2754.9077f, 3094.8794f, 3598.7061f, 3981.2385f, 4605.9160f, 5110.8364f,
- 5550.1899f, 5953.9600f, 327.7583f, 454.8903f, 825.9029f, 1025.4349f,
- 1321.1567f, 1551.4836f, 1978.2037f, 2838.9021f, 3111.9041f, 3417.3940f,
- 3841.0564f, 4696.0547f, 5126.1641f, 5409.5347f, 5711.7163f, 5968.3394f,
- 327.1260f, 431.3983f, 721.9533f, 871.1266f, 1507.7616f, 1847.8716f,
- 2144.9641f, 2491.1108f, 2702.0847f, 3483.1516f, 3917.5173f, 4254.1260f,
- 4704.4863f, 4981.6284f, 5450.1035f, 5937.7861f, 443.5867f, 610.7686f,
- 818.9614f, 999.3525f, 1181.9182f, 1884.4948f, 2243.3950f, 2522.8867f,
- 2993.8594f, 3196.6631f, 3835.5020f, 4233.2568f, 4506.8604f, 4985.0249f,
- 5544.1382f, 5980.0083f, 395.7788f, 582.9504f, 822.1151f, 1013.0453f,
- 1224.6812f, 1988.4263f, 2452.4744f, 2686.4263f, 2952.8831f, 3135.0867f,
- 3562.5471f, 4006.6929f, 4401.7471f, 5038.5654f, 5567.4189f, 5986.0850f,
- 264.3071f, 372.0398f, 616.4940f, 842.1705f, 1350.0250f, 1822.1957f,
- 2165.8896f, 2662.2937f, 3055.4390f, 3502.6787f, 3923.4236f, 4352.6587f,
- 4772.5068f, 5158.1309f, 5573.9385f, 5972.6895f, 218.7390f, 325.2024f,
- 635.0441f, 1103.4701f, 1636.4287f, 2070.2615f, 2274.2910f, 2453.2002f,
- 3069.4382f, 3615.7065f, 3980.0811f, 4484.8662f, 4848.6416f, 5093.7163f,
- 5522.6973f, 5907.4048f, 260.0797f, 461.2137f, 1049.2261f, 1334.1865f,
- 1628.6233f, 2014.9823f, 2413.4802f, 2844.4973f, 3232.3040f, 3661.0122f,
- 4069.8274f, 4466.5210f, 4857.6553f, 5234.4463f, 5608.4517f, 5954.7920f,
- 301.7969f, 406.3861f, 706.7324f, 1387.1207f, 1581.4719f, 2004.7585f,
- 2291.9421f, 2548.9978f, 3076.8755f, 3343.1306f, 3623.1770f, 4279.7432f,
- 4777.6563f, 5084.3960f, 5473.4536f, 5872.0615f, 344.0269f, 472.3550f,
- 776.6819f, 1455.1270f, 1611.6870f, 2012.4386f, 2417.4033f, 2621.8564f,
- 3318.9663f, 3709.0132f, 3944.1958f, 4299.0293f, 4776.4038f, 5184.1089f,
- 5545.5454f, 5913.9531f, 332.1463f, 433.0623f, 992.1605f, 1254.8217f,
- 1498.4819f, 1824.6357f, 2118.3374f, 2444.6484f, 2684.8369f, 2930.4683f,
- 3557.4851f, 4292.9014f, 4786.7251f, 5138.2168f, 5616.2739f, 5996.8369f,
- 281.7202f, 372.7708f, 1074.7051f, 1443.0428f, 1687.6460f, 1980.7075f,
- 2275.4241f, 2632.2017f, 2848.1765f, 3118.7881f, 3628.5857f, 4522.9585f,
- 4876.2163f, 5177.2739f, 5600.6675f, 5960.9634f, 412.0151f, 535.6881f,
- 768.8618f, 1462.2601f, 1789.1055f, 1947.8196f, 2224.6890f, 2447.9089f,
- 2834.6140f, 3472.6721f, 3729.8525f, 4008.2893f, 4525.7271f, 4822.9194f,
- 5204.6611f, 5895.0942f, 263.8760f, 379.7789f, 825.0498f, 1113.1218f,
- 1465.8749f, 1846.7463f, 2146.0496f, 2487.2766f, 2845.8447f, 3388.4800f,
- 3883.8447f, 4440.7603f, 4867.0815f, 5214.7280f, 5535.8149f, 5906.9932f,
- 409.8116f, 583.7237f, 859.1983f, 1172.0491f, 1377.6473f, 1984.8322f,
- 2361.7292f, 2688.9368f, 3238.6563f, 3542.6716f, 3944.3005f, 4441.0840f,
- 4881.1211f, 5224.6045f, 5604.3711f, 5909.3657f, 318.0743f, 438.8244f,
- 852.9153f, 1061.4503f, 1290.7609f, 1552.5408f, 2053.1118f, 2373.2883f,
- 2926.1560f, 3452.9551f, 4098.6626f, 4585.2773f, 4967.0898f, 5271.2720f,
- 5644.6709f, 5961.9585f, 370.3631f, 496.5860f, 932.6390f, 1213.4189f,
- 1452.6641f, 1803.1532f, 2092.2354f, 2607.5247f, 2883.8086f, 3112.1086f,
- 3687.5657f, 4525.1274f, 4846.9404f, 5130.0537f, 5416.4141f, 5804.5122f,
- 247.8941f, 343.9862f, 751.6780f, 1526.2566f, 1712.5012f, 2038.0667f,
- 2324.0371f, 2727.9749f, 3005.8975f, 3378.9817f, 3858.2002f, 4339.2017f,
- 4716.4580f, 5125.0918f, 5564.3589f, 5969.7163f, 297.6552f, 401.7544f,
- 891.9346f, 1380.2275f, 1540.3125f, 1782.6058f, 2009.2045f, 2614.2092f,
- 2899.5396f, 3379.9722f, 3804.1169f, 4284.8540f, 4696.3335f, 5118.4551f,
- 5525.9839f, 5934.2686f, 226.1444f, 333.4511f, 682.9995f, 1307.4166f,
- 1554.1943f, 1849.3679f, 2116.3438f, 2756.3567f, 3204.3018f, 3540.4106f,
- 4002.1895f, 4402.7734f, 4796.4395f, 5192.6812f, 5600.6841f, 5960.1855f,
- 196.3791f, 299.9716f, 572.3173f, 1201.8826f, 1804.7235f, 2012.0171f,
- 2264.7415f, 2790.3406f, 3272.6926f, 3668.4863f, 4063.0435f, 4442.4419f,
- 4810.5957f, 5156.0923f, 5512.8501f, 5900.7441f, 280.1911f, 391.5190f,
- 705.9903f, 1435.5063f, 1588.2345f, 2116.5032f, 2357.1875f, 2670.7461f,
- 3299.0071f, 3507.9336f, 4044.3057f, 4591.9023f, 4981.4575f, 5281.1270f,
- 5654.7158f, 5949.9263f, 262.5740f, 370.5089f, 654.7243f, 1278.9299f,
- 1847.3096f, 2087.3394f, 2553.8892f, 2887.8269f, 3254.0747f, 3810.6626f,
- 4258.4390f, 4528.8022f, 4872.9741f, 5206.0483f, 5565.2876f, 5918.5596f,
- 193.6133f, 356.3127f, 1076.8109f, 1485.8608f, 1887.7994f, 2273.1333f,
- 2676.7832f, 3052.3513f, 3419.1294f, 3792.5024f, 4161.7036f, 4532.6431f,
- 4898.5176f, 5262.0498f, 5622.8901f, 5976.4863f, 302.7377f, 409.7598f,
- 899.1851f, 1176.6501f, 1531.3615f, 1933.6494f, 2229.9561f, 2819.8936f,
- 3031.6248f, 3807.0129f, 4118.7495f, 4412.7339f, 4704.6758f, 5012.0190f,
- 5351.4160f, 5892.3232f, 421.1889f, 587.3521f, 835.9208f, 1248.0127f,
- 1475.8882f, 1779.3772f, 2330.6294f, 2606.6780f, 3026.0417f, 3513.8035f,
- 3754.6023f, 4081.0518f, 4536.3438f, 4815.9336f, 5117.6392f, 5802.9902f,
- 378.0719f, 722.0884f, 1327.5808f, 1665.8940f, 1954.7782f, 2238.9473f,
- 2608.8538f, 2958.7910f, 3341.5112f, 3721.2021f, 4095.8457f, 4457.6865f,
- 4843.8672f, 5212.5142f, 5589.5122f, 5945.3730f, 468.4631f, 962.3222f,
- 1541.0238f, 1919.1746f, 2347.4365f, 2650.7366f, 2927.5945f, 3166.4202f,
- 3451.0664f, 3757.8477f, 4109.2383f, 4467.9443f, 4858.6045f, 5211.8428f,
- 5593.3311f, 5951.0137f, 422.2508f, 845.8956f, 1495.2552f, 1811.3933f,
- 2128.1157f, 2371.2532f, 2656.0715f, 2942.9011f, 3294.5308f, 3652.0935f,
- 4031.2534f, 4399.2222f, 4801.9497f, 5163.3721f, 5559.4517f, 5934.4063f,
- 423.1028f, 661.7286f, 991.1974f, 1204.3813f, 1472.8564f, 2003.0298f,
- 2443.5833f, 2789.2795f, 3354.1692f, 3722.7822f, 4032.7351f, 4320.9727f,
- 4621.8140f, 4963.7310f, 5429.8203f, 5900.1465f, 361.2513f, 485.9720f,
- 828.4865f, 1340.9952f, 1497.8477f, 2072.8511f, 2437.9839f, 2674.9912f,
- 3259.3357f, 3539.0474f, 3789.1389f, 4087.5015f, 4404.8867f, 4771.0947f,
- 5500.2227f, 6015.7041f, 301.8146f, 392.9569f, 685.1938f, 1783.6246f,
- 2034.8542f, 2257.1614f, 2519.8713f, 2782.6279f, 3152.1135f, 3400.8662f,
- 3614.3801f, 3906.7375f, 4233.1968f, 4712.3682f, 5596.0396f, 5998.5742f,
- 242.0591f, 371.0809f, 729.0743f, 1190.6813f, 1851.5691f, 2132.6724f,
- 2334.7773f, 2522.3608f, 3091.8643f, 3621.4614f, 3854.5227f, 4174.7017f,
- 4490.7510f, 4780.1230f, 5157.6147f, 5865.4756f, 431.2477f, 562.1808f,
- 888.5207f, 1034.2062f, 1443.2480f, 2109.8850f, 2337.1443f, 2829.1870f,
- 3070.1301f, 3252.6370f, 3510.3967f, 4366.2236f, 4843.2139f, 5133.0537f,
- 5549.8911f, 5850.3252f, 420.2594f, 668.9339f, 911.1281f, 1218.0372f,
- 1806.5541f, 2050.8423f, 2394.5708f, 2761.3542f, 3021.1716f, 3414.0020f,
- 3970.9626f, 4342.2900f, 4691.6074f, 5062.5386f, 5452.6655f, 5792.8384f,
- 257.3011f, 370.8905f, 604.8825f, 1096.4209f, 1711.8464f, 1934.4335f,
- 2319.4717f, 2769.0144f, 3019.0200f, 3354.3726f, 4119.8809f, 4354.8589f,
- 4557.7979f, 4893.5776f, 5450.3042f, 5910.4136f, 241.4264f, 347.9253f,
- 622.2432f, 1248.8121f, 1559.7318f, 1848.8098f, 2315.5635f, 2571.5894f,
- 2879.5754f, 3624.1069f, 3968.0334f, 4238.9727f, 4713.4746f, 5156.6792f,
- 5568.5596f, 5975.8716f, 478.7131f, 629.4184f, 918.1857f, 1342.7815f,
- 1535.1541f, 1803.0487f, 2483.7764f, 2724.4321f, 2998.1257f, 3634.9932f,
- 3915.9443f, 4119.2837f, 4327.0283f, 4980.3516f, 5532.6880f, 5964.3052f,
- 265.7818f, 373.8575f, 723.3755f, 1186.0619f, 1509.2827f, 2064.2075f,
- 2298.1992f, 2566.4395f, 2785.7659f, 3423.1396f, 3883.9011f, 4136.8940f,
- 4463.0386f, 5010.6592f, 5539.0337f, 5931.4414f, 221.4221f, 347.7610f,
- 707.4465f, 1187.0800f, 1575.9095f, 1824.3983f, 1979.3307f, 2299.3174f,
- 2967.6799f, 3472.3381f, 3955.8469f, 4292.6079f, 4794.8745f, 5127.5181f,
- 5652.6729f, 5953.0132f, 397.2769f, 510.2605f, 746.8268f, 1588.0735f,
- 1991.5200f, 2150.6843f, 2439.0486f, 2712.2754f, 2972.5825f, 3501.2673f,
- 3917.5459f, 4143.6069f, 4443.4414f, 4829.1929f, 5490.0376f, 6028.3794f,
- 280.5184f, 370.6464f, 640.7120f, 1721.3899f, 1948.9806f, 2149.9592f,
- 2400.4678f, 2674.0542f, 3146.3154f, 3419.8850f, 3813.9553f, 4417.4497f,
- 4818.3652f, 5139.6323f, 5465.0669f, 5879.7183f, 325.2418f, 431.2627f,
- 1008.7708f, 1271.9235f, 1527.4150f, 2066.6370f, 2242.3311f, 2883.4065f,
- 3180.6614f, 3352.5015f, 3756.9688f, 4386.6904f, 4857.6621f, 5189.2212f,
- 5514.7573f, 5856.8086f, 451.8427f, 582.4401f, 925.8821f, 1363.4249f,
- 1503.2460f, 1961.5940f, 2265.6001f, 2574.4414f, 3123.0769f, 3345.1587f,
- 3634.3022f, 4266.0137f, 4880.8052f, 5223.5776f, 5567.8901f, 5880.3770f,
- 411.0873f, 553.3847f, 809.2106f, 1023.4841f, 1189.0618f, 1786.0770f,
- 2121.8489f, 2454.6458f, 2947.4700f, 3220.3210f, 3828.0911f, 4218.0229f,
- 4831.2383f, 5322.1445f, 5727.3906f, 6033.3887f, 310.5608f, 442.2204f,
- 742.7755f, 1097.5740f, 1340.9608f, 1854.4385f, 2261.6399f, 2634.8315f,
- 3297.8879f, 3638.6956f, 3925.8770f, 4232.9146f, 4559.9287f, 4893.5830f,
- 5403.0981f, 5917.7056f, 377.5583f, 488.4103f, 945.2491f, 1234.1572f,
- 1416.0774f, 1666.5979f, 1932.9910f, 2746.2000f, 2997.4753f, 3216.6152f,
- 3559.3999f, 3843.8130f, 4359.6626f, 5014.2920f, 5560.6162f, 5992.7212f,
- 285.2173f, 389.6116f, 825.5790f, 1238.8229f, 1459.6588f, 1860.8855f,
- 2178.6296f, 2519.1597f, 2828.0032f, 3278.8101f, 3560.8286f, 4142.0552f,
- 4691.0698f, 5117.7778f, 5558.7944f, 5954.6680f, 465.7002f, 631.7491f,
- 914.5521f, 1340.0057f, 1562.5760f, 1844.1741f, 2186.1208f, 2483.7080f,
- 2901.9417f, 3190.3162f, 3474.7651f, 3873.4065f, 4240.1973f, 4761.1255f,
- 5428.2832f, 5958.5273f, 340.5456f, 449.2341f, 793.7005f, 1387.7467f,
- 1555.8701f, 1938.7877f, 2201.6155f, 2579.5762f, 2914.9724f, 3149.8584f,
- 3699.3984f, 3985.6790f, 4331.7534f, 4999.4805f, 5514.6924f, 5969.4897f,
- 395.8350f, 564.1188f, 774.8214f, 1276.3201f, 1721.8716f, 1864.0143f,
- 2267.5696f, 2790.2031f, 3003.9434f, 3377.6140f, 3917.7395f, 4167.3867f,
- 4465.2529f, 4936.1138f, 5464.0479f, 5905.0444f, 324.1844f, 443.0006f,
- 728.8958f, 1398.6589f, 1584.1820f, 1923.8724f, 2348.0903f, 2561.5554f,
- 3154.5991f, 3449.1746f, 3771.7927f, 4182.1899f, 4937.0791f, 5361.6509f,
- 5727.7656f, 6002.7505f, 267.1790f, 373.7663f, 703.5949f, 1173.7009f,
- 1390.2002f, 1905.7941f, 2177.4961f, 2703.2627f, 3022.9121f, 3308.9612f,
- 3798.5823f, 4187.1533f, 4703.2163f, 5136.0918f, 5571.1655f, 5966.6577f,
- 272.9294f, 399.3804f, 797.7335f, 1180.1516f, 1426.4850f, 2097.2839f,
- 2355.4727f, 2793.8774f, 3137.1907f, 3458.7727f, 3893.6628f, 4245.8047f,
- 4652.3794f, 5106.5293f, 5568.1885f, 5948.3169f, 324.5529f, 431.7663f,
- 759.6147f, 1494.8739f, 1668.8168f, 2110.5635f, 2427.4104f, 2672.9270f,
- 3170.5266f, 3448.2080f, 3717.1240f, 4034.2280f, 4375.3647f, 5041.1372f,
- 5666.9517f, 6014.7217f, 306.4759f, 404.5361f, 795.7795f, 1675.9967f,
- 1835.0950f, 2160.6624f, 2430.8855f, 2734.2646f, 3270.1426f, 3586.1355f,
- 3821.9670f, 4102.0078f, 4372.9404f, 4918.9146f, 5412.0376f, 5868.5225f,
- 421.3803f, 607.7995f, 813.0241f, 1286.8525f, 1827.2451f, 2026.8683f,
- 2333.9453f, 2730.9817f, 2988.4067f, 3303.8513f, 3759.1897f, 4057.5264f,
- 4441.5493f, 4890.0078f, 5212.0469f, 5672.2188f, 423.8560f, 599.5201f,
- 829.0651f, 1082.6381f, 1245.9272f, 1623.7075f, 2453.0420f, 2855.6631f,
- 3171.3855f, 3475.5881f, 3715.4219f, 3972.1326f, 4419.1597f, 4894.0283f,
- 5363.8691f, 5919.2681f, 441.2789f, 634.8879f, 921.6287f, 1189.0240f,
- 1368.7466f, 2012.1312f, 2383.7656f, 2638.5222f, 2975.0288f, 3163.6150f,
- 3433.9958f, 3838.9917f, 4186.6426f, 4856.8477f, 5559.1196f, 5977.2290f,
- 349.2039f, 466.2342f, 724.2582f, 904.4043f, 1190.4492f, 1981.7565f,
- 2226.5554f, 2592.5098f, 2865.5525f, 3195.8196f, 3735.6345f, 4267.1660f,
- 4810.9893f, 5207.5093f, 5605.1445f, 5952.0361f, 497.7713f, 719.9073f,
- 925.0815f, 1146.3021f, 1326.7095f, 1574.5039f, 2306.7678f, 2714.8022f,
- 2967.5190f, 3400.1121f, 3732.0544f, 3981.7878f, 4553.4819f, 5090.0869f,
- 5426.2085f, 5833.5220f, 471.7526f, 648.3213f, 902.1542f, 1245.7086f,
- 1423.3403f, 1701.1757f, 2125.8530f, 2407.0481f, 2969.5583f, 3294.1296f,
- 3712.8398f, 4140.7930f, 4808.4668f, 5322.3896f, 5662.1255f, 5950.6211f,
- 345.3843f, 485.9887f, 841.2579f, 1035.9401f, 1244.8905f, 1488.1833f,
- 2340.4253f, 2607.0859f, 2845.4153f, 3223.1768f, 3557.0696f, 4119.7944f,
- 4666.8896f, 5145.8589f, 5565.7534f, 5976.6875f, 332.4270f, 427.5984f,
- 829.9191f, 1138.0469f, 1339.4468f, 1589.0535f, 1926.0630f, 2432.9331f,
- 2699.7964f, 3311.4355f, 3716.1003f, 4270.4990f, 4760.3647f, 5208.3950f,
- 5619.2080f, 5971.2715f, 249.0114f, 381.2982f, 925.7067f, 1520.3356f,
- 1842.8396f, 2368.2908f, 2783.4033f, 3272.5757f, 3673.7402f, 4046.3950f,
- 4370.4966f, 4688.0269f, 5002.6772f, 5316.3594f, 5650.2192f, 5977.6587f,
- 263.3275f, 451.6255f, 1252.2307f, 1503.0652f, 1786.7695f, 2082.7554f,
- 2451.1829f, 2804.7590f, 3116.7583f, 3493.8892f, 3884.6575f, 4349.6724f,
- 4770.0156f, 5143.1636f, 5542.5913f, 5931.5522f, 252.9447f, 341.5762f,
- 632.7664f, 1766.8096f, 2084.1511f, 2272.7332f, 2531.1006f, 2765.2080f,
- 3134.5417f, 3380.6223f, 3640.8015f, 3932.7854f, 4532.1172f, 5245.2070f,
- 5597.0776f, 5973.6831f, 234.9979f, 324.6731f, 1239.8643f, 1663.1921f,
- 1858.7769f, 2171.1614f, 2403.8818f, 2680.6433f, 2836.4985f, 3192.6577f,
- 3864.8811f, 4385.8066f, 4845.9766f, 5150.2412f, 5631.1519f, 6011.7773f,
- 284.5302f, 410.1263f, 985.4119f, 1298.3987f, 1789.4304f, 1996.9287f,
- 2450.8525f, 2831.6011f, 2994.2073f, 3214.1306f, 3525.0498f, 3819.9141f,
- 4672.7544f, 5424.3545f, 5691.0732f, 5980.3096f, 244.2704f, 415.5891f,
- 1038.3009f, 1317.5186f, 1686.4528f, 2081.3147f, 2476.9873f, 2959.5393f,
- 3214.9561f, 3569.1431f, 3934.4736f, 4308.7114f, 4728.3687f, 5105.7964f,
- 5488.1938f, 5908.9443f, 335.8417f, 468.3464f, 1003.6253f, 1275.0145f,
- 1534.2854f, 1985.3167f, 2348.3411f, 2743.3169f, 2956.0967f, 3408.5063f,
- 3866.8574f, 4287.0034f, 4556.7222f, 4922.7832f, 5259.7480f, 5800.2876f,
- 388.2726f, 518.0591f, 832.5999f, 1325.0247f, 1528.8624f, 1808.1732f,
- 2151.0820f, 2486.1331f, 2815.4980f, 3158.5391f, 3635.3606f, 3960.5383f,
- 4671.7686f, 5371.8140f, 5777.8940f, 6056.4722f, 506.5153f, 673.0771f,
- 900.0349f, 1154.2124f, 1378.2689f, 1786.9409f, 2081.9631f, 2398.6965f,
- 2859.7441f, 3075.4841f, 3546.6563f, 4322.6694f, 4732.0049f, 4992.5542f,
- 5267.5859f, 5807.1812f, 487.2466f, 653.6116f, 968.5656f, 1389.2708f,
- 1601.5822f, 1910.9694f, 2282.4038f, 2608.7063f, 3032.6233f, 3361.9692f,
- 3629.8552f, 3908.8335f, 4318.4009f, 4646.5781f, 5043.5962f, 5792.7393f,
- 432.8733f, 591.7551f, 899.2619f, 1490.1176f, 1789.8751f, 2060.3750f,
- 2434.8779f, 2840.3374f, 3122.1292f, 3472.8079f, 3830.8870f, 4097.2622f,
- 4353.5464f, 4650.2075f, 4981.5752f, 5482.9565f, 378.4767f, 508.5656f,
- 802.8280f, 947.2892f, 1532.0898f, 2038.8177f, 2349.1965f, 2650.2039f,
- 2863.8018f, 3591.6697f, 3918.9211f, 4256.6255f, 4604.8467f, 4899.0996f,
- 5237.6084f, 5791.5029f, 407.0908f, 546.0364f, 866.1215f, 1098.6927f,
- 1347.2009f, 1657.1525f, 1965.5845f, 2717.7190f, 3033.4961f, 3509.9031f,
- 3873.4150f, 4131.4438f, 4389.5693f, 4774.2295f, 5450.1768f, 5977.5151f,
- 429.3459f, 568.8134f, 903.5659f, 1099.2942f, 1379.4979f, 2207.5940f,
- 2479.9919f, 2780.9072f, 3206.3960f, 3425.4084f, 3682.5911f, 3950.1941f,
- 4324.0840f, 4689.4922f, 5068.2534f, 5787.2852f, 371.9443f, 524.7249f,
- 890.0464f, 1670.7485f, 1958.5308f, 2182.7007f, 2558.5007f, 2835.4937f,
- 3192.0740f, 3634.4817f, 3950.0942f, 4259.6953f, 4628.0049f, 4999.1616f,
- 5364.9893f, 5801.6855f, 323.1922f, 451.0327f, 787.1655f, 1011.6555f,
- 1323.8138f, 2177.6636f, 2401.1392f, 2826.8796f, 3432.8999f, 3653.1851f,
- 3883.9897f, 4082.7559f, 4361.6753f, 4635.1475f, 5084.7544f, 5823.3062f,
- 377.0061f, 524.2181f, 743.6288f, 1378.9187f, 1857.6434f, 2056.4695f,
- 2453.7949f, 2902.1995f, 3127.2651f, 3463.3523f, 3980.1316f, 4241.2578f,
- 4528.5859f, 4881.4521f, 5239.3145f, 5580.5986f, 308.7965f, 403.7058f,
- 705.9506f, 1823.8571f, 2126.9387f, 2369.2810f, 2647.2048f, 2855.8276f,
- 3209.7708f, 3498.2310f, 3747.6047f, 3972.8647f, 4254.3325f, 4574.4292f,
- 5087.3965f, 5890.4219f, 274.7571f, 383.7251f, 573.6029f, 1142.8372f,
- 2151.7173f, 2558.8972f, 2751.9468f, 2987.4412f, 3234.3350f, 3526.0127f,
- 3922.9927f, 4189.0249f, 4483.3774f, 4877.1860f, 5396.7798f, 5921.8125f,
- 248.5916f, 423.6264f, 1260.9626f, 1696.0492f, 1972.9108f, 2298.5972f,
- 2592.9307f, 2947.2292f, 3266.2227f, 3614.3572f, 3980.3892f, 4359.4067f,
- 4770.2842f, 5158.9058f, 5554.6597f, 5936.9043f, 320.5471f, 429.6766f,
- 657.1440f, 1390.1080f, 2194.6426f, 2507.6086f, 2712.3662f, 2980.3408f,
- 3216.1682f, 3544.8467f, 3956.9790f, 4227.5308f, 4463.7563f, 4745.7124f,
- 5088.6650f, 5525.8516f, 245.5478f, 520.3131f, 1177.0693f, 1454.0125f,
- 1770.2620f, 2160.8779f, 2551.2700f, 2950.2324f, 3326.8621f, 3710.4624f,
- 4104.3936f, 4481.9971f, 4865.9736f, 5230.6396f, 5608.5649f, 5965.6162f,
- 514.5864f, 956.9897f, 1287.9597f, 1520.3473f, 1802.0631f, 2116.4980f,
- 2509.8552f, 2865.9822f, 3238.7510f, 3611.3108f, 4016.4353f, 4431.8457f,
- 4860.3442f, 5231.4814f, 5614.6016f, 5963.9976f, 537.0523f, 932.2803f,
- 1380.2690f, 1709.4702f, 2079.9902f, 2446.4014f, 2859.4204f, 3229.6975f,
- 3623.4031f, 4012.5327f, 4373.7568f, 4724.3359f, 5078.2686f, 5397.6040f,
- 5721.9639f, 6028.1167f, 452.5153f, 798.2777f, 1099.3080f, 1317.0807f,
- 1652.6885f, 2059.7708f, 2471.0164f, 2808.5396f, 3146.5076f, 3494.0779f,
- 3870.6912f, 4310.8281f, 4777.5024f, 5181.2617f, 5574.4912f, 5934.3813f,
- 340.3716f, 430.5102f, 872.3513f, 1636.3792f, 1772.8615f, 2074.0161f,
- 2295.1008f, 2693.0037f, 3177.7710f, 3391.7559f, 3670.8718f, 4224.3926f,
- 4896.3877f, 5199.9883f, 5580.4512f, 5911.7671f, 317.8269f, 414.8185f,
- 881.1970f, 1658.4944f, 1852.0098f, 2136.0415f, 2380.8228f, 2668.9141f,
- 3046.8027f, 3299.0051f, 3523.0593f, 3758.9412f, 4116.9063f, 5061.2124f,
- 5624.1777f, 5989.4761f, 374.0671f, 488.0840f, 734.0546f, 1415.9261f,
- 1648.7783f, 1852.8462f, 2099.1895f, 2347.5562f, 2954.8359f, 3269.6714f,
- 3536.7920f, 4116.1743f, 4481.4355f, 4913.8838f, 5467.2817f, 5909.8779f,
- 340.4291f, 448.5775f, 1041.4979f, 1426.0011f, 1637.8165f, 1968.6743f,
- 2210.7976f, 2647.5144f, 2913.8650f, 3131.7698f, 3429.8755f, 3722.6763f,
- 4104.6479f, 4969.0093f, 5574.2231f, 5978.2070f, 254.2538f, 412.7710f,
- 947.8206f, 1209.3683f, 1690.4813f, 2040.7881f, 2401.4314f, 2728.0066f,
- 3016.2290f, 3530.3865f, 3964.6563f, 4393.6934f, 4804.2168f, 5187.9302f,
- 5586.4399f, 5954.8950f, 241.0244f, 347.0750f, 835.2348f, 1601.9089f,
- 1786.4336f, 2134.3950f, 2396.0139f, 2848.9712f, 3239.9138f, 3623.8250f,
- 4029.5088f, 4400.3936f, 4797.3564f, 5195.7310f, 5596.6689f, 5965.9878f,
- 309.3683f, 453.6776f, 812.9343f, 1125.9915f, 1423.5935f, 2149.2227f,
- 2514.9277f, 3031.3599f, 3463.7219f, 3790.7839f, 4064.0039f, 4297.9839f,
- 4653.4551f, 5189.7061f, 5721.2954f, 6033.0752f, 469.4284f, 730.1902f,
- 973.0643f, 1170.5016f, 1572.2559f, 2084.2769f, 2567.8604f, 2963.4592f,
- 3286.9617f, 3580.3228f, 3882.8706f, 4335.5483f, 4859.7197f, 5258.2827f,
- 5627.9785f, 5957.8623f, 454.6165f, 795.2360f, 1078.7705f, 1294.9473f,
- 1761.6650f, 2235.2788f, 2695.8455f, 3095.7695f, 3473.4897f, 3833.0889f,
- 4185.7290f, 4528.9863f, 4893.0039f, 5240.7627f, 5608.8594f, 5951.0718f,
- 563.4587f, 875.8987f, 1139.0026f, 1378.2317f, 1855.7401f, 2279.7683f,
- 2651.3079f, 2968.4397f, 3279.4453f, 3607.2500f, 3975.5796f, 4358.3574f,
- 4768.7969f, 5135.3706f, 5525.3501f, 5904.2617f, 461.7852f, 855.0644f,
- 1367.4387f, 1702.5593f, 2141.0093f, 2500.9055f, 2853.8596f, 3123.9744f,
- 3406.0178f, 3694.0481f, 4028.9985f, 4373.1113f, 4768.2891f, 5137.6895f,
- 5541.3721f, 5921.4507f, 438.6031f, 753.0179f, 1269.3203f, 1630.4396f,
- 2027.2959f, 2350.9695f, 2672.1396f, 2957.1809f, 3250.1545f, 3546.5315f,
- 3894.0161f, 4249.9346f, 4666.2266f, 5061.2524f, 5490.7749f, 5904.6362f,
- 543.3182f, 828.4835f, 1239.1818f, 1471.1134f, 1737.8622f, 2037.2484f,
- 2434.5112f, 2801.3242f, 3162.3250f, 3508.1255f, 3849.0903f, 4165.7588f,
- 4588.3809f, 5020.0952f, 5475.2813f, 5904.6377f, 519.5982f, 837.6639f,
- 1171.2003f, 1363.0320f, 1617.4617f, 1976.1787f, 2472.0303f, 2901.3264f,
- 3340.7300f, 3736.0830f, 4103.3843f, 4444.8657f, 4800.9482f, 5145.6011f,
- 5544.2002f, 5933.0981f, 433.3774f, 582.7663f, 899.6142f, 1150.7437f,
- 1321.1309f, 1947.8643f, 2557.8604f, 2733.1497f, 3240.4907f, 3634.7915f,
- 3855.9856f, 4058.0281f, 4364.2568f, 5096.5225f, 5659.0952f, 6013.8145f,
- 424.9731f, 604.3164f, 868.1793f, 1207.7882f, 1414.2374f, 1713.2893f,
- 2520.2900f, 2960.8887f, 3210.8542f, 3584.5403f, 3914.5796f, 4149.8550f,
- 4505.7705f, 4886.9575f, 5214.5361f, 5597.8389f, 347.0334f, 494.2440f,
- 753.7191f, 1451.0435f, 1700.7461f, 1925.4844f, 2605.7988f, 2870.4744f,
- 3173.7312f, 3758.7219f, 4112.1929f, 4400.3882f, 4866.1016f, 5165.8799f,
- 5433.0371f, 5781.1509f, 318.4942f, 464.3939f, 783.5214f, 1491.0234f,
- 1708.4984f, 2280.2876f, 2533.3354f, 2885.1736f, 3443.7451f, 3669.8506f,
- 4000.6792f, 4269.6626f, 4571.2739f, 4827.2158f, 5277.3813f, 5850.4736f,
- 386.8698f, 519.0056f, 725.0029f, 981.5649f, 1156.1665f, 1500.4691f,
- 2421.7993f, 2962.4722f, 3175.0166f, 3548.4756f, 3860.7961f, 4146.4150f,
- 4658.9897f, 5088.3999f, 5531.8945f, 5951.4624f, 315.9294f, 738.5538f,
- 1171.9581f, 1553.7167f, 1949.9159f, 2319.6641f, 2707.5493f, 3069.2996f,
- 3444.6157f, 3811.2139f, 4177.5469f, 4545.6943f, 4905.0444f, 5271.3926f,
- 5622.6831f, 5974.4141f, 216.5136f, 598.1122f, 1059.3214f, 1466.4785f,
- 1880.1747f, 2263.6533f, 2658.3081f, 3030.4099f, 3413.6802f, 3780.1853f,
- 4157.1455f, 4519.1919f, 4893.5439f, 5244.3530f, 5603.1064f, 5926.8379f,
- 375.4021f, 487.0890f, 844.4013f, 1574.3596f, 1794.5249f, 2106.2878f,
- 2418.5217f, 2657.8938f, 3116.6096f, 3457.8625f, 3691.0596f, 3930.1062f,
- 4259.5928f, 4592.4370f, 5020.5078f, 5840.3989f, 474.3148f, 724.2144f,
- 974.0716f, 1283.4182f, 1521.2632f, 1746.4248f, 2333.0957f, 2874.2966f,
- 3111.9636f, 3440.0410f, 3752.9678f, 3975.7139f, 4294.7056f, 4821.9893f,
- 5201.5562f, 5658.8301f, 400.0291f, 564.9626f, 808.2393f, 1083.2745f,
- 1300.4403f, 2080.7405f, 2588.6882f, 2858.4629f, 3206.4502f, 3429.8623f,
- 3746.9080f, 4341.4868f, 4713.2803f, 4986.4258f, 5336.7339f, 5710.1123f,
- 354.4416f, 480.1495f, 834.1089f, 1037.7775f, 1350.0652f, 1791.1736f,
- 2193.0159f, 2504.6775f, 2776.0623f, 3153.0994f, 4108.1357f, 4597.4082f,
- 4861.9688f, 5092.8613f, 5473.2295f, 5932.0332f, 237.3935f, 346.9133f,
- 675.5335f, 1481.0535f, 1716.8414f, 1884.7153f, 2099.3057f, 2725.5403f,
- 3022.8506f, 3276.2922f, 3639.1001f, 4185.3926f, 4941.6597f, 5292.0093f,
- 5682.0391f, 5981.0215f, 367.4981f, 469.7130f, 820.7811f, 1219.7736f,
- 1368.4479f, 1624.6671f, 1804.2581f, 2607.8589f, 2891.3174f, 3212.2432f,
- 3760.7290f, 4015.6111f, 4618.0068f, 5129.3213f, 5652.1582f, 6042.1113f,
- 312.6796f, 415.8322f, 674.1500f, 853.7709f, 1808.7385f, 2232.5310f,
- 2497.8157f, 2834.2991f, 3039.7012f, 3301.4050f, 3659.2969f, 4455.9453f,
- 4841.4912f, 5111.6167f, 5502.2534f, 5924.6357f, 341.9309f, 471.7513f,
- 758.1926f, 979.7221f, 1287.4463f, 1737.0303f, 2160.7915f, 2664.5562f,
- 2961.8315f, 3461.7439f, 3732.6611f, 4109.0928f, 4568.9111f, 5037.4331f,
- 5511.3169f, 5966.1304f, 351.3721f, 462.1897f, 765.1075f, 946.3102f,
- 1322.8093f, 2292.2400f, 2503.6494f, 2819.7234f, 3079.2803f, 3297.6252f,
- 3571.4668f, 3872.0823f, 4337.6426f, 5079.1504f, 5562.8110f, 5942.7153f,
- 435.4323f, 614.4746f, 892.8980f, 1215.9469f, 1395.9762f, 1814.3936f,
- 2155.9590f, 2465.0427f, 3201.6211f, 3490.9224f, 3853.2620f, 4410.1855f,
- 4786.0625f, 5095.0181f, 5394.4805f, 5715.3364f, 294.6053f, 417.1553f,
- 1046.2922f, 1443.0247f, 1636.7180f, 1956.4248f, 2189.9697f, 2869.8071f,
- 3129.9385f, 3462.5681f, 3895.2805f, 4213.4541f, 4541.8950f, 5009.1958f,
- 5472.7642f, 5983.0063f, 322.1185f, 446.8733f, 689.4188f, 1338.2788f,
- 1643.1023f, 1903.8652f, 2494.2722f, 2804.6968f, 3103.8682f, 3640.1233f,
- 3965.9861f, 4172.5596f, 4404.7388f, 4670.7544f, 5240.3682f, 5893.4600f,
- 209.7024f, 336.5508f, 729.0126f, 1217.3285f, 1699.0111f, 1891.2837f,
- 2146.8486f, 2830.0850f, 3108.6204f, 3446.0396f, 3754.1230f, 3945.1038f,
- 4474.5806f, 5191.6987f, 5613.3076f, 5970.2695f, 346.6580f, 470.5094f,
- 663.3455f, 1266.9061f, 2020.5759f, 2270.5173f, 2527.3550f, 2826.9104f,
- 3078.3403f, 3401.2625f, 3804.3770f, 4100.3091f, 4407.7876f, 4732.2319f,
- 5150.2749f, 5808.2559f, 283.7796f, 391.4603f, 1165.6863f, 1456.1125f,
- 1692.9001f, 2008.4825f, 2322.7837f, 2784.0608f, 2998.5811f, 3268.5164f,
- 3548.9373f, 4167.1289f, 4643.9878f, 5099.2881f, 5473.0781f, 5929.8242f,
- 301.0849f, 383.1578f, 692.0848f, 1648.9374f, 1873.0947f, 2109.6113f,
- 2345.0110f, 2613.1121f, 2922.0193f, 3170.0020f, 3405.0774f, 3881.9875f,
- 4778.3154f, 5092.5205f, 5445.7100f, 5920.7896f, 509.1023f, 750.8580f,
- 963.8820f, 1295.3452f, 1634.8796f, 1818.7975f, 2151.1250f, 2590.3354f,
- 2867.5596f, 3238.7666f, 3747.2834f, 4053.8911f, 4457.8164f, 4928.0151f,
- 5295.3521f, 5789.0571f, 421.8951f, 547.9814f, 967.4185f, 1153.8607f,
- 1461.4230f, 1813.0994f, 2155.2703f, 2570.9712f, 2777.6597f, 3048.9863f,
- 3432.0986f, 3729.3877f, 4395.7461f, 5028.7402f, 5486.4946f, 5951.5024f,
- 340.6758f, 445.7014f, 931.8882f, 1253.4775f, 1521.9260f, 1969.5759f,
- 2267.5332f, 2735.0112f, 2948.7678f, 3236.5166f, 3529.5505f, 3882.3674f,
- 4699.5781f, 5089.6641f, 5377.7842f, 5880.7778f, 284.1882f, 408.6918f,
- 786.3123f, 1670.3220f, 2042.9493f, 2265.2275f, 2691.2012f, 3035.8762f,
- 3334.1719f, 3863.1194f, 4276.8916f, 4571.0420f, 4996.4404f, 5336.5205f,
- 5647.9556f, 5944.5996f, 300.0066f, 616.4817f, 1238.7324f, 1614.8296f,
- 1997.6188f, 2367.4343f, 2784.5605f, 3168.8354f, 3569.8250f, 3965.6011f,
- 4336.3804f, 4689.5874f, 5044.2012f, 5365.7456f, 5697.5654f, 6010.6572f,
- 242.9420f, 476.8371f, 1250.6661f, 1671.6031f, 2159.6443f, 2637.7417f,
- 3049.8589f, 3371.6045f, 3674.8706f, 3951.1006f, 4230.6416f, 4543.2827f,
- 4887.4478f, 5220.5581f, 5595.2686f, 5962.1313f, 242.6795f, 331.1335f,
- 635.2861f, 1801.5236f, 2084.1472f, 2264.4692f, 2506.2891f, 2799.4441f,
- 3236.7134f, 3489.6038f, 3859.3291f, 4424.8008f, 4964.6348f, 5298.6533f,
- 5640.2031f, 5988.0552f, 254.0538f, 336.2447f, 1216.6261f, 1717.7201f,
- 1886.0708f, 2176.6338f, 2405.8547f, 2762.3037f, 2934.8816f, 3167.0657f,
- 3385.5457f, 3804.4346f, 4848.8198f, 5286.0352f, 5630.5391f, 6086.4492f,
- 295.2298f, 426.2079f, 630.7856f, 1155.5609f, 1827.6831f, 2120.5283f,
- 2462.4373f, 2759.6152f, 2990.9526f, 3253.4216f, 3910.9834f, 4204.2754f,
- 4462.7944f, 4909.7529f, 5579.9653f, 5985.8579f, 298.9633f, 410.3875f,
- 810.1115f, 1346.1040f, 1499.2391f, 2210.3948f, 2467.9424f, 2792.7122f,
- 3284.0874f, 3493.0740f, 3784.1899f, 4319.6396f, 4860.6548f, 5213.8540f,
- 5609.8672f, 5949.6890f, 437.9900f, 575.3093f, 866.0077f, 1104.2080f,
- 1307.4966f, 1959.9323f, 2293.9365f, 2604.6704f, 2966.6514f, 3228.0056f,
- 3548.8499f, 4096.4424f, 4769.5420f, 5086.5449f, 5416.5317f, 5853.6909f,
- 412.4955f, 569.1867f, 864.0179f, 1117.6798f, 1348.6332f, 1976.5171f,
- 2334.3960f, 2640.3381f, 3006.5347f, 3327.5784f, 3695.8564f, 4042.1753f,
- 4362.7837f, 4687.4751f, 5389.8662f, 5966.5825f, 406.8686f, 542.0319f,
- 867.3541f, 1436.3810f, 1678.6399f, 2000.1501f, 2358.1204f, 2651.3806f,
- 3042.1216f, 3339.2766f, 3617.9963f, 3933.3860f, 4249.0278f, 4591.8530f,
- 5502.0400f, 6020.7910f, 375.4336f, 519.7731f, 764.5574f, 1215.1381f,
- 1482.9417f, 1696.8020f, 1957.0332f, 2169.1169f, 2973.4634f, 3687.7449f,
- 3966.8525f, 4258.8042f, 4680.6567f, 4947.0225f, 5230.9824f, 5843.2466f,
- 443.2378f, 574.0562f, 813.3345f, 1282.7894f, 1538.0752f, 1727.8997f,
- 2007.8584f, 2194.5601f, 2755.8220f, 3460.9243f, 3654.1399f, 4030.5530f,
- 4572.4727f, 4904.7847f, 5400.6147f, 5934.2656f, 423.6246f, 540.1947f,
- 862.8629f, 1386.7659f, 1577.2052f, 1811.0304f, 2046.7363f, 2309.0366f,
- 3129.1145f, 3533.0020f, 3738.4211f, 4021.1111f, 4357.3677f, 4634.8740f,
- 5307.2920f, 5944.9155f, 287.7661f, 401.5490f, 725.6079f, 950.8911f,
- 1186.5465f, 1490.1750f, 2114.7920f, 2562.4019f, 3028.3977f, 3519.6277f,
- 3940.5737f, 4339.3086f, 4765.8188f, 5172.3428f, 5582.8022f, 5971.0273f,
- 382.6039f, 537.7234f, 836.8093f, 1371.3546f, 1578.9803f, 1869.8213f,
- 2292.5596f, 2540.8601f, 3032.9834f, 3402.5059f, 3737.0569f, 4053.9937f,
- 4446.6240f, 5251.8457f, 5710.7935f, 6022.2925f, 313.2195f, 415.0511f,
- 690.6860f, 1561.4832f, 1815.6521f, 2059.9187f, 2345.5095f, 2614.8701f,
- 3006.9604f, 3291.9744f, 3590.4119f, 3996.1516f, 4365.4995f, 4853.4956f,
- 5465.1572f, 5954.5718f, 361.7959f, 448.4001f, 921.3198f, 1343.1167f,
- 1488.6287f, 1736.7700f, 1950.8906f, 2536.0193f, 2768.7393f, 3062.4473f,
- 3484.6570f, 3888.5618f, 4618.4038f, 5092.6641f, 5523.3657f, 5966.6772f,
- 249.5541f, 366.6601f, 684.6592f, 1203.0931f, 1642.2089f, 1961.8837f,
- 2227.3289f, 2421.1348f, 2660.5676f, 3229.5410f, 3822.5837f, 4232.7266f,
- 4782.5181f, 5127.2612f, 5570.2676f, 5978.9858f, 287.4206f, 421.3210f,
- 704.0352f, 1279.8597f, 1562.7307f, 2115.4241f, 2492.4517f, 2780.9470f,
- 3317.3616f, 3606.1492f, 4026.6375f, 4337.9014f, 4699.6895f, 4997.2573f,
- 5431.1787f, 5903.8628f, 487.9554f, 740.9349f, 1021.9616f, 1327.3262f,
- 1620.8544f, 1890.7717f, 2269.1218f, 2584.4868f, 2911.2896f, 3424.9221f,
- 3855.1670f, 4205.9272f, 4707.2466f, 5147.1846f, 5601.1152f, 5953.4673f,
- 400.8269f, 513.4500f, 786.8242f, 1269.3298f, 1441.4178f, 1696.9789f,
- 1911.0537f, 2223.0684f, 2847.1619f, 3113.3845f, 3670.6318f, 4146.2900f,
- 4555.9204f, 5083.8579f, 5574.8120f, 5987.6030f, 379.0329f, 487.7222f,
- 914.8179f, 1130.9854f, 1430.1394f, 1830.0769f, 2088.8796f, 2613.6855f,
- 2803.1633f, 3457.1777f, 4032.6118f, 4306.7344f, 4662.6899f, 4959.6348f,
- 5245.5234f, 5787.3940f, 340.6941f, 451.0338f, 656.2767f, 911.5805f,
- 1124.9330f, 1733.8730f, 2518.7861f, 2768.6851f, 3211.3733f, 3717.7583f,
- 3929.6772f, 4176.2993f, 4522.4517f, 5011.5547f, 5575.8784f, 6006.7222f,
- 341.5027f, 441.6417f, 807.2695f, 1060.2080f, 1251.2837f, 1478.9895f,
- 1750.0796f, 2594.8977f, 2924.5027f, 3401.4751f, 3852.0557f, 4292.4683f,
- 4718.2930f, 5159.4775f, 5562.4067f, 5972.5571f, 313.8985f, 421.5380f,
- 667.2407f, 873.6023f, 1110.1119f, 2060.7332f, 2381.0916f, 2746.2288f,
- 3080.5649f, 3399.9905f, 3897.5884f, 4434.9990f, 5048.1343f, 5390.8149f,
- 5744.3931f, 6007.9326f, 252.1832f, 354.2392f, 673.5427f, 1339.1161f,
- 1554.8853f, 2014.9351f, 2300.4138f, 2829.6182f, 3213.1714f, 3409.5105f,
- 3604.3242f, 3927.8020f, 4622.3218f, 5103.4565f, 5559.5024f, 5971.5986f,
- 385.2648f, 513.7607f, 760.7678f, 983.5819f, 1175.7727f, 2134.7810f,
- 2592.9614f, 2822.0161f, 3232.2524f, 3445.3516f, 3750.7583f, 4094.6714f,
- 4401.5830f, 4753.4204f, 5549.2319f, 6034.7148f, 220.6833f, 314.5706f,
- 622.2172f, 1350.8225f, 1785.5879f, 2077.5837f, 2504.2158f, 3057.6992f,
- 3436.0974f, 3695.2976f, 3953.4272f, 4267.8701f, 4660.6865f, 5073.6831f,
- 5501.9478f, 5929.9780f, 207.8814f, 310.4071f, 646.2098f, 1270.5835f,
- 1542.7271f, 2079.3804f, 2440.0339f, 2843.4690f, 3272.4854f, 3657.9851f,
- 4061.2014f, 4444.9780f, 4841.6060f, 5224.5947f, 5620.9141f, 5972.7261f,
- 326.1488f, 456.7737f, 740.3350f, 961.4597f, 1262.7579f, 2190.7178f,
- 2483.5300f, 2872.4180f, 3328.4910f, 3811.0334f, 4153.1602f, 4441.8271f,
- 4801.1802f, 5065.2988f, 5381.6309f, 5693.2886f, 206.2046f, 328.0855f,
- 618.9507f, 980.9994f, 1695.9775f, 1982.3051f, 2275.5444f, 2806.0271f,
- 3269.5178f, 3491.2456f, 3722.1775f, 4145.9121f, 4843.1167f, 5266.8677f,
- 5656.8794f, 5992.1201f, 308.1086f, 407.7706f, 806.7985f, 1045.7629f,
- 1401.8912f, 2108.3472f, 2331.7849f, 2952.5391f, 3174.1865f, 3374.0686f,
- 3645.4260f, 4292.7183f, 4939.2969f, 5250.4829f, 5607.2358f, 5932.8657f,
- 267.5990f, 378.7492f, 642.2629f, 871.7917f, 1691.7523f, 2087.5117f,
- 2423.1462f, 2686.1487f, 3021.7893f, 3724.0247f, 4035.5454f, 4369.5903f,
- 4680.1167f, 4991.4175f, 5323.6875f, 5811.7471f, 312.3856f, 437.4281f,
- 714.5340f, 899.5771f, 1632.7545f, 1938.5369f, 2295.5544f, 2625.6189f,
- 2900.5576f, 3295.4934f, 3557.1260f, 3960.1123f, 4731.6079f, 5141.8447f,
- 5502.7793f, 5954.0049f, 332.2842f, 449.0976f, 875.9957f, 1206.1912f,
- 1422.6793f, 2097.5745f, 2354.2483f, 2715.8494f, 3093.4697f, 3344.5132f,
- 3623.4814f, 3889.3655f, 4256.2002f, 4994.5742f, 5593.8428f, 5985.9575f,
- 286.9586f, 434.7701f, 781.3996f, 1248.3495f, 1835.5530f, 2137.1155f,
- 2573.7449f, 2869.9299f, 3126.0564f, 3459.1448f, 3769.4475f, 4138.3076f,
- 4688.0298f, 5084.9028f, 5436.8086f, 5894.2520f, 327.0000f, 429.0804f,
- 663.7327f, 849.7463f, 1174.9340f, 2383.3875f, 2695.9597f, 2941.2026f,
- 3214.4724f, 3433.6287f, 3778.9312f, 4134.8096f, 4504.8022f, 5066.7559f,
- 5599.2290f, 5985.7334f, 244.4052f, 499.2254f, 1294.8232f, 1689.3677f,
- 2123.5024f, 2572.4958f, 3042.9067f, 3446.8752f, 3836.3740f, 4175.6729f,
- 4485.3213f, 4792.3755f, 5094.9077f, 5386.1816f, 5699.6411f, 6008.2114f,
- 561.9757f, 1020.3204f, 1494.1995f, 1841.8171f, 2297.0906f, 2772.6184f,
- 3204.8804f, 3565.8628f, 3935.4106f, 4253.4141f, 4559.7021f, 4849.9653f,
- 5140.2852f, 5428.6934f, 5731.2251f, 6023.5078f, 581.6182f, 1053.5670f,
- 1478.5878f, 1784.4789f, 2125.1157f, 2454.5889f, 2809.0256f, 3141.7256f,
- 3490.7529f, 3848.5923f, 4201.7271f, 4568.7720f, 4945.9619f, 5288.6289f,
- 5647.7642f, 5981.9341f, 258.9683f, 364.0963f, 722.5463f, 1763.2114f,
- 1969.3870f, 2265.5239f, 2532.1821f, 2883.3557f, 3388.1838f, 3725.3120f,
- 4080.9338f, 4390.3818f, 4716.3599f, 5068.4941f, 5452.2778f, 5847.1401f,
- 271.5428f, 401.4228f, 695.5894f, 857.3072f, 1776.5358f, 2008.5603f,
- 2554.4143f, 2844.4021f, 3018.6877f, 3226.1279f, 3482.3398f, 3810.6858f,
- 4549.3071f, 5266.2764f, 5614.6157f, 5945.6904f, 330.3132f, 444.6271f,
- 669.0279f, 874.5479f, 1102.9247f, 2052.1780f, 2436.2378f, 2711.1165f,
- 3037.7537f, 3298.2036f, 3898.6858f, 4241.5415f, 4606.7637f, 5086.6919f,
- 5569.7397f, 5988.6797f, 232.3014f, 344.5512f, 578.5155f, 1213.9569f,
- 1880.9729f, 2105.6685f, 2335.4148f, 2550.3965f, 3147.6501f, 3491.9253f,
- 3791.5613f, 4159.6694f, 4642.2441f, 5103.3340f, 5605.4106f, 5989.7969f,
- 346.3687f, 444.8047f, 714.3775f, 889.1195f, 1211.8463f, 2168.7598f,
- 2430.2490f, 2760.6326f, 3012.4961f, 3268.8750f, 3565.1558f, 4172.5791f,
- 4781.5391f, 5127.6704f, 5512.6323f, 5911.3779f, 398.0477f, 553.8537f,
- 845.8521f, 1119.3066f, 1309.7244f, 1928.3351f, 2351.2095f, 2649.8230f,
- 3050.6750f, 3297.0566f, 3592.7275f, 3916.1785f, 4723.3325f, 5318.1221f,
- 5703.9697f, 5996.7651f, 371.4409f, 471.0789f, 896.4924f, 1197.7544f,
- 1400.8007f, 1611.1555f, 1867.3550f, 2818.4475f, 3002.5906f, 3250.1440f,
- 3546.5891f, 4265.0371f, 4890.3369f, 5274.4722f, 5659.3560f, 5946.9644f,
- 330.9331f, 448.7211f, 808.3973f, 978.2021f, 1652.6361f, 1969.0725f,
- 2357.0146f, 2680.4792f, 2859.9165f, 3078.9578f, 3423.6895f, 4233.3169f,
- 4856.7813f, 5086.5723f, 5393.9961f, 5938.6035f, 323.9659f, 433.8731f,
- 1045.5168f, 1369.1907f, 1561.9178f, 1984.2457f, 2224.0959f, 2747.3657f,
- 2995.0359f, 3242.9248f, 3501.0344f, 4022.2388f, 4847.4985f, 5210.9922f,
- 5658.1357f, 6005.0718f, 354.6574f, 501.6520f, 852.5305f, 1020.8707f,
- 1540.5925f, 1998.5675f, 2253.1487f, 2845.3960f, 3056.5273f, 3305.0466f,
- 3954.2900f, 4591.7471f, 4915.2856f, 5221.9082f, 5544.7285f, 5879.9150f,
- 363.1311f, 474.7310f, 907.5490f, 1106.8586f, 1367.2662f, 1646.6934f,
- 2031.3650f, 2326.4382f, 2568.6519f, 3030.1091f, 3905.6482f, 4265.9111f,
- 4716.1831f, 5017.0454f, 5469.8149f, 5958.6182f, 379.9262f, 524.4459f,
- 845.4813f, 1275.4414f, 1458.2488f, 1772.5863f, 2067.7981f, 2526.8850f,
- 3066.4063f, 3307.8713f, 3807.2900f, 4199.1509f, 4452.4653f, 4854.7471f,
- 5464.8833f, 5947.7842f, 371.8218f, 483.9148f, 778.2747f, 1208.0812f,
- 1366.3983f, 1623.4895f, 1798.8777f, 2224.6445f, 3103.7175f, 3386.0408f,
- 3782.8284f, 4307.4727f, 4698.8994f, 5118.1255f, 5505.1919f, 5921.1724f,
- 217.9059f, 323.3224f, 639.7305f, 1026.5331f, 1312.9242f, 1885.6948f,
- 2361.8403f, 2805.5396f, 3213.2600f, 3631.5017f, 4033.4087f, 4426.3423f,
- 4821.3203f, 5208.3833f, 5590.5205f, 5956.1538f, 211.9971f, 311.2018f,
- 504.6345f, 858.3289f, 1574.7019f, 1934.9866f, 2381.4163f, 2786.2043f,
- 3238.9326f, 3611.0518f, 4005.2578f, 4401.0615f, 4802.1479f, 5192.5493f,
- 5587.1479f, 5965.5977f, 219.3884f, 319.3835f, 604.0102f, 1114.8630f,
- 1481.3870f, 2036.0469f, 2303.4883f, 2616.1384f, 3253.6335f, 3556.5107f,
- 3946.6567f, 4520.3555f, 5091.0479f, 5416.3037f, 5748.5737f, 5946.5757f,
- 350.3716f, 515.4462f, 756.5206f, 1061.4270f, 1251.9570f, 1723.2751f,
- 2687.6689f, 3036.2019f, 3273.9678f, 3744.2939f, 4098.6284f, 4391.4160f,
- 4917.6777f, 5244.2852f, 5551.4976f, 5880.1572f, 311.6069f, 458.7317f,
- 795.9418f, 969.5021f, 1511.2507f, 1952.5673f, 2273.6116f, 2795.8657f,
- 3049.7053f, 3578.0598f, 3911.1873f, 4327.2598f, 4735.3105f, 5122.3423f,
- 5479.7817f, 5858.1504f, 267.8399f, 390.6757f, 886.2357f, 1179.5110f,
- 1466.6409f, 2088.7725f, 2328.1262f, 2993.5786f, 3283.5256f, 3593.2822f,
- 4095.7588f, 4500.4009f, 4887.5132f, 5219.0859f, 5553.4224f, 5915.6831f,
- 279.2209f, 413.3200f, 648.4438f, 1282.1798f, 1793.2556f, 1952.1060f,
- 2484.9436f, 2857.3630f, 3077.2114f, 3548.2585f, 4045.4526f, 4309.5947f,
- 4760.2900f, 5208.1948f, 5620.9717f, 5968.3237f, 306.2321f, 424.7843f,
- 618.7867f, 1288.7572f, 2110.7849f, 2346.5396f, 2582.5366f, 2833.5730f,
- 3074.3774f, 3464.7886f, 3984.6379f, 4262.0337f, 4601.5132f, 4999.6992f,
- 5498.8926f, 5920.4814f, 259.2613f, 353.6931f, 762.5328f, 1906.2162f,
- 2088.1213f, 2317.9741f, 2546.5935f, 2880.3687f, 3332.0002f, 3636.9216f,
- 3946.4287f, 4226.0356f, 4502.1084f, 5007.0601f, 5496.4824f, 5924.8877f,
- 244.3871f, 357.0287f, 1114.7865f, 1651.1329f, 1850.2976f, 2200.5942f,
- 2484.7026f, 2872.6968f, 3092.8455f, 3373.5869f, 3707.5891f, 4180.1289f,
- 4603.5298f, 5132.2671f, 5554.7617f, 5973.5220f, 700.5439f, 1363.5277f,
- 1745.2494f, 2081.9539f, 2379.8628f, 2623.6003f, 2883.6484f, 3133.9824f,
- 3457.7092f, 3819.0100f, 4191.0537f, 4547.0400f, 4912.5127f, 5241.3423f,
- 5594.9395f, 5930.6099f, 268.7704f, 370.8200f, 609.4679f, 1558.5339f,
- 1961.6279f, 2155.8916f, 2419.4485f, 2655.5103f, 3152.6685f, 3426.9221f,
- 3716.8181f, 4107.1616f, 4965.5698f, 5384.2026f, 5706.7183f, 6015.6196f,
- 305.7638f, 395.9599f, 1103.0944f, 1383.6494f, 1612.9742f, 1915.2496f,
- 2189.8008f, 2555.3608f, 2720.8220f, 3038.2434f, 3927.1301f, 4263.0518f,
- 4685.7217f, 4984.1377f, 5272.6162f, 5984.5376f, 294.0385f, 426.7762f,
- 814.5162f, 1056.9037f, 1715.3539f, 2005.3177f, 2316.4392f, 2647.4297f,
- 2893.8242f, 3196.7476f, 3720.0044f, 4186.9790f, 4840.4512f, 5290.1250f,
- 5684.2139f, 5967.5859f, 359.5141f, 517.6051f, 807.4898f, 1143.5930f,
- 1328.1393f, 1814.7098f, 2309.8894f, 2618.8655f, 3160.5962f, 3445.0479f,
- 3883.2664f, 4235.5200f, 4718.7324f, 5367.3608f, 5765.9331f, 6034.9233f,
- 241.5752f, 375.5109f, 818.8776f, 1298.7773f, 1656.9050f, 2169.8962f,
- 2565.1440f, 3015.9919f, 3437.9463f, 3863.8203f, 4254.4023f, 4637.0952f,
- 5027.8252f, 5358.3784f, 5685.5000f, 5980.4063f, 322.5406f, 454.9644f,
- 963.3659f, 1513.8885f, 1704.5070f, 2235.6599f, 2523.6467f, 2995.0757f,
- 3287.8682f, 3552.8811f, 3872.4360f, 4201.2227f, 4571.9087f, 5066.6792f,
- 5562.1206f, 5935.7900f, 412.5748f, 615.8419f, 1126.9519f, 1455.5172f,
- 1653.3076f, 1965.2689f, 2240.6904f, 2672.5129f, 3127.3301f, 3477.8540f,
- 3983.6145f, 4458.6558f, 4896.7998f, 5237.9814f, 5609.1597f, 5939.6416f,
- 342.1361f, 470.6100f, 958.3576f, 1195.0166f, 1426.4667f, 1684.2009f,
- 2194.0950f, 2545.9453f, 2946.1851f, 3415.2820f, 3657.4158f, 4408.6763f,
- 5097.2251f, 5404.2202f, 5719.9829f, 5977.7959f, 297.8767f, 386.6347f,
- 1095.8346f, 1454.3085f, 1651.6417f, 1927.9633f, 2198.4927f, 2583.1694f,
- 2757.0144f, 3009.6497f, 3310.9514f, 3956.9753f, 4677.3208f, 5122.2222f,
- 5539.0688f, 5993.0542f, 334.7170f, 450.1582f, 747.3162f, 1560.2024f,
- 1808.2147f, 2006.5011f, 2415.2419f, 2680.1956f, 3016.5549f, 3651.1340f,
- 3975.3625f, 4209.6563f, 4531.0396f, 5121.7212f, 5585.2202f, 5962.3667f,
- 256.4101f, 495.5723f, 1341.4860f, 1805.1255f, 2201.8318f, 2514.7769f,
- 2820.4092f, 3102.3867f, 3414.3872f, 3754.7742f, 4108.2378f, 4465.9258f,
- 4857.4355f, 5216.2144f, 5592.3076f, 5951.9995f, 530.7974f, 1017.4255f,
- 1463.9575f, 1858.6631f, 2360.1265f, 2770.3811f, 3106.0894f, 3379.1919f,
- 3647.7175f, 3895.9026f, 4188.8652f, 4522.8984f, 4893.7954f, 5241.4312f,
- 5623.8994f, 5975.3608f, 597.1553f, 1198.0758f, 1722.7361f, 2128.6658f,
- 2519.1504f, 2825.5122f, 3086.1943f, 3330.0283f, 3608.2961f, 3906.9929f,
- 4241.8105f, 4603.1694f, 4972.8159f, 5308.1670f, 5651.1968f, 5976.6704f,
- 699.1581f, 1293.3193f, 1637.3395f, 1912.7987f, 2163.3445f, 2425.7944f,
- 2704.0396f, 3006.5984f, 3358.2126f, 3746.1548f, 4125.0762f, 4489.7485f,
- 4854.0088f, 5188.5146f, 5558.2056f, 5913.3164f, 489.0107f, 921.4806f,
- 1329.8511f, 1644.8383f, 2013.6794f, 2365.2683f, 2746.1553f, 3085.6912f,
- 3457.0234f, 3825.2183f, 4203.4224f, 4575.9331f, 4950.6606f, 5298.7559f,
- 5659.8618f, 5997.0015f, 230.3653f, 389.8415f, 938.1970f, 1294.3594f,
- 1768.8275f, 2189.1001f, 2597.3755f, 2985.8518f, 3323.6023f, 3705.8533f,
- 4065.5361f, 4446.4224f, 4818.4502f, 5185.9634f, 5583.2168f, 5954.2573f,
- 283.9404f, 400.2146f, 630.6198f, 1491.5646f, 2295.1375f, 2496.3457f,
- 2726.5803f, 2971.1951f, 3207.2317f, 3634.5439f, 4178.0376f, 4423.5537f,
- 4836.2109f, 5172.1821f, 5464.0454f, 5777.5801f, 242.6232f, 351.1541f,
- 807.9852f, 1621.9950f, 2043.8676f, 2532.5122f, 2860.5505f, 3200.3403f,
- 3499.8274f, 3760.3772f, 4068.9617f, 4410.7339f, 4778.8413f, 5153.0142f,
- 5553.1997f, 5932.5996f, 227.3320f, 323.2667f, 752.3189f, 1572.3750f,
- 1930.6083f, 2355.0117f, 2717.6223f, 2968.3215f, 3233.4026f, 3551.9622f,
- 3918.5608f, 4346.0190f, 4778.6880f, 5159.6172f, 5568.5566f, 5980.8086f,
- 307.9120f, 439.7297f, 660.0276f, 1243.3854f, 1532.3577f, 1796.3936f,
- 2437.3232f, 2691.4072f, 3030.3025f, 3524.1379f, 3771.7576f, 4083.2375f,
- 4601.1567f, 4963.4697f, 5434.8530f, 5942.8315f};
+ 377.3749f, 688.0079f, 1147.3799f, 1461.0438f, 1786.7794f, 2143.6711f,
+ 2522.1946f, 2889.7402f, 3263.6023f, 3628.4624f, 4005.4351f, 4379.4170f,
+ 4783.9556f, 5157.1753f, 5555.1797f, 5926.6816f, 601.5123f, 1066.8242f,
+ 1384.3585f, 1652.9448f, 1978.3910f, 2311.2676f, 2674.0537f, 3010.3896f,
+ 3360.0623f, 3725.9336f, 4093.3335f, 4470.6431f, 4859.1006f, 5210.4717f,
+ 5598.3716f, 5954.4204f, 552.5036f, 859.7047f, 1355.2023f, 1624.9041f,
+ 1887.5609f, 2173.1638f, 2540.7429f, 2926.8169f, 3323.2173f, 3680.7197f,
+ 4008.3447f, 4330.8442f, 4692.8228f, 5033.9697f, 5443.3467f, 5875.4497f,
+ 459.4534f, 793.3189f, 1293.7278f, 1617.3970f, 1920.0642f, 2192.2153f,
+ 2487.5627f, 2772.1514f, 3111.3823f, 3461.2671f, 3867.0176f, 4279.8550f,
+ 4741.0664f, 5141.0181f, 5552.8237f, 5933.6934f, 327.9834f, 430.4954f,
+ 723.9031f, 1528.6172f, 1763.1125f, 2013.7936f, 2334.2153f, 2569.0334f,
+ 3017.9436f, 3308.0610f, 3591.7820f, 3865.5430f, 4693.5786f, 5286.7646f,
+ 5647.7036f, 5987.2305f, 455.0753f, 606.0817f, 963.7564f, 1374.9937f,
+ 1536.4897f, 1914.7618f, 2376.9631f, 2580.8184f, 2989.1501f, 3258.8386f,
+ 3485.1460f, 3741.1270f, 4297.4912f, 5207.3779f, 5672.3818f, 5980.5322f,
+ 434.9507f, 558.8508f, 890.7061f, 1355.7625f, 1552.6155f, 1895.7960f,
+ 2222.5579f, 2502.6079f, 2841.8738f, 3137.5264f, 3367.7336f, 3860.7769f,
+ 4795.2554f, 5090.9370f, 5421.8218f, 5874.4287f, 281.0164f, 404.5417f,
+ 729.2898f, 997.1851f, 1699.8862f, 1961.3673f, 2255.7202f, 2540.9187f,
+ 2804.4553f, 3057.1843f, 3750.2288f, 4340.9893f, 4716.8647f, 5002.7471f,
+ 5477.2998f, 5965.7402f, 372.2410f, 505.3570f, 762.3755f, 997.3586f,
+ 1174.4255f, 1986.1741f, 2368.1367f, 2624.1733f, 3194.6084f, 3403.2793f,
+ 3877.7622f, 4425.7676f, 4824.7837f, 5158.1606f, 5532.7466f, 5893.5483f,
+ 367.3766f, 501.1806f, 824.5358f, 1090.6857f, 1271.9792f, 1527.7137f,
+ 2381.4382f, 2694.4634f, 2964.5359f, 3639.4832f, 3946.4038f, 4254.3916f,
+ 4645.8076f, 5033.5396f, 5373.8735f, 5878.4385f, 229.4505f, 352.5671f,
+ 701.0831f, 1226.4518f, 1678.3601f, 1895.7949f, 2140.0664f, 2526.5515f,
+ 3080.3391f, 3297.8284f, 3845.3987f, 4427.9785f, 4704.4551f, 4997.4155f,
+ 5434.0698f, 5918.4785f, 336.3082f, 516.7915f, 881.9847f, 1272.5824f,
+ 1505.1870f, 1880.7520f, 2274.9458f, 2611.0083f, 3126.5256f, 3655.5332f,
+ 4183.3877f, 4668.2993f, 5004.0029f, 5305.3491f, 5650.4985f, 5943.7383f,
+ 296.0867f, 469.6519f, 956.5997f, 1224.1262f, 1443.0049f, 1727.6880f,
+ 2216.1677f, 2689.3677f, 3060.4456f, 3520.9438f, 3916.6050f, 4343.7954f,
+ 4763.8906f, 5156.0132f, 5553.8115f, 5936.9634f, 407.1503f, 577.5120f,
+ 839.7361f, 1455.3907f, 1665.2137f, 1935.0054f, 2398.0537f, 2652.2605f,
+ 3111.1831f, 3505.5962f, 3766.7554f, 4204.8730f, 4699.1631f, 4970.8652f,
+ 5295.5962f, 5695.6919f, 281.0083f, 361.8386f, 950.9102f, 1464.1158f,
+ 1634.7019f, 1965.4950f, 2211.1406f, 2662.1055f, 2846.0122f, 3585.8884f,
+ 4048.7148f, 4358.9150f, 4683.8755f, 5046.0908f, 5400.0859f, 5956.1040f,
+ 279.1811f, 393.9142f, 876.8306f, 1502.2417f, 1673.0590f, 2288.7161f,
+ 2545.3674f, 3028.9507f, 3517.5840f, 3824.4246f, 4144.8486f, 4481.8140f,
+ 4821.2769f, 5162.3975f, 5542.8560f, 5928.5854f, 379.7892f, 500.9199f,
+ 725.0223f, 998.7143f, 1179.6127f, 1771.9886f, 2775.4812f, 3136.8457f,
+ 3378.6143f, 3674.0188f, 3946.3604f, 4184.4824f, 4521.5454f, 4934.8940f,
+ 5315.5029f, 5759.7544f, 317.4339f, 442.2628f, 778.7388f, 1167.8633f,
+ 1356.1576f, 1578.5603f, 1840.1584f, 2870.7527f, 3236.1504f, 3502.7249f,
+ 3876.3696f, 4100.5244f, 4650.2632f, 5235.1890f, 5665.2285f, 5999.0649f,
+ 350.2696f, 492.2163f, 763.0640f, 1264.7550f, 1515.0244f, 1755.7783f,
+ 2489.3274f, 2898.6252f, 3143.1018f, 3643.0640f, 4035.0657f, 4255.0889f,
+ 4641.7231f, 5138.5107f, 5557.1318f, 5920.2402f, 301.3833f, 464.9852f,
+ 762.3419f, 1012.2126f, 1803.5172f, 2192.4214f, 2651.6287f, 3013.6697f,
+ 3251.3591f, 3539.4675f, 3946.3433f, 4469.3560f, 4890.7446f, 5200.4878f,
+ 5509.6753f, 5910.2397f, 253.1752f, 356.8990f, 630.3325f, 1163.1683f,
+ 1528.6230f, 2023.4438f, 2488.6001f, 2745.5627f, 2933.7024f, 3237.4414f,
+ 3976.9258f, 4415.2534f, 4789.9131f, 5194.3423f, 5714.6445f, 6032.4160f,
+ 265.1815f, 364.7549f, 590.0148f, 805.2595f, 1564.7582f, 2150.6536f,
+ 2365.6501f, 2598.7876f, 2861.5334f, 3514.1265f, 4005.6328f, 4609.3091f,
+ 4955.4478f, 5238.4116f, 5519.5884f, 5890.7925f, 209.3544f, 313.1497f,
+ 503.2642f, 949.4504f, 1729.7280f, 1912.6814f, 2117.5051f, 2498.6272f,
+ 3284.6587f, 3810.8555f, 4105.0195f, 4349.5151f, 4770.3682f, 5210.2910f,
+ 5585.1533f, 5970.3638f, 302.3150f, 415.6502f, 684.1018f, 922.3598f,
+ 1489.4418f, 2235.6252f, 2449.9773f, 2800.6938f, 3061.3721f, 3526.1001f,
+ 3905.8174f, 4170.7891f, 4446.4209f, 4907.9937f, 5470.7158f, 5914.7261f,
+ 264.9068f, 366.4342f, 582.8182f, 790.8568f, 1619.4548f, 2034.0782f,
+ 2337.6724f, 2632.1714f, 2933.2356f, 3430.1858f, 3815.0198f, 4276.3931f,
+ 4748.3149f, 5164.0098f, 5553.3320f, 5974.9092f, 249.6359f, 361.9234f,
+ 581.9844f, 841.1097f, 1657.5543f, 2184.4114f, 2525.9739f, 2820.0503f,
+ 3120.7190f, 3623.7678f, 4050.5435f, 4434.5742f, 4802.6782f, 5171.8438f,
+ 5575.0068f, 5963.7402f, 290.1085f, 404.2538f, 664.1223f, 878.2748f,
+ 1237.1085f, 2237.4707f, 2497.5647f, 2957.7786f, 3289.3928f, 3626.5276f,
+ 4190.9243f, 4594.6450f, 4981.7456f, 5283.5513f, 5617.1538f, 5938.3760f,
+ 182.7846f, 270.3831f, 490.2131f, 1070.2524f, 1674.5724f, 2092.4905f,
+ 2524.1472f, 2929.3523f, 3334.8005f, 3712.0061f, 4101.2896f, 4475.7324f,
+ 4866.1919f, 5231.7559f, 5606.4077f, 5960.9644f, 286.7701f, 386.1487f,
+ 577.4210f, 764.3087f, 1151.2404f, 2014.4502f, 2399.8547f, 2879.0371f,
+ 3160.2502f, 3450.6274f, 3869.8240f, 4368.3618f, 4816.7861f, 5187.6450f,
+ 5564.7231f, 5962.0386f, 179.9538f, 266.0682f, 647.9122f, 1380.2810f,
+ 1776.1240f, 2208.4592f, 2590.6843f, 2993.6758f, 3368.2034f, 3753.2156f,
+ 4125.2124f, 4508.6050f, 4878.9932f, 5249.3291f, 5612.5049f, 5965.2134f,
+ 309.2416f, 434.7111f, 724.6614f, 936.5360f, 1264.9886f, 2272.1338f,
+ 2548.4519f, 2904.0798f, 3313.4990f, 3579.7854f, 3914.5811f, 4297.5938f,
+ 4756.9072f, 5163.2017f, 5592.2822f, 5943.7222f, 256.9009f, 393.7155f,
+ 769.3966f, 1200.9640f, 1774.4797f, 2307.9629f, 2794.6799f, 3165.9431f,
+ 3507.7952f, 3840.5791f, 4142.8877f, 4453.5078f, 4790.6973f, 5142.6123f,
+ 5530.5977f, 5923.2188f, 394.1425f, 602.0079f, 934.5173f, 1352.9718f,
+ 1813.9639f, 2172.5435f, 2603.7295f, 2963.9590f, 3335.2344f, 3732.0515f,
+ 4120.0151f, 4487.9668f, 4877.6294f, 5238.9336f, 5596.1479f, 5939.6489f,
+ 373.0307f, 665.4328f, 1227.4684f, 1524.6017f, 1947.3784f, 2361.6384f,
+ 2778.1921f, 3134.5396f, 3462.3992f, 3752.4592f, 4069.0352f, 4404.2720f,
+ 4782.2241f, 5145.0581f, 5541.9980f, 5932.9136f, 449.9942f, 814.1862f,
+ 1344.2784f, 1682.7061f, 2086.3599f, 2486.9709f, 2916.1177f, 3265.9099f,
+ 3616.3977f, 3919.6345f, 4218.5342f, 4519.2207f, 4857.5220f, 5193.5269f,
+ 5573.7339f, 5934.5400f, 531.4455f, 965.7403f, 1458.5353f, 1773.3784f,
+ 2236.0146f, 2650.9109f, 3099.2871f, 3467.1567f, 3809.7056f, 4094.6472f,
+ 4378.5811f, 4660.2471f, 4962.5078f, 5270.9863f, 5629.4160f, 5973.6450f,
+ 565.5986f, 1091.1300f, 1561.4944f, 1983.5482f, 2492.8821f, 2897.5085f,
+ 3233.5361f, 3539.8831f, 3838.6494f, 4093.4460f, 4372.1924f, 4678.2251f,
+ 4999.2646f, 5325.0371f, 5672.8887f, 5998.9990f, 581.0623f, 976.0275f,
+ 1447.0302f, 1779.9243f, 2148.2158f, 2543.8347f, 2979.5061f, 3373.6099f,
+ 3796.8259f, 4164.8242f, 4510.5493f, 4853.5527f, 5175.6318f, 5465.3647f,
+ 5763.2334f, 6050.6582f, 429.4613f, 802.5781f, 1229.0529f, 1512.6678f,
+ 1835.8625f, 2216.9915f, 2625.3999f, 2995.9927f, 3379.5146f, 3764.7837f,
+ 4156.1382f, 4532.4570f, 4906.4678f, 5262.8960f, 5626.6519f, 5970.6504f,
+ 224.5468f, 328.6938f, 615.8844f, 1207.4470f, 1520.9565f, 1865.9806f,
+ 2182.4731f, 2431.4897f, 3239.3486f, 3490.9065f, 3775.7139f, 4291.4312f,
+ 4740.0815f, 5192.0786f, 5532.9302f, 5928.7236f, 312.1133f, 424.3103f,
+ 716.4448f, 921.9969f, 1244.5491f, 2017.9143f, 2248.4170f, 2840.0688f,
+ 3138.9390f, 3399.7288f, 3723.3479f, 3999.6824f, 4582.2339f, 5148.5166f,
+ 5631.8989f, 6000.7192f, 373.5378f, 506.7356f, 789.6149f, 942.6201f,
+ 1695.8035f, 2021.6426f, 2323.3867f, 2649.5979f, 2853.1729f, 3169.5815f,
+ 3524.9375f, 3848.6399f, 4261.7319f, 4978.9668f, 5505.4004f, 5924.7939f,
+ 503.2296f, 724.8124f, 940.3833f, 1220.5646f, 1439.8641f, 1726.9827f,
+ 2215.5464f, 2476.0925f, 2846.8127f, 3232.0950f, 3638.5989f, 3986.3333f,
+ 4371.3052f, 5022.0664f, 5657.4897f, 6040.3452f, 398.3355f, 530.8898f,
+ 835.5377f, 1058.3699f, 1327.2036f, 1814.9178f, 2114.2439f, 2515.8892f,
+ 2754.9077f, 3094.8794f, 3598.7061f, 3981.2385f, 4605.9160f, 5110.8364f,
+ 5550.1899f, 5953.9600f, 327.7583f, 454.8903f, 825.9029f, 1025.4349f,
+ 1321.1567f, 1551.4836f, 1978.2037f, 2838.9021f, 3111.9041f, 3417.3940f,
+ 3841.0564f, 4696.0547f, 5126.1641f, 5409.5347f, 5711.7163f, 5968.3394f,
+ 327.1260f, 431.3983f, 721.9533f, 871.1266f, 1507.7616f, 1847.8716f,
+ 2144.9641f, 2491.1108f, 2702.0847f, 3483.1516f, 3917.5173f, 4254.1260f,
+ 4704.4863f, 4981.6284f, 5450.1035f, 5937.7861f, 443.5867f, 610.7686f,
+ 818.9614f, 999.3525f, 1181.9182f, 1884.4948f, 2243.3950f, 2522.8867f,
+ 2993.8594f, 3196.6631f, 3835.5020f, 4233.2568f, 4506.8604f, 4985.0249f,
+ 5544.1382f, 5980.0083f, 395.7788f, 582.9504f, 822.1151f, 1013.0453f,
+ 1224.6812f, 1988.4263f, 2452.4744f, 2686.4263f, 2952.8831f, 3135.0867f,
+ 3562.5471f, 4006.6929f, 4401.7471f, 5038.5654f, 5567.4189f, 5986.0850f,
+ 264.3071f, 372.0398f, 616.4940f, 842.1705f, 1350.0250f, 1822.1957f,
+ 2165.8896f, 2662.2937f, 3055.4390f, 3502.6787f, 3923.4236f, 4352.6587f,
+ 4772.5068f, 5158.1309f, 5573.9385f, 5972.6895f, 218.7390f, 325.2024f,
+ 635.0441f, 1103.4701f, 1636.4287f, 2070.2615f, 2274.2910f, 2453.2002f,
+ 3069.4382f, 3615.7065f, 3980.0811f, 4484.8662f, 4848.6416f, 5093.7163f,
+ 5522.6973f, 5907.4048f, 260.0797f, 461.2137f, 1049.2261f, 1334.1865f,
+ 1628.6233f, 2014.9823f, 2413.4802f, 2844.4973f, 3232.3040f, 3661.0122f,
+ 4069.8274f, 4466.5210f, 4857.6553f, 5234.4463f, 5608.4517f, 5954.7920f,
+ 301.7969f, 406.3861f, 706.7324f, 1387.1207f, 1581.4719f, 2004.7585f,
+ 2291.9421f, 2548.9978f, 3076.8755f, 3343.1306f, 3623.1770f, 4279.7432f,
+ 4777.6563f, 5084.3960f, 5473.4536f, 5872.0615f, 344.0269f, 472.3550f,
+ 776.6819f, 1455.1270f, 1611.6870f, 2012.4386f, 2417.4033f, 2621.8564f,
+ 3318.9663f, 3709.0132f, 3944.1958f, 4299.0293f, 4776.4038f, 5184.1089f,
+ 5545.5454f, 5913.9531f, 332.1463f, 433.0623f, 992.1605f, 1254.8217f,
+ 1498.4819f, 1824.6357f, 2118.3374f, 2444.6484f, 2684.8369f, 2930.4683f,
+ 3557.4851f, 4292.9014f, 4786.7251f, 5138.2168f, 5616.2739f, 5996.8369f,
+ 281.7202f, 372.7708f, 1074.7051f, 1443.0428f, 1687.6460f, 1980.7075f,
+ 2275.4241f, 2632.2017f, 2848.1765f, 3118.7881f, 3628.5857f, 4522.9585f,
+ 4876.2163f, 5177.2739f, 5600.6675f, 5960.9634f, 412.0151f, 535.6881f,
+ 768.8618f, 1462.2601f, 1789.1055f, 1947.8196f, 2224.6890f, 2447.9089f,
+ 2834.6140f, 3472.6721f, 3729.8525f, 4008.2893f, 4525.7271f, 4822.9194f,
+ 5204.6611f, 5895.0942f, 263.8760f, 379.7789f, 825.0498f, 1113.1218f,
+ 1465.8749f, 1846.7463f, 2146.0496f, 2487.2766f, 2845.8447f, 3388.4800f,
+ 3883.8447f, 4440.7603f, 4867.0815f, 5214.7280f, 5535.8149f, 5906.9932f,
+ 409.8116f, 583.7237f, 859.1983f, 1172.0491f, 1377.6473f, 1984.8322f,
+ 2361.7292f, 2688.9368f, 3238.6563f, 3542.6716f, 3944.3005f, 4441.0840f,
+ 4881.1211f, 5224.6045f, 5604.3711f, 5909.3657f, 318.0743f, 438.8244f,
+ 852.9153f, 1061.4503f, 1290.7609f, 1552.5408f, 2053.1118f, 2373.2883f,
+ 2926.1560f, 3452.9551f, 4098.6626f, 4585.2773f, 4967.0898f, 5271.2720f,
+ 5644.6709f, 5961.9585f, 370.3631f, 496.5860f, 932.6390f, 1213.4189f,
+ 1452.6641f, 1803.1532f, 2092.2354f, 2607.5247f, 2883.8086f, 3112.1086f,
+ 3687.5657f, 4525.1274f, 4846.9404f, 5130.0537f, 5416.4141f, 5804.5122f,
+ 247.8941f, 343.9862f, 751.6780f, 1526.2566f, 1712.5012f, 2038.0667f,
+ 2324.0371f, 2727.9749f, 3005.8975f, 3378.9817f, 3858.2002f, 4339.2017f,
+ 4716.4580f, 5125.0918f, 5564.3589f, 5969.7163f, 297.6552f, 401.7544f,
+ 891.9346f, 1380.2275f, 1540.3125f, 1782.6058f, 2009.2045f, 2614.2092f,
+ 2899.5396f, 3379.9722f, 3804.1169f, 4284.8540f, 4696.3335f, 5118.4551f,
+ 5525.9839f, 5934.2686f, 226.1444f, 333.4511f, 682.9995f, 1307.4166f,
+ 1554.1943f, 1849.3679f, 2116.3438f, 2756.3567f, 3204.3018f, 3540.4106f,
+ 4002.1895f, 4402.7734f, 4796.4395f, 5192.6812f, 5600.6841f, 5960.1855f,
+ 196.3791f, 299.9716f, 572.3173f, 1201.8826f, 1804.7235f, 2012.0171f,
+ 2264.7415f, 2790.3406f, 3272.6926f, 3668.4863f, 4063.0435f, 4442.4419f,
+ 4810.5957f, 5156.0923f, 5512.8501f, 5900.7441f, 280.1911f, 391.5190f,
+ 705.9903f, 1435.5063f, 1588.2345f, 2116.5032f, 2357.1875f, 2670.7461f,
+ 3299.0071f, 3507.9336f, 4044.3057f, 4591.9023f, 4981.4575f, 5281.1270f,
+ 5654.7158f, 5949.9263f, 262.5740f, 370.5089f, 654.7243f, 1278.9299f,
+ 1847.3096f, 2087.3394f, 2553.8892f, 2887.8269f, 3254.0747f, 3810.6626f,
+ 4258.4390f, 4528.8022f, 4872.9741f, 5206.0483f, 5565.2876f, 5918.5596f,
+ 193.6133f, 356.3127f, 1076.8109f, 1485.8608f, 1887.7994f, 2273.1333f,
+ 2676.7832f, 3052.3513f, 3419.1294f, 3792.5024f, 4161.7036f, 4532.6431f,
+ 4898.5176f, 5262.0498f, 5622.8901f, 5976.4863f, 302.7377f, 409.7598f,
+ 899.1851f, 1176.6501f, 1531.3615f, 1933.6494f, 2229.9561f, 2819.8936f,
+ 3031.6248f, 3807.0129f, 4118.7495f, 4412.7339f, 4704.6758f, 5012.0190f,
+ 5351.4160f, 5892.3232f, 421.1889f, 587.3521f, 835.9208f, 1248.0127f,
+ 1475.8882f, 1779.3772f, 2330.6294f, 2606.6780f, 3026.0417f, 3513.8035f,
+ 3754.6023f, 4081.0518f, 4536.3438f, 4815.9336f, 5117.6392f, 5802.9902f,
+ 378.0719f, 722.0884f, 1327.5808f, 1665.8940f, 1954.7782f, 2238.9473f,
+ 2608.8538f, 2958.7910f, 3341.5112f, 3721.2021f, 4095.8457f, 4457.6865f,
+ 4843.8672f, 5212.5142f, 5589.5122f, 5945.3730f, 468.4631f, 962.3222f,
+ 1541.0238f, 1919.1746f, 2347.4365f, 2650.7366f, 2927.5945f, 3166.4202f,
+ 3451.0664f, 3757.8477f, 4109.2383f, 4467.9443f, 4858.6045f, 5211.8428f,
+ 5593.3311f, 5951.0137f, 422.2508f, 845.8956f, 1495.2552f, 1811.3933f,
+ 2128.1157f, 2371.2532f, 2656.0715f, 2942.9011f, 3294.5308f, 3652.0935f,
+ 4031.2534f, 4399.2222f, 4801.9497f, 5163.3721f, 5559.4517f, 5934.4063f,
+ 423.1028f, 661.7286f, 991.1974f, 1204.3813f, 1472.8564f, 2003.0298f,
+ 2443.5833f, 2789.2795f, 3354.1692f, 3722.7822f, 4032.7351f, 4320.9727f,
+ 4621.8140f, 4963.7310f, 5429.8203f, 5900.1465f, 361.2513f, 485.9720f,
+ 828.4865f, 1340.9952f, 1497.8477f, 2072.8511f, 2437.9839f, 2674.9912f,
+ 3259.3357f, 3539.0474f, 3789.1389f, 4087.5015f, 4404.8867f, 4771.0947f,
+ 5500.2227f, 6015.7041f, 301.8146f, 392.9569f, 685.1938f, 1783.6246f,
+ 2034.8542f, 2257.1614f, 2519.8713f, 2782.6279f, 3152.1135f, 3400.8662f,
+ 3614.3801f, 3906.7375f, 4233.1968f, 4712.3682f, 5596.0396f, 5998.5742f,
+ 242.0591f, 371.0809f, 729.0743f, 1190.6813f, 1851.5691f, 2132.6724f,
+ 2334.7773f, 2522.3608f, 3091.8643f, 3621.4614f, 3854.5227f, 4174.7017f,
+ 4490.7510f, 4780.1230f, 5157.6147f, 5865.4756f, 431.2477f, 562.1808f,
+ 888.5207f, 1034.2062f, 1443.2480f, 2109.8850f, 2337.1443f, 2829.1870f,
+ 3070.1301f, 3252.6370f, 3510.3967f, 4366.2236f, 4843.2139f, 5133.0537f,
+ 5549.8911f, 5850.3252f, 420.2594f, 668.9339f, 911.1281f, 1218.0372f,
+ 1806.5541f, 2050.8423f, 2394.5708f, 2761.3542f, 3021.1716f, 3414.0020f,
+ 3970.9626f, 4342.2900f, 4691.6074f, 5062.5386f, 5452.6655f, 5792.8384f,
+ 257.3011f, 370.8905f, 604.8825f, 1096.4209f, 1711.8464f, 1934.4335f,
+ 2319.4717f, 2769.0144f, 3019.0200f, 3354.3726f, 4119.8809f, 4354.8589f,
+ 4557.7979f, 4893.5776f, 5450.3042f, 5910.4136f, 241.4264f, 347.9253f,
+ 622.2432f, 1248.8121f, 1559.7318f, 1848.8098f, 2315.5635f, 2571.5894f,
+ 2879.5754f, 3624.1069f, 3968.0334f, 4238.9727f, 4713.4746f, 5156.6792f,
+ 5568.5596f, 5975.8716f, 478.7131f, 629.4184f, 918.1857f, 1342.7815f,
+ 1535.1541f, 1803.0487f, 2483.7764f, 2724.4321f, 2998.1257f, 3634.9932f,
+ 3915.9443f, 4119.2837f, 4327.0283f, 4980.3516f, 5532.6880f, 5964.3052f,
+ 265.7818f, 373.8575f, 723.3755f, 1186.0619f, 1509.2827f, 2064.2075f,
+ 2298.1992f, 2566.4395f, 2785.7659f, 3423.1396f, 3883.9011f, 4136.8940f,
+ 4463.0386f, 5010.6592f, 5539.0337f, 5931.4414f, 221.4221f, 347.7610f,
+ 707.4465f, 1187.0800f, 1575.9095f, 1824.3983f, 1979.3307f, 2299.3174f,
+ 2967.6799f, 3472.3381f, 3955.8469f, 4292.6079f, 4794.8745f, 5127.5181f,
+ 5652.6729f, 5953.0132f, 397.2769f, 510.2605f, 746.8268f, 1588.0735f,
+ 1991.5200f, 2150.6843f, 2439.0486f, 2712.2754f, 2972.5825f, 3501.2673f,
+ 3917.5459f, 4143.6069f, 4443.4414f, 4829.1929f, 5490.0376f, 6028.3794f,
+ 280.5184f, 370.6464f, 640.7120f, 1721.3899f, 1948.9806f, 2149.9592f,
+ 2400.4678f, 2674.0542f, 3146.3154f, 3419.8850f, 3813.9553f, 4417.4497f,
+ 4818.3652f, 5139.6323f, 5465.0669f, 5879.7183f, 325.2418f, 431.2627f,
+ 1008.7708f, 1271.9235f, 1527.4150f, 2066.6370f, 2242.3311f, 2883.4065f,
+ 3180.6614f, 3352.5015f, 3756.9688f, 4386.6904f, 4857.6621f, 5189.2212f,
+ 5514.7573f, 5856.8086f, 451.8427f, 582.4401f, 925.8821f, 1363.4249f,
+ 1503.2460f, 1961.5940f, 2265.6001f, 2574.4414f, 3123.0769f, 3345.1587f,
+ 3634.3022f, 4266.0137f, 4880.8052f, 5223.5776f, 5567.8901f, 5880.3770f,
+ 411.0873f, 553.3847f, 809.2106f, 1023.4841f, 1189.0618f, 1786.0770f,
+ 2121.8489f, 2454.6458f, 2947.4700f, 3220.3210f, 3828.0911f, 4218.0229f,
+ 4831.2383f, 5322.1445f, 5727.3906f, 6033.3887f, 310.5608f, 442.2204f,
+ 742.7755f, 1097.5740f, 1340.9608f, 1854.4385f, 2261.6399f, 2634.8315f,
+ 3297.8879f, 3638.6956f, 3925.8770f, 4232.9146f, 4559.9287f, 4893.5830f,
+ 5403.0981f, 5917.7056f, 377.5583f, 488.4103f, 945.2491f, 1234.1572f,
+ 1416.0774f, 1666.5979f, 1932.9910f, 2746.2000f, 2997.4753f, 3216.6152f,
+ 3559.3999f, 3843.8130f, 4359.6626f, 5014.2920f, 5560.6162f, 5992.7212f,
+ 285.2173f, 389.6116f, 825.5790f, 1238.8229f, 1459.6588f, 1860.8855f,
+ 2178.6296f, 2519.1597f, 2828.0032f, 3278.8101f, 3560.8286f, 4142.0552f,
+ 4691.0698f, 5117.7778f, 5558.7944f, 5954.6680f, 465.7002f, 631.7491f,
+ 914.5521f, 1340.0057f, 1562.5760f, 1844.1741f, 2186.1208f, 2483.7080f,
+ 2901.9417f, 3190.3162f, 3474.7651f, 3873.4065f, 4240.1973f, 4761.1255f,
+ 5428.2832f, 5958.5273f, 340.5456f, 449.2341f, 793.7005f, 1387.7467f,
+ 1555.8701f, 1938.7877f, 2201.6155f, 2579.5762f, 2914.9724f, 3149.8584f,
+ 3699.3984f, 3985.6790f, 4331.7534f, 4999.4805f, 5514.6924f, 5969.4897f,
+ 395.8350f, 564.1188f, 774.8214f, 1276.3201f, 1721.8716f, 1864.0143f,
+ 2267.5696f, 2790.2031f, 3003.9434f, 3377.6140f, 3917.7395f, 4167.3867f,
+ 4465.2529f, 4936.1138f, 5464.0479f, 5905.0444f, 324.1844f, 443.0006f,
+ 728.8958f, 1398.6589f, 1584.1820f, 1923.8724f, 2348.0903f, 2561.5554f,
+ 3154.5991f, 3449.1746f, 3771.7927f, 4182.1899f, 4937.0791f, 5361.6509f,
+ 5727.7656f, 6002.7505f, 267.1790f, 373.7663f, 703.5949f, 1173.7009f,
+ 1390.2002f, 1905.7941f, 2177.4961f, 2703.2627f, 3022.9121f, 3308.9612f,
+ 3798.5823f, 4187.1533f, 4703.2163f, 5136.0918f, 5571.1655f, 5966.6577f,
+ 272.9294f, 399.3804f, 797.7335f, 1180.1516f, 1426.4850f, 2097.2839f,
+ 2355.4727f, 2793.8774f, 3137.1907f, 3458.7727f, 3893.6628f, 4245.8047f,
+ 4652.3794f, 5106.5293f, 5568.1885f, 5948.3169f, 324.5529f, 431.7663f,
+ 759.6147f, 1494.8739f, 1668.8168f, 2110.5635f, 2427.4104f, 2672.9270f,
+ 3170.5266f, 3448.2080f, 3717.1240f, 4034.2280f, 4375.3647f, 5041.1372f,
+ 5666.9517f, 6014.7217f, 306.4759f, 404.5361f, 795.7795f, 1675.9967f,
+ 1835.0950f, 2160.6624f, 2430.8855f, 2734.2646f, 3270.1426f, 3586.1355f,
+ 3821.9670f, 4102.0078f, 4372.9404f, 4918.9146f, 5412.0376f, 5868.5225f,
+ 421.3803f, 607.7995f, 813.0241f, 1286.8525f, 1827.2451f, 2026.8683f,
+ 2333.9453f, 2730.9817f, 2988.4067f, 3303.8513f, 3759.1897f, 4057.5264f,
+ 4441.5493f, 4890.0078f, 5212.0469f, 5672.2188f, 423.8560f, 599.5201f,
+ 829.0651f, 1082.6381f, 1245.9272f, 1623.7075f, 2453.0420f, 2855.6631f,
+ 3171.3855f, 3475.5881f, 3715.4219f, 3972.1326f, 4419.1597f, 4894.0283f,
+ 5363.8691f, 5919.2681f, 441.2789f, 634.8879f, 921.6287f, 1189.0240f,
+ 1368.7466f, 2012.1312f, 2383.7656f, 2638.5222f, 2975.0288f, 3163.6150f,
+ 3433.9958f, 3838.9917f, 4186.6426f, 4856.8477f, 5559.1196f, 5977.2290f,
+ 349.2039f, 466.2342f, 724.2582f, 904.4043f, 1190.4492f, 1981.7565f,
+ 2226.5554f, 2592.5098f, 2865.5525f, 3195.8196f, 3735.6345f, 4267.1660f,
+ 4810.9893f, 5207.5093f, 5605.1445f, 5952.0361f, 497.7713f, 719.9073f,
+ 925.0815f, 1146.3021f, 1326.7095f, 1574.5039f, 2306.7678f, 2714.8022f,
+ 2967.5190f, 3400.1121f, 3732.0544f, 3981.7878f, 4553.4819f, 5090.0869f,
+ 5426.2085f, 5833.5220f, 471.7526f, 648.3213f, 902.1542f, 1245.7086f,
+ 1423.3403f, 1701.1757f, 2125.8530f, 2407.0481f, 2969.5583f, 3294.1296f,
+ 3712.8398f, 4140.7930f, 4808.4668f, 5322.3896f, 5662.1255f, 5950.6211f,
+ 345.3843f, 485.9887f, 841.2579f, 1035.9401f, 1244.8905f, 1488.1833f,
+ 2340.4253f, 2607.0859f, 2845.4153f, 3223.1768f, 3557.0696f, 4119.7944f,
+ 4666.8896f, 5145.8589f, 5565.7534f, 5976.6875f, 332.4270f, 427.5984f,
+ 829.9191f, 1138.0469f, 1339.4468f, 1589.0535f, 1926.0630f, 2432.9331f,
+ 2699.7964f, 3311.4355f, 3716.1003f, 4270.4990f, 4760.3647f, 5208.3950f,
+ 5619.2080f, 5971.2715f, 249.0114f, 381.2982f, 925.7067f, 1520.3356f,
+ 1842.8396f, 2368.2908f, 2783.4033f, 3272.5757f, 3673.7402f, 4046.3950f,
+ 4370.4966f, 4688.0269f, 5002.6772f, 5316.3594f, 5650.2192f, 5977.6587f,
+ 263.3275f, 451.6255f, 1252.2307f, 1503.0652f, 1786.7695f, 2082.7554f,
+ 2451.1829f, 2804.7590f, 3116.7583f, 3493.8892f, 3884.6575f, 4349.6724f,
+ 4770.0156f, 5143.1636f, 5542.5913f, 5931.5522f, 252.9447f, 341.5762f,
+ 632.7664f, 1766.8096f, 2084.1511f, 2272.7332f, 2531.1006f, 2765.2080f,
+ 3134.5417f, 3380.6223f, 3640.8015f, 3932.7854f, 4532.1172f, 5245.2070f,
+ 5597.0776f, 5973.6831f, 234.9979f, 324.6731f, 1239.8643f, 1663.1921f,
+ 1858.7769f, 2171.1614f, 2403.8818f, 2680.6433f, 2836.4985f, 3192.6577f,
+ 3864.8811f, 4385.8066f, 4845.9766f, 5150.2412f, 5631.1519f, 6011.7773f,
+ 284.5302f, 410.1263f, 985.4119f, 1298.3987f, 1789.4304f, 1996.9287f,
+ 2450.8525f, 2831.6011f, 2994.2073f, 3214.1306f, 3525.0498f, 3819.9141f,
+ 4672.7544f, 5424.3545f, 5691.0732f, 5980.3096f, 244.2704f, 415.5891f,
+ 1038.3009f, 1317.5186f, 1686.4528f, 2081.3147f, 2476.9873f, 2959.5393f,
+ 3214.9561f, 3569.1431f, 3934.4736f, 4308.7114f, 4728.3687f, 5105.7964f,
+ 5488.1938f, 5908.9443f, 335.8417f, 468.3464f, 1003.6253f, 1275.0145f,
+ 1534.2854f, 1985.3167f, 2348.3411f, 2743.3169f, 2956.0967f, 3408.5063f,
+ 3866.8574f, 4287.0034f, 4556.7222f, 4922.7832f, 5259.7480f, 5800.2876f,
+ 388.2726f, 518.0591f, 832.5999f, 1325.0247f, 1528.8624f, 1808.1732f,
+ 2151.0820f, 2486.1331f, 2815.4980f, 3158.5391f, 3635.3606f, 3960.5383f,
+ 4671.7686f, 5371.8140f, 5777.8940f, 6056.4722f, 506.5153f, 673.0771f,
+ 900.0349f, 1154.2124f, 1378.2689f, 1786.9409f, 2081.9631f, 2398.6965f,
+ 2859.7441f, 3075.4841f, 3546.6563f, 4322.6694f, 4732.0049f, 4992.5542f,
+ 5267.5859f, 5807.1812f, 487.2466f, 653.6116f, 968.5656f, 1389.2708f,
+ 1601.5822f, 1910.9694f, 2282.4038f, 2608.7063f, 3032.6233f, 3361.9692f,
+ 3629.8552f, 3908.8335f, 4318.4009f, 4646.5781f, 5043.5962f, 5792.7393f,
+ 432.8733f, 591.7551f, 899.2619f, 1490.1176f, 1789.8751f, 2060.3750f,
+ 2434.8779f, 2840.3374f, 3122.1292f, 3472.8079f, 3830.8870f, 4097.2622f,
+ 4353.5464f, 4650.2075f, 4981.5752f, 5482.9565f, 378.4767f, 508.5656f,
+ 802.8280f, 947.2892f, 1532.0898f, 2038.8177f, 2349.1965f, 2650.2039f,
+ 2863.8018f, 3591.6697f, 3918.9211f, 4256.6255f, 4604.8467f, 4899.0996f,
+ 5237.6084f, 5791.5029f, 407.0908f, 546.0364f, 866.1215f, 1098.6927f,
+ 1347.2009f, 1657.1525f, 1965.5845f, 2717.7190f, 3033.4961f, 3509.9031f,
+ 3873.4150f, 4131.4438f, 4389.5693f, 4774.2295f, 5450.1768f, 5977.5151f,
+ 429.3459f, 568.8134f, 903.5659f, 1099.2942f, 1379.4979f, 2207.5940f,
+ 2479.9919f, 2780.9072f, 3206.3960f, 3425.4084f, 3682.5911f, 3950.1941f,
+ 4324.0840f, 4689.4922f, 5068.2534f, 5787.2852f, 371.9443f, 524.7249f,
+ 890.0464f, 1670.7485f, 1958.5308f, 2182.7007f, 2558.5007f, 2835.4937f,
+ 3192.0740f, 3634.4817f, 3950.0942f, 4259.6953f, 4628.0049f, 4999.1616f,
+ 5364.9893f, 5801.6855f, 323.1922f, 451.0327f, 787.1655f, 1011.6555f,
+ 1323.8138f, 2177.6636f, 2401.1392f, 2826.8796f, 3432.8999f, 3653.1851f,
+ 3883.9897f, 4082.7559f, 4361.6753f, 4635.1475f, 5084.7544f, 5823.3062f,
+ 377.0061f, 524.2181f, 743.6288f, 1378.9187f, 1857.6434f, 2056.4695f,
+ 2453.7949f, 2902.1995f, 3127.2651f, 3463.3523f, 3980.1316f, 4241.2578f,
+ 4528.5859f, 4881.4521f, 5239.3145f, 5580.5986f, 308.7965f, 403.7058f,
+ 705.9506f, 1823.8571f, 2126.9387f, 2369.2810f, 2647.2048f, 2855.8276f,
+ 3209.7708f, 3498.2310f, 3747.6047f, 3972.8647f, 4254.3325f, 4574.4292f,
+ 5087.3965f, 5890.4219f, 274.7571f, 383.7251f, 573.6029f, 1142.8372f,
+ 2151.7173f, 2558.8972f, 2751.9468f, 2987.4412f, 3234.3350f, 3526.0127f,
+ 3922.9927f, 4189.0249f, 4483.3774f, 4877.1860f, 5396.7798f, 5921.8125f,
+ 248.5916f, 423.6264f, 1260.9626f, 1696.0492f, 1972.9108f, 2298.5972f,
+ 2592.9307f, 2947.2292f, 3266.2227f, 3614.3572f, 3980.3892f, 4359.4067f,
+ 4770.2842f, 5158.9058f, 5554.6597f, 5936.9043f, 320.5471f, 429.6766f,
+ 657.1440f, 1390.1080f, 2194.6426f, 2507.6086f, 2712.3662f, 2980.3408f,
+ 3216.1682f, 3544.8467f, 3956.9790f, 4227.5308f, 4463.7563f, 4745.7124f,
+ 5088.6650f, 5525.8516f, 245.5478f, 520.3131f, 1177.0693f, 1454.0125f,
+ 1770.2620f, 2160.8779f, 2551.2700f, 2950.2324f, 3326.8621f, 3710.4624f,
+ 4104.3936f, 4481.9971f, 4865.9736f, 5230.6396f, 5608.5649f, 5965.6162f,
+ 514.5864f, 956.9897f, 1287.9597f, 1520.3473f, 1802.0631f, 2116.4980f,
+ 2509.8552f, 2865.9822f, 3238.7510f, 3611.3108f, 4016.4353f, 4431.8457f,
+ 4860.3442f, 5231.4814f, 5614.6016f, 5963.9976f, 537.0523f, 932.2803f,
+ 1380.2690f, 1709.4702f, 2079.9902f, 2446.4014f, 2859.4204f, 3229.6975f,
+ 3623.4031f, 4012.5327f, 4373.7568f, 4724.3359f, 5078.2686f, 5397.6040f,
+ 5721.9639f, 6028.1167f, 452.5153f, 798.2777f, 1099.3080f, 1317.0807f,
+ 1652.6885f, 2059.7708f, 2471.0164f, 2808.5396f, 3146.5076f, 3494.0779f,
+ 3870.6912f, 4310.8281f, 4777.5024f, 5181.2617f, 5574.4912f, 5934.3813f,
+ 340.3716f, 430.5102f, 872.3513f, 1636.3792f, 1772.8615f, 2074.0161f,
+ 2295.1008f, 2693.0037f, 3177.7710f, 3391.7559f, 3670.8718f, 4224.3926f,
+ 4896.3877f, 5199.9883f, 5580.4512f, 5911.7671f, 317.8269f, 414.8185f,
+ 881.1970f, 1658.4944f, 1852.0098f, 2136.0415f, 2380.8228f, 2668.9141f,
+ 3046.8027f, 3299.0051f, 3523.0593f, 3758.9412f, 4116.9063f, 5061.2124f,
+ 5624.1777f, 5989.4761f, 374.0671f, 488.0840f, 734.0546f, 1415.9261f,
+ 1648.7783f, 1852.8462f, 2099.1895f, 2347.5562f, 2954.8359f, 3269.6714f,
+ 3536.7920f, 4116.1743f, 4481.4355f, 4913.8838f, 5467.2817f, 5909.8779f,
+ 340.4291f, 448.5775f, 1041.4979f, 1426.0011f, 1637.8165f, 1968.6743f,
+ 2210.7976f, 2647.5144f, 2913.8650f, 3131.7698f, 3429.8755f, 3722.6763f,
+ 4104.6479f, 4969.0093f, 5574.2231f, 5978.2070f, 254.2538f, 412.7710f,
+ 947.8206f, 1209.3683f, 1690.4813f, 2040.7881f, 2401.4314f, 2728.0066f,
+ 3016.2290f, 3530.3865f, 3964.6563f, 4393.6934f, 4804.2168f, 5187.9302f,
+ 5586.4399f, 5954.8950f, 241.0244f, 347.0750f, 835.2348f, 1601.9089f,
+ 1786.4336f, 2134.3950f, 2396.0139f, 2848.9712f, 3239.9138f, 3623.8250f,
+ 4029.5088f, 4400.3936f, 4797.3564f, 5195.7310f, 5596.6689f, 5965.9878f,
+ 309.3683f, 453.6776f, 812.9343f, 1125.9915f, 1423.5935f, 2149.2227f,
+ 2514.9277f, 3031.3599f, 3463.7219f, 3790.7839f, 4064.0039f, 4297.9839f,
+ 4653.4551f, 5189.7061f, 5721.2954f, 6033.0752f, 469.4284f, 730.1902f,
+ 973.0643f, 1170.5016f, 1572.2559f, 2084.2769f, 2567.8604f, 2963.4592f,
+ 3286.9617f, 3580.3228f, 3882.8706f, 4335.5483f, 4859.7197f, 5258.2827f,
+ 5627.9785f, 5957.8623f, 454.6165f, 795.2360f, 1078.7705f, 1294.9473f,
+ 1761.6650f, 2235.2788f, 2695.8455f, 3095.7695f, 3473.4897f, 3833.0889f,
+ 4185.7290f, 4528.9863f, 4893.0039f, 5240.7627f, 5608.8594f, 5951.0718f,
+ 563.4587f, 875.8987f, 1139.0026f, 1378.2317f, 1855.7401f, 2279.7683f,
+ 2651.3079f, 2968.4397f, 3279.4453f, 3607.2500f, 3975.5796f, 4358.3574f,
+ 4768.7969f, 5135.3706f, 5525.3501f, 5904.2617f, 461.7852f, 855.0644f,
+ 1367.4387f, 1702.5593f, 2141.0093f, 2500.9055f, 2853.8596f, 3123.9744f,
+ 3406.0178f, 3694.0481f, 4028.9985f, 4373.1113f, 4768.2891f, 5137.6895f,
+ 5541.3721f, 5921.4507f, 438.6031f, 753.0179f, 1269.3203f, 1630.4396f,
+ 2027.2959f, 2350.9695f, 2672.1396f, 2957.1809f, 3250.1545f, 3546.5315f,
+ 3894.0161f, 4249.9346f, 4666.2266f, 5061.2524f, 5490.7749f, 5904.6362f,
+ 543.3182f, 828.4835f, 1239.1818f, 1471.1134f, 1737.8622f, 2037.2484f,
+ 2434.5112f, 2801.3242f, 3162.3250f, 3508.1255f, 3849.0903f, 4165.7588f,
+ 4588.3809f, 5020.0952f, 5475.2813f, 5904.6377f, 519.5982f, 837.6639f,
+ 1171.2003f, 1363.0320f, 1617.4617f, 1976.1787f, 2472.0303f, 2901.3264f,
+ 3340.7300f, 3736.0830f, 4103.3843f, 4444.8657f, 4800.9482f, 5145.6011f,
+ 5544.2002f, 5933.0981f, 433.3774f, 582.7663f, 899.6142f, 1150.7437f,
+ 1321.1309f, 1947.8643f, 2557.8604f, 2733.1497f, 3240.4907f, 3634.7915f,
+ 3855.9856f, 4058.0281f, 4364.2568f, 5096.5225f, 5659.0952f, 6013.8145f,
+ 424.9731f, 604.3164f, 868.1793f, 1207.7882f, 1414.2374f, 1713.2893f,
+ 2520.2900f, 2960.8887f, 3210.8542f, 3584.5403f, 3914.5796f, 4149.8550f,
+ 4505.7705f, 4886.9575f, 5214.5361f, 5597.8389f, 347.0334f, 494.2440f,
+ 753.7191f, 1451.0435f, 1700.7461f, 1925.4844f, 2605.7988f, 2870.4744f,
+ 3173.7312f, 3758.7219f, 4112.1929f, 4400.3882f, 4866.1016f, 5165.8799f,
+ 5433.0371f, 5781.1509f, 318.4942f, 464.3939f, 783.5214f, 1491.0234f,
+ 1708.4984f, 2280.2876f, 2533.3354f, 2885.1736f, 3443.7451f, 3669.8506f,
+ 4000.6792f, 4269.6626f, 4571.2739f, 4827.2158f, 5277.3813f, 5850.4736f,
+ 386.8698f, 519.0056f, 725.0029f, 981.5649f, 1156.1665f, 1500.4691f,
+ 2421.7993f, 2962.4722f, 3175.0166f, 3548.4756f, 3860.7961f, 4146.4150f,
+ 4658.9897f, 5088.3999f, 5531.8945f, 5951.4624f, 315.9294f, 738.5538f,
+ 1171.9581f, 1553.7167f, 1949.9159f, 2319.6641f, 2707.5493f, 3069.2996f,
+ 3444.6157f, 3811.2139f, 4177.5469f, 4545.6943f, 4905.0444f, 5271.3926f,
+ 5622.6831f, 5974.4141f, 216.5136f, 598.1122f, 1059.3214f, 1466.4785f,
+ 1880.1747f, 2263.6533f, 2658.3081f, 3030.4099f, 3413.6802f, 3780.1853f,
+ 4157.1455f, 4519.1919f, 4893.5439f, 5244.3530f, 5603.1064f, 5926.8379f,
+ 375.4021f, 487.0890f, 844.4013f, 1574.3596f, 1794.5249f, 2106.2878f,
+ 2418.5217f, 2657.8938f, 3116.6096f, 3457.8625f, 3691.0596f, 3930.1062f,
+ 4259.5928f, 4592.4370f, 5020.5078f, 5840.3989f, 474.3148f, 724.2144f,
+ 974.0716f, 1283.4182f, 1521.2632f, 1746.4248f, 2333.0957f, 2874.2966f,
+ 3111.9636f, 3440.0410f, 3752.9678f, 3975.7139f, 4294.7056f, 4821.9893f,
+ 5201.5562f, 5658.8301f, 400.0291f, 564.9626f, 808.2393f, 1083.2745f,
+ 1300.4403f, 2080.7405f, 2588.6882f, 2858.4629f, 3206.4502f, 3429.8623f,
+ 3746.9080f, 4341.4868f, 4713.2803f, 4986.4258f, 5336.7339f, 5710.1123f,
+ 354.4416f, 480.1495f, 834.1089f, 1037.7775f, 1350.0652f, 1791.1736f,
+ 2193.0159f, 2504.6775f, 2776.0623f, 3153.0994f, 4108.1357f, 4597.4082f,
+ 4861.9688f, 5092.8613f, 5473.2295f, 5932.0332f, 237.3935f, 346.9133f,
+ 675.5335f, 1481.0535f, 1716.8414f, 1884.7153f, 2099.3057f, 2725.5403f,
+ 3022.8506f, 3276.2922f, 3639.1001f, 4185.3926f, 4941.6597f, 5292.0093f,
+ 5682.0391f, 5981.0215f, 367.4981f, 469.7130f, 820.7811f, 1219.7736f,
+ 1368.4479f, 1624.6671f, 1804.2581f, 2607.8589f, 2891.3174f, 3212.2432f,
+ 3760.7290f, 4015.6111f, 4618.0068f, 5129.3213f, 5652.1582f, 6042.1113f,
+ 312.6796f, 415.8322f, 674.1500f, 853.7709f, 1808.7385f, 2232.5310f,
+ 2497.8157f, 2834.2991f, 3039.7012f, 3301.4050f, 3659.2969f, 4455.9453f,
+ 4841.4912f, 5111.6167f, 5502.2534f, 5924.6357f, 341.9309f, 471.7513f,
+ 758.1926f, 979.7221f, 1287.4463f, 1737.0303f, 2160.7915f, 2664.5562f,
+ 2961.8315f, 3461.7439f, 3732.6611f, 4109.0928f, 4568.9111f, 5037.4331f,
+ 5511.3169f, 5966.1304f, 351.3721f, 462.1897f, 765.1075f, 946.3102f,
+ 1322.8093f, 2292.2400f, 2503.6494f, 2819.7234f, 3079.2803f, 3297.6252f,
+ 3571.4668f, 3872.0823f, 4337.6426f, 5079.1504f, 5562.8110f, 5942.7153f,
+ 435.4323f, 614.4746f, 892.8980f, 1215.9469f, 1395.9762f, 1814.3936f,
+ 2155.9590f, 2465.0427f, 3201.6211f, 3490.9224f, 3853.2620f, 4410.1855f,
+ 4786.0625f, 5095.0181f, 5394.4805f, 5715.3364f, 294.6053f, 417.1553f,
+ 1046.2922f, 1443.0247f, 1636.7180f, 1956.4248f, 2189.9697f, 2869.8071f,
+ 3129.9385f, 3462.5681f, 3895.2805f, 4213.4541f, 4541.8950f, 5009.1958f,
+ 5472.7642f, 5983.0063f, 322.1185f, 446.8733f, 689.4188f, 1338.2788f,
+ 1643.1023f, 1903.8652f, 2494.2722f, 2804.6968f, 3103.8682f, 3640.1233f,
+ 3965.9861f, 4172.5596f, 4404.7388f, 4670.7544f, 5240.3682f, 5893.4600f,
+ 209.7024f, 336.5508f, 729.0126f, 1217.3285f, 1699.0111f, 1891.2837f,
+ 2146.8486f, 2830.0850f, 3108.6204f, 3446.0396f, 3754.1230f, 3945.1038f,
+ 4474.5806f, 5191.6987f, 5613.3076f, 5970.2695f, 346.6580f, 470.5094f,
+ 663.3455f, 1266.9061f, 2020.5759f, 2270.5173f, 2527.3550f, 2826.9104f,
+ 3078.3403f, 3401.2625f, 3804.3770f, 4100.3091f, 4407.7876f, 4732.2319f,
+ 5150.2749f, 5808.2559f, 283.7796f, 391.4603f, 1165.6863f, 1456.1125f,
+ 1692.9001f, 2008.4825f, 2322.7837f, 2784.0608f, 2998.5811f, 3268.5164f,
+ 3548.9373f, 4167.1289f, 4643.9878f, 5099.2881f, 5473.0781f, 5929.8242f,
+ 301.0849f, 383.1578f, 692.0848f, 1648.9374f, 1873.0947f, 2109.6113f,
+ 2345.0110f, 2613.1121f, 2922.0193f, 3170.0020f, 3405.0774f, 3881.9875f,
+ 4778.3154f, 5092.5205f, 5445.7100f, 5920.7896f, 509.1023f, 750.8580f,
+ 963.8820f, 1295.3452f, 1634.8796f, 1818.7975f, 2151.1250f, 2590.3354f,
+ 2867.5596f, 3238.7666f, 3747.2834f, 4053.8911f, 4457.8164f, 4928.0151f,
+ 5295.3521f, 5789.0571f, 421.8951f, 547.9814f, 967.4185f, 1153.8607f,
+ 1461.4230f, 1813.0994f, 2155.2703f, 2570.9712f, 2777.6597f, 3048.9863f,
+ 3432.0986f, 3729.3877f, 4395.7461f, 5028.7402f, 5486.4946f, 5951.5024f,
+ 340.6758f, 445.7014f, 931.8882f, 1253.4775f, 1521.9260f, 1969.5759f,
+ 2267.5332f, 2735.0112f, 2948.7678f, 3236.5166f, 3529.5505f, 3882.3674f,
+ 4699.5781f, 5089.6641f, 5377.7842f, 5880.7778f, 284.1882f, 408.6918f,
+ 786.3123f, 1670.3220f, 2042.9493f, 2265.2275f, 2691.2012f, 3035.8762f,
+ 3334.1719f, 3863.1194f, 4276.8916f, 4571.0420f, 4996.4404f, 5336.5205f,
+ 5647.9556f, 5944.5996f, 300.0066f, 616.4817f, 1238.7324f, 1614.8296f,
+ 1997.6188f, 2367.4343f, 2784.5605f, 3168.8354f, 3569.8250f, 3965.6011f,
+ 4336.3804f, 4689.5874f, 5044.2012f, 5365.7456f, 5697.5654f, 6010.6572f,
+ 242.9420f, 476.8371f, 1250.6661f, 1671.6031f, 2159.6443f, 2637.7417f,
+ 3049.8589f, 3371.6045f, 3674.8706f, 3951.1006f, 4230.6416f, 4543.2827f,
+ 4887.4478f, 5220.5581f, 5595.2686f, 5962.1313f, 242.6795f, 331.1335f,
+ 635.2861f, 1801.5236f, 2084.1472f, 2264.4692f, 2506.2891f, 2799.4441f,
+ 3236.7134f, 3489.6038f, 3859.3291f, 4424.8008f, 4964.6348f, 5298.6533f,
+ 5640.2031f, 5988.0552f, 254.0538f, 336.2447f, 1216.6261f, 1717.7201f,
+ 1886.0708f, 2176.6338f, 2405.8547f, 2762.3037f, 2934.8816f, 3167.0657f,
+ 3385.5457f, 3804.4346f, 4848.8198f, 5286.0352f, 5630.5391f, 6086.4492f,
+ 295.2298f, 426.2079f, 630.7856f, 1155.5609f, 1827.6831f, 2120.5283f,
+ 2462.4373f, 2759.6152f, 2990.9526f, 3253.4216f, 3910.9834f, 4204.2754f,
+ 4462.7944f, 4909.7529f, 5579.9653f, 5985.8579f, 298.9633f, 410.3875f,
+ 810.1115f, 1346.1040f, 1499.2391f, 2210.3948f, 2467.9424f, 2792.7122f,
+ 3284.0874f, 3493.0740f, 3784.1899f, 4319.6396f, 4860.6548f, 5213.8540f,
+ 5609.8672f, 5949.6890f, 437.9900f, 575.3093f, 866.0077f, 1104.2080f,
+ 1307.4966f, 1959.9323f, 2293.9365f, 2604.6704f, 2966.6514f, 3228.0056f,
+ 3548.8499f, 4096.4424f, 4769.5420f, 5086.5449f, 5416.5317f, 5853.6909f,
+ 412.4955f, 569.1867f, 864.0179f, 1117.6798f, 1348.6332f, 1976.5171f,
+ 2334.3960f, 2640.3381f, 3006.5347f, 3327.5784f, 3695.8564f, 4042.1753f,
+ 4362.7837f, 4687.4751f, 5389.8662f, 5966.5825f, 406.8686f, 542.0319f,
+ 867.3541f, 1436.3810f, 1678.6399f, 2000.1501f, 2358.1204f, 2651.3806f,
+ 3042.1216f, 3339.2766f, 3617.9963f, 3933.3860f, 4249.0278f, 4591.8530f,
+ 5502.0400f, 6020.7910f, 375.4336f, 519.7731f, 764.5574f, 1215.1381f,
+ 1482.9417f, 1696.8020f, 1957.0332f, 2169.1169f, 2973.4634f, 3687.7449f,
+ 3966.8525f, 4258.8042f, 4680.6567f, 4947.0225f, 5230.9824f, 5843.2466f,
+ 443.2378f, 574.0562f, 813.3345f, 1282.7894f, 1538.0752f, 1727.8997f,
+ 2007.8584f, 2194.5601f, 2755.8220f, 3460.9243f, 3654.1399f, 4030.5530f,
+ 4572.4727f, 4904.7847f, 5400.6147f, 5934.2656f, 423.6246f, 540.1947f,
+ 862.8629f, 1386.7659f, 1577.2052f, 1811.0304f, 2046.7363f, 2309.0366f,
+ 3129.1145f, 3533.0020f, 3738.4211f, 4021.1111f, 4357.3677f, 4634.8740f,
+ 5307.2920f, 5944.9155f, 287.7661f, 401.5490f, 725.6079f, 950.8911f,
+ 1186.5465f, 1490.1750f, 2114.7920f, 2562.4019f, 3028.3977f, 3519.6277f,
+ 3940.5737f, 4339.3086f, 4765.8188f, 5172.3428f, 5582.8022f, 5971.0273f,
+ 382.6039f, 537.7234f, 836.8093f, 1371.3546f, 1578.9803f, 1869.8213f,
+ 2292.5596f, 2540.8601f, 3032.9834f, 3402.5059f, 3737.0569f, 4053.9937f,
+ 4446.6240f, 5251.8457f, 5710.7935f, 6022.2925f, 313.2195f, 415.0511f,
+ 690.6860f, 1561.4832f, 1815.6521f, 2059.9187f, 2345.5095f, 2614.8701f,
+ 3006.9604f, 3291.9744f, 3590.4119f, 3996.1516f, 4365.4995f, 4853.4956f,
+ 5465.1572f, 5954.5718f, 361.7959f, 448.4001f, 921.3198f, 1343.1167f,
+ 1488.6287f, 1736.7700f, 1950.8906f, 2536.0193f, 2768.7393f, 3062.4473f,
+ 3484.6570f, 3888.5618f, 4618.4038f, 5092.6641f, 5523.3657f, 5966.6772f,
+ 249.5541f, 366.6601f, 684.6592f, 1203.0931f, 1642.2089f, 1961.8837f,
+ 2227.3289f, 2421.1348f, 2660.5676f, 3229.5410f, 3822.5837f, 4232.7266f,
+ 4782.5181f, 5127.2612f, 5570.2676f, 5978.9858f, 287.4206f, 421.3210f,
+ 704.0352f, 1279.8597f, 1562.7307f, 2115.4241f, 2492.4517f, 2780.9470f,
+ 3317.3616f, 3606.1492f, 4026.6375f, 4337.9014f, 4699.6895f, 4997.2573f,
+ 5431.1787f, 5903.8628f, 487.9554f, 740.9349f, 1021.9616f, 1327.3262f,
+ 1620.8544f, 1890.7717f, 2269.1218f, 2584.4868f, 2911.2896f, 3424.9221f,
+ 3855.1670f, 4205.9272f, 4707.2466f, 5147.1846f, 5601.1152f, 5953.4673f,
+ 400.8269f, 513.4500f, 786.8242f, 1269.3298f, 1441.4178f, 1696.9789f,
+ 1911.0537f, 2223.0684f, 2847.1619f, 3113.3845f, 3670.6318f, 4146.2900f,
+ 4555.9204f, 5083.8579f, 5574.8120f, 5987.6030f, 379.0329f, 487.7222f,
+ 914.8179f, 1130.9854f, 1430.1394f, 1830.0769f, 2088.8796f, 2613.6855f,
+ 2803.1633f, 3457.1777f, 4032.6118f, 4306.7344f, 4662.6899f, 4959.6348f,
+ 5245.5234f, 5787.3940f, 340.6941f, 451.0338f, 656.2767f, 911.5805f,
+ 1124.9330f, 1733.8730f, 2518.7861f, 2768.6851f, 3211.3733f, 3717.7583f,
+ 3929.6772f, 4176.2993f, 4522.4517f, 5011.5547f, 5575.8784f, 6006.7222f,
+ 341.5027f, 441.6417f, 807.2695f, 1060.2080f, 1251.2837f, 1478.9895f,
+ 1750.0796f, 2594.8977f, 2924.5027f, 3401.4751f, 3852.0557f, 4292.4683f,
+ 4718.2930f, 5159.4775f, 5562.4067f, 5972.5571f, 313.8985f, 421.5380f,
+ 667.2407f, 873.6023f, 1110.1119f, 2060.7332f, 2381.0916f, 2746.2288f,
+ 3080.5649f, 3399.9905f, 3897.5884f, 4434.9990f, 5048.1343f, 5390.8149f,
+ 5744.3931f, 6007.9326f, 252.1832f, 354.2392f, 673.5427f, 1339.1161f,
+ 1554.8853f, 2014.9351f, 2300.4138f, 2829.6182f, 3213.1714f, 3409.5105f,
+ 3604.3242f, 3927.8020f, 4622.3218f, 5103.4565f, 5559.5024f, 5971.5986f,
+ 385.2648f, 513.7607f, 760.7678f, 983.5819f, 1175.7727f, 2134.7810f,
+ 2592.9614f, 2822.0161f, 3232.2524f, 3445.3516f, 3750.7583f, 4094.6714f,
+ 4401.5830f, 4753.4204f, 5549.2319f, 6034.7148f, 220.6833f, 314.5706f,
+ 622.2172f, 1350.8225f, 1785.5879f, 2077.5837f, 2504.2158f, 3057.6992f,
+ 3436.0974f, 3695.2976f, 3953.4272f, 4267.8701f, 4660.6865f, 5073.6831f,
+ 5501.9478f, 5929.9780f, 207.8814f, 310.4071f, 646.2098f, 1270.5835f,
+ 1542.7271f, 2079.3804f, 2440.0339f, 2843.4690f, 3272.4854f, 3657.9851f,
+ 4061.2014f, 4444.9780f, 4841.6060f, 5224.5947f, 5620.9141f, 5972.7261f,
+ 326.1488f, 456.7737f, 740.3350f, 961.4597f, 1262.7579f, 2190.7178f,
+ 2483.5300f, 2872.4180f, 3328.4910f, 3811.0334f, 4153.1602f, 4441.8271f,
+ 4801.1802f, 5065.2988f, 5381.6309f, 5693.2886f, 206.2046f, 328.0855f,
+ 618.9507f, 980.9994f, 1695.9775f, 1982.3051f, 2275.5444f, 2806.0271f,
+ 3269.5178f, 3491.2456f, 3722.1775f, 4145.9121f, 4843.1167f, 5266.8677f,
+ 5656.8794f, 5992.1201f, 308.1086f, 407.7706f, 806.7985f, 1045.7629f,
+ 1401.8912f, 2108.3472f, 2331.7849f, 2952.5391f, 3174.1865f, 3374.0686f,
+ 3645.4260f, 4292.7183f, 4939.2969f, 5250.4829f, 5607.2358f, 5932.8657f,
+ 267.5990f, 378.7492f, 642.2629f, 871.7917f, 1691.7523f, 2087.5117f,
+ 2423.1462f, 2686.1487f, 3021.7893f, 3724.0247f, 4035.5454f, 4369.5903f,
+ 4680.1167f, 4991.4175f, 5323.6875f, 5811.7471f, 312.3856f, 437.4281f,
+ 714.5340f, 899.5771f, 1632.7545f, 1938.5369f, 2295.5544f, 2625.6189f,
+ 2900.5576f, 3295.4934f, 3557.1260f, 3960.1123f, 4731.6079f, 5141.8447f,
+ 5502.7793f, 5954.0049f, 332.2842f, 449.0976f, 875.9957f, 1206.1912f,
+ 1422.6793f, 2097.5745f, 2354.2483f, 2715.8494f, 3093.4697f, 3344.5132f,
+ 3623.4814f, 3889.3655f, 4256.2002f, 4994.5742f, 5593.8428f, 5985.9575f,
+ 286.9586f, 434.7701f, 781.3996f, 1248.3495f, 1835.5530f, 2137.1155f,
+ 2573.7449f, 2869.9299f, 3126.0564f, 3459.1448f, 3769.4475f, 4138.3076f,
+ 4688.0298f, 5084.9028f, 5436.8086f, 5894.2520f, 327.0000f, 429.0804f,
+ 663.7327f, 849.7463f, 1174.9340f, 2383.3875f, 2695.9597f, 2941.2026f,
+ 3214.4724f, 3433.6287f, 3778.9312f, 4134.8096f, 4504.8022f, 5066.7559f,
+ 5599.2290f, 5985.7334f, 244.4052f, 499.2254f, 1294.8232f, 1689.3677f,
+ 2123.5024f, 2572.4958f, 3042.9067f, 3446.8752f, 3836.3740f, 4175.6729f,
+ 4485.3213f, 4792.3755f, 5094.9077f, 5386.1816f, 5699.6411f, 6008.2114f,
+ 561.9757f, 1020.3204f, 1494.1995f, 1841.8171f, 2297.0906f, 2772.6184f,
+ 3204.8804f, 3565.8628f, 3935.4106f, 4253.4141f, 4559.7021f, 4849.9653f,
+ 5140.2852f, 5428.6934f, 5731.2251f, 6023.5078f, 581.6182f, 1053.5670f,
+ 1478.5878f, 1784.4789f, 2125.1157f, 2454.5889f, 2809.0256f, 3141.7256f,
+ 3490.7529f, 3848.5923f, 4201.7271f, 4568.7720f, 4945.9619f, 5288.6289f,
+ 5647.7642f, 5981.9341f, 258.9683f, 364.0963f, 722.5463f, 1763.2114f,
+ 1969.3870f, 2265.5239f, 2532.1821f, 2883.3557f, 3388.1838f, 3725.3120f,
+ 4080.9338f, 4390.3818f, 4716.3599f, 5068.4941f, 5452.2778f, 5847.1401f,
+ 271.5428f, 401.4228f, 695.5894f, 857.3072f, 1776.5358f, 2008.5603f,
+ 2554.4143f, 2844.4021f, 3018.6877f, 3226.1279f, 3482.3398f, 3810.6858f,
+ 4549.3071f, 5266.2764f, 5614.6157f, 5945.6904f, 330.3132f, 444.6271f,
+ 669.0279f, 874.5479f, 1102.9247f, 2052.1780f, 2436.2378f, 2711.1165f,
+ 3037.7537f, 3298.2036f, 3898.6858f, 4241.5415f, 4606.7637f, 5086.6919f,
+ 5569.7397f, 5988.6797f, 232.3014f, 344.5512f, 578.5155f, 1213.9569f,
+ 1880.9729f, 2105.6685f, 2335.4148f, 2550.3965f, 3147.6501f, 3491.9253f,
+ 3791.5613f, 4159.6694f, 4642.2441f, 5103.3340f, 5605.4106f, 5989.7969f,
+ 346.3687f, 444.8047f, 714.3775f, 889.1195f, 1211.8463f, 2168.7598f,
+ 2430.2490f, 2760.6326f, 3012.4961f, 3268.8750f, 3565.1558f, 4172.5791f,
+ 4781.5391f, 5127.6704f, 5512.6323f, 5911.3779f, 398.0477f, 553.8537f,
+ 845.8521f, 1119.3066f, 1309.7244f, 1928.3351f, 2351.2095f, 2649.8230f,
+ 3050.6750f, 3297.0566f, 3592.7275f, 3916.1785f, 4723.3325f, 5318.1221f,
+ 5703.9697f, 5996.7651f, 371.4409f, 471.0789f, 896.4924f, 1197.7544f,
+ 1400.8007f, 1611.1555f, 1867.3550f, 2818.4475f, 3002.5906f, 3250.1440f,
+ 3546.5891f, 4265.0371f, 4890.3369f, 5274.4722f, 5659.3560f, 5946.9644f,
+ 330.9331f, 448.7211f, 808.3973f, 978.2021f, 1652.6361f, 1969.0725f,
+ 2357.0146f, 2680.4792f, 2859.9165f, 3078.9578f, 3423.6895f, 4233.3169f,
+ 4856.7813f, 5086.5723f, 5393.9961f, 5938.6035f, 323.9659f, 433.8731f,
+ 1045.5168f, 1369.1907f, 1561.9178f, 1984.2457f, 2224.0959f, 2747.3657f,
+ 2995.0359f, 3242.9248f, 3501.0344f, 4022.2388f, 4847.4985f, 5210.9922f,
+ 5658.1357f, 6005.0718f, 354.6574f, 501.6520f, 852.5305f, 1020.8707f,
+ 1540.5925f, 1998.5675f, 2253.1487f, 2845.3960f, 3056.5273f, 3305.0466f,
+ 3954.2900f, 4591.7471f, 4915.2856f, 5221.9082f, 5544.7285f, 5879.9150f,
+ 363.1311f, 474.7310f, 907.5490f, 1106.8586f, 1367.2662f, 1646.6934f,
+ 2031.3650f, 2326.4382f, 2568.6519f, 3030.1091f, 3905.6482f, 4265.9111f,
+ 4716.1831f, 5017.0454f, 5469.8149f, 5958.6182f, 379.9262f, 524.4459f,
+ 845.4813f, 1275.4414f, 1458.2488f, 1772.5863f, 2067.7981f, 2526.8850f,
+ 3066.4063f, 3307.8713f, 3807.2900f, 4199.1509f, 4452.4653f, 4854.7471f,
+ 5464.8833f, 5947.7842f, 371.8218f, 483.9148f, 778.2747f, 1208.0812f,
+ 1366.3983f, 1623.4895f, 1798.8777f, 2224.6445f, 3103.7175f, 3386.0408f,
+ 3782.8284f, 4307.4727f, 4698.8994f, 5118.1255f, 5505.1919f, 5921.1724f,
+ 217.9059f, 323.3224f, 639.7305f, 1026.5331f, 1312.9242f, 1885.6948f,
+ 2361.8403f, 2805.5396f, 3213.2600f, 3631.5017f, 4033.4087f, 4426.3423f,
+ 4821.3203f, 5208.3833f, 5590.5205f, 5956.1538f, 211.9971f, 311.2018f,
+ 504.6345f, 858.3289f, 1574.7019f, 1934.9866f, 2381.4163f, 2786.2043f,
+ 3238.9326f, 3611.0518f, 4005.2578f, 4401.0615f, 4802.1479f, 5192.5493f,
+ 5587.1479f, 5965.5977f, 219.3884f, 319.3835f, 604.0102f, 1114.8630f,
+ 1481.3870f, 2036.0469f, 2303.4883f, 2616.1384f, 3253.6335f, 3556.5107f,
+ 3946.6567f, 4520.3555f, 5091.0479f, 5416.3037f, 5748.5737f, 5946.5757f,
+ 350.3716f, 515.4462f, 756.5206f, 1061.4270f, 1251.9570f, 1723.2751f,
+ 2687.6689f, 3036.2019f, 3273.9678f, 3744.2939f, 4098.6284f, 4391.4160f,
+ 4917.6777f, 5244.2852f, 5551.4976f, 5880.1572f, 311.6069f, 458.7317f,
+ 795.9418f, 969.5021f, 1511.2507f, 1952.5673f, 2273.6116f, 2795.8657f,
+ 3049.7053f, 3578.0598f, 3911.1873f, 4327.2598f, 4735.3105f, 5122.3423f,
+ 5479.7817f, 5858.1504f, 267.8399f, 390.6757f, 886.2357f, 1179.5110f,
+ 1466.6409f, 2088.7725f, 2328.1262f, 2993.5786f, 3283.5256f, 3593.2822f,
+ 4095.7588f, 4500.4009f, 4887.5132f, 5219.0859f, 5553.4224f, 5915.6831f,
+ 279.2209f, 413.3200f, 648.4438f, 1282.1798f, 1793.2556f, 1952.1060f,
+ 2484.9436f, 2857.3630f, 3077.2114f, 3548.2585f, 4045.4526f, 4309.5947f,
+ 4760.2900f, 5208.1948f, 5620.9717f, 5968.3237f, 306.2321f, 424.7843f,
+ 618.7867f, 1288.7572f, 2110.7849f, 2346.5396f, 2582.5366f, 2833.5730f,
+ 3074.3774f, 3464.7886f, 3984.6379f, 4262.0337f, 4601.5132f, 4999.6992f,
+ 5498.8926f, 5920.4814f, 259.2613f, 353.6931f, 762.5328f, 1906.2162f,
+ 2088.1213f, 2317.9741f, 2546.5935f, 2880.3687f, 3332.0002f, 3636.9216f,
+ 3946.4287f, 4226.0356f, 4502.1084f, 5007.0601f, 5496.4824f, 5924.8877f,
+ 244.3871f, 357.0287f, 1114.7865f, 1651.1329f, 1850.2976f, 2200.5942f,
+ 2484.7026f, 2872.6968f, 3092.8455f, 3373.5869f, 3707.5891f, 4180.1289f,
+ 4603.5298f, 5132.2671f, 5554.7617f, 5973.5220f, 700.5439f, 1363.5277f,
+ 1745.2494f, 2081.9539f, 2379.8628f, 2623.6003f, 2883.6484f, 3133.9824f,
+ 3457.7092f, 3819.0100f, 4191.0537f, 4547.0400f, 4912.5127f, 5241.3423f,
+ 5594.9395f, 5930.6099f, 268.7704f, 370.8200f, 609.4679f, 1558.5339f,
+ 1961.6279f, 2155.8916f, 2419.4485f, 2655.5103f, 3152.6685f, 3426.9221f,
+ 3716.8181f, 4107.1616f, 4965.5698f, 5384.2026f, 5706.7183f, 6015.6196f,
+ 305.7638f, 395.9599f, 1103.0944f, 1383.6494f, 1612.9742f, 1915.2496f,
+ 2189.8008f, 2555.3608f, 2720.8220f, 3038.2434f, 3927.1301f, 4263.0518f,
+ 4685.7217f, 4984.1377f, 5272.6162f, 5984.5376f, 294.0385f, 426.7762f,
+ 814.5162f, 1056.9037f, 1715.3539f, 2005.3177f, 2316.4392f, 2647.4297f,
+ 2893.8242f, 3196.7476f, 3720.0044f, 4186.9790f, 4840.4512f, 5290.1250f,
+ 5684.2139f, 5967.5859f, 359.5141f, 517.6051f, 807.4898f, 1143.5930f,
+ 1328.1393f, 1814.7098f, 2309.8894f, 2618.8655f, 3160.5962f, 3445.0479f,
+ 3883.2664f, 4235.5200f, 4718.7324f, 5367.3608f, 5765.9331f, 6034.9233f,
+ 241.5752f, 375.5109f, 818.8776f, 1298.7773f, 1656.9050f, 2169.8962f,
+ 2565.1440f, 3015.9919f, 3437.9463f, 3863.8203f, 4254.4023f, 4637.0952f,
+ 5027.8252f, 5358.3784f, 5685.5000f, 5980.4063f, 322.5406f, 454.9644f,
+ 963.3659f, 1513.8885f, 1704.5070f, 2235.6599f, 2523.6467f, 2995.0757f,
+ 3287.8682f, 3552.8811f, 3872.4360f, 4201.2227f, 4571.9087f, 5066.6792f,
+ 5562.1206f, 5935.7900f, 412.5748f, 615.8419f, 1126.9519f, 1455.5172f,
+ 1653.3076f, 1965.2689f, 2240.6904f, 2672.5129f, 3127.3301f, 3477.8540f,
+ 3983.6145f, 4458.6558f, 4896.7998f, 5237.9814f, 5609.1597f, 5939.6416f,
+ 342.1361f, 470.6100f, 958.3576f, 1195.0166f, 1426.4667f, 1684.2009f,
+ 2194.0950f, 2545.9453f, 2946.1851f, 3415.2820f, 3657.4158f, 4408.6763f,
+ 5097.2251f, 5404.2202f, 5719.9829f, 5977.7959f, 297.8767f, 386.6347f,
+ 1095.8346f, 1454.3085f, 1651.6417f, 1927.9633f, 2198.4927f, 2583.1694f,
+ 2757.0144f, 3009.6497f, 3310.9514f, 3956.9753f, 4677.3208f, 5122.2222f,
+ 5539.0688f, 5993.0542f, 334.7170f, 450.1582f, 747.3162f, 1560.2024f,
+ 1808.2147f, 2006.5011f, 2415.2419f, 2680.1956f, 3016.5549f, 3651.1340f,
+ 3975.3625f, 4209.6563f, 4531.0396f, 5121.7212f, 5585.2202f, 5962.3667f,
+ 256.4101f, 495.5723f, 1341.4860f, 1805.1255f, 2201.8318f, 2514.7769f,
+ 2820.4092f, 3102.3867f, 3414.3872f, 3754.7742f, 4108.2378f, 4465.9258f,
+ 4857.4355f, 5216.2144f, 5592.3076f, 5951.9995f, 530.7974f, 1017.4255f,
+ 1463.9575f, 1858.6631f, 2360.1265f, 2770.3811f, 3106.0894f, 3379.1919f,
+ 3647.7175f, 3895.9026f, 4188.8652f, 4522.8984f, 4893.7954f, 5241.4312f,
+ 5623.8994f, 5975.3608f, 597.1553f, 1198.0758f, 1722.7361f, 2128.6658f,
+ 2519.1504f, 2825.5122f, 3086.1943f, 3330.0283f, 3608.2961f, 3906.9929f,
+ 4241.8105f, 4603.1694f, 4972.8159f, 5308.1670f, 5651.1968f, 5976.6704f,
+ 699.1581f, 1293.3193f, 1637.3395f, 1912.7987f, 2163.3445f, 2425.7944f,
+ 2704.0396f, 3006.5984f, 3358.2126f, 3746.1548f, 4125.0762f, 4489.7485f,
+ 4854.0088f, 5188.5146f, 5558.2056f, 5913.3164f, 489.0107f, 921.4806f,
+ 1329.8511f, 1644.8383f, 2013.6794f, 2365.2683f, 2746.1553f, 3085.6912f,
+ 3457.0234f, 3825.2183f, 4203.4224f, 4575.9331f, 4950.6606f, 5298.7559f,
+ 5659.8618f, 5997.0015f, 230.3653f, 389.8415f, 938.1970f, 1294.3594f,
+ 1768.8275f, 2189.1001f, 2597.3755f, 2985.8518f, 3323.6023f, 3705.8533f,
+ 4065.5361f, 4446.4224f, 4818.4502f, 5185.9634f, 5583.2168f, 5954.2573f,
+ 283.9404f, 400.2146f, 630.6198f, 1491.5646f, 2295.1375f, 2496.3457f,
+ 2726.5803f, 2971.1951f, 3207.2317f, 3634.5439f, 4178.0376f, 4423.5537f,
+ 4836.2109f, 5172.1821f, 5464.0454f, 5777.5801f, 242.6232f, 351.1541f,
+ 807.9852f, 1621.9950f, 2043.8676f, 2532.5122f, 2860.5505f, 3200.3403f,
+ 3499.8274f, 3760.3772f, 4068.9617f, 4410.7339f, 4778.8413f, 5153.0142f,
+ 5553.1997f, 5932.5996f, 227.3320f, 323.2667f, 752.3189f, 1572.3750f,
+ 1930.6083f, 2355.0117f, 2717.6223f, 2968.3215f, 3233.4026f, 3551.9622f,
+ 3918.5608f, 4346.0190f, 4778.6880f, 5159.6172f, 5568.5566f, 5980.8086f,
+ 307.9120f, 439.7297f, 660.0276f, 1243.3854f, 1532.3577f, 1796.3936f,
+ 2437.3232f, 2691.4072f, 3030.3025f, 3524.1379f, 3771.7576f, 4083.2375f,
+ 4601.1567f, 4963.4697f, 5434.8530f, 5942.8315f};
const WORD8 ixheaacd_mps_dig_rev[8] = {0, 4, 8, 12, 2, 6, 10, 14};
diff --git a/decoder/ixheaacd_sbr_const.h b/decoder/ixheaacd_sbr_const.h
index ecf3478..2fe3793 100644
--- a/decoder/ixheaacd_sbr_const.h
+++ b/decoder/ixheaacd_sbr_const.h
@@ -99,8 +99,12 @@
#define SBR_HF_ADJ_OFFSET 2
#define MPS_SBR_DELAY 6 /* 6 qmf samples */
+#define MPS_SBR_DELAY_960 5
+
#define ESBR_HBE_DELAY_OFFSET 32 /* 32 qmf samples */
+#define ESBR_HBE_DELAY_OFFSET_960 30
+
#define HBE_OPER_WIN_LEN (13)
#define NO_QMF_SYNTH_CHANNELS 64
#define TWICE_QMF_SYNTH_CHANNELS_NUM 128
diff --git a/decoder/ixheaacd_sbr_dec.c b/decoder/ixheaacd_sbr_dec.c
index 2287c6c..7f3aca2 100644
--- a/decoder/ixheaacd_sbr_dec.c
+++ b/decoder/ixheaacd_sbr_dec.c
@@ -563,12 +563,13 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
ia_sbr_tables_struct *sbr_tables_ptr,
ixheaacd_misc_tables *pstr_common_tables, WORD ch_fac,
ia_pvc_data_struct *ptr_pvc_data, FLAG drc_on,
- WORD32 drc_sbr_factors[][64],
- WORD32 audio_object_type) {
- WORD i;
+ WORD32 drc_sbr_factors[][64], WORD32 audio_object_type,
+ WORD32 ldmps_present) {
+ WORD i, j, k;
WORD slot, reserve;
WORD save_lb_scale;
WORD op_delay;
+ IA_ERRORCODE err_code = IA_NO_ERROR;
WORD32 *p_arr_qmf_buf_real[MAX_ENV_COLS] = {0};
WORD32 *p_arr_qmf_buf_imag[MAX_ENV_COLS] = {0};
@@ -585,9 +586,17 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
WORD stereo_config_idx = ptr_frame_data->stereo_config_idx;
WORD sbr_mode = ptr_frame_data->sbr_mode;
WORD usac_flag = ptr_header_data->usac_flag;
+ WORD add_slot = 0;
FLOAT32 *pvc_qmf_enrg_arr = (FLOAT32 *)ptr_sbr_dec->pvc_qmf_enrg_arr;
+ WORD32 esbr_hbe_delay_offsets;
+
+ if (ptr_header_data->num_time_slots == 15)
+ esbr_hbe_delay_offsets = ESBR_HBE_DELAY_OFFSET_960;
+ else
+ esbr_hbe_delay_offsets = ESBR_HBE_DELAY_OFFSET;
+
memset(pvc_dec_out_buf, 0, 1024 * sizeof(FLOAT32));
memset(pvc_qmf_enrg_arr, 0, 512 * sizeof(FLOAT32));
if (audio_object_type == AOT_ER_AAC_ELD) {
@@ -595,6 +604,9 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
} else {
op_delay = 6;
}
+
+ if (ldmps_present == 1) add_slot = SBR_HF_ADJ_OFFSET;
+
if (usac_flag) {
pp_qmf_buf_real = ptr_sbr_dec->pp_qmf_buf_real;
pp_qmf_buf_imag = ptr_sbr_dec->pp_qmf_buf_imag;
@@ -610,8 +622,16 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
WORD32 *ptr_pers_qmf_real = ptr_sbr_dec->ptr_sbr_overlap_buf;
WORD32 *p_scr_qmf_real = ptr_work_buf_core + (2 << (6 + !low_pow_flag));
- if ((no_bins < LPC_ORDER) || ((no_bins + op_delay) > MAX_ENV_COLS))
- return -1;
+ if (ptr_header_data->num_time_slots != 15)
+ {
+ if ((no_bins < LPC_ORDER) || ((no_bins + op_delay) > MAX_ENV_COLS))
+ return -1;
+ }
+ else
+ {
+ if ((no_bins < LPC_ORDER) || ((no_bins + op_delay) > MAX_ENV_COLS_960))
+ return -1;
+ }
if (!low_pow_flag) {
num = num << 1;
@@ -622,7 +642,7 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
}
ptr = p_scr_qmf_real;
- for (slot = 0; slot < op_delay + no_bins; slot++) {
+ for (slot = 0; slot < op_delay + no_bins + add_slot; slot++) {
p_arr_qmf_buf_real[slot] = ptr;
ptr += NO_SYNTHESIS_CHANNELS;
@@ -644,24 +664,24 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
if (usac_flag) {
WORD32 num_anal_bands = ptr_sbr_dec->str_codec_qmf_bank.no_channels;
WORD32 codec_x_delay = 0;
- WORD32 core_syn_ch_index = 0;
WORD32 frame_move = 288;
WORD32 core_frame_size = ptr_header_data->core_frame_size;
if (hbe_flag) {
- codec_x_delay = ESBR_HBE_DELAY_OFFSET;
+ codec_x_delay = esbr_hbe_delay_offsets;
}
if (upsample_ratio_idx == SBR_UPSAMPLE_IDX_4_1) {
codec_x_delay = 2 * codec_x_delay;
}
/* fixed decoder delay for bitstreams with SBR 4:1 and stereoConfigIndex 3
*/
- if (mps_sbr_flag) op_delay = MPS_SBR_DELAY;
-
- if (hbe_flag || mps_sbr_flag) {
- core_syn_ch_index = num_anal_bands;
- } else {
- core_syn_ch_index = ptr_header_data->pstr_freq_band_data->sub_band_start;
+ if (ptr_header_data->num_time_slots != 15)
+ {
+ if (mps_sbr_flag) op_delay = MPS_SBR_DELAY;
+ }
+ else
+ {
+ if (mps_sbr_flag) op_delay = MPS_SBR_DELAY_960;
}
frame_move = 9 * num_anal_bands;
@@ -710,12 +730,12 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
op_delay + codec_x_delay + SBR_HF_ADJ_OFFSET);
if (hbe_flag) {
- WORD32 err_code = ixheaacd_qmf_hbe_apply(
+ err_code = ixheaacd_qmf_hbe_apply(
ptr_sbr_dec->p_hbe_txposer,
ptr_sbr_dec->qmf_buf_real + (op_delay + SBR_HF_ADJ_OFFSET) +
- ESBR_HBE_DELAY_OFFSET,
+ esbr_hbe_delay_offsets,
ptr_sbr_dec->qmf_buf_imag + (op_delay + SBR_HF_ADJ_OFFSET) +
- ESBR_HBE_DELAY_OFFSET,
+ esbr_hbe_delay_offsets,
ptr_sbr_dec->str_codec_qmf_bank.num_time_slots,
ptr_sbr_dec->ph_vocod_qmf_real + (op_delay + SBR_HF_ADJ_OFFSET),
ptr_sbr_dec->ph_vocod_qmf_imag + (op_delay + SBR_HF_ADJ_OFFSET),
@@ -733,7 +753,6 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
}
if (!mps_sbr_flag && apply_processing) {
- WORD32 err_code = 0;
err_code = ixheaacd_generate_hf(
ptr_sbr_dec->qmf_buf_real + (SBR_HF_ADJ_OFFSET),
ptr_sbr_dec->qmf_buf_imag + (SBR_HF_ADJ_OFFSET),
@@ -741,7 +760,8 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
ptr_sbr_dec->ph_vocod_qmf_imag + (SBR_HF_ADJ_OFFSET),
ptr_sbr_dec->sbr_qmf_out_real + (SBR_HF_ADJ_OFFSET),
ptr_sbr_dec->sbr_qmf_out_imag + (SBR_HF_ADJ_OFFSET), ptr_frame_data,
- ptr_header_data);
+ ptr_header_data, ldmps_present,
+ ptr_sbr_dec->str_codec_qmf_bank.num_time_slots);
if (err_code) return err_code;
ptr_pvc_data->pvc_rate = ptr_header_data->upsamp_fac;
@@ -774,7 +794,8 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
(ptr_header_data->hbe_flag == 0)
? NULL
: ptr_sbr_dec->p_hbe_txposer->x_over_qmf,
- ptr_sbr_dec->scratch_buff, pvc_dec_out_buf);
+ ptr_sbr_dec->scratch_buff, pvc_dec_out_buf, ldmps_present);
+
if (err_code) return err_code;
} else {
@@ -800,12 +821,39 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
return 0;
}
- ixheaacd_cplx_anal_qmffilt(
- ptr_time_data, &ptr_sbr_dec->str_sbr_scale_fact,
- &p_arr_qmf_buf_real[op_delay], &p_arr_qmf_buf_imag[op_delay],
- &ptr_sbr_dec->str_codec_qmf_bank, sbr_tables_ptr->qmf_dec_tables_ptr,
- ch_fac, low_pow_flag, audio_object_type);
+ if (ldmps_present) {
+ ixheaacd_cplx_anal_qmffilt_32(
+ (WORD32 *)ptr_time_data, &ptr_sbr_dec->str_sbr_scale_fact,
+ &p_arr_qmf_buf_real[op_delay], &p_arr_qmf_buf_imag[op_delay],
+ &ptr_sbr_dec->str_codec_qmf_bank, sbr_tables_ptr->qmf_dec_tables_ptr,
+ ch_fac, 1);
+ } else {
+ ixheaacd_cplx_anal_qmffilt(
+ ptr_time_data, &ptr_sbr_dec->str_sbr_scale_fact,
+ &p_arr_qmf_buf_real[op_delay], &p_arr_qmf_buf_imag[op_delay],
+ &ptr_sbr_dec->str_codec_qmf_bank, sbr_tables_ptr->qmf_dec_tables_ptr,
+ ch_fac, low_pow_flag, audio_object_type, ldmps_present);
+ }
+ if (ldmps_present == 1) {
+ for (j = SBR_HF_ADJ_OFFSET;
+ j < ptr_sbr_dec->str_codec_qmf_bank.num_time_slots + SBR_HF_ADJ_OFFSET;
+ j++) {
+ for (k = 0; k < 64; k++) {
+ WORD32 scale = 7;
+ ptr_sbr_dec->mps_qmf_buf_real[j][k] = 0.0f;
+ ptr_sbr_dec->mps_qmf_buf_imag[j][k] = 0.0f;
+ if (k < ptr_sbr_dec->str_codec_qmf_bank.usb) {
+ ptr_sbr_dec->mps_qmf_buf_real[j][k] +=
+ (FLOAT32)(p_arr_qmf_buf_real[j][k] / (FLOAT32)(1 << scale));
+ ptr_sbr_dec->mps_qmf_buf_imag[j][k] +=
+ (FLOAT32)(p_arr_qmf_buf_imag[j][k] / (FLOAT32)(1 << scale));
+ }
+ }
+ }
+ }
+ /*ITTIAM : the size of real and img coeff are not same as that of the mps
+ * analysis.*/
{
WORD shift1, shift2;
WORD min_shift;
@@ -888,7 +936,6 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
if (apply_processing) {
WORD16 degree_alias[NO_SYNTHESIS_CHANNELS];
WORD16 *border_vec = ptr_frame_data->str_frame_info_details.border_vec;
- IA_ERRORCODE error_code = IA_NO_ERROR;
if (low_pow_flag) {
memset(degree_alias, 0, NO_SYNTHESIS_CHANNELS * sizeof(WORD16));
@@ -915,28 +962,59 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
ptr_sbr_dec->str_sbr_scale_fact.hb_scale =
(WORD16)(com_low_band_scale - 2);
} else {
- ixheaacd_hf_generator(
- &ptr_sbr_dec->str_hf_generator, &ptr_sbr_dec->str_sbr_scale_fact,
- p_arr_qmf_buf_real, p_arr_qmf_buf_imag, ptr_header_data->time_step,
- border_vec[0],
- ixheaacd_sub16_sat(
- border_vec[ptr_frame_data->str_frame_info_details.num_env],
- ptr_header_data->num_time_slots),
- ptr_header_data->pstr_freq_band_data->num_if_bands,
- ptr_frame_data->max_qmf_subband_aac, ptr_frame_data->sbr_invf_mode,
- ptr_frame_data_prev->sbr_invf_mode, ptr_work_buf_core,
+ if (ldmps_present == 1) {
+ err_code = ixheaacd_generate_hf(
+ ptr_sbr_dec->mps_qmf_buf_real + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->mps_qmf_buf_imag + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->ph_vocod_qmf_real + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->ph_vocod_qmf_imag + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->sbr_qmf_out_real + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->sbr_qmf_out_imag + (SBR_HF_ADJ_OFFSET), ptr_frame_data,
+ ptr_header_data, ldmps_present,
+ ptr_sbr_dec->str_codec_qmf_bank.num_time_slots);
+ if (err_code) return err_code;
+ } else {
+ ixheaacd_hf_generator(
+ &ptr_sbr_dec->str_hf_generator, &ptr_sbr_dec->str_sbr_scale_fact,
+ p_arr_qmf_buf_real, p_arr_qmf_buf_imag, ptr_header_data->time_step,
+ border_vec[0],
+ ixheaacd_sub16_sat(
+ border_vec[ptr_frame_data->str_frame_info_details.num_env],
+ ptr_header_data->num_time_slots),
+ ptr_header_data->pstr_freq_band_data->num_if_bands,
+ ptr_frame_data->max_qmf_subband_aac, ptr_frame_data->sbr_invf_mode,
+ ptr_frame_data_prev->sbr_invf_mode, ptr_work_buf_core,
+ audio_object_type);
+ }
+ }
+ if (ldmps_present == 1) {
+ ptr_frame_data->pstr_sbr_header = ptr_header_data;
+ err_code = ixheaacd_sbr_env_calc(
+ ptr_frame_data, ptr_sbr_dec->sbr_qmf_out_real + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->sbr_qmf_out_imag + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->qmf_buf_real + (SBR_HF_ADJ_OFFSET),
+ ptr_sbr_dec->qmf_buf_imag + (SBR_HF_ADJ_OFFSET), NULL,
+ ptr_sbr_dec->scratch_buff, pvc_dec_out_buf, ldmps_present);
+
+ for (j = 0; j < ptr_sbr_dec->str_codec_qmf_bank.num_time_slots + 2; j++) {
+ for (k = ptr_sbr_dec->str_codec_qmf_bank.usb; k < 64; k++) {
+ ptr_sbr_dec->mps_qmf_buf_real[j][k] +=
+ ptr_sbr_dec->sbr_qmf_out_real[j][k];
+ ptr_sbr_dec->mps_qmf_buf_imag[j][k] +=
+ ptr_sbr_dec->sbr_qmf_out_imag[j][k];
+ }
+ }
+ } else {
+ err_code = ixheaacd_calc_sbrenvelope(
+ &ptr_sbr_dec->str_sbr_scale_fact, &ptr_sbr_dec->str_sbr_calc_env,
+ ptr_header_data, ptr_frame_data, ptr_frame_data_prev,
+ p_arr_qmf_buf_real, p_arr_qmf_buf_imag, degree_alias, low_pow_flag,
+ sbr_tables_ptr, pstr_common_tables,
+ ptr_work_buf_core + (LPC_ORDER << (6 + !low_pow_flag)),
audio_object_type);
+ if (err_code) return err_code;
}
- error_code = ixheaacd_calc_sbrenvelope(
- &ptr_sbr_dec->str_sbr_scale_fact, &ptr_sbr_dec->str_sbr_calc_env,
- ptr_header_data, ptr_frame_data, ptr_frame_data_prev,
- p_arr_qmf_buf_real, p_arr_qmf_buf_imag, degree_alias, low_pow_flag,
- sbr_tables_ptr, pstr_common_tables,
- ptr_work_buf_core + (LPC_ORDER << (6 + !low_pow_flag)),
- audio_object_type);
- if (error_code) return error_code;
-
memcpy(ptr_frame_data_prev->sbr_invf_mode, ptr_frame_data->sbr_invf_mode,
ptr_header_data->pstr_freq_band_data->num_if_bands * sizeof(WORD32));
@@ -1017,6 +1095,18 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
memcpy(p_loc_qmf_real, p_loc_qmf_real_1,
sizeof(WORD32) * NO_SYNTHESIS_CHANNELS * num);
+
+ if (ldmps_present == 1) {
+ memmove(&ptr_sbr_dec->mps_qmf_buf_real[0][0],
+ &ptr_sbr_dec->mps_qmf_buf_real[ptr_sbr_dec->str_codec_qmf_bank
+ .num_time_slots][0],
+ SBR_HF_ADJ_OFFSET * sizeof(FLOAT32) * 64);
+
+ memmove(&ptr_sbr_dec->mps_qmf_buf_imag[0][0],
+ &ptr_sbr_dec->mps_qmf_buf_imag[ptr_sbr_dec->str_codec_qmf_bank
+ .num_time_slots][0],
+ SBR_HF_ADJ_OFFSET * sizeof(FLOAT32) * 64);
+ }
}
ptr_sbr_dec->str_sbr_scale_fact.ov_lb_scale = save_lb_scale;
@@ -1039,7 +1129,6 @@ WORD32 ixheaacd_esbr_dec(ia_sbr_dec_struct *ptr_sbr_dec,
WORD32 upsample_ratio_idx = ptr_header_data->sbr_ratio_idx;
WORD32 core_frame_size = ptr_header_data->core_frame_size;
- WORD32 no_bins;
WORD32 mps_sbr_flag = ptr_frame_data->mps_sbr_flag;
WORD32 stereo_config_idx = ptr_frame_data->stereo_config_idx;
WORD32 hbe_flag = ptr_header_data->hbe_flag;
@@ -1050,8 +1139,6 @@ WORD32 ixheaacd_esbr_dec(ia_sbr_dec_struct *ptr_sbr_dec,
op_delay = 2 * 6;
}
- no_bins = ptr_sbr_dec->str_codec_qmf_bank.num_time_slots;
-
ptr_sbr_dec->str_sbr_scale_fact.lb_scale = 0;
{
WORD32 num_anal_bands = ptr_sbr_dec->str_codec_qmf_bank.no_channels;
@@ -1221,7 +1308,7 @@ WORD32 ixheaacd_sbr_dec_from_mps(FLOAT32 *p_mps_qmf_output, VOID *p_sbr_dec,
ptr_sbr_dec->mps_qmf_buf_imag + SBR_HF_ADJ_OFFSET, NULL, NULL,
ptr_sbr_dec->mps_sbr_qmf_buf_real + SBR_HF_ADJ_OFFSET,
ptr_sbr_dec->mps_sbr_qmf_buf_imag + SBR_HF_ADJ_OFFSET, ptr_frame_data,
- ptr_header_data);
+ ptr_header_data, 0, ptr_sbr_dec->str_codec_qmf_bank.num_time_slots);
if (err) return err;
ptr_frame_data->pstr_sbr_header = ptr_header_data;
@@ -1234,7 +1321,7 @@ WORD32 ixheaacd_sbr_dec_from_mps(FLOAT32 *p_mps_qmf_output, VOID *p_sbr_dec,
ptr_sbr_dec->mps_qmf_buf_imag + SBR_HF_ADJ_OFFSET,
(ptr_header_data->hbe_flag == 0) ? NULL
: ptr_sbr_dec->p_hbe_txposer->x_over_qmf,
- ptr_sbr_dec->scratch_buff, NULL);
+ ptr_sbr_dec->scratch_buff, NULL, 0);
if (err) return err;
for (i = 0; i < no_bins; i++) {
diff --git a/decoder/ixheaacd_sbr_dec.h b/decoder/ixheaacd_sbr_dec.h
index 8bafa92..d24c9c8 100644
--- a/decoder/ixheaacd_sbr_dec.h
+++ b/decoder/ixheaacd_sbr_dec.h
@@ -125,6 +125,9 @@ struct ia_sbr_dec_inst_struct {
FLAG inter_tes_flag;
FLAG aot_usac_flag;
jmp_buf *xaac_jmp_buf;
+ WORD8 *ptr_mps_data;
+ WORD32 left_mps_bits;
+ WORD32 mps_bits_pos;
};
typedef struct ia_sbr_pers_struct {
@@ -166,14 +169,16 @@ WORD32 ixheaacd_sbr_dec(ia_sbr_dec_struct *ptr_sbr_dec, WORD16 *ptr_time_data,
ia_sbr_tables_struct *sbr_tables_ptr,
ixheaacd_misc_tables *pstr_common_tables, WORD ch_fac,
ia_pvc_data_struct *ptr_pvc_data_str, FLAG drc_on,
- WORD32 drc_sbr_factors[][64], WORD32 audio_object_type);
+ WORD32 drc_sbr_factors[][64], WORD32 audio_object_type,
+ WORD32 ldmps_present);
WORD16 ixheaacd_create_sbrdec(ixheaacd_misc_tables *pstr_common_table,
ia_sbr_channel_struct *ptr_sbr_channel,
ia_sbr_header_data_struct *ptr_header_data,
WORD16 chan, FLAG down_sample_flag,
VOID *sbr_persistent_mem_v, WORD ps_enable,
- WORD audio_object_type);
+ WORD audio_object_type, WORD32 ldmps_present,
+ WORD32 ldsbr_present);
#define MAX_NUM_QMF_BANDS_ESBR 128
@@ -192,7 +197,8 @@ WORD32 ixheaacd_sbr_env_calc(ia_sbr_frame_info_data_struct *frame_data,
FLOAT32 input_real1[][64],
FLOAT32 input_imag1[][64],
WORD32 x_over_qmf[MAX_NUM_PATCHES],
- FLOAT32 *scratch_buff, FLOAT32 *env_out);
+ FLOAT32 *scratch_buff, FLOAT32 *env_out,
+ WORD32 ldmps_present);
WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64],
FLOAT32 ptr_src_buf_imag[][64],
@@ -201,7 +207,8 @@ WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64],
FLOAT32 ptr_dst_buf_real[][64],
FLOAT32 ptr_dst_buf_imag[][64],
ia_sbr_frame_info_data_struct *ptr_frame_data,
- ia_sbr_header_data_struct *ptr_header_data);
+ ia_sbr_header_data_struct *ptr_header_data,
+ WORD32 audio_object_type, WORD32 time_slots);
VOID ixheaacd_clr_subsamples(WORD32 *ptr_qmf_buf, WORD32 num, WORD32 size);
diff --git a/decoder/ixheaacd_sbr_rom.c b/decoder/ixheaacd_sbr_rom.c
index 4bca7de..f45f55c 100644
--- a/decoder/ixheaacd_sbr_rom.c
+++ b/decoder/ixheaacd_sbr_rom.c
@@ -726,10 +726,22 @@ const ia_qmf_dec_tables_struct ixheaacd_aac_qmf_dec_tables = {
// const WORD16 ixheaacd_sbr_alt_sin_twiddle_l32[17] =
{
//(WORD16)0x0000, (WORD16)0x7fff,
- (WORD16)0x0c8c, (WORD16)0x7f62, (WORD16)0x18f9, (WORD16)0x7d8a,
- (WORD16)0x2528, (WORD16)0x7a7d, (WORD16)0x30fc, (WORD16)0x7642,
- (WORD16)0x3c57, (WORD16)0x70e3, (WORD16)0x471d, (WORD16)0x6a6e,
- (WORD16)0x5134, (WORD16)0x62f2, (WORD16)0x5a82, (WORD16)0x5a82,
+ (WORD16)0x0c8c,
+ (WORD16)0x7f62,
+ (WORD16)0x18f9,
+ (WORD16)0x7d8a,
+ (WORD16)0x2528,
+ (WORD16)0x7a7d,
+ (WORD16)0x30fc,
+ (WORD16)0x7642,
+ (WORD16)0x3c57,
+ (WORD16)0x70e3,
+ (WORD16)0x471d,
+ (WORD16)0x6a6e,
+ (WORD16)0x5134,
+ (WORD16)0x62f2,
+ (WORD16)0x5a82,
+ (WORD16)0x5a82,
},
// const WORD16 ixheaacd_sbr_t_cos_sin_l32[32+32] = //exp[-i * pi/32* 3/4 *
@@ -910,7 +922,10 @@ const ia_qmf_dec_tables_struct ixheaacd_aac_qmf_dec_tables = {
-18, -18},
{
- 0x00, 0x01, 0x02, 0x03,
+ 0x00,
+ 0x01,
+ 0x02,
+ 0x03,
},
// w1024[1536];
@@ -1733,6 +1748,137 @@ const ia_qmf_dec_tables_struct ixheaacd_aac_qmf_dec_tables = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
},
+
+ //// WORD32 qmf_c_ldsbr_mps[640];
+ {-1088237, -1922950, -2811171, -3833224, -4994278,
+ -6282261, -7680841, -9169025, -10725055, -12324393,
+ -13941731, -15549657, -17120747, -18626116, -20036991,
+ -21323541, -22456647, -23406643, -24144909, -24642407,
+ -24871603, -24804595, -24415038, -23675808, -22560963,
+ -21042910, -19094608, -16685863, -13785718, -10358010,
+ -6365521, -1754973, 3969414, 10743941, 18202241,
+ 26403100, 35403839, 45247389, 55972297, 67609496,
+ 80184932, 93717852, 108222063, 123704992, 140168036,
+ 157606041, 176007496, 195354540, 215622847, 236781629,
+ 258793720, 281616437, 305201134, 329493906, 354435733,
+ 379963218, 406008680, 432501102, 459366074, 486526787,
+ 513903832, 541416151, 568980294, 596510842, -623766724,
+ -650827082, -677563723, -703875279, -729666861, -754844974,
+ -779316190, -802988669, -825771201, -847575157, -868313992,
+ -887904263, -906265555, -923321515, -938999670, -953232022,
+ -965955457, -977112746, -986652016, -994526811, -1000697179,
+ -1005129871, -1007798334, -1008683232, -1007772584, -1005061786,
+ -1000553966, -994259623, -986196677, -976390141, -964872677,
+ -951682343, -936802381, -920294698, -902267714, -882779324,
+ -861893900, -839683118, -816223964, -791598598, -765893362,
+ -739198470, -711607173, -683215384, -654121262, -624424188,
+ -594224613, -563623462, -532721695, -501619952, -470417748,
+ -439213198, -408102731, -377180844, -346538840, -316265811,
+ -286447164, -257165021, -228497498, -200518669, -173298068,
+ -146900793, -121386797, -96810678, 73209368, 50642874,
+ 29146835, 8753507, -10508841, -28617380, -45554786,
+ -61309157, -75874248, -89248941, -101437348, -112448674,
+ -122296858, -131000586, -138582948, -145071276, -150496790,
+ -154894447, -158302350, -160761650, -162316373, -163012779,
+ -162899352, -162026175, -160444576, -158206947, -155366419,
+ -151976400, -148090363, -143761233, -139041601, -133983279,
+ -128633886, -123042159, -117256253, -111320469, -105277360,
+ -99167707, -93029841, -86899819, -80811262, -74795318,
+ -68880537, -63093129, -57456575, -51991851, -46717444,
+ -41649136, -36800242, -32182320, -27804529, -23673882,
+ -19795326, -16171959, -12804808, -9693263, -6834912,
+ -4225952, -1860960, 266706, 2165096, 3843408,
+ 5311608, 6580581, -7659850, -8565613, -9308824,
+ -9902189, -10358934, -10692292, -10915355, -11041033,
+ -11082049, -11050633, -10958508, -10816863, -10636110,
+ -10426046, -10195042, -9950839, -9700309, -9449524,
+ -9203660, -8966753, -8741729, -8530947, -8335986,
+ -8157534, -7995749, -7850127, -7719693, -7603085,
+ -7498498, -7404082, -7317673, -7237343, -7159908,
+ -7082763, -7004337, -6922546, -6835648, -6742190,
+ -6640871, -6530636, -6410606, -6280198, -6138994,
+ -5986826, -5823631, -5649533, -5464631, -5269171,
+ -5063331, -4847459, -4621985, -4387201, -4143350,
+ -3890899, -3630184, -3361765, -3086090, -2803826,
+ -2515674, -2222360, -1924688, -1624378, -1321919,
+ -1016874, 706113, 420142, 140553, -131288,
+ -393278, -643324, -879607, -1100399, -1303989,
+ -1488836, -1653541, -1796817, -1917688, -2015419,
+ -2089615, -2140218, -2167404, -2171863, -2154637,
+ -2117086, -2060795, -1987814, -1900380, -1800788,
+ -1691489, -1575125, -1454064, -1330785, -1207415,
+ -1086298, -968520, -854801, -756445, -680148,
+ -614695, -560457, -517664, -485648, -463299,
+ -449241, -441532, -438223, -437237, -436427,
+ -434027, -428561, -418692, -403510, -382407,
+ -355227, -322142, -283650, -240483, -193762,
+ -145159, -95606, -46830, -583, 41669,
+ 78196, 107442, 128069, 136701, 115724,
+ -1088237, -1922950, -2811171, -3833224, -4994278,
+ -6282261, -7680841, -9169025, -10725055, -12324393,
+ -13941731, -15549657, -17120747, -18626116, -20036991,
+ -21323541, -22456647, -23406643, -24144909, -24642407,
+ -24871603, -24804595, -24415038, -23675808, -22560963,
+ -21042910, -19094608, -16685863, -13785718, -10358010,
+ -6365521, -1754973, 3969414, 10743941, 18202241,
+ 26403100, 35403839, 45247389, 55972297, 67609496,
+ 80184932, 93717852, 108222063, 123704992, 140168036,
+ 157606041, 176007496, 195354540, 215622847, 236781629,
+ 258793720, 281616437, 305201134, 329493906, 354435733,
+ 379963218, 406008680, 432501102, 459366074, 486526787,
+ 513903832, 541416151, 568980294, 596510842, -623766724,
+ -650827082, -677563723, -703875279, -729666861, -754844974,
+ -779316190, -802988669, -825771201, -847575157, -868313992,
+ -887904263, -906265555, -923321515, -938999670, -953232022,
+ -965955457, -977112746, -986652016, -994526811, -1000697179,
+ -1005129871, -1007798334, -1008683232, -1007772584, -1005061786,
+ -1000553966, -994259623, -986196677, -976390141, -964872677,
+ -951682343, -936802381, -920294698, -902267714, -882779324,
+ -861893900, -839683118, -816223964, -791598598, -765893362,
+ -739198470, -711607173, -683215384, -654121262, -624424188,
+ -594224613, -563623462, -532721695, -501619952, -470417748,
+ -439213198, -408102731, -377180844, -346538840, -316265811,
+ -286447164, -257165021, -228497498, -200518669, -173298068,
+ -146900793, -121386797, -96810678, 73209368, 50642874,
+ 29146835, 8753507, -10508841, -28617380, -45554786,
+ -61309157, -75874248, -89248941, -101437348, -112448674,
+ -122296858, -131000586, -138582948, -145071276, -150496790,
+ -154894447, -158302350, -160761650, -162316373, -163012779,
+ -162899352, -162026175, -160444576, -158206947, -155366419,
+ -151976400, -148090363, -143761233, -139041601, -133983279,
+ -128633886, -123042159, -117256253, -111320469, -105277360,
+ -99167707, -93029841, -86899819, -80811262, -74795318,
+ -68880537, -63093129, -57456575, -51991851, -46717444,
+ -41649136, -36800242, -32182320, -27804529, -23673882,
+ -19795326, -16171959, -12804808, -9693263, -6834912,
+ -4225952, -1860960, 266706, 2165096, 3843408,
+ 5311608, 6580581, -7659850, -8565613, -9308824,
+ -9902189, -10358934, -10692292, -10915355, -11041033,
+ -11082049, -11050633, -10958508, -10816863, -10636110,
+ -10426046, -10195042, -9950839, -9700309, -9449524,
+ -9203660, -8966753, -8741729, -8530947, -8335986,
+ -8157534, -7995749, -7850127, -7719693, -7603085,
+ -7498498, -7404082, -7317673, -7237343, -7159908,
+ -7082763, -7004337, -6922546, -6835648, -6742190,
+ -6640871, -6530636, -6410606, -6280198, -6138994,
+ -5986826, -5823631, -5649533, -5464631, -5269171,
+ -5063331, -4847459, -4621985, -4387201, -4143350,
+ -3890899, -3630184, -3361765, -3086090, -2803826,
+ -2515674, -2222360, -1924688, -1624378, -1321919,
+ -1016874, 706113, 420142, 140553, -131288,
+ -393278, -643324, -879607, -1100399, -1303989,
+ -1488836, -1653541, -1796817, -1917688, -2015419,
+ -2089615, -2140218, -2167404, -2171863, -2154637,
+ -2117086, -2060795, -1987814, -1900380, -1800788,
+ -1691489, -1575125, -1454064, -1330785, -1207415,
+ -1086298, -968520, -854801, -756445, -680148,
+ -614695, -560457, -517664, -485648, -463299,
+ -449241, -441532, -438223, -437237, -436427,
+ -434027, -428561, -418692, -403510, -382407,
+ -355227, -322142, -283650, -240483, -193762,
+ -145159, -95606, -46830, -583, 41669,
+ 78196, 107442, 128069, 136701, 115724},
+
// const WORD16 ixheaacd_sbr_synth_cos_sin_l32[64+64] = //exp[-i * pi/4* (2k
// + 1)]
{
@@ -1826,6 +1972,34 @@ const ia_env_extr_tables_struct ixheaacd_aac_dec_env_extr_tables = {
{1, 1, 1, 1, 1, 1, 1, 1},
{0, 8, 16}},
+ //960 Adding new tables for 960 frame length implementation
+ //const ia_frame_info_struct sbr_frame_info1_16_960 =
+ {0,
+ 1,
+ -1,
+ 1,
+ {0, 15, 0, 0, 0, 0},
+ {1, 0, 0, 0, 0},
+ {0, 15, 0}},
+
+ //const ia_frame_info_struct sbr_frame_info2_16_960 =
+ {0,
+ 2,
+ -1,
+ 2,
+ {0, 8, 15, 0, 0, 0},
+ {1, 1, 0, 0, 0},
+ {0, 8, 15}},
+
+ //const ia_frame_info_struct sbr_frame_info4_16_960 =
+ {0,
+ 4,
+ -1,
+ 2,
+ {0, 4, 8, 12, 15},
+ {1, 1, 1, 1},
+ {0, 8, 15}},
+
},
// const ia_sbr_header_data_struct sbr_default_header =
diff --git a/decoder/ixheaacd_sbr_rom.h b/decoder/ixheaacd_sbr_rom.h
index dcd081a..fc15fce 100644
--- a/decoder/ixheaacd_sbr_rom.h
+++ b/decoder/ixheaacd_sbr_rom.h
@@ -92,6 +92,7 @@ typedef struct {
WORD16 qmf_c_eld2[640];
WORD16 qmf_c_eld3[640];
+ WORD32 qmf_c_ldsbr_mps[640];
WORD16 ixheaacd_sbr_synth_cos_sin_l32[64 + 64];
@@ -100,7 +101,7 @@ typedef struct {
extern const ia_qmf_dec_tables_struct ixheaacd_aac_qmf_dec_tables;
typedef struct {
- ia_frame_info_struct sbr_frame_info1_2_4_16[3 + 1];
+ ia_frame_info_struct sbr_frame_info1_2_4_16[3 + 1 + 3];
ia_sbr_header_data_struct str_sbr_default_header;
WORD16 ixheaacd_t_huffman_env_bal_1_5db_inp_table[50];
diff --git a/decoder/ixheaacd_sbrdec_initfuncs.c b/decoder/ixheaacd_sbrdec_initfuncs.c
index 2793fe5..f0f1f38 100644
--- a/decoder/ixheaacd_sbrdec_initfuncs.c
+++ b/decoder/ixheaacd_sbrdec_initfuncs.c
@@ -71,6 +71,8 @@
#include "ixheaacd_audioobjtypes.h"
+extern const WORD32 ixheaacd_ldmps_polyphase_filter_coeff_fix[1280];
+
#define ALIGN_SIZE64(x) ((((x) + 7) >> 3) << 3)
WORD32 ixheaacd_getsize_sbr_persistent() {
@@ -500,7 +502,8 @@ ia_handle_sbr_dec_inst_struct ixheaacd_init_sbr(
VOID *sbr_persistent_mem_v, WORD32 *ptr_overlap_buf, WORD32 channel,
WORD32 ps_enable, WORD32 sbr_ratio_idx, WORD32 output_frame_size,
WORD32 *use_hbe, VOID *p_usac_dflt_header,
- ia_sbr_header_data_struct str_sbr_config, WORD32 audio_object_type) {
+ ia_sbr_header_data_struct str_sbr_config, WORD32 audio_object_type,
+ WORD32 ldmps_present, WORD32 ldsbr_present) {
WORD16 i;
WORD16 err;
ia_sbr_header_data_struct *ptr_header_data[MAXNRSBRCHANNELS];
@@ -540,7 +543,7 @@ ia_handle_sbr_dec_inst_struct ixheaacd_init_sbr(
sbr_persistent_mem->str_sbr_dec_inst.pstr_common_tables,
sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_channel[i],
ptr_header_data[i], i, *down_sample_flag, sbr_persistent_mem, ps_enable,
- audio_object_type);
+ audio_object_type, ldmps_present, ldsbr_present);
ptr_header_data[i]->status = 1;
ptr_sbr_dec[i]->band_count = 64;
@@ -792,7 +795,7 @@ static PLATFORM_INLINE VOID ixheaacd_init_sbr_prev_framedata(
static PLATFORM_INLINE VOID
ixheaacd_create_hyb_filterbank(ia_hybrid_struct *ptr_hybrid, WORD32 **p_ptr,
ia_sbr_tables_struct *sbr_tables_ptr) {
- WORD16 i, ptr_step;
+ WORD16 i;
WORD32 *ptr = (WORD32 *)*p_ptr;
ptr_hybrid->ptr_resol = sbr_tables_ptr->ps_tables_ptr->hyb_resol;
@@ -806,7 +809,6 @@ ixheaacd_create_hyb_filterbank(ia_hybrid_struct *ptr_hybrid, WORD32 **p_ptr,
memset(ptr_hybrid->ptr_temp_re, 0,
2 * NO_HYBRID_CHANNELS_HIGH * sizeof(WORD32));
- ptr_step = ixheaacd_add16(1, ptr_hybrid->ptr_qmf_buf);
ptr_hybrid->ptr_work_re = ptr;
ptr += 16;
ptr_hybrid->ptr_work_im = ptr;
@@ -850,8 +852,10 @@ static PLATFORM_INLINE VOID ixheaacd_create_hf_generator(
}
for (i = 0; i < LPC_ORDER; i++) {
- memset(ptr_hf_gen_str->lpc_filt_states_real[i], 0,
- NO_ANALYSIS_CHANNELS * sizeof(WORD32));
+ if (ptr_hf_gen_str->lpc_filt_states_real[i] != NULL) {
+ memset(ptr_hf_gen_str->lpc_filt_states_real[i], 0,
+ NO_ANALYSIS_CHANNELS * sizeof(WORD32));
+ }
if (ps_enable)
memset(ptr_hf_gen_str->lpc_filt_states_imag[i], 0,
@@ -957,19 +961,25 @@ static PLATFORM_INLINE VOID ixheaacd_create_cplx_anal_qmfbank(
ia_sbr_qmf_filter_bank_struct *ptr_sbr_qmf,
ia_sbr_scale_fact_struct *sbr_scale_factor, WORD16 no_bins, WORD16 usb,
WORD16 chan, WORD16 *sbr_qmf_analy_states, WORD32 *sbr_qmf_analy_states_32,
- ia_qmf_dec_tables_struct *qmf_dec_tables_ptr, WORD32 audio_object_type) {
+ ia_qmf_dec_tables_struct *qmf_dec_tables_ptr, WORD32 audio_object_type,
+ WORD32 ldmps_present, WORD32 no_ldsbr) {
memset(ptr_sbr_qmf, 0, sizeof(ia_sbr_qmf_filter_bank_struct));
+ ptr_sbr_qmf->analy_win_coeff_32 = qmf_dec_tables_ptr->esbr_qmf_c;
if (audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD) {
ptr_sbr_qmf->analy_win_coeff = qmf_dec_tables_ptr->qmf_c;
} else {
ptr_sbr_qmf->analy_win_coeff = qmf_dec_tables_ptr->qmf_c_eld3;
+ if (ldmps_present == 1)
+ ptr_sbr_qmf->analy_win_coeff_32 = qmf_dec_tables_ptr->qmf_c_ldsbr_mps;
+ if (no_ldsbr == 1)
+ ptr_sbr_qmf->analy_win_coeff_32 =
+ (WORD32 *)ixheaacd_ldmps_polyphase_filter_coeff_fix;
}
- ptr_sbr_qmf->analy_win_coeff_32 = qmf_dec_tables_ptr->esbr_qmf_c;
-
ptr_sbr_qmf->no_channels = NO_ANALYSIS_CHANNELS;
+ if (no_ldsbr) ptr_sbr_qmf->no_channels = 64;
ptr_sbr_qmf->num_time_slots = no_bins;
ptr_sbr_qmf->lsb = 0;
@@ -988,7 +998,9 @@ static PLATFORM_INLINE VOID ixheaacd_create_cplx_anal_qmfbank(
sizeof(WORD32) * QMF_FILTER_STATE_ANA_SIZE);
ptr_sbr_qmf->core_samples_buffer = ptr_sbr_qmf->anal_filter_states;
+ ptr_sbr_qmf->core_samples_buffer_32 = ptr_sbr_qmf->anal_filter_states_32;
+ ptr_sbr_qmf->filter_pos_32 = (WORD32 *)qmf_dec_tables_ptr->esbr_qmf_c;
ptr_sbr_qmf->state_new_samples_pos_low_32 =
ptr_sbr_qmf->anal_filter_states_32;
if (audio_object_type != AOT_ER_AAC_ELD &&
@@ -996,20 +1008,30 @@ static PLATFORM_INLINE VOID ixheaacd_create_cplx_anal_qmfbank(
ptr_sbr_qmf->filter_pos = (WORD16 *)qmf_dec_tables_ptr->qmf_c;
} else {
ptr_sbr_qmf->filter_pos = (WORD16 *)qmf_dec_tables_ptr->qmf_c_eld3;
+ if (ldmps_present == 1)
+ ptr_sbr_qmf->filter_pos_32 =
+ (WORD32 *)qmf_dec_tables_ptr->qmf_c_ldsbr_mps;
+ if (no_ldsbr == 1)
+ ptr_sbr_qmf->filter_pos_32 =
+ (WORD32 *)ixheaacd_ldmps_polyphase_filter_coeff_fix;
}
- ptr_sbr_qmf->filter_pos_32 = (WORD32 *)qmf_dec_tables_ptr->esbr_qmf_c;
-
sbr_scale_factor->st_lb_scale = 0;
sbr_scale_factor->st_syn_scale = -6;
if (audio_object_type == AOT_ER_AAC_ELD ||
audio_object_type == AOT_ER_AAC_LD) {
- ptr_sbr_qmf->filter_2 = ptr_sbr_qmf->filter_pos + 32;
+ ptr_sbr_qmf->filter_2_32 =
+ ptr_sbr_qmf->filter_pos_32 + ptr_sbr_qmf->no_channels;
+ ptr_sbr_qmf->fp1_anal_32 = ptr_sbr_qmf->anal_filter_states_32;
+ ptr_sbr_qmf->fp2_anal_32 =
+ ptr_sbr_qmf->anal_filter_states_32 + ptr_sbr_qmf->no_channels;
+
+ ptr_sbr_qmf->filter_2 = ptr_sbr_qmf->filter_pos + ptr_sbr_qmf->no_channels;
ptr_sbr_qmf->fp1_anal = ptr_sbr_qmf->anal_filter_states;
ptr_sbr_qmf->fp2_anal =
- ptr_sbr_qmf->anal_filter_states + NO_ANALYSIS_CHANNELS;
+ ptr_sbr_qmf->anal_filter_states + ptr_sbr_qmf->no_channels;
}
return;
@@ -1025,13 +1047,14 @@ static PLATFORM_INLINE VOID ixheaacd_create_cplx_synt_qmfbank(
WORD32 qmf_filter_state_size;
memset(ptr_sbr_qmf, 0, sizeof(ia_sbr_qmf_filter_bank_struct));
- qmf_filter_state_size = QMF_FILTER_STATE_SYN_SIZE;
if (down_sample_flag) {
L = NO_SYNTHESIS_CHANNELS_DOWN_SAMPLED;
+ qmf_filter_state_size = QMF_FILTER_STATE_SYN_SIZE_DOWN_SAMPLED;
ptr_sbr_qmf->usb = NO_SYNTHESIS_CHANNELS_DOWN_SAMPLED;
} else {
L = NO_SYNTHESIS_CHANNELS;
+ qmf_filter_state_size = QMF_FILTER_STATE_SYN_SIZE;
ptr_sbr_qmf->usb = usb;
}
@@ -1080,7 +1103,8 @@ WORD16 ixheaacd_create_sbrdec(ixheaacd_misc_tables *pstr_common_table,
ia_sbr_header_data_struct *ptr_header_data,
WORD16 chan, FLAG down_sample_flag,
VOID *sbr_persistent_mem_v, WORD ps_enable,
- WORD audio_object_type)
+ WORD audio_object_type, WORD32 ldmps_present,
+ WORD32 ldsbr_present)
{
WORD16 err;
@@ -1116,7 +1140,7 @@ WORD16 ixheaacd_create_sbrdec(ixheaacd_misc_tables *pstr_common_table,
sbr_persistent_mem->sbr_qmf_analy_states,
sbr_persistent_mem->sbr_qmf_analy_states_32,
sbr_persistent_mem->str_sbr_dec_inst.pstr_sbr_tables->qmf_dec_tables_ptr,
- audio_object_type);
+ audio_object_type, ldmps_present, ldsbr_present);
ixheaacd_create_cplx_synt_qmfbank(
&hs->str_synthesis_qmf_bank, no_bins,
diff --git a/decoder/ixheaacd_sbrdec_lpfuncs.c b/decoder/ixheaacd_sbrdec_lpfuncs.c
index 600305f..33920c2 100644
--- a/decoder/ixheaacd_sbrdec_lpfuncs.c
+++ b/decoder/ixheaacd_sbrdec_lpfuncs.c
@@ -689,7 +689,11 @@ WORD16 ixheaacd_read_ps_data(ia_ps_dec_struct *ptr_ps_dec,
}
if (ptr_ps_dec->enable_ext) {
- WORD32 cnt = ixheaacd_read_bits_buf(it_bit_buff, 4);
+ WORD32 cnt;
+ if (it_bit_buff->cnt_bits < 4)
+ cnt = ixheaacd_read_bits_buf(it_bit_buff, it_bit_buff->cnt_bits);
+ else
+ cnt = ixheaacd_read_bits_buf(it_bit_buff, 4);
if (cnt == 15) {
cnt += ixheaacd_read_bits_buf(it_bit_buff, 8);
@@ -955,7 +959,8 @@ WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64],
FLOAT32 ptr_dst_buf_real[][64],
FLOAT32 ptr_dst_buf_imag[][64],
ia_sbr_frame_info_data_struct *ptr_frame_data,
- ia_sbr_header_data_struct *ptr_header_data) {
+ ia_sbr_header_data_struct *ptr_header_data,
+ WORD32 ldmps_present, WORD32 time_slots) {
WORD32 bw_index, i, k, k2, patch = 0;
WORD32 co_var_len;
WORD32 start_sample, end_sample, goal_sb;
@@ -999,6 +1004,11 @@ WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64],
FLOAT32 *bw_array_prev = ptr_frame_data->bw_array_prev;
end_slot_offs = p_frame_info->border_vec[p_frame_info->num_env] - 16;
+
+ if (ldmps_present == 1)
+ end_slot_offs =
+ p_frame_info->border_vec[p_frame_info->num_env] - time_slots;
+
if (is_usf_4) {
start_sample = first_slot_offset * 4;
end_sample = 64 + end_slot_offs * 4;
@@ -1009,6 +1019,12 @@ WORD32 ixheaacd_generate_hf(FLOAT32 ptr_src_buf_real[][64],
co_var_len = 38;
}
+ if (ldmps_present == 1) {
+ start_sample = 0;
+ end_sample = time_slots;
+ co_var_len = time_slots;
+ }
+
if (pre_proc_flag) {
ixheaacd_pre_processing(ptr_src_buf_real, ptr_src_buf_imag, gain_vector,
f_master_tbl[0], start_sample, end_sample);
diff --git a/decoder/ixheaacd_sbrdecoder.c b/decoder/ixheaacd_sbrdecoder.c
index 06452b3..5159b11 100644
--- a/decoder/ixheaacd_sbrdecoder.c
+++ b/decoder/ixheaacd_sbrdecoder.c
@@ -244,7 +244,7 @@ IA_ERRORCODE ixheaacd_applysbr(
FLAG down_mix_flag, ia_sbr_scr_struct *sbr_scratch_struct, WORD32 ps_enable,
WORD32 ch_fac, WORD32 slot_element, ia_bit_buf_struct *it_bit_buff,
ia_drc_dec_struct *pstr_drc_dec, WORD eld_sbr_flag,
- WORD32 audio_object_type) {
+ WORD32 audio_object_type, WORD32 init_flag, WORD32 ldmps_present, WORD32 frame_size) {
WORD32 k;
FLAG prev_ps_flag = 0;
FLAG ps_flag = 0;
@@ -258,6 +258,7 @@ IA_ERRORCODE ixheaacd_applysbr(
WORD32 ele_channels = 0;
WORD32 num_elements = p_sbr_bit_stream->no_elements;
WORD32 usac_flag = self->aot_usac_flag;
+ WORD32 total_bits_left = 0;
ia_sbr_channel_struct *pstr_sbr_channel[2];
ia_sbr_header_data_struct *ptr_header_data[MAXNRSBRCHANNELS];
@@ -268,6 +269,7 @@ IA_ERRORCODE ixheaacd_applysbr(
(ia_sbr_header_data_struct *)(&self->str_sbr_dflt_header);
ia_sbr_frame_info_data_struct *ptr_frame_data[2];
+ self->ptr_mps_data = NULL;
for (k = 0; k < 2; k++) {
ptr_frame_data[k] = (ia_sbr_frame_info_data_struct *)self->frame_buffer[k];
@@ -296,6 +298,11 @@ IA_ERRORCODE ixheaacd_applysbr(
}
}
+ if (init_flag) {
+ ptr_frame_data[1]->reset_flag = 1;
+ ptr_frame_data[0]->reset_flag = 1;
+ }
+
for (k = 0; k < *codec_num_channels; k++) {
ptr_header_data[k]->usac_flag = self->aot_usac_flag;
@@ -381,6 +388,8 @@ IA_ERRORCODE ixheaacd_applysbr(
it_bit_buff = &local_bit_buf;
it_bit_buff->xaac_jmp_buf = self->xaac_jmp_buf;
+ total_bits_left = it_bit_buff->cnt_bits;
+
if (audio_object_type == AOT_ER_AAC_ELD) {
if (eld_sbr_flag != 1) {
ixheaacd_read_bits_buf(&local_bit_buf, LEN_NIBBLE);
@@ -478,7 +487,7 @@ IA_ERRORCODE ixheaacd_applysbr(
WORD32 lr;
WORD32 lr1 = ps_enable ? 2 : num_channels;
for (lr = 0; lr < lr1; lr++) {
- ptr_frame_data[lr]->reset_flag = 1;
+ if (ldmps_present != 1) ptr_frame_data[lr]->reset_flag = 1;
if (ptr_header_data[k]->status) {
err |= ixheaacd_sbr_dec_reset(
&(pstr_sbr_channel[lr]->str_sbr_dec), ptr_header_data[k],
@@ -538,6 +547,12 @@ IA_ERRORCODE ixheaacd_applysbr(
}
}
}
+ if ((ldmps_present == 1) && (it_bit_buff)) {
+ WORD32 bits_decoded = (it_bit_buff->size - it_bit_buff->cnt_bits);
+ self->ptr_mps_data = (WORD8 *)it_bit_buff->ptr_read_next;
+ self->left_mps_bits = (total_bits_left - bits_decoded);
+ self->mps_bits_pos = it_bit_buff->bit_pos;
+ }
}
if (!usac_flag) {
@@ -574,7 +589,7 @@ IA_ERRORCODE ixheaacd_applysbr(
(stereo || dual_mono) ? ptr_frame_data[1] : NULL,
(stereo || dual_mono) ? pstr_sbr_channel[1]->pstr_prev_frame_data
: NULL,
- self->pstr_common_tables);
+ self->pstr_common_tables, ldmps_present);
if (err) return err;
}
@@ -582,7 +597,7 @@ IA_ERRORCODE ixheaacd_applysbr(
if (ptr_header_data[0]->channel_mode == PS_STEREO &&
(audio_object_type != AOT_ER_AAC_ELD &&
audio_object_type != AOT_ER_AAC_LD)) {
- ixheaacd_decode_ps_data(self->pstr_ps_stereo_dec);
+ ixheaacd_decode_ps_data(self->pstr_ps_stereo_dec, frame_size);
ps_flag = 1;
self->ps_present = ps_flag;
}
@@ -593,6 +608,12 @@ IA_ERRORCODE ixheaacd_applysbr(
ptr_frame_data[1]->max_qmf_subband_aac =
ptr_header_data[1]->pstr_freq_band_data->sub_band_start;
}
+ if (ldmps_present == 1) {
+ ptr_frame_data[0]->rate = 1;
+ if (stereo) {
+ ptr_frame_data[1]->rate = 1;
+ }
+ }
}
if (audio_object_type != AOT_ER_AAC_ELD) {
if ((initial_sync_state == SBR_NOT_INITIALIZED) &&
@@ -668,7 +689,7 @@ IA_ERRORCODE ixheaacd_applysbr(
(ptr_header_data[0]->sync_state == SBR_ACTIVE), low_pow_flag,
sbr_scratch_struct->ptr_work_buf_core, self->pstr_sbr_tables,
self->pstr_common_tables, ch_fac, self->ptr_pvc_data_str, 0, NULL,
- audio_object_type);
+ audio_object_type, ldmps_present);
if (err_code) return err_code;
} else {
WORD32 err_code = 0;
@@ -683,7 +704,7 @@ IA_ERRORCODE ixheaacd_applysbr(
self->pstr_common_tables, ch_fac, self->ptr_pvc_data_str,
pstr_drc_dec->drc_on,
pstr_drc_dec->str_drc_channel_data[0].drc_factors_sbr,
- audio_object_type);
+ audio_object_type, ldmps_present);
if (err_code) return err_code;
}
@@ -705,7 +726,7 @@ IA_ERRORCODE ixheaacd_applysbr(
NULL, NULL, (ptr_header_data[1]->sync_state == SBR_ACTIVE),
low_pow_flag, sbr_scratch_struct->ptr_work_buf_core,
self->pstr_sbr_tables, self->pstr_common_tables, ch_fac,
- self->ptr_pvc_data_str, 0, NULL, audio_object_type);
+ self->ptr_pvc_data_str, 0, NULL, audio_object_type, ldmps_present);
if (err_code) return err_code;
} else {
WORD32 err_code = ixheaacd_sbr_dec(
@@ -717,7 +738,7 @@ IA_ERRORCODE ixheaacd_applysbr(
self->pstr_sbr_tables, self->pstr_common_tables, ch_fac,
self->ptr_pvc_data_str, pstr_drc_dec->drc_on,
pstr_drc_dec->str_drc_channel_data[1].drc_factors_sbr,
- audio_object_type);
+ audio_object_type, ldmps_present);
if (err_code) return err_code;
}
}
diff --git a/decoder/ixheaacd_sbrdecoder.h b/decoder/ixheaacd_sbrdecoder.h
index 21c90c0..8af17b3 100644
--- a/decoder/ixheaacd_sbrdecoder.h
+++ b/decoder/ixheaacd_sbrdecoder.h
@@ -70,7 +70,8 @@ IA_ERRORCODE ixheaacd_applysbr(
WORD16 *codec_num_channels, FLAG frame_status, FLAG down_samp_flag,
FLAG down_mix_flag, ia_sbr_scr_struct *sbr_scratch_struct, WORD32 ps_enable,
WORD32 ch_fac, WORD32 slot_element, ia_bit_buf_struct *it_bit_buff,
- ia_drc_dec_struct *pstr_drc_dec, WORD eld_sbr_flag, WORD audio_object_type);
+ ia_drc_dec_struct *pstr_drc_dec, WORD eld_sbr_flag, WORD audio_object_type,
+ WORD32 init_flag, WORD32 ldmps_present, WORD32 frame_size);
WORD32 ixheaacd_getsize_sbr_persistent();
diff --git a/decoder/ixheaacd_sbrdecsettings.h b/decoder/ixheaacd_sbrdecsettings.h
index ab9664e..5d183e4 100644
--- a/decoder/ixheaacd_sbrdecsettings.h
+++ b/decoder/ixheaacd_sbrdecsettings.h
@@ -70,6 +70,8 @@
#define MAX_OV_COLS 6
#define MAX_ENV_COLS (MAX_COLS + MAX_OV_COLS)
+#define MAX_ENV_COLS_960 (30 + MAX_OV_COLS)
+
#define SBR_FREQ_SCALE_DEFAULT 2
#define SBR_ALTER_SCALE_DEFAULT 1
#define SBR_NOISE_BANDS_DEFAULT 2
diff --git a/decoder/ixheaacd_stereo.c b/decoder/ixheaacd_stereo.c
index 28a3e31..d0fd906 100644
--- a/decoder/ixheaacd_stereo.c
+++ b/decoder/ixheaacd_stereo.c
@@ -56,6 +56,8 @@ VOID ixheaacd_ms_stereo_process(
WORD32 win_grp, grp_len, k;
WORD32 *l_spec = ptr_aac_dec_channel_info[LEFT]->ptr_spec_coeff;
WORD32 *r_spec = ptr_aac_dec_channel_info[RIGHT]->ptr_spec_coeff;
+ WORD16 maximum_bins_short =
+ (ptr_aac_dec_channel_info[LEFT]->str_ics_info.frame_length) >> 3;
WORD8 *ptr_group_len =
ptr_aac_dec_channel_info[LEFT]->str_ics_info.window_group_length;
const WORD8 *ptr_sfb_width =
@@ -96,8 +98,17 @@ VOID ixheaacd_ms_stereo_process(
}
}
ptr_ms_used -= ptr_aac_dec_channel_info[LEFT]->str_ics_info.max_sfb;
- l_spec = l_spec + 128 - ixheaacd_drc_offset;
- r_spec = r_spec + 128 - ixheaacd_drc_offset;
+
+ if (maximum_bins_short == 120)
+ {
+ l_spec = l_spec + maximum_bins_short - ixheaacd_drc_offset;
+ r_spec = r_spec + maximum_bins_short - ixheaacd_drc_offset;
+ }
+ else
+ {
+ l_spec = l_spec + 128 - ixheaacd_drc_offset;
+ r_spec = r_spec + 128 - ixheaacd_drc_offset;
+ }
}
ptr_ms_used += JOINT_STEREO_MAX_BANDS;
@@ -118,7 +129,7 @@ static PLATFORM_INLINE WORD32 ixheaacd_mult32x16in32l(WORD32 a, WORD32 b) {
VOID ixheaacd_intensity_stereo_process(
ia_aac_dec_channel_info_struct *ptr_aac_dec_channel_info[2],
ia_aac_dec_tables_struct *ptr_aac_tables, WORD32 object_type,
- WORD32 aac_sf_data_resil_flag) {
+ WORD32 aac_sf_data_resil_flag, WORD16 framelength) {
UWORD8 *ptr_ms_used =
&ptr_aac_dec_channel_info[LEFT]->pstr_stereo_info->ms_used[0][0];
WORD8 *ptr_code_book = &ptr_aac_dec_channel_info[RIGHT]->ptr_code_book[0];
@@ -126,6 +137,8 @@ VOID ixheaacd_intensity_stereo_process(
&ptr_aac_dec_channel_info[RIGHT]->ptr_scale_factor[0];
WORD32 *r_spec = &ptr_aac_dec_channel_info[RIGHT]->ptr_spec_coeff[0];
WORD32 *l_spec = &ptr_aac_dec_channel_info[LEFT]->ptr_spec_coeff[0];
+ WORD16 maximum_bins_short =
+ (ptr_aac_dec_channel_info[LEFT]->str_ics_info.frame_length) >> 3;
WORD8 *ptr_group_len =
ptr_aac_dec_channel_info[RIGHT]->str_ics_info.window_group_length;
const WORD8 *ptr_sfb_width =
@@ -133,7 +146,14 @@ VOID ixheaacd_intensity_stereo_process(
->str_aac_sfb_info[ptr_aac_dec_channel_info[RIGHT]
->str_ics_info.window_sequence]
.sfb_width;
- WORD32 *ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table;
+
+ WORD32 *ptr_scale_table;
+
+ if (960 == framelength)
+ ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table_960;
+ else
+ ptr_scale_table = ptr_aac_tables->pstr_block_tables->scale_table;
+
WORD32 win_grp, grp_len, k;
for (win_grp = 0;
@@ -194,8 +214,17 @@ VOID ixheaacd_intensity_stereo_process(
r_spec += ptr_sfb_width[sfb];
}
}
- l_spec += 128 - ixheaacd_drc_offset;
- r_spec += 128 - ixheaacd_drc_offset;
+
+ if (maximum_bins_short == 120)
+ {
+ l_spec += maximum_bins_short - ixheaacd_drc_offset;
+ r_spec += maximum_bins_short - ixheaacd_drc_offset;
+ }
+ else
+ {
+ l_spec += 128 - ixheaacd_drc_offset;
+ r_spec += 128 - ixheaacd_drc_offset;
+ }
}
ptr_ms_used += 64;
ptr_code_book += 16;
diff --git a/decoder/ixheaacd_stereo.h b/decoder/ixheaacd_stereo.h
index e294798..8a68c60 100644
--- a/decoder/ixheaacd_stereo.h
+++ b/decoder/ixheaacd_stereo.h
@@ -30,6 +30,6 @@ VOID ixheaacd_ms_stereo_process(
VOID ixheaacd_intensity_stereo_process(
ia_aac_dec_channel_info_struct *ptr_aac_dec_channel_info[2],
ia_aac_dec_tables_struct *ptr_aac_tables, WORD32 object_type,
- WORD32 aac_sf_data_resil_flag);
+ WORD32 aac_sf_data_resil_flag, WORD16 framelength);
#endif /* #ifndef IXHEAACD_STEREO_H */
diff --git a/decoder/ixheaacd_struct_def.h b/decoder/ixheaacd_struct_def.h
index f7fe3fe..f57895c 100644
--- a/decoder/ixheaacd_struct_def.h
+++ b/decoder/ixheaacd_struct_def.h
@@ -24,29 +24,9 @@
#include <stdbool.h>
#include "ixheaacd_peak_limiter_struct_def.h"
-#define MAX_OUTPUT_CHANNELS (8)
-#define MAX_NUM_OTT (1)
-
-#define MAX_ARBITRARY_TREE_LEVELS (2)
-#define MAX_PARAMETER_SETS (8)
-#define MAX_ARBITRARY_TREE_INDEX ((1 << (MAX_ARBITRARY_TREE_LEVELS + 1)) - 1)
-#define MAX_NUM_QMF_BANDS (64)
-#define MAX_NUM_OTT_AT \
- (MAX_OUTPUT_CHANNELS * ((1 << MAX_ARBITRARY_TREE_LEVELS) - 1))
-#define MAX_PARAMETER_BANDS (28)
#define MAX_DECOR_CONFIG_IDX (2)
-
-#define MAX_HYBRID_BANDS (MAX_NUM_QMF_BANDS - 3 + 10)
-
-#define MAX_TIME_SLOTS (72)
-
-#define MAX_M2_OUTPUT (8)
-#define QMF_BANDS_TO_HYBRID (3)
-#define PROTO_LEN (13)
-#define BUFFER_LEN_LF (PROTO_LEN - 1 + MAX_TIME_SLOTS)
-#define BUFFER_LEN_HF ((PROTO_LEN - 1) / 2)
+#define MAX_PARAMETER_BANDS_MPS (28)
#define MAX_TIME_SLOTS (72)
-#define MAX_NO_TIME_SLOTS_DELAY (14)
#define MAX_PREROLL_FRAME_OFFSET 4
// max of escapedValue(4, 4, 8) i.e. 2^4 -1 + 2^4 -1 + 2^8 -1;
@@ -147,6 +127,8 @@ typedef struct {
WORD32 i_loud_ref_level;
UWORD8 dup_stereo_flag;
+ UWORD32 ui_frame_size;
+
} ia_aac_dec_config_struct;
typedef struct ia_aac_dec_state_struct {
@@ -244,6 +226,7 @@ typedef struct ia_aac_dec_state_struct {
ia_sbr_header_data_struct str_sbr_config;
jmp_buf xaac_jmp_buf;
WORD32 decode_create_done;
+ WORD32 ldmps_present;
WORD32 fatal_err_present;
WORD8 *pers_mem_ptr;
bool preroll_config_present;
@@ -256,7 +239,8 @@ typedef struct ia_aac_dec_state_struct {
ia_peak_limiter_struct peak_limiter;
UWORD8 sbr_present;
UWORD8 slot_pos;
-
+ WORD32 drc_config_changed;
+ WORD32 apply_crossfade;
} ia_aac_dec_state_struct;
typedef struct ia_exhaacplus_dec_api_struct {
@@ -283,7 +267,7 @@ WORD32 ixheaacd_aacdec_decodeframe(
WORD32 frame_length, WORD32 frame_size, ia_drc_dec_struct *pstr_drc_dec,
WORD32 object_type, WORD32 ch_config,
ia_eld_specific_config_struct eld_specific_config, WORD16 adtsheader,
- ia_drc_dec_struct *drc_dummy, UWORD8 *slot_pos);
+ ia_drc_dec_struct *drc_dummy, WORD32 ldmps_present, UWORD8 *slot_pos);
WORD ixheaacd_get_channel_mask(
ia_exhaacplus_dec_api_struct *p_obj_exhaacplus_dec);
diff --git a/decoder/ixheaacd_thumb_ps_dec.c b/decoder/ixheaacd_thumb_ps_dec.c
index 39b7b72..6cb4413 100644
--- a/decoder/ixheaacd_thumb_ps_dec.c
+++ b/decoder/ixheaacd_thumb_ps_dec.c
@@ -67,10 +67,19 @@ VOID ixheaacd_apply_ps(ia_ps_dec_struct *ptr_ps_dec, WORD32 **p_buf_left_real,
WORD32 **p_buf_left_imag, WORD32 *p_buf_right_real,
WORD32 *p_buf_right_imag,
ia_sbr_scale_fact_struct *sbr_scale_factor, WORD16 slot,
- ia_sbr_tables_struct *sbr_tables_ptr) {
- WORD16 shiftdelay =
- (WORD16)((slot < (32 - MAX_OV_COLS)) ? 0 : (sbr_scale_factor->lb_scale -
- sbr_scale_factor->ps_scale));
+ ia_sbr_tables_struct *sbr_tables_ptr, WORD no_col) {
+
+ WORD16 shiftdelay;
+
+ if (no_col != 30) {
+ shiftdelay =
+ (WORD16)((slot < (32 - MAX_OV_COLS)) ? 0 : (sbr_scale_factor->lb_scale -
+ sbr_scale_factor->ps_scale));
+ } else {
+ shiftdelay =
+ (WORD16)((slot < (no_col - MAX_OV_COLS)) ? 0 : (sbr_scale_factor->lb_scale -
+ sbr_scale_factor->ps_scale));
+ }
ixheaacd_hybrid_analysis(p_buf_left_real[HYBRID_FILTER_DELAY],
ptr_ps_dec->ptr_hyb_left_re,
diff --git a/decoder/ixheaacd_vec_baisc_ops.h b/decoder/ixheaacd_vec_baisc_ops.h
index c57e17d..03571c5 100644
--- a/decoder/ixheaacd_vec_baisc_ops.h
+++ b/decoder/ixheaacd_vec_baisc_ops.h
@@ -20,6 +20,8 @@
#ifndef IXHEAACD_VEC_BAISC_OPS_H
#define IXHEAACD_VEC_BAISC_OPS_H
+#define ONE_BY_TWO_POW_15 0.000030517578125
+
VOID ixheaacd_combine_fac(WORD32 *src1, WORD32 *src2, WORD32 *dest, WORD32 len,
WORD8 shift1, WORD8 shift2);
diff --git a/decoder/x86/ixheaacd_function_selector_x86.c b/decoder/x86/ixheaacd_function_selector_x86.c
index 431d3c9..dbeb987 100644
--- a/decoder/x86/ixheaacd_function_selector_x86.c
+++ b/decoder/x86/ixheaacd_function_selector_x86.c
@@ -66,11 +66,11 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_dec;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
- WORD32) = &ixheaacd_covariance_matrix_calc_dec;
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec;
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_dec;
VOID(*ixheaacd_over_lap_add1)
@@ -178,7 +178,7 @@ VOID(*ixheaacd_overlap_buf_out)
VOID(*ixheaacd_overlap_out_copy)
(WORD32 *out_samples, WORD32 *ptr_overlap_buf, WORD32 *ptr_overlap_buf1,
- const WORD16 ch_fac) = &ixheaacd_overlap_out_copy_dec;
+ const WORD16 ch_fac, WORD16 size_01) = &ixheaacd_overlap_out_copy_dec;
VOID(*ixheaacd_pretwiddle_compute)
(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
@@ -230,3 +230,16 @@ VOID(*ixheaacd_scale_factor_process)
(WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width,
WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type,
WORD32 aac_sf_data_resil_flag) = &ixheaacd_scale_factor_process_dec;
+
+VOID(*ixheaacd_covariance_matrix_calc_960)
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec_960;
+
+VOID(*ixheaacd_aac_ld_dec_rearrange_960)
+(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
+ WORD16 *re_arr_tab) = &ixheaacd_dec_rearrange_short;
+
+VOID(*ixheaacd_pretwiddle_compute_960)
+(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_960_dec;
diff --git a/decoder/x86_64/ixheaacd_function_selector_x86_64.c b/decoder/x86_64/ixheaacd_function_selector_x86_64.c
index 431d3c9..3eff5ac 100644
--- a/decoder/x86_64/ixheaacd_function_selector_x86_64.c
+++ b/decoder/x86_64/ixheaacd_function_selector_x86_64.c
@@ -66,11 +66,11 @@
WORD32 (*ixheaacd_fix_div)(WORD32, WORD32) = &ixheaacd_fix_div_dec;
VOID(*ixheaacd_covariance_matrix_calc)
-(WORD32 *, ixheaacd_lpp_trans_cov_matrix *,
- WORD32) = &ixheaacd_covariance_matrix_calc_dec;
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec;
VOID(*ixheaacd_covariance_matrix_calc_2)
-(ixheaacd_lpp_trans_cov_matrix *, WORD32 *, WORD32,
+(ia_lpp_trans_cov_matrix *, WORD32 *, WORD32,
WORD16) = &ixheaacd_covariance_matrix_calc_2_dec;
VOID(*ixheaacd_over_lap_add1)
@@ -178,7 +178,7 @@ VOID(*ixheaacd_overlap_buf_out)
VOID(*ixheaacd_overlap_out_copy)
(WORD32 *out_samples, WORD32 *ptr_overlap_buf, WORD32 *ptr_overlap_buf1,
- const WORD16 ch_fac) = &ixheaacd_overlap_out_copy_dec;
+ const WORD16 ch_fac, WORD16 size_01) = &ixheaacd_overlap_out_copy_dec;
VOID(*ixheaacd_pretwiddle_compute)
(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
@@ -230,3 +230,16 @@ VOID(*ixheaacd_scale_factor_process)
(WORD32 *x_invquant, WORD16 *scale_fact, WORD no_band, WORD8 *width,
WORD32 *scale_tables_ptr, WORD32 total_channels, WORD32 object_type,
WORD32 aac_sf_data_resil_flag) = &ixheaacd_scale_factor_process_dec;
+
+VOID(*ixheaacd_covariance_matrix_calc_960)
+(WORD32 *, ia_lpp_trans_cov_matrix *,
+ WORD32, WORD32) = &ixheaacd_covariance_matrix_calc_dec_960;
+
+VOID(*ixheaacd_aac_ld_dec_rearrange_960)
+(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
+ WORD16 *re_arr_tab) = &ixheaacd_dec_rearrange_short;
+
+VOID(*ixheaacd_pretwiddle_compute_960)
+(WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
+ ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
+ WORD32 neg_expo) = &ixheaacd_pretwiddle_compute_960_dec; \ No newline at end of file
diff --git a/test/impd_drc_config_params.h b/test/impd_drc_config_params.h
index 3bc7989..36ca1fe 100644
--- a/test/impd_drc_config_params.h
+++ b/test/impd_drc_config_params.h
@@ -42,6 +42,9 @@
#define IA_DRC_DEC_CONFIG_DRC_TARGET_LOUDNESS 0x0012
#define IA_DRC_DEC_CONFIG_DRC_LOUD_NORM 0x0013
+#define IA_DRC_DEC_CONFIG_PARAM_APPLY_CROSSFADE 0x0017
+#define IA_DRC_DEC_CONFIG_PARAM_CONFIG_CHANGED 0x0018
+
#define IA_API_CMD_SET_INPUT_BYTES_BS 0x0026
#define IA_API_CMD_SET_INPUT_BYTES_IC_BS 0x0027
#define IA_API_CMD_SET_INPUT_BYTES_IL_BS 0x0029
diff --git a/test/ixheaacd_error.c b/test/ixheaacd_error.c
index 279f819..b6ed649 100644
--- a/test/ixheaacd_error.c
+++ b/test/ixheaacd_error.c
@@ -36,12 +36,7 @@
pWORD8 ixheaacd_ppb_api_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
(pWORD8) "No Error",
(pWORD8) "API Command not supported",
- (pWORD8) "API Command type not supported",
- (pWORD8) "DRC Unexpected Error",
- (pWORD8) "DRC Param Error",
- (pWORD8) "DRC External Error",
- (pWORD8) "DRC Errorhandling",
- (pWORD8) "DRC Bitstream Error"};
+ (pWORD8) "API Command type not supported"};
/* Fatal Errors */
pWORD8 ixheaacd_ppb_api_fatal[IA_MAX_ERROR_SUB_CODE] = {
(pWORD8) "Invalid Memory Table Index",
@@ -59,8 +54,6 @@ pWORD8 ixheaacd_ppb_api_fatal[IA_MAX_ERROR_SUB_CODE] = {
pWORD8 ixheaacd_ppb_config_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
(pWORD8) "Invalid Output PCM WORD Size. Setting to default, 16 ",
(pWORD8) "Invalid Down-mix flag option. Setting to default, 0 ",
- (pWORD8) "Invalid 8 khz output flag option. Setting to default, 0 ",
- (pWORD8) "Invalid 16 khz output flag option. Setting to default, 0 ",
(pWORD8) "Invalid interleave to stereo flag option. Setting to default, 1 ",
(pWORD8) "Invalid downsample flag option. Setting to default, 0 ",
(pWORD8) "Invalid Frame OK option. Setting to default, 1 ",
@@ -76,13 +69,16 @@ pWORD8 ixheaacd_ppb_config_non_fatal[IA_MAX_ERROR_SUB_CODE] = {
(pWORD8) "Invalid DRC boost value",
(pWORD8) "Invalid DRC target",
(pWORD8) "Invalid Frame size",
+ (pWORD8) "Invalid LD testing flag option. Setting to default 0",
(pWORD8) "Invalid delay mode",
(pWORD8) "Invalid decode type",
(pWORD8) "Invalid peak limiter flag",
(pWORD8) "Invalid control param index",
(pWORD8) "Inalid gain delay",
(pWORD8) "Invalid constant delay mode",
- (pWORD8) "Invalid effect type"};
+ (pWORD8) "Invalid effect type",
+ (pWORD8) "Invalid target loudness value",
+ (pWORD8) "Invalid frame length flag option. Setting to default 0"};
/* Fatal Errors */
pWORD8 ixheaacd_ppb_config_fatal[IA_MAX_ERROR_SUB_CODE] = {
(pWORD8) "Invalid Sample rate specified for RAW decoding"};
diff --git a/test/ixheaacd_main.c b/test/ixheaacd_main.c
index 4d793b2..a340d78 100644
--- a/test/ixheaacd_main.c
+++ b/test/ixheaacd_main.c
@@ -536,6 +536,17 @@ IA_ERRORCODE ixheaacd_set_config_param(WORD32 argc, pWORD8 argv[],
&ui_auto_sbr_upsample);
_IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
}
+ /* To indicate frame length for a RAW bit-stream. */
+ if (!strncmp((pCHAR8)argv[i], "-flflag:", 8)) {
+ pCHAR8 pb_arg_val = (pCHAR8)(argv[i] + 8);
+ UWORD32 ui_fl_flag = atoi(pb_arg_val);
+ err_code =
+ (*p_ia_process_api)(p_ia_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_PARAM_FRAMELENGTH_FLAG,
+ &ui_fl_flag);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+ }
+
/* To indicate sample rate for a RAW bit-stream. */
if (!strncmp((pCHAR8)argv[i], "-fs:", 4)) {
pCHAR8 pb_arg_val = (pCHAR8)(argv[i] + 4);
@@ -788,8 +799,8 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
/* Initialize memory tables */
/* Get memory information and allocate memory */
- UWORD8 drc_ip_buf[8192 * 4];
- UWORD8 drc_op_buf[8192 * 4];
+ UWORD8 drc_ip_buf[4096 * 4 * 8];
+ UWORD8 drc_op_buf[4096 * 4 * 8];
/* Memory variables */
UWORD32 n_mems, ui_rem;
@@ -818,6 +829,8 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
WORD32 samples_written = 0;
WORD32 init_iteration = 1;
+ WORD32 fatal_error_chk;
+
#ifdef ARM_PROFILE_HW
int frame_count_b = 0;
long long cycles_b = 0;
@@ -909,7 +922,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
}
/* API object requires 4 bytes (WORD32) alignment */
- ui_rem = ((WORD32)g_pv_arr_alloc_memory[g_w_malloc_count] & 3);
+ ui_rem = ((SIZE_T)g_pv_arr_alloc_memory[g_w_malloc_count] & 3);
/* Set API object with the memory allocated */
pv_ia_process_api_obj =
(pVOID)((WORD8 *)g_pv_arr_alloc_memory[g_w_malloc_count] + 4 - ui_rem);
@@ -991,7 +1004,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
IA_TESTBENCH_MFMAN_FATAL_MEM_ALLOC_FAILED);
}
- ui_rem = ((WORD32)g_pv_arr_alloc_memory[g_w_malloc_count] % ui_alignment);
+ ui_rem = ((SIZE_T)g_pv_arr_alloc_memory[g_w_malloc_count] % ui_alignment);
pv_alloc_ptr = (pVOID)((WORD8 *)g_pv_arr_alloc_memory[g_w_malloc_count] +
ui_alignment - ui_rem);
@@ -1035,7 +1048,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
}
/* API object requires 4 bytes (WORD32) alignment */
- ui_rem = ((WORD32)g_pv_arr_alloc_memory[g_w_malloc_count] & 3);
+ ui_rem = ((SIZE_T)g_pv_arr_alloc_memory[g_w_malloc_count] & 3);
/* Set pointer for process memory tables */
err_code = (*p_ia_process_api)(
@@ -1104,7 +1117,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
(pWORD8) "Mem tables alloc", err_code);
}
- ui_rem = ((WORD32)g_pv_arr_alloc_memory[g_w_malloc_count] % ui_alignment);
+ ui_rem = ((SIZE_T)g_pv_arr_alloc_memory[g_w_malloc_count] % ui_alignment);
pv_alloc_ptr = (pVOID)((WORD8 *)g_pv_arr_alloc_memory[g_w_malloc_count] +
ui_alignment - ui_rem);
@@ -1272,6 +1285,27 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
} while (!ui_init_done);
if (mpeg_d_drc_on == 1) {
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_PARAM_SBR_MODE, &i_sbr_mode);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ if (i_sbr_mode != 0) {
+ WORD32 frame_length;
+ if (i_sbr_mode == 1) {
+ frame_length = 2048;
+ } else if (i_sbr_mode == 3) {
+ frame_length = 4096;
+ } else {
+ frame_length = 1024;
+ }
+
+ err_code =
+ ia_drc_dec_api(pv_ia_drc_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_DRC_DEC_CONFIG_PARAM_FRAME_SIZE, &frame_length);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+ }
+
err_code =
(*p_get_config_param)(pv_ia_process_api_obj, &i_samp_freq, &i_num_chan,
&i_pcm_wd_sz, &i_channel_mask);
@@ -1659,6 +1693,8 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
_IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+ fatal_error_chk = err_code & IA_FATAL_ERROR;
+
/* Checking for end of processing */
err_code = (*p_ia_process_api)(pv_ia_process_api_obj, IA_API_CMD_EXECUTE,
IA_CMD_TYPE_DONE_QUERY, &ui_exec_done);
@@ -1738,8 +1774,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
i_total_bytes += i_out_bytes;
if (mpegd_drc_present == 1) {
- memcpy(drc_ip_buf, pb_out_buf + preroll_frame_offset, i_out_bytes);
- preroll_frame_offset += i_out_bytes;
+ WORD32 is_config_changed = 0, apply_crossfade = 0;
err_code = (*p_ia_process_api)(
pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
@@ -1768,6 +1803,124 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
_IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_DRC_IS_CONFIG_CHANGED, &is_config_changed);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = ia_drc_dec_api(
+ pv_ia_drc_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_DRC_DEC_CONFIG_PARAM_CONFIG_CHANGED, &is_config_changed);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_DRC_APPLY_CROSSFADE, &apply_crossfade);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = ia_drc_dec_api(
+ pv_ia_drc_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_DRC_DEC_CONFIG_PARAM_APPLY_CROSSFADE, &apply_crossfade);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ if (is_config_changed == 1) {
+ VOID *p_array[2][16];
+ WORD32 ii;
+ WORD32 num_elements;
+ WORD32 num_config_ext;
+ WORD32 buf_sizes[2][16];
+ WORD32 bit_str_fmt = 1;
+
+ memset(buf_sizes, 0, 32 * sizeof(WORD32));
+
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_EXT_ELE_BUF_SIZES, &buf_sizes[0][0]);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_EXT_ELE_PTR, &p_array);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code =
+ ia_drc_dec_api(pv_ia_drc_process_api_obj, IA_API_CMD_INIT,
+ IA_CMD_TYPE_INIT_SET_BUFF_PTR, 0);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_NUM_ELE, &num_elements);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ err_code = (*p_ia_process_api)(
+ pv_ia_process_api_obj, IA_API_CMD_GET_CONFIG_PARAM,
+ IA_ENHAACPLUS_DEC_CONFIG_NUM_CONFIG_EXT, &num_config_ext);
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ for (ii = 0; ii < num_config_ext; ii++) {
+ /*copy loudness bitstream*/
+ if (buf_sizes[0][ii] > 0) {
+ memcpy(drc_ip_buf, p_array[0][ii], buf_sizes[0][ii]);
+
+ /*Set bitstream_split_format */
+ err_code = ia_drc_dec_api(
+ pv_ia_drc_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_DRC_DEC_CONFIG_PARAM_BITS_FORMAT, &bit_str_fmt);
+
+ /* Set number of bytes to be processed */
+ err_code = ia_drc_dec_api(pv_ia_drc_process_api_obj,
+ IA_API_CMD_SET_INPUT_BYTES_IL_BS, 0,
+ &buf_sizes[0][ii]);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ /* Execute process */
+ err_code =
+ ia_drc_dec_api(pv_ia_drc_process_api_obj, IA_API_CMD_INIT,
+ IA_CMD_TYPE_INIT_CPY_IL_BSF_BUFF, NULL);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ drc_flag = 1;
+ }
+ }
+
+ for (ii = 0; ii < num_elements; ii++) {
+ /*copy config bitstream*/
+ if (buf_sizes[1][ii] > 0) {
+ memcpy(drc_ip_buf, p_array[1][ii], buf_sizes[1][ii]);
+
+ /*Set bitstream_split_format */
+ err_code = ia_drc_dec_api(
+ pv_ia_drc_process_api_obj, IA_API_CMD_SET_CONFIG_PARAM,
+ IA_DRC_DEC_CONFIG_PARAM_BITS_FORMAT, &bit_str_fmt);
+
+ /* Set number of bytes to be processed */
+ err_code = ia_drc_dec_api(pv_ia_drc_process_api_obj,
+ IA_API_CMD_SET_INPUT_BYTES_IC_BS, 0,
+ &buf_sizes[1][ii]);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ /* Execute process */
+ err_code =
+ ia_drc_dec_api(pv_ia_drc_process_api_obj, IA_API_CMD_INIT,
+ IA_CMD_TYPE_INIT_CPY_IC_BSF_BUFF, NULL);
+
+ _IA_HANDLE_ERROR(p_proc_err_info, (pWORD8) "", err_code);
+
+ drc_flag = 1;
+ }
+ }
+ }
+
+ memcpy(drc_ip_buf, pb_out_buf + preroll_frame_offset, i_out_bytes);
+ preroll_frame_offset += i_out_bytes;
+
err_code =
ia_drc_dec_api(pv_ia_drc_process_api_obj, IA_API_CMD_EXECUTE,
IA_CMD_TYPE_DO_EXECUTE, NULL);
@@ -1871,7 +2024,7 @@ int ixheaacd_main_process(WORD32 argc, pWORD8 argv[]) {
#endif
/* Do till the process execution is done */
- } while (!ui_exec_done);
+ } while (!ui_exec_done && !fatal_error_chk);
#ifdef ARM_PROFILE_HW
fprintf(stdout, "\n Peak MCPS = %f\n", Peak_b);
@@ -1939,6 +2092,7 @@ void print_usage() {
printf("\n[-sbrup:<auto_sbr_upsample>]");
printf("\n[-maxchannel:<maximum_num_channels>]");
+ printf("\n[-flflag:<framelength_flag>}");
#ifdef MULTICHANNEL_ENABLE
printf("\n[-coupchannel:<coupling_channel>]");
printf("\n[-downmix:<down_mix_stereo>]");
@@ -1969,9 +2123,15 @@ void print_usage() {
printf(
"\n in case of stream changing from SBR present to SBR not present. "
"Default 1");
+
printf("\n <maximum_num_channels> is the number of maxiumum ");
printf("\n channels the input may have. Default is 6 (5.1)");
+ printf("\n <framelength_flag> is flag for Decoding framelength of 1024 or 960.");
+ printf("\n 1 to decode 960 frame length, 0 to decode 1024 frame length");
+ printf("\n Frame length value in the GA header will override this option.");
+ printf("\n Default 0 ");
+
#ifdef MULTICHANNEL_ENABLE
printf("\n <coupling_channel> is element instance tag of ");
printf("\n independent coupling channel to be mixed. Default is 0");
@@ -2004,6 +2164,7 @@ void print_usage() {
/* DD MM YYYY Author Changes */
/* 04 09 2005 Ittiam Created */
/* */
+/* */
/*******************************************************************************/
int main(WORD32 argc, char *argv[]) {