1e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*
2e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Copyright 2003-2010, VisualOn, Inc.
3e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
4e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Licensed under the Apache License, Version 2.0 (the "License");
5e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** you may not use this file except in compliance with the License.
6e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** You may obtain a copy of the License at
7e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
8e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **     http://www.apache.org/licenses/LICENSE-2.0
9e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard **
10e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** Unless required by applicable law or agreed to in writing, software
11e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** distributed under the License is distributed on an "AS IS" BASIS,
12e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** See the License for the specific language governing permissions and
14e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard ** limitations under the License.
15e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard */
16e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard/*******************************************************************************
17e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	File:		psy_main.h
18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	Content:	Psychoacoustic major function block
20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
21956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong*******************************************************************************/
22956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
23956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifndef _PSYMAIN_H
24956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define _PSYMAIN_H
25956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
26956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#include "psy_configuration.h"
27956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#include "qc_data.h"
28956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#include "memalign.h"
29956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
30956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong/*
31956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  psy kernel
32956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong*/
33956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct  {
34956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  PSY_CONFIGURATION_LONG  psyConfLong;           /* Word16 size: 515 */
35956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  PSY_CONFIGURATION_SHORT psyConfShort;          /* Word16 size: 167 */
36956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  PSY_DATA                psyData[MAX_CHANNELS]; /* Word16 size: MAX_CHANNELS*1669*/
37956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  TNS_DATA                tnsData[MAX_CHANNELS]; /* Word16 size: MAX_CHANNELS*235 */
38e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard  Word32*                 pScratchTns;
39956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong  Word16				  sampleRateIdx;
40956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong}PSY_KERNEL; /* Word16 size: 2587 / 4491 */
41956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
42956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
43956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongWord16 PsyNew( PSY_KERNEL  *hPsy, Word32 nChan, VO_MEM_OPERATOR *pMemOP);
44956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongWord16 PsyDelete( PSY_KERNEL  *hPsy, VO_MEM_OPERATOR *pMemOP);
45956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
46956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongWord16 PsyOutNew( PSY_OUT *hPsyOut, VO_MEM_OPERATOR *pMemOP);
47956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongWord16 PsyOutDelete( PSY_OUT *hPsyOut, VO_MEM_OPERATOR *pMemOP);
48956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
49956c553ab0ce72f8074ad0fda2ffd66a0305700cJames DongWord16 psyMainInit( PSY_KERNEL *hPsy,
50956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                    Word32 sampleRate,
51956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                    Word32 bitRate,
52956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                    Word16 channels,
53956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                    Word16 tnsMask,
54956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                    Word16 bandwidth);
55956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
56956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
57b676a05348e4c516fa8b57e33b10548e6142c3f8Mans RullgardWord16 psyMain(Word16                   nChannels,   /*!< total number of channels */
58956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               ELEMENT_INFO             *elemInfo,
59b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard               Word16                   *timeSignal, /*!< interleaved time signal */
60956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_DATA                 psyData[MAX_CHANNELS],
61956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               TNS_DATA                 tnsData[MAX_CHANNELS],
62956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_CONFIGURATION_LONG*  psyConfLong,
63956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_CONFIGURATION_SHORT* psyConfShort,
64956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_OUT_CHANNEL          psyOutChannel[MAX_CHANNELS],
65956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_OUT_ELEMENT          *psyOutElement,
66956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               Word32                   *pScratchTns,
67956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong			   Word32					sampleRate);
68956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
69956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#endif /* _PSYMAIN_H */
70