1219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/* 2219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc. 3219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 4219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License"); 5219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** you may not use this file except in compliance with the License. 6219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** You may obtain a copy of the License at 7219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 8219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** http://www.apache.org/licenses/LICENSE-2.0 9219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** 10219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** Unless required by applicable law or agreed to in writing, software 11219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS, 12219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** See the License for the specific language governing permissions and 14219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard ** limitations under the License. 15219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard */ 16219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard/******************************************************************************* 17219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard File: interface.h 18219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 19219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard Content: psychoaccoustic/quantizer structures and interface 20219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard 2117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong*******************************************************************************/ 2217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 2317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#ifndef _INTERFACE_H 2417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#define _INTERFACE_H 2517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 26219e2627f1e062c10645664b0d2470d4dfaf5083Mans Rullgard#include "config.h" 2717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#include "psy_const.h" 2817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#include "psy_data.h" 2917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#include "typedefs.h" 3017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongenum 3317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong{ 3417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MS_NONE = 0, 3517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MS_SOME = 1, 3617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MS_ALL = 2 3717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong}; 3817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 3917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongenum 4017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong{ 4117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong MS_ON = 1 4217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong}; 4317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 4417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongstruct TOOLSINFO { 4517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 msDigest; 4617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 msMask[MAX_GROUPED_SFB]; 4717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong}; 4817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 4917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 5017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongtypedef struct { 5117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 sfbCnt; 5217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 sfbPerGroup; 5317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 maxSfbPerGroup; 5417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 windowSequence; 5517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 windowShape; 5617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 groupingMask; 5717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 sfbOffsets[MAX_GROUPED_SFB+1]; 5817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 mdctScale; 5917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 *sfbEnergy; 6017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 *sfbSpreadedEnergy; 6117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 *sfbThreshold; 6217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 *mdctSpectrum; 6317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 sfbEnSumLR; 6417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 sfbEnSumMS; 6517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 sfbDist[MAX_GROUPED_SFB]; 6617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word32 sfbDistNew[MAX_GROUPED_SFB]; 6717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 sfbMinSnr[MAX_GROUPED_SFB]; 6817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 minSfMaxQuant[MAX_GROUPED_SFB]; 6917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 minScfCalculated[MAX_GROUPED_SFB]; 7017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 prevScfLast[MAX_GROUPED_SFB]; 7117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 prevScfNext[MAX_GROUPED_SFB]; 7217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 deltaPeLast[MAX_GROUPED_SFB]; 7317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong TNS_INFO tnsInfo; 7417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong} PSY_OUT_CHANNEL; /* Word16 size: 14 + 60(MAX_GROUPED_SFB) + 112(TNS_INFO) = 186 */ 7517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 7617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongtypedef struct { 7717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong struct TOOLSINFO toolsInfo; 7817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 groupedSfbOffset[MAX_CHANNELS][MAX_GROUPED_SFB+1]; /* plus one for last dummy offset ! */ 7917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong Word16 groupedSfbMinSnr[MAX_CHANNELS][MAX_GROUPED_SFB]; 8017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong} PSY_OUT_ELEMENT; 8117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongtypedef struct { 8317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong /* information shared by both channels */ 8417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong PSY_OUT_ELEMENT psyOutElement; 8517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong /* information specific to each channel */ 8617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS]; 8717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong}PSY_OUT; 8817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 8917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dongvoid BuildInterface(Word32 *mdctSpectrum, 9017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 mdctScale, 9117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SFB_THRESHOLD *sfbThreshold, 9217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SFB_ENERGY *sfbEnergy, 9317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong SFB_ENERGY *sfbSpreadedEnergy, 9417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const SFB_ENERGY_SUM sfbEnergySumLR, 9517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const SFB_ENERGY_SUM sfbEnergySumMS, 9617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 windowSequence, 9717299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 windowShape, 9817299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 sfbCnt, 9917299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 *sfbOffset, 10017299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 maxSfbPerGroup, 10117299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 *groupedSfbMinSnr, 10217299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 noOfGroups, 10317299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong const Word16 *groupLen, 10417299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong PSY_OUT_CHANNEL *psyOutCh); 10517299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong 10617299ab50ceb70d904e610e3b2d7fb2361a11e03James Dong#endif /* _INTERFACE_H */ 107