• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /*
19 
20  Filename: s_sbr_frame_data.h
21  Funtions:
22 
23 ------------------------------------------------------------------------------
24  REVISION HISTORY
25 
26 
27  Who:                                   Date: MM/DD/YYYY
28  Description:
29 ------------------------------------------------------------------------------
30 
31 
32 ----------------------------------------------------------------------------
33 ; CONTINUE ONLY IF NOT ALREADY DEFINED
34 ----------------------------------------------------------------------------*/
35 #ifndef S_SBR_FRAME_DATA_H
36 #define S_SBR_FRAME_DATA_H
37 
38 /*----------------------------------------------------------------------------
39 ; INCLUDES
40 ----------------------------------------------------------------------------*/
41 #include    "pv_audio_type_defs.h"
42 #include    "s_sbr_header_data.h"
43 #include    "e_invf_mode.h"
44 #include    "e_coupling_mode.h"
45 #include    "sbr_constants.h"
46 #include    "s_patch.h"
47 /*----------------------------------------------------------------------------
48 ; MACROS
49 ; Define module specific macros here
50 ----------------------------------------------------------------------------*/
51 
52 /*----------------------------------------------------------------------------
53 ; DEFINES
54 ; Include all pre-processor statements here.
55 ----------------------------------------------------------------------------*/
56 
57 /*----------------------------------------------------------------------------
58 ; EXTERNAL VARIABLES REFERENCES
59 ; Declare variables used in this module but defined elsewhere
60 ----------------------------------------------------------------------------*/
61 
62 /*----------------------------------------------------------------------------
63 ; SIMPLE TYPEDEF'S
64 ----------------------------------------------------------------------------*/
65 /*----------------------------------------------------------------------------
66 ; ENUMERATED TYPEDEF'S
67 ----------------------------------------------------------------------------*/
68 
69 /*----------------------------------------------------------------------------
70 ; STRUCTURES TYPEDEF'S
71 ----------------------------------------------------------------------------*/
72 typedef struct
73 {
74     Int32 nScaleFactors;            /* total number of scalefactors in frame */
75     Int32 nNoiseFactors;
76     Int32 crcCheckSum;
77     Int32 frameClass;
78     Int32 frameInfo[LENGTH_FRAME_INFO];
79     Int32 nSfb[2];
80     Int32 nNfb;
81     Int32 offset;
82     Int32 ampRes;
83     Int32 nNoiseFloorEnvelopes;
84     Int32 p;
85     Int32 prevEnvIsShort;
86 
87     Int32 reset_flag;
88 
89 
90     SBR_HEADER_DATA sbr_header;
91 
92 
93     /* dynamic control signals */
94     Int32 domain_vec1[MAX_ENVELOPES];
95     Int32 domain_vec2[MAX_ENVELOPES];
96 
97 
98     INVF_MODE sbr_invf_mode[MAX_NUM_NOISE_VALUES];
99     INVF_MODE sbr_invf_mode_prev[MAX_NUM_NOISE_VALUES];
100 
101     COUPLING_MODE coupling;               /*  3 possibilities: off, level, pan */
102 
103 
104     Int32 addHarmonics[MAX_NUM_ENVELOPE_VALUES];
105 
106     /* Used by calc_sbr_envelope */
107     Int32 hFp[64];
108     Int32 harm_index;
109     Int32 phase_index;
110     Int32 sUp;
111 
112     /*
113      *    envelope data
114      */
115 
116     Int32 iEnvelope_man[MAX_NUM_ENVELOPE_VALUES]; /* mantissa */
117     Int32 iEnvelope_exp[MAX_NUM_ENVELOPE_VALUES]; /* exponent */
118     Int32 sfb_nrg_prev_man[MAX_FREQ_COEFFS];      /* mantissa */
119 
120 
121     /*
122      *    noise data
123      */
124 
125     Int32 sbrNoiseFloorLevel_man[MAX_NUM_NOISE_VALUES]; /* mantissa */
126     Int32 sbrNoiseFloorLevel_exp[MAX_NUM_NOISE_VALUES]; /* exponent */
127     Int32 prevNoiseLevel_man[MAX_NUM_NOISE_VALUES]; /* mantissa */
128 
129     Int32  BwVector[MAX_NUM_PATCHES];
130     Int32  BwVectorOld[MAX_NUM_PATCHES];
131     /* Both implement a pseudo circular buffer  */
132 
133     /*
134      * 40 ==  Biggest of  autoCorrLength(38) + sbrDec->bufReadOffs (2)  and
135      *    sbrDec->noCols (32) + sbrDec->bufWriteOffs  (6)
136      */
137     Int32 codecQmfBufferReal[40][32];
138     Int32 *sbrQmfBufferReal;
139     Int32 HistsbrQmfBufferReal[6*SBR_NUM_BANDS];
140 #ifdef HQ_SBR
141     Int32 codecQmfBufferImag[40][32];
142     Int32 *sbrQmfBufferImag;
143     Int32 HistsbrQmfBufferImag[6*SBR_NUM_BANDS];
144 #endif
145     Int16  V[1152];     /* Used by calc_sbr_synfilterbank as freq. history buffer */
146 
147 
148     Int32 degreeAlias[64];
149 
150 
151 #ifdef HQ_SBR
152 
153     Int32 fBuffer_man[5][64];        /* smoothing history buffers */
154     Int32 fBufferN_man[5][64];
155     Int32 fBuffer_exp[5][64];        /* smoothing history buffers */
156     Int32 fBufferN_exp[5][64];
157 
158     Int32 *fBuf_man[64];        /* pointer to smoothing history buffers */
159     Int32 *fBuf_exp[64];        /* pointer to smoothing history buffers */
160     Int32 *fBufN_man[64];
161     Int32 *fBufN_exp[64];
162 
163 
164 #endif
165 
166 }
167 SBR_FRAME_DATA;
168 
169 
170 /*----------------------------------------------------------------------------
171 ; GLOBAL FUNCTION DEFINITIONS
172 ; Function Prototype declaration
173 ----------------------------------------------------------------------------*/
174 
175 
176 /*----------------------------------------------------------------------------
177 ; END
178 ----------------------------------------------------------------------------*/
179 #endif
180 
181 
182