Home | History | Annotate | Download | only in decoder
      1 /******************************************************************************
      2  *                                                                            *
      3  * Copyright (C) 2018 The Android Open Source Project
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at:
      8  *
      9  * http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  *
     17  *****************************************************************************
     18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
     19 */
     20 #ifndef IXHEAACD_AAC_IMDCT_H
     21 #define IXHEAACD_AAC_IMDCT_H
     22 
     23 WORD32 ixheaacd_inverse_transform(
     24     WORD32 spec_data[], WORD32 scratch[],
     25     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 expo,
     26     WORD32 npoints);
     27 
     28 VOID ixheaacd_post_twiddle_dec(WORD32 out_ptr[], WORD32 spec_data[],
     29                                ia_aac_dec_imdct_tables_struct *ptr_imdct_tables,
     30                                WORD32 npoints);
     31 
     32 VOID ixheaacd_post_twiddle_armv7(
     33     WORD32 out_ptr[], WORD32 spec_data[],
     34     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints);
     35 
     36 VOID ixheaacd_post_twiddle_armv8(
     37     WORD32 out_ptr[], WORD32 spec_data[],
     38     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints);
     39 
     40 VOID ixheaacd_post_twid_overlap_add_dec(
     41     WORD16 pcm_out[], WORD32 spec_data[],
     42     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
     43     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
     44     WORD16 ch_fac);
     45 
     46 VOID ixheaacd_post_twid_overlap_add_armv7(
     47     WORD16 pcm_out[], WORD32 spec_data[],
     48     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
     49     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
     50     WORD16 ch_fac);
     51 
     52 VOID ixheaacd_post_twid_overlap_add_armv8(
     53     WORD16 pcm_out[], WORD32 spec_data[],
     54     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints,
     55     WORD32 *ptr_overlap_buf, WORD16 q_shift, const WORD16 *window,
     56     WORD16 ch_fac);
     57 
     58 VOID ixheaacd_pretwiddle_compute_dec(
     59     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
     60     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
     61     WORD32 neg_expo);
     62 
     63 VOID ixheaacd_pretwiddle_compute_armv7(
     64     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
     65     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
     66     WORD32 neg_expo);
     67 
     68 VOID ixheaacd_pretwiddle_compute_armv8(
     69     WORD32 *spec_data1, WORD32 *spec_data2, WORD32 *out_ptr,
     70     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD npoints4,
     71     WORD32 neg_expo);
     72 
     73 VOID ixheaacd_imdct_using_fft_dec(
     74     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
     75     WORD32 *ptr_x, WORD32 *ptr_y);
     76 
     77 VOID ixheaacd_imdct_using_fft_armv7(
     78     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
     79     WORD32 *ptr_x, WORD32 *ptr_y);
     80 
     81 VOID ixheaacd_imdct_using_fft_armv8(
     82     ia_aac_dec_imdct_tables_struct *ptr_imdct_tables, WORD32 npoints,
     83     WORD32 *ptr_x, WORD32 *ptr_y);
     84 
     85 VOID ixheaacd_fft_480_ld(WORD32 *inp, WORD32 *op,
     86                          ia_aac_dec_imdct_tables_struct *imdct_tables_ptr);
     87 
     88 VOID ixheaacd_pre_twiddle(WORD32 *xptr, WORD32 *data, WORD32 n,
     89                           WORD32 *cos_array_ptr, WORD32 neg_expo);
     90 
     91 VOID ixheaacd_post_twiddle_ld(WORD32 out[], WORD32 x[],
     92                               const WORD32 *cos_sin_ptr, WORD m);
     93 
     94 VOID ixheaacd_post_twiddle_eld(WORD32 out[], WORD32 x[],
     95                                const WORD32 *cos_sin_ptr, WORD m);
     96 
     97 VOID ixheaacd_fft32x32_ld_dec(ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
     98                               WORD32 npoints, WORD32 *ptr_x, WORD32 *ptr_y);
     99 
    100 VOID ixheaacd_fft32x32_ld2_armv7(
    101     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
    102     WORD32 *ptr_x, WORD32 *ptr_y);
    103 
    104 VOID ixheaacd_fft32x32_ld2_armv8(
    105     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 npoints,
    106     WORD32 *ptr_x, WORD32 *ptr_y);
    107 
    108 WORD16 ixheaacd_neg_expo_inc_dec(WORD16 neg_expo);
    109 
    110 WORD16 ixheaacd_neg_expo_inc_arm(WORD16 neg_expo);
    111 
    112 VOID ixheaacd_rearrange_dec(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
    113                             UWORD8 *re_arr_tab);
    114 
    115 VOID ia_aac_ld_dec_rearrange_armv7(WORD32 *ip, WORD32 *op, WORD32 mdct_len_2,
    116                                    UWORD8 *re_arr_tab);
    117 
    118 VOID ixheaacd_fft_15_ld_dec(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
    119                             UWORD8 *re_arr_tab_sml_240_ptr);
    120 
    121 VOID ixheaacd_fft_15_ld_armv7(WORD32 *inp, WORD32 *op, WORD32 *fft3out,
    122                               UWORD8 *re_arr_tab_sml_240_ptr);
    123 
    124 VOID ixheaacd_inverse_transform_512(
    125     WORD32 data[], WORD32 temp[], WORD32 *imdct_scale, WORD32 *cos_sin_ptr,
    126     ia_aac_dec_imdct_tables_struct *imdct_tables_ptr, WORD32 object_type);
    127 
    128 VOID ixheaacd_mdct_480_ld(WORD32 *inp, WORD32 *scratch, WORD32 *mdct_scale,
    129                           WORD32 mdct_flag,
    130                           ia_aac_dec_imdct_tables_struct *imdct_tables_ptr,
    131                           WORD32 object_type);
    132 #endif
    133