| /*
|
| ** Copyright 2003-2010, VisualOn, Inc.
|
| **
|
| ** Licensed under the Apache License, Version 2.0 (the "License");
|
| ** you may not use this file except in compliance with the License.
|
| ** You may obtain a copy of the License at
|
| **
|
| ** http://www.apache.org/licenses/LICENSE-2.0
|
| **
|
| ** Unless required by applicable law or agreed to in writing, software
|
| ** distributed under the License is distributed on an "AS IS" BASIS,
|
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| ** See the License for the specific language governing permissions and
|
| ** limitations under the License.
|
| */
|
| /*******************************************************************************
|
| File: block_switch.h
|
|
|
| Content: Block switching structure and functions
|
|
|
| *******************************************************************************/ |
| |
| #ifndef _BLOCK_SWITCH_H |
| #define _BLOCK_SWITCH_H |
| |
| #include "typedef.h" |
| |
| |
| /****************** Defines ******************************/ |
| #define BLOCK_SWITCHING_IIR_LEN 2 /* Length of HighPass-FIR-Filter for Attack-Detection */ |
| #define BLOCK_SWITCH_WINDOWS TRANS_FAC /* number of windows for energy calculation */ |
| #define BLOCK_SWITCH_WINDOW_LEN FRAME_LEN_SHORT /* minimal granularity of energy calculation */ |
| |
| |
| |
| /****************** Structures ***************************/ |
| typedef struct{ |
| Word32 invAttackRatio; |
| Word16 windowSequence; |
| Word16 nextwindowSequence; |
| Flag attack; |
| Flag lastattack; |
| Word16 attackIndex; |
| Word16 lastAttackIndex; |
| Word16 noOfGroups; |
| Word16 groupLen[TRANS_FAC]; |
| Word32 windowNrg[2][BLOCK_SWITCH_WINDOWS]; /* time signal energy in Subwindows (last and current) */ |
| Word32 windowNrgF[2][BLOCK_SWITCH_WINDOWS]; /* filtered time signal energy in segments (last and current) */ |
| Word32 iirStates[BLOCK_SWITCHING_IIR_LEN]; /* filter delay-line */ |
| Word32 maxWindowNrg; /* max energy in subwindows */ |
| Word32 accWindowNrg; /* recursively accumulated windowNrgF */ |
| }BLOCK_SWITCHING_CONTROL; |
| |
| |
| |
| |
| |
| Word16 InitBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, |
| const Word32 bitRate, const Word16 nChannels); |
| |
| Word16 BlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControl, |
| Word16 *timeSignal, |
| Word32 sampleRate, |
| Word16 chIncrement); |
| |
| Word16 SyncBlockSwitching(BLOCK_SWITCHING_CONTROL *blockSwitchingControlLeft, |
| BLOCK_SWITCHING_CONTROL *blockSwitchingControlRight, |
| const Word16 noOfChannels); |
| |
| |
| |
| #endif /* #ifndef _BLOCK_SWITCH_H */ |