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:		line_pe.h
18e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
19e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard	Content:	Perceptual entropie module structure and functions
20e2e838afcf03e603a41a0455846eaf9614537c16Mans Rullgard
21956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong*******************************************************************************/
22956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
23956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#ifndef __LINE_PE_H
24956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong#define __LINE_PE_H
25956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
26956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
27b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard#include "psy_const.h"
28b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard#include "interface.h"
29956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
30956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
31956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct {
32956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 sfbLdEnergy[MAX_GROUPED_SFB];     /* 4*log(sfbEnergy)/log(2) */
33956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 sfbNLines4[MAX_GROUPED_SFB];      /* 4*number of relevant lines in sfb */
34956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 sfbPe[MAX_GROUPED_SFB];           /* pe for each sfb */
35956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 sfbConstPart[MAX_GROUPED_SFB];    /* constant part for each sfb */
36956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 sfbNActiveLines[MAX_GROUPED_SFB]; /* number of active lines in sfb */
37956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 pe;                               /* sum of sfbPe */
38956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 constPart;                        /* sum of sfbConstPart */
39956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 nActiveLines;                     /* sum of sfbNActiveLines */
40956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} PE_CHANNEL_DATA; /* size Word16: 303 */
41956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
42956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
43956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongtypedef struct {
44956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   PE_CHANNEL_DATA peChannelData[MAX_CHANNELS];
45956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 pe;
46956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 constPart;
47956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 nActiveLines;
48956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 offset;
49956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB];
50956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word32 thrExp[MAX_CHANNELS][MAX_GROUPED_SFB];
51956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong   Word32 sfbPeFactors[MAX_CHANNELS][MAX_GROUPED_SFB];
52956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong} PE_DATA; /* size Word16: 303 + 4 + 120 + 240 = 667 */
53956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
54956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
55956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
56956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
57956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongvoid prepareSfbPe(PE_DATA *peData,
58956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                  PSY_OUT_CHANNEL  psyOutChannel[MAX_CHANNELS],
59956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                  Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB],
60956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                  Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB],
61956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                  const Word16 nChannels,
62956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong                  const Word16 peOffset);
63956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
64956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
65956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
66956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
67956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
68956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dongvoid calcSfbPe(PE_DATA *peData,
69956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
70956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong               const Word16 nChannels);
71956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
72956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
73956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
74956c553ab0ce72f8074ad0fda2ffd66a0305700cJames Dong
75b676a05348e4c516fa8b57e33b10548e6142c3f8Mans Rullgard#endif
76