• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  
2  /* -----------------------------------------------------------------------------------------------------------
3  Software License for The Fraunhofer FDK AAC Codec Library for Android
4  
5  � Copyright  1995 - 2015 Fraunhofer-Gesellschaft zur F�rderung der angewandten Forschung e.V.
6    All rights reserved.
7  
8   1.    INTRODUCTION
9  The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software that implements
10  the MPEG Advanced Audio Coding ("AAC") encoding and decoding scheme for digital audio.
11  This FDK AAC Codec software is intended to be used on a wide variety of Android devices.
12  
13  AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient general perceptual
14  audio codecs. AAC-ELD is considered the best-performing full-bandwidth communications codec by
15  independent studies and is widely deployed. AAC has been standardized by ISO and IEC as part
16  of the MPEG specifications.
17  
18  Patent licenses for necessary patent claims for the FDK AAC Codec (including those of Fraunhofer)
19  may be obtained through Via Licensing (www.vialicensing.com) or through the respective patent owners
20  individually for the purpose of encoding or decoding bit streams in products that are compliant with
21  the ISO/IEC MPEG audio standards. Please note that most manufacturers of Android devices already license
22  these patent claims through Via Licensing or directly from the patent owners, and therefore FDK AAC Codec
23  software may already be covered under those patent licenses when it is used for those licensed purposes only.
24  
25  Commercially-licensed AAC software libraries, including floating-point versions with enhanced sound quality,
26  are also available from Fraunhofer. Users are encouraged to check the Fraunhofer website for additional
27  applications information and documentation.
28  
29  2.    COPYRIGHT LICENSE
30  
31  Redistribution and use in source and binary forms, with or without modification, are permitted without
32  payment of copyright license fees provided that you satisfy the following conditions:
33  
34  You must retain the complete text of this software license in redistributions of the FDK AAC Codec or
35  your modifications thereto in source code form.
36  
37  You must retain the complete text of this software license in the documentation and/or other materials
38  provided with redistributions of the FDK AAC Codec or your modifications thereto in binary form.
39  You must make available free of charge copies of the complete source code of the FDK AAC Codec and your
40  modifications thereto to recipients of copies in binary form.
41  
42  The name of Fraunhofer may not be used to endorse or promote products derived from this library without
43  prior written permission.
44  
45  You may not charge copyright license fees for anyone to use, copy or distribute the FDK AAC Codec
46  software or your modifications thereto.
47  
48  Your modified versions of the FDK AAC Codec must carry prominent notices stating that you changed the software
49  and the date of any change. For modified versions of the FDK AAC Codec, the term
50  "Fraunhofer FDK AAC Codec Library for Android" must be replaced by the term
51  "Third-Party Modified Version of the Fraunhofer FDK AAC Codec Library for Android."
52  
53  3.    NO PATENT LICENSE
54  
55  NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without limitation the patents of Fraunhofer,
56  ARE GRANTED BY THIS SOFTWARE LICENSE. Fraunhofer provides no warranty of patent non-infringement with
57  respect to this software.
58  
59  You may use this FDK AAC Codec software or modifications thereto only for purposes that are authorized
60  by appropriate patent licenses.
61  
62  4.    DISCLAIMER
63  
64  This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright holders and contributors
65  "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, including but not limited to the implied warranties
66  of merchantability and fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
67  CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, or consequential damages,
68  including but not limited to procurement of substitute goods or services; loss of use, data, or profits,
69  or business interruption, however caused and on any theory of liability, whether in contract, strict
70  liability, or tort (including negligence), arising in any way out of the use of this software, even if
71  advised of the possibility of such damage.
72  
73  5.    CONTACT INFORMATION
74  
75  Fraunhofer Institute for Integrated Circuits IIS
76  Attention: Audio and Multimedia Departments - FDK AAC LL
77  Am Wolfsmantel 33
78  91058 Erlangen, Germany
79  
80  www.iis.fraunhofer.de/amm
81  amm-info@iis.fraunhofer.de
82  ----------------------------------------------------------------------------------------------------------- */
83  
84  /*!
85    \file
86    \brief  SBR bit writing
87  */
88  #ifndef __BIT_SBR_H
89  #define __BIT_SBR_H
90  
91  #include "sbr_def.h"
92  #include "cmondata.h"
93  #include "fram_gen.h"
94  
95  struct SBR_ENV_DATA;
96  
97  struct SBR_BITSTREAM_DATA
98  {
99    INT TotalBits;
100    INT PayloadBits;
101    INT FillBits;
102    INT HeaderActive;
103    INT NrSendHeaderData;            /**< input from commandline */
104    INT CountSendHeaderData;         /**< modulo count. If < 0 then no counting is done (no SBR headers) */
105  };
106  
107  typedef struct SBR_BITSTREAM_DATA  *HANDLE_SBR_BITSTREAM_DATA;
108  
109  struct SBR_HEADER_DATA
110  {
111    AMP_RES sbr_amp_res;
112    INT sbr_start_frequency;
113    INT sbr_stop_frequency;
114    INT sbr_xover_band;
115    INT sbr_noise_bands;
116    INT sbr_data_extra;
117    INT header_extra_1;
118    INT header_extra_2;
119    INT sbr_lc_stereo_mode;
120    INT sbr_limiter_bands;
121    INT sbr_limiter_gains;
122    INT sbr_interpol_freq;
123    INT sbr_smoothing_length;
124    INT alterScale;
125    INT freqScale;
126  
127    /*
128      element of channelpairelement
129    */
130    INT coupling;
131    INT prev_coupling;
132  
133    /*
134      element of singlechannelelement
135    */
136  
137  };
138  typedef struct SBR_HEADER_DATA *HANDLE_SBR_HEADER_DATA;
139  
140  struct SBR_ENV_DATA
141  {
142  
143    INT sbr_xpos_ctrl;
144    FREQ_RES freq_res_fixfix[2];
145    UCHAR fResTransIsLow;
146  
147    INVF_MODE sbr_invf_mode;
148    INVF_MODE sbr_invf_mode_vec[MAX_NUM_NOISE_VALUES];
149  
150    XPOS_MODE sbr_xpos_mode;
151  
152    INT ienvelope[MAX_ENVELOPES][MAX_FREQ_COEFFS];
153  
154    INT codeBookScfLavBalance;
155    INT codeBookScfLav;
156    const INT *hufftableTimeC;
157    const INT *hufftableFreqC;
158    const UCHAR *hufftableTimeL;
159    const UCHAR *hufftableFreqL;
160  
161    const INT *hufftableLevelTimeC;
162    const INT *hufftableBalanceTimeC;
163    const INT *hufftableLevelFreqC;
164    const INT *hufftableBalanceFreqC;
165    const UCHAR *hufftableLevelTimeL;
166    const UCHAR *hufftableBalanceTimeL;
167    const UCHAR *hufftableLevelFreqL;
168    const UCHAR *hufftableBalanceFreqL;
169  
170  
171    const UCHAR *hufftableNoiseTimeL;
172    const INT *hufftableNoiseTimeC;
173    const UCHAR *hufftableNoiseFreqL;
174    const INT *hufftableNoiseFreqC;
175  
176    const UCHAR *hufftableNoiseLevelTimeL;
177    const INT *hufftableNoiseLevelTimeC;
178    const UCHAR *hufftableNoiseBalanceTimeL;
179    const INT *hufftableNoiseBalanceTimeC;
180    const UCHAR *hufftableNoiseLevelFreqL;
181    const INT *hufftableNoiseLevelFreqC;
182    const UCHAR *hufftableNoiseBalanceFreqL;
183    const INT *hufftableNoiseBalanceFreqC;
184  
185    HANDLE_SBR_GRID hSbrBSGrid;
186  
187    INT noHarmonics;
188    INT addHarmonicFlag;
189    UCHAR addHarmonic[MAX_FREQ_COEFFS];
190  
191  
192    /* calculated helper vars */
193    INT si_sbr_start_env_bits_balance;
194    INT si_sbr_start_env_bits;
195    INT si_sbr_start_noise_bits_balance;
196    INT si_sbr_start_noise_bits;
197  
198    INT noOfEnvelopes;
199    INT noScfBands[MAX_ENVELOPES];
200    INT domain_vec[MAX_ENVELOPES];
201    INT domain_vec_noise[MAX_ENVELOPES];
202    SCHAR sbr_noise_levels[MAX_FREQ_COEFFS];
203    INT noOfnoisebands;
204  
205    INT balance;
206    AMP_RES init_sbr_amp_res;
207    AMP_RES currentAmpResFF;
208    FIXP_DBL ton_HF[SBR_GLOBAL_TONALITY_VALUES]; /* tonality is scaled by 2^19/0.524288f (fract part of RELAXATION) */
209    FIXP_DBL global_tonality;
210  
211    /* extended data */
212    INT extended_data;
213    INT extension_size;
214    INT extension_id;
215    UCHAR extended_data_buffer[SBR_EXTENDED_DATA_MAX_CNT];
216  
217    UCHAR ldGrid;
218  };
219  typedef struct SBR_ENV_DATA *HANDLE_SBR_ENV_DATA;
220  
221  
222  
223  INT FDKsbrEnc_WriteEnvSingleChannelElement(struct SBR_HEADER_DATA    *sbrHeaderData,
224                                   struct T_PARAMETRIC_STEREO *hParametricStereo,
225                                   struct SBR_BITSTREAM_DATA *sbrBitstreamData,
226                                   struct SBR_ENV_DATA       *sbrEnvData,
227                                   struct COMMON_DATA        *cmonData,
228                                   UINT                       sbrSyntaxFlags);
229  
230  
231  INT FDKsbrEnc_WriteEnvChannelPairElement(struct SBR_HEADER_DATA    *sbrHeaderData,
232                                 struct T_PARAMETRIC_STEREO *hParametricStereo,
233                                 struct SBR_BITSTREAM_DATA *sbrBitstreamData,
234                                 struct SBR_ENV_DATA       *sbrEnvDataLeft,
235                                 struct SBR_ENV_DATA       *sbrEnvDataRight,
236                                 struct COMMON_DATA        *cmonData,
237                                 UINT                       sbrSyntaxFlags);
238  
239  
240  
241  INT FDKsbrEnc_CountSbrChannelPairElement (struct SBR_HEADER_DATA     *sbrHeaderData,
242                                  struct T_PARAMETRIC_STEREO *hParametricStereo,
243                                  struct SBR_BITSTREAM_DATA  *sbrBitstreamData,
244                                  struct SBR_ENV_DATA        *sbrEnvDataLeft,
245                                  struct SBR_ENV_DATA        *sbrEnvDataRight,
246                                  struct COMMON_DATA         *cmonData,
247                                  UINT                        sbrSyntaxFlags);
248  
249  
250  
251  /* debugging and tuning functions */
252  
253  /*#define SBR_ENV_STATISTICS */
254  
255  
256  /*#define SBR_PAYLOAD_MONITOR*/
257  
258  #endif
259