| /* |
| ** Copyright 2003-2010, VisualOn, Inc. |
| ** |
| ** Licensed under the Apache License, Version 2.0 (the "License"); |
| ** you may not use this file except in compliance with the License. |
| ** You may obtain a copy of the License at |
| ** |
| ** http://www.apache.org/licenses/LICENSE-2.0 |
| ** |
| ** Unless required by applicable law or agreed to in writing, software |
| ** distributed under the License is distributed on an "AS IS" BASIS, |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ** See the License for the specific language governing permissions and |
| ** limitations under the License. |
| */ |
| /******************************************************************************* |
| File: interface.h |
| |
| Content: psychoaccoustic/quantizer structures and interface |
| |
| *******************************************************************************/ |
| |
| #ifndef _INTERFACE_H |
| #define _INTERFACE_H |
| |
| #include "config.h" |
| #include "psy_const.h" |
| #include "psy_data.h" |
| #include "typedefs.h" |
| |
| |
| enum |
| { |
| MS_NONE = 0, |
| MS_SOME = 1, |
| MS_ALL = 2 |
| }; |
| |
| enum |
| { |
| MS_ON = 1 |
| }; |
| |
| struct TOOLSINFO { |
| Word16 msDigest; |
| Word16 msMask[MAX_GROUPED_SFB]; |
| }; |
| |
| |
| typedef struct { |
| Word16 sfbCnt; |
| Word16 sfbPerGroup; |
| Word16 maxSfbPerGroup; |
| Word16 windowSequence; |
| Word16 windowShape; |
| Word16 groupingMask; |
| Word16 sfbOffsets[MAX_GROUPED_SFB+1]; |
| Word16 mdctScale; |
| Word32 *sfbEnergy; |
| Word32 *sfbSpreadedEnergy; |
| Word32 *sfbThreshold; |
| Word32 *mdctSpectrum; |
| Word32 sfbEnSumLR; |
| Word32 sfbEnSumMS; |
| Word32 sfbDist[MAX_GROUPED_SFB]; |
| Word32 sfbDistNew[MAX_GROUPED_SFB]; |
| Word16 sfbMinSnr[MAX_GROUPED_SFB]; |
| Word16 minSfMaxQuant[MAX_GROUPED_SFB]; |
| Word16 minScfCalculated[MAX_GROUPED_SFB]; |
| Word16 prevScfLast[MAX_GROUPED_SFB]; |
| Word16 prevScfNext[MAX_GROUPED_SFB]; |
| Word16 deltaPeLast[MAX_GROUPED_SFB]; |
| TNS_INFO tnsInfo; |
| } PSY_OUT_CHANNEL; /* Word16 size: 14 + 60(MAX_GROUPED_SFB) + 112(TNS_INFO) = 186 */ |
| |
| typedef struct { |
| struct TOOLSINFO toolsInfo; |
| Word16 groupedSfbOffset[MAX_CHANNELS][MAX_GROUPED_SFB+1]; /* plus one for last dummy offset ! */ |
| Word16 groupedSfbMinSnr[MAX_CHANNELS][MAX_GROUPED_SFB]; |
| } PSY_OUT_ELEMENT; |
| |
| typedef struct { |
| /* information shared by both channels */ |
| PSY_OUT_ELEMENT psyOutElement; |
| /* information specific to each channel */ |
| PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS]; |
| }PSY_OUT; |
| |
| void BuildInterface(Word32 *mdctSpectrum, |
| const Word16 mdctScale, |
| SFB_THRESHOLD *sfbThreshold, |
| SFB_ENERGY *sfbEnergy, |
| SFB_ENERGY *sfbSpreadedEnergy, |
| const SFB_ENERGY_SUM sfbEnergySumLR, |
| const SFB_ENERGY_SUM sfbEnergySumMS, |
| const Word16 windowSequence, |
| const Word16 windowShape, |
| const Word16 sfbCnt, |
| const Word16 *sfbOffset, |
| const Word16 maxSfbPerGroup, |
| const Word16 *groupedSfbMinSnr, |
| const Word16 noOfGroups, |
| const Word16 *groupLen, |
| PSY_OUT_CHANNEL *psyOutCh); |
| |
| #endif /* _INTERFACE_H */ |