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