• 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:		qc_data.h
18 
19 	Content:	Quantizing & coding structures
20 
21 *******************************************************************************/
22 
23 #ifndef _QC_DATA_H
24 #define _QC_DATA_H
25 
26 #include "psy_const.h"
27 #include "dyn_bits.h"
28 #include "adj_thr_data.h"
29 
30 
31 #define MAX_MODES 10
32 
33 typedef enum {
34   MODE_INVALID = 0,
35   MODE_1,        /* mono      */
36   MODE_1_1,      /* dual mono */
37   MODE_2         /* stereo    */
38 } ENCODER_MODE;
39 
40 typedef enum {
41   ID_SCE=0,     /* Single Channel Element   */
42   ID_CPE=1,     /* Channel Pair Element     */
43   ID_CCE=2,     /* Coupling Channel Element */
44   ID_LFE=3,     /* LFE Channel Element      */
45   ID_DSE=4,     /* current one DSE element for ancillary is supported */
46   ID_PCE=5,
47   ID_FIL=6,
48   ID_END=7
49 }ELEMENT_TYPE;
50 
51 typedef struct {
52   ELEMENT_TYPE elType;
53   Word16 instanceTag;
54   Word16 nChannelsInEl;
55   Word16 ChannelIndex[MAX_CHANNELS];
56 } ELEMENT_INFO;
57 
58 typedef struct {
59   Word32 paddingRest;
60 } PADDING;
61 
62 
63 /* Quantizing & coding stage */
64 
65 struct QC_INIT{
66   ELEMENT_INFO *elInfo;
67   Word16 maxBits;     /* maximum number of bits in reservoir  */
68   Word16 averageBits; /* average number of bits we should use */
69   Word16 bitRes;
70   Word16 meanPe;
71   Word32 chBitrate;
72   Word16 maxBitFac;
73   Word32 bitrate;
74 
75   PADDING padding;
76 };
77 
78 typedef struct
79 {
80   Word16          *quantSpec;       /* [FRAME_LEN_LONG];                            */
81   UWord16         *maxValueInSfb;   /* [MAX_GROUPED_SFB];                           */
82   Word16          *scf;             /* [MAX_GROUPED_SFB];                           */
83   Word16          globalGain;
84   Word16          mdctScale;
85   Word16          groupingMask;
86   SECTION_DATA    sectionData;
87   Word16          windowShape;
88 } QC_OUT_CHANNEL;
89 
90 typedef struct
91 {
92   Word16		  adtsUsed;
93   Word16          staticBitsUsed; /* for verification purposes */
94   Word16          dynBitsUsed;    /* for verification purposes */
95   Word16          pe;
96   Word16          ancBitsUsed;
97   Word16          fillBits;
98 } QC_OUT_ELEMENT;
99 
100 typedef struct
101 {
102   QC_OUT_CHANNEL  qcChannel[MAX_CHANNELS];
103   QC_OUT_ELEMENT  qcElement;
104   Word16          totStaticBitsUsed; /* for verification purposes */
105   Word16          totDynBitsUsed;    /* for verification purposes */
106   Word16          totAncBitsUsed;    /* for verification purposes */
107   Word16          totFillBits;
108   Word16          alignBits;
109   Word16          bitResTot;
110   Word16          averageBitsTot;
111 } QC_OUT;
112 
113 typedef struct {
114   Word32 chBitrate;
115   Word16 averageBits;               /* brutto -> look ancillary.h */
116   Word16 maxBits;
117   Word16 bitResLevel;
118   Word16 maxBitResBits;
119   Word16 relativeBits;            /* Bits relative to total Bits scaled down by 2 */
120 } ELEMENT_BITS;
121 
122 typedef struct
123 {
124   /* this is basically struct QC_INIT */
125   Word16 averageBitsTot;
126   Word16 maxBitsTot;
127   Word16 globStatBits;
128   Word16 nChannels;
129   Word16 bitResTot;
130 
131   Word16 maxBitFac;
132 
133   PADDING   padding;
134 
135   ELEMENT_BITS  elementBits;
136   ADJ_THR_STATE adjThr;
137 
138   Word16 logSfbFormFactor[MAX_CHANNELS][MAX_GROUPED_SFB];
139   Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB];
140   Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB];
141 } QC_STATE;
142 
143 #endif /* _QC_DATA_H */
144