151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick/******************************************************************************
251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *                                                                            *
351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * Copyright (C) 2018 The Android Open Source Project
451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *
551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * Licensed under the Apache License, Version 2.0 (the "License");
651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * you may not use this file except in compliance with the License.
751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * You may obtain a copy of the License at:
851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *
951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * http://www.apache.org/licenses/LICENSE-2.0
1051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *
1151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * Unless required by applicable law or agreed to in writing, software
1251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * distributed under the License is distributed on an "AS IS" BASIS,
1351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * See the License for the specific language governing permissions and
1551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * limitations under the License.
1651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *
1751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick *****************************************************************************
1851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
1951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick*/
2051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#ifndef IXHEAACD_INFO_H
2151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#define IXHEAACD_INFO_H
2251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
2351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#define chans 51
2451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
2551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#define EXT_SBR_DATA 13
2651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
2751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
2851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 samp_rate;
2951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_1024;
3051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_1024;
3151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_128;
3251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_128;
3351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_960;
3451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_960;
3551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_120;
3651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_120;
3751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_768;
3851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_768;
3951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_96;
4051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_96;
4151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 short_fss_width;
4251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 long_fss_groups;
4351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_480;
4451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_480;
4551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_sfb_512;
4651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  const WORD16 *ptr_sfb_512;
4751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_usac_samp_rate_info;
4851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
4951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
5051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 index;
5151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 len;
5251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  UWORD32 code_word;
5351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_huff_code_word_struct;
5451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
5551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
5651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num;
5751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 dim;
5851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 lav;
5951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 lav_incr_esc;
6051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 huff_mode;
6151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 off;
6251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 sign_code_book;
6351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  UWORD16 max_code_word_len;
6451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_huff_code_word_struct *pstr_huff_code_word;
6551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD16 *code_book_tbl;
6651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 *idx_tbl;
6751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_huff_code_book_struct;
6851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
6951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
7051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 num_ele;
7151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 ele_is_cpe[(1 << LEN_TAG)];
7251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 ele_tag[(1 << LEN_TAG)];
7351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_ele_list_struct;
7451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
7551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
7651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 present;
7751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 ele_tag;
7851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 pseudo_enab;
7951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_mix_dwn_struct;
8051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
8151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct {
8251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 tag;
8351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 profile;
8451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 sampling_rate_idx;
8551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct front;
8651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct side;
8751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct back;
8851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct lfe;
8951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct data;
9051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_ele_list_struct coupling;
9151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_mix_dwn_struct mono_mix;
9251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_mix_dwn_struct stereo_mix;
9351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  ia_mix_dwn_struct matrix_mix;
9451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD8 comments[(1 << LEN_PC_COMM) + 1];
9551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick  WORD32 buffer_fullness;
9651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_prog_config_struct;
9751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
9851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essickextern ia_huff_code_book_struct ixheaacd_book;
9951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
10051aa06e124ba688ca810b25ee0b5bb66678aac14Ray EssickVOID ixheaacd_hufftab(ia_huff_code_book_struct *ptr_huff_code_book,
10151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick                      ia_huff_code_word_struct *ptr_huff_code_word,
10251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick                      WORD16 *code_book_tbl, WORD32 *index, WORD32 dim,
10351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick                      WORD32 lav, WORD32 lav_incr_esc, WORD32 sign_code_book,
10451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick                      UWORD8 max_code_word_len);
10551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
10651aa06e124ba688ca810b25ee0b5bb66678aac14Ray EssickWORD32 ixheaacd_huff_codeword(ia_huff_code_word_struct *h, UWORD16 data_present,
10751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick                              ia_bit_buf_struct *it_bit_buff);
10851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick
10951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#endif /* IXHEAACD_INFO_H */
110