1/* -----------------------------------------------------------------------------
2Software License for The Fraunhofer FDK AAC Codec Library for Android
3
4© Copyright  1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten
5Forschung e.V. All rights reserved.
6
7 1.    INTRODUCTION
8The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software
9that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding
10scheme for digital audio. This FDK AAC Codec software is intended to be used on
11a wide variety of Android devices.
12
13AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient
14general perceptual audio codecs. AAC-ELD is considered the best-performing
15full-bandwidth communications codec by independent studies and is widely
16deployed. AAC has been standardized by ISO and IEC as part of the MPEG
17specifications.
18
19Patent licenses for necessary patent claims for the FDK AAC Codec (including
20those of Fraunhofer) may be obtained through Via Licensing
21(www.vialicensing.com) or through the respective patent owners individually for
22the purpose of encoding or decoding bit streams in products that are compliant
23with the ISO/IEC MPEG audio standards. Please note that most manufacturers of
24Android devices already license these patent claims through Via Licensing or
25directly from the patent owners, and therefore FDK AAC Codec software may
26already be covered under those patent licenses when it is used for those
27licensed purposes only.
28
29Commercially-licensed AAC software libraries, including floating-point versions
30with enhanced sound quality, are also available from Fraunhofer. Users are
31encouraged to check the Fraunhofer website for additional applications
32information and documentation.
33
342.    COPYRIGHT LICENSE
35
36Redistribution and use in source and binary forms, with or without modification,
37are permitted without payment of copyright license fees provided that you
38satisfy the following conditions:
39
40You must retain the complete text of this software license in redistributions of
41the FDK AAC Codec or your modifications thereto in source code form.
42
43You must retain the complete text of this software license in the documentation
44and/or other materials provided with redistributions of the FDK AAC Codec or
45your modifications thereto in binary form. You must make available free of
46charge copies of the complete source code of the FDK AAC Codec and your
47modifications thereto to recipients of copies in binary form.
48
49The name of Fraunhofer may not be used to endorse or promote products derived
50from this library without prior written permission.
51
52You may not charge copyright license fees for anyone to use, copy or distribute
53the FDK AAC Codec software or your modifications thereto.
54
55Your modified versions of the FDK AAC Codec must carry prominent notices stating
56that you changed the software and the date of any change. For modified versions
57of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android"
58must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK
59AAC Codec Library for Android."
60
613.    NO PATENT LICENSE
62
63NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without
64limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE.
65Fraunhofer provides no warranty of patent non-infringement with respect to this
66software.
67
68You may use this FDK AAC Codec software or modifications thereto only for
69purposes that are authorized by appropriate patent licenses.
70
714.    DISCLAIMER
72
73This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright
74holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
75including but not limited to the implied warranties of merchantability and
76fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
77CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary,
78or consequential damages, including but not limited to procurement of substitute
79goods or services; loss of use, data, or profits, or business interruption,
80however caused and on any theory of liability, whether in contract, strict
81liability, or tort (including negligence), arising in any way out of the use of
82this software, even if advised of the possibility of such damage.
83
845.    CONTACT INFORMATION
85
86Fraunhofer Institute for Integrated Circuits IIS
87Attention: Audio and Multimedia Departments - FDK AAC LL
88Am Wolfsmantel 33
8991058 Erlangen, Germany
90
91www.iis.fraunhofer.de/amm
92amm-info@iis.fraunhofer.de
93----------------------------------------------------------------------------- */
94
95/******************* Library for basic calculation routines ********************
96
97   Author(s):   Omer Osman
98
99   Description: MPEG-D SAC/USAC/SAOC Huffman Part0 Tables
100
101*******************************************************************************/
102
103#ifndef HUFF_NODES_H
104#define HUFF_NODES_H
105
106#include "genericStds.h"
107
108typedef struct {
109  SHORT nodeTab[39][2];
110
111} HUFF_RES_NODES;
112
113/* 1D Nodes */
114typedef struct {
115  SHORT nodeTab[30][2];
116
117} HUFF_CLD_NOD_1D;
118
119typedef struct {
120  SHORT nodeTab[7][2];
121
122} HUFF_ICC_NOD_1D;
123
124typedef struct {
125  SHORT nodeTab[50][2];
126
127} HUFF_CPC_NOD_1D;
128
129typedef struct {
130  SHORT nodeTab[15][2];
131
132} HUFF_OLD_NOD_1D;
133
134typedef struct {
135  SHORT nodeTab[63][2];
136
137} HUFF_NRG_NOD_1D;
138
139/* 2D Nodes */
140typedef struct {
141  SHORT lav3[15][2];
142  SHORT lav5[35][2];
143  SHORT lav7[63][2];
144  SHORT lav9[99][2];
145
146} HUFF_CLD_NOD_2D;
147
148typedef struct {
149  SHORT lav1[3][2];
150  SHORT lav3[15][2];
151  SHORT lav5[35][2];
152  SHORT lav7[63][2];
153
154} HUFF_ICC_NOD_2D;
155
156typedef struct {
157  SHORT lav3[15][2];
158  SHORT lav6[48][2];
159  SHORT lav9[99][2];
160  SHORT lav12[168][2];
161
162} HUFF_OLD_NOD_2D;
163
164typedef struct {
165  SHORT lav3[15][2];
166  SHORT lav5[35][2];
167  SHORT lav7[63][2];
168  SHORT lav9[99][2];
169
170} HUFF_NRG_NOD_2D_df;
171
172typedef struct {
173  SHORT lav3[15][2];
174  SHORT lav6[48][2];
175  SHORT lav9[99][2];
176  SHORT lav12[168][2];
177
178} HUFF_NRG_NOD_2D_dt;
179
180typedef struct {
181  HUFF_NRG_NOD_2D_df df[2];
182  HUFF_NRG_NOD_2D_dt dt[2];
183  HUFF_NRG_NOD_2D_df dp[2];
184
185} HUFF_NRG_NOD_2D;
186
187/* Complete bs Parameter Nodes */
188typedef struct {
189  const HUFF_CLD_NOD_1D *h1D[3];
190  const HUFF_CLD_NOD_2D *h2D[3][2];
191
192} HUFF_CLD_NODES;
193
194typedef struct {
195  const HUFF_ICC_NOD_1D *h1D[3];
196  const HUFF_ICC_NOD_2D *h2D[3][2];
197
198} HUFF_ICC_NODES;
199
200typedef struct {
201  const HUFF_OLD_NOD_1D *h1D[3];
202  const HUFF_OLD_NOD_2D *h2D[3][2];
203
204} HUFF_OLD_NODES;
205
206typedef struct {
207  const HUFF_NRG_NOD_1D *h1D[3];
208  const HUFF_NRG_NOD_2D *h2D;
209
210} HUFF_NRG_NODES;
211
212/* parameter instance */
213typedef struct {
214  SHORT cld[30][2];
215  SHORT icc[7][2];
216  SHORT ipd[7][2];
217  SHORT old[15][2];
218  SHORT nrg[63][2];
219} HUFF_PT0_NODES;
220
221typedef struct {
222  SHORT nodeTab[3][2];
223
224} HUFF_LAV_NODES;
225
226/* USAC specific */
227typedef struct {
228  SHORT nodeTab[7][2];
229
230} HUFF_IPD_NOD_1D;
231
232typedef struct {
233  SHORT lav1[3][2];
234  SHORT lav3[15][2];
235  SHORT lav5[35][2];
236  SHORT lav7[63][2];
237
238} HUFF_IPD_NOD_2D;
239
240typedef struct {
241  HUFF_IPD_NOD_1D h1D[3];
242  HUFF_IPD_NOD_2D h2D[3][2];
243
244} HUFF_IPD_NODES;
245
246/* non-lossy coding decoder */
247extern const HUFF_PT0_NODES FDK_huffPart0Nodes;
248extern const HUFF_LAV_NODES FDK_huffLavIdxNodes;
249
250extern const HUFF_ICC_NODES FDK_huffICCNodes;
251extern const HUFF_CLD_NODES FDK_huffCLDNodes;
252extern const HUFF_RES_NODES FDK_huffReshapeNodes;
253
254extern const HUFF_OLD_NODES huffOLDNodes;
255
256extern const HUFF_IPD_NODES FDK_huffIPDNodes;
257
258#endif /* HUFF_NODES_H */
259