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:		block_switch.h
     18 
     19 	Content:	Block switching structure and functions
     20 
     21 *******************************************************************************/
     22 
     23 #ifndef _BLOCK_SWITCH_H
     24 #define _BLOCK_SWITCH_H
     25 
     26 #include "typedef.h"
     27 
     28 
     29 /****************** Defines ******************************/
     30 #define BLOCK_SWITCHING_IIR_LEN 2                                           /* Length of HighPass-FIR-Filter for Attack-Detection */
     31 #define BLOCK_SWITCH_WINDOWS TRANS_FAC                                      /* number of windows for energy calculation */
     32 #define BLOCK_SWITCH_WINDOW_LEN FRAME_LEN_SHORT                             /* minimal granularity of energy calculation */
     33 
     34 
     35 
     36 /****************** Structures ***************************/
     37 typedef struct{
     38   Word32 invAttackRatio;
     39   Word16 windowSequence;
     40   Word16 nextwindowSequence;
     41   Flag attack;
     42   Flag lastattack;
     43   Word16 attackIndex;
     44   Word16 lastAttackIndex;
     45   Word16 noOfGroups;
     46   Word16 groupLen[TRANS_FAC];
     47   Word32 windowNrg[2][BLOCK_SWITCH_WINDOWS];     /* time signal energy in Subwindows (last and current) */
     48   Word32 windowNrgF[2][BLOCK_SWITCH_WINDOWS];    /* filtered time signal energy in segments (last and current) */
     49   Word32 iirStates[BLOCK_SWITCHING_IIR_LEN];     /* filter delay-line */
     50   Word32 maxWindowNrg;                           /* max energy in subwindows */
     51   Word32 accWindowNrg;                           /* recursively accumulated windowNrgF */
     52 }BLOCK_SWITCHING_CONTROL;
     53 
     54 
     55 
     56 
     57 
     58 Word16 InitBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl,
     59                           const Word32 bitRate, const Word16 nChannels);
     60 
     61 Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl,
     62                       Word16 *timeSignal,
     63 					  Word32  sampleRate,
     64                       Word16 chIncrement);
     65 
     66 Word16 SyncBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControlLeft,
     67                           BLOCK_SWITCHING_CONTROL *blockSwitchingControlRight,
     68                           const Word16 noOfChannels);
     69 
     70 
     71 
     72 #endif  /* #ifndef _BLOCK_SWITCH_H */
     73