Home | History | Annotate | Download | only in inc
      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:		tns.h
     18 
     19 	Content:	TNS structures
     20 
     21 *******************************************************************************/
     22 
     23 #ifndef _TNS_H
     24 #define _TNS_H
     25 
     26 #include "typedef.h"
     27 #include "psy_const.h"
     28 
     29 
     30 
     31 #define TNS_MAX_ORDER 12
     32 #define TNS_MAX_ORDER_SHORT 5
     33 
     34 #define FILTER_DIRECTION    0
     35 
     36 typedef struct{ /*stuff that is tabulated dependent on bitrate etc. */
     37   Word16     threshOn;                /* min. prediction gain for using tns TABUL * 100*/
     38   Word32     lpcStartFreq;            /* lowest freq for lpc TABUL*/
     39   Word32     lpcStopFreq;             /* TABUL */
     40   Word32     tnsTimeResolution;
     41 }TNS_CONFIG_TABULATED;
     42 
     43 
     44 typedef struct {   /*assigned at InitTime*/
     45   Word16 tnsActive;
     46   Word16 tnsMaxSfb;
     47 
     48   Word16 maxOrder;                /* max. order of tns filter */
     49   Word16 tnsStartFreq;            /* lowest freq. for tns filtering */
     50   Word16 coefRes;
     51 
     52   TNS_CONFIG_TABULATED confTab;
     53 
     54   Word32 acfWindow[TNS_MAX_ORDER+1];
     55 
     56   Word16 tnsStartBand;
     57   Word16 tnsStartLine;
     58 
     59   Word16 tnsStopBand;
     60   Word16 tnsStopLine;
     61 
     62   Word16 lpcStartBand;
     63   Word16 lpcStartLine;
     64 
     65   Word16 lpcStopBand;
     66   Word16 lpcStopLine;
     67 
     68   Word16 tnsRatioPatchLowestCb;
     69   Word16 tnsModifyBeginCb;
     70 
     71   Word16 threshold; /* min. prediction gain for using tns TABUL * 100 */
     72 
     73 }TNS_CONFIG;
     74 
     75 
     76 typedef struct {
     77   Word16 tnsActive;
     78   Word32 parcor[TNS_MAX_ORDER];
     79   Word16 predictionGain;
     80 } TNS_SUBBLOCK_INFO; /* Word16 size: 26 */
     81 
     82 typedef struct{
     83   TNS_SUBBLOCK_INFO subBlockInfo[TRANS_FAC];
     84 } TNS_DATA_SHORT;
     85 
     86 typedef struct{
     87   TNS_SUBBLOCK_INFO subBlockInfo;
     88 } TNS_DATA_LONG;
     89 
     90 typedef struct{
     91   TNS_DATA_LONG tnsLong;
     92   TNS_DATA_SHORT tnsShort;
     93 }TNS_DATA_RAW;
     94 
     95 typedef struct{
     96   Word16 numOfSubblocks;
     97   TNS_DATA_RAW dataRaw;
     98 }TNS_DATA; /* Word16 size: 1 + 8*26 + 26 = 235 */
     99 
    100 typedef struct{
    101   Word16 tnsActive[TRANS_FAC];
    102   Word16 coefRes[TRANS_FAC];
    103   Word16 length[TRANS_FAC];
    104   Word16 order[TRANS_FAC];
    105   Word16 coef[TRANS_FAC*TNS_MAX_ORDER_SHORT];
    106 }TNS_INFO; /* Word16 size: 72 */
    107 
    108 #endif /* _TNS_H */
    109