• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  ** Copyright 2003-2010, VisualOn, Inc.
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 express or implied.
13  ** See the License for the specific language governing permissions and
14  ** limitations under the License.
15  */
16 /*******************************************************************************
17 	File:		interface.h
18 
19 	Content:	psychoaccoustic/quantizer structures and interface
20 
21 *******************************************************************************/
22 
23 #ifndef _INTERFACE_H
24 #define _INTERFACE_H
25 
26 #include "config.h"
27 #include "psy_const.h"
28 #include "psy_data.h"
29 #include "typedefs.h"
30 
31 
32 enum
33 {
34   MS_NONE = 0,
35   MS_SOME = 1,
36   MS_ALL  = 2
37 };
38 
39 enum
40 {
41   MS_ON = 1
42 };
43 
44 struct TOOLSINFO {
45   Word16 msDigest;
46   Word16 msMask[MAX_GROUPED_SFB];
47 };
48 
49 
50 typedef struct {
51   Word16  sfbCnt;
52   Word16  sfbPerGroup;
53   Word16  maxSfbPerGroup;
54   Word16  windowSequence;
55   Word16  windowShape;
56   Word16  groupingMask;
57   Word16  sfbOffsets[MAX_GROUPED_SFB+1];
58   Word16  mdctScale;
59   Word32 *sfbEnergy;
60   Word32 *sfbSpreadedEnergy;
61   Word32 *sfbThreshold;
62   Word32 *mdctSpectrum;
63   Word32  sfbEnSumLR;
64   Word32  sfbEnSumMS;
65   Word32 sfbDist[MAX_GROUPED_SFB];
66   Word32 sfbDistNew[MAX_GROUPED_SFB];
67   Word16  sfbMinSnr[MAX_GROUPED_SFB];
68   Word16 minSfMaxQuant[MAX_GROUPED_SFB];
69   Word16 minScfCalculated[MAX_GROUPED_SFB];
70   Word16 prevScfLast[MAX_GROUPED_SFB];
71   Word16 prevScfNext[MAX_GROUPED_SFB];
72   Word16 deltaPeLast[MAX_GROUPED_SFB];
73   TNS_INFO tnsInfo;
74 } PSY_OUT_CHANNEL; /* Word16 size: 14 + 60(MAX_GROUPED_SFB) + 112(TNS_INFO) = 186 */
75 
76 typedef struct {
77   struct TOOLSINFO toolsInfo;
78   Word16 groupedSfbOffset[MAX_CHANNELS][MAX_GROUPED_SFB+1];  /* plus one for last dummy offset ! */
79   Word16 groupedSfbMinSnr[MAX_CHANNELS][MAX_GROUPED_SFB];
80 } PSY_OUT_ELEMENT;
81 
82 typedef struct {
83   /* information shared by both channels  */
84   PSY_OUT_ELEMENT  psyOutElement;
85   /* information specific to each channel */
86   PSY_OUT_CHANNEL  psyOutChannel[MAX_CHANNELS];
87 }PSY_OUT;
88 
89 void BuildInterface(Word32                 *mdctSpectrum,
90                     const Word16            mdctScale,
91                     SFB_THRESHOLD          *sfbThreshold,
92                     SFB_ENERGY             *sfbEnergy,
93                     SFB_ENERGY             *sfbSpreadedEnergy,
94                     const SFB_ENERGY_SUM    sfbEnergySumLR,
95                     const SFB_ENERGY_SUM    sfbEnergySumMS,
96                     const Word16            windowSequence,
97                     const Word16            windowShape,
98                     const Word16            sfbCnt,
99                     const Word16           *sfbOffset,
100                     const Word16            maxSfbPerGroup,
101                     const Word16           *groupedSfbMinSnr,
102                     const Word16            noOfGroups,
103                     const Word16           *groupLen,
104                     PSY_OUT_CHANNEL        *psyOutCh);
105 
106 #endif /* _INTERFACE_H */
107