1b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/* 2b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 3b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 4b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Licensed under the Apache License, Version 2.0 (the "License"); 5b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * you may not use this file except in compliance with the License. 6b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * You may obtain a copy of the License at 7b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 8b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * http://www.apache.org/licenses/LICENSE-2.0 9b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 10b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Unless required by applicable law or agreed to in writing, software 11b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * distributed under the License is distributed on an "AS IS" BASIS, 12b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * See the License for the specific language governing permissions and 14b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * limitations under the License. 15b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 16b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/** 17b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * @file picodsp.h 18b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 19b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Include file for DSP related data types and constants in Pico 20b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 21b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland 22b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * All rights reserved. 23b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 24b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * History: 25b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * - 2009-04-20 -- initial version 26b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen * 27b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen */ 28b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 29b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifndef PICODSP_H_ 30b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_H_ 31b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 32b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 33b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chenextern "C" { 34b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 35b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#if 0 36b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 37b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 38b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 39b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*----------------------------CONSTANTS ----------------------*/ 40b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*Normalization factors used at the start and at the end of the sig*/ 41b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_START_FLOAT_NORM 0.41f 42b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_ENVSPEC_K1 0.5f 43b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_ENVSPEC_K2 2 44b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_GETEXC_K1 1024 45b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_FIXRESP_NORM 4096.0f 46b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_END_FLOAT_NORM 1.5f*16.0f 47b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_FIX_SCALE1 0x4000000 48b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_FIX_SCALE2 0x4000 49b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT1 10 50b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT2 16 51b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT3 12 52b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT4 1 53b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT5 18 54b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SHIFT_FACT6 9 55b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOSIG_NORM1 9.14f /100.0f /*normalization factor*/ 56b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOSIG_MAXAMP (32767) 57b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICOSIG_MINAMP (-32768) 58b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_M_PI 3.14159265358979323846 59b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_MAX_EX 32 60b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_WGT_SHIFT (0x20000000) 61b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_N_RAND_TABLE (760) 62b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_COS_TABLE_LEN (512) 63b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_COS_TABLE_LEN2 (1024) 64b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_COS_TABLE_LEN4 (2048) 65b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_PI_SHIFT (4) /* -log2(PICODSP_COS_TABLE_LEN2/0x4000) */ 66b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 67b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_V_CUTOFF_FREQ 4500 68b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_UV_CUTOFF_FREQ 300 69b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_SAMP_FREQ 16000 70b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_FREQ_WARP_FACT 0.42f 71b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 72b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*----------------------------CEP/PHASE CONSTANTS----------------------------*/ 73b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_CEPORDER 25 74b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_PHASEORDER 72 75b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define CEPST_BUFF_SIZE 3 76b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PHASE_BUFF_SIZE 5 77b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*----------------------------FFT CONSTANTS----------------------------*/ 78b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_FFTSIZE (256) 79b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 80b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2) 81b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 82b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_DISPLACE PICODSP_FFTSIZE/4 83b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 84b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_H_FFTSIZE (PICODSP_FFTSIZE/2) 85b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define PICODSP_HFFTSIZE_P1 (PICODSP_H_FFTSIZE+1) 86b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 87b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define FAST_DEVICE(aCount, aAction) \ 88b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen{ \ 89b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen int count_ = (aCount); \ 90b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen int times_ = (count_ + 7) >> 3; \ 91b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen switch (count_ & 7){ \ 92b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 0: do { aAction; \ 93b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 7: aAction; \ 94b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 6: aAction; \ 95b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 5: aAction; \ 96b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 4: aAction; \ 97b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 3: aAction; \ 98b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 2: aAction; \ 99b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen case 1: aAction; \ 100b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen } while (--times_ > 0); \ 101b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} \ 102b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 103b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen/*------------------------------------------------------------------------------------------ 104b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen Fast Exp Approximation now remapped to a function in picoos 105b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen -----------------------------------------------------------------------------------------*/ 106b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#define EXP(y) picoos_quick_exp(y) 107b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 108b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#ifdef __cplusplus 109b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen} 110b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif 111b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen 112b190149a69b110e6719ce0a41877a683f8db7ae7Charles Chen#endif /*PICODSP_H_*/ 113