• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:		line_pe.h
18 
19 	Content:	Perceptual entropie module structure and functions
20 
21 *******************************************************************************/
22 
23 #ifndef __LINE_PE_H
24 #define __LINE_PE_H
25 
26 
27 #include "psy_const.h"
28 #include "interface.h"
29 
30 
31 typedef struct {
32    Word16 sfbLdEnergy[MAX_GROUPED_SFB];     /* 4*log(sfbEnergy)/log(2) */
33    Word16 sfbNLines4[MAX_GROUPED_SFB];      /* 4*number of relevant lines in sfb */
34    Word16 sfbPe[MAX_GROUPED_SFB];           /* pe for each sfb */
35    Word16 sfbConstPart[MAX_GROUPED_SFB];    /* constant part for each sfb */
36    Word16 sfbNActiveLines[MAX_GROUPED_SFB]; /* number of active lines in sfb */
37    Word16 pe;                               /* sum of sfbPe */
38    Word16 constPart;                        /* sum of sfbConstPart */
39    Word16 nActiveLines;                     /* sum of sfbNActiveLines */
40 } PE_CHANNEL_DATA; /* size Word16: 303 */
41 
42 
43 typedef struct {
44    PE_CHANNEL_DATA peChannelData[MAX_CHANNELS];
45    Word16 pe;
46    Word16 constPart;
47    Word16 nActiveLines;
48    Word16 offset;
49    Word16 ahFlag[MAX_CHANNELS][MAX_GROUPED_SFB];
50    Word32 thrExp[MAX_CHANNELS][MAX_GROUPED_SFB];
51    Word32 sfbPeFactors[MAX_CHANNELS][MAX_GROUPED_SFB];
52 } PE_DATA; /* size Word16: 303 + 4 + 120 + 240 = 667 */
53 
54 
55 
56 
57 void prepareSfbPe(PE_DATA *peData,
58                   PSY_OUT_CHANNEL  psyOutChannel[MAX_CHANNELS],
59                   Word16 logSfbEnergy[MAX_CHANNELS][MAX_GROUPED_SFB],
60                   Word16 sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB],
61                   const Word16 nChannels,
62                   const Word16 peOffset);
63 
64 
65 
66 
67 
68 void calcSfbPe(PE_DATA *peData,
69                PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS],
70                const Word16 nChannels);
71 
72 
73 
74 
75 #endif
76