/* Copyright (C) 2007 Hong Zhiqian */ | |
/** | |
@file profile_tm.h | |
@author Hong Zhiqian | |
@brief Various compatibility routines for Speex (TriMedia version) | |
*/ | |
/* | |
Redistribution and use in source and binary forms, with or without | |
modification, are permitted provided that the following conditions | |
are met: | |
- Redistributions of source code must retain the above copyright | |
notice, this list of conditions and the following disclaimer. | |
- Redistributions in binary form must reproduce the above copyright | |
notice, this list of conditions and the following disclaimer in the | |
documentation and/or other materials provided with the distribution. | |
- Neither the name of the Xiph.org Foundation nor the names of its | |
contributors may be used to endorse or promote products derived from | |
this software without specific prior written permission. | |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR | |
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
*/ | |
/** | |
* @remarks This file provide some capabilities to measure clock cycles. | |
* Use this if unable to compile with TriMedia profile options | |
*/ | |
extern int __profile_begin; | |
extern int __profile_end; | |
#if TM_PROFILE | |
#define PROFILE_START() \ | |
{ \ | |
__profile_begin = cycles(); \ | |
} \ | |
#define PROFILE_STOP() \ | |
{ \ | |
__profile_end = cycles(); \ | |
printf("%s\t%d\n", __FUNCTION__, end - begin); \ | |
} \ | |
#else | |
#define PROFILE_START() | |
#define PROFILE_STOP() | |
#endif | |
#if TM_PROFILE_SPXAUTOCORR | |
#define _SPX_AUTOCORR_START() PROFILE_START() | |
#define _SPX_AUTOCORR_STOP() PROFILE_STOP() | |
#else | |
#define _SPX_AUTOCORR_START() | |
#define _SPX_AUTOCORR_STOP() | |
#endif | |
#if TM_PROFILE_INNERPROD | |
#define INNERPROD_START() PROFILE_START() | |
#define INNERPROD_STOP() PROFILE_STOP() | |
#else | |
#define INNERPROD_START() | |
#define INNERPROD_STOP() | |
#endif | |
#if TM_PROFILE_PITCHXCORR | |
#define PITCHXCORR_START() PROFILE_START() | |
#define PITCHXCORR_STOP() PROFILE_STOP() | |
#else | |
#define PITCHXCORR_START() | |
#define PITCHXCORR_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTEPITCHERROR | |
#define COMPUTEPITCHERROR_START() PROFILE_START() | |
#define COMPUTEPITCHERROR_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTEPITCHERROR_START() | |
#define COMPUTEPITCHERROR_STOP() | |
#endif | |
#if TM_PROFILE_PITCHGAINSEARCH3TAPVQ | |
#define PITCHGAINSEARCH3TAPVQ_START() PROFILE_START() | |
#define PITCHGAINSEARCH3TAPVQ_STOP() PROFILE_STOP() | |
#else | |
#define PITCHGAINSEARCH3TAPVQ_START() | |
#define PITCHGAINSEARCH3TAPVQ_STOP() | |
#endif | |
#if TM_PROFILE_OPENLOOPNBESTPITCH | |
#define OPENLOOPNBESTPITCH_START() PROFILE_START() | |
#define OPENLOOPNBESTPITCH_STOP() PROFILE_STOP() | |
#else | |
#define OPENLOOPNBESTPITCH_START() | |
#define OPENLOOPNBESTPITCH_STOP() | |
#endif | |
#if TM_PROFILE_LSP_INTERPOLATE | |
#define LSPINTERPOLATE_START() PROFILE_START() | |
#define LSPINTERPOLATE_STOP() PROFILE_STOP() | |
#else | |
#define LSPINTERPOLATE_START() | |
#define LSPINTERPOLATE_STOP() | |
#endif | |
#if TM_PROFILE_CHEBPOLYEVA | |
#define CHEBPOLYEVA_START() PROFILE_START() | |
#define CHEBPOLYEVA_STOP() PROFILE_STOP() | |
#else | |
#define CHEBPOLYEVA_START() | |
#define CHEBPOLYEVA_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTEQUANTWEIGHTS | |
#define COMPUTEQUANTWEIGHTS_START() PROFILE_START() | |
#define COMPUTEQUANTWEIGHTS_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTEQUANTWEIGHTS_START() | |
#define COMPUTEQUANTWEIGHTS_STOP() | |
#endif | |
#if TM_PROFILE_LSPQUANT | |
#define LSPQUANT_START() PROFILE_START() | |
#define LSPQUANT_STOP() PROFILE_STOP() | |
#else | |
#define LSPQUANT_START() | |
#define LSPQUANT_STOP() | |
#endif | |
#if TM_PROFILE_LSPWEIGHTQUANT | |
#define LSPWEIGHTQUANT_START() PROFILE_START() | |
#define LSPWEIGHTQUANT_STOP() PROFILE_STOP() | |
#else | |
#define LSPWEIGHTQUANT_START() | |
#define LSPWEIGHTQUANT_STOP() | |
#endif | |
#if TM_PROFILE_FIRMEM16 | |
#define FIRMEM16_START() PROFILE_START() | |
#define FIRMEM16_STOP() PROFILE_STOP() | |
#else | |
#define FIRMEM16_START() | |
#define FIRMEM16_STOP() | |
#endif | |
#if TM_PROFILE_IIRMEM16 | |
#define IIRMEM16_START() PROFILE_START() | |
#define IIRMEM16_STOP() PROFILE_STOP() | |
#else | |
#define IIRMEM16_START() | |
#define IIRMEM16_STOP() | |
#endif | |
#if TM_PROFILE_FILTERMEM16 | |
#define FILTERMEM16_START() PROFILE_START() | |
#define FILTERMEM16_STOP() PROFILE_STOP() | |
#else | |
#define FILTERMEM16_START() | |
#define FILTERMEM16_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTERMS16 | |
#define COMPUTERMS16_START() PROFILE_START() | |
#define COMPUTERMS16_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTERMS16_START() | |
#define COMPUTERMS16_STOP() | |
#endif | |
#if TM_PROFILE_NORMALIZE16 | |
#define NORMALIZE16_START() PROFILE_START() | |
#define NORMALIZE16_STOP() PROFILE_STOP() | |
#else | |
#define NORMALIZE16_START() | |
#define NORMALIZE16_STOP() | |
#endif | |
#if TM_PROFILE_BWLPC | |
#define BWLPC_START() PROFILE_START() | |
#define BWLPC_STOP() PROFILE_STOP() | |
#else | |
#define BWLPC_START() | |
#define BWLPC_STOP() | |
#endif | |
#if TM_PROFILE_HIGHPASS | |
#define HIGHPASS_START() PROFILE_START() | |
#define HIGHPASS_STOP() PROFILE_STOP() | |
#else | |
#define HIGHPASS_START() | |
#define HIGHPASS_STOP() | |
#endif | |
#if TM_PROFILE_SIGNALMUL | |
#define SIGNALMUL_START() PROFILE_START() | |
#define SIGNALMUL_STOP() PROFILE_STOP() | |
#else | |
#define SIGNALMUL_START() | |
#define SIGNALMUL_STOP() | |
#endif | |
#if TM_PROFILE_SIGNALDIV | |
#define SIGNALDIV_START() PROFILE_START() | |
#define SIGNALDIV_STOP() PROFILE_STOP() | |
#else | |
#define SIGNALDIV_START() | |
#define SIGNALDIV_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTEIMPULSERESPONSE | |
#define COMPUTEIMPULSERESPONSE_START() PROFILE_START() | |
#define COMPUTEIMPULSERESPONSE_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTEIMPULSERESPONSE_START() | |
#define COMPUTEIMPULSERESPONSE_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTEWEIGHTEDCODEBOOK | |
#define COMPUTEWEIGHTEDCODEBOOK_START() PROFILE_START() | |
#define COMPUTEWEIGHTEDCODEBOOK_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTEWEIGHTEDCODEBOOK_START() | |
#define COMPUTEWEIGHTEDCODEBOOK_STOP() | |
#endif | |
#if TM_PROFILE_TARGETUPDATE | |
#define TARGETUPDATE_START() PROFILE_START() | |
#define TARGETUPDATE_STOP() PROFILE_STOP() | |
#else | |
#define TARGETUPDATE_START() | |
#define TARGETUPDATE_STOP() | |
#endif | |
#if TM_PROFILE_VQNBEST | |
#define VQNBEST_START() PROFILE_START() | |
#define VQNBEST_STOP() PROFILE_STOP() | |
#else | |
#define VQNBEST_START() | |
#define VQNBEST_STOP() | |
#endif | |
#if TM_PROFILE_VQNBESTSIGN | |
#define VQNBESTSIGN_START() PROFILE_START() | |
#define VQNBESTSIGN_STOP() PROFILE_STOP() | |
#else | |
#define VQNBESTSIGN_START() | |
#define VQNBESTSIGN_STOP() | |
#endif | |
#if TM_PROFILE_PREPROCESSANALYSIS | |
#define PREPROCESSANAYLSIS_START() PROFILE_START() | |
#define PREPROCESSANAYLSIS_STOP() PROFILE_STOP() | |
#else | |
#define PREPROCESSANAYLSIS_START() | |
#define PREPROCESSANAYLSIS_STOP() | |
#endif | |
#if TM_PROFILE_UPDATENOISEPROB | |
#define UPDATENOISEPROB_START() PROFILE_START() | |
#define UPDATENOISEPROB_STOP() PROFILE_STOP() | |
#else | |
#define UPDATENOISEPROB_START() | |
#define UPDATENOISEPROB_STOP() | |
#endif | |
#if TM_PROFILE_COMPUTEGAINFLOOR | |
#define COMPUTEGAINFLOOR_START() PROFILE_START() | |
#define COMPUTEGAINFLOOR_STOP() PROFILE_STOP() | |
#else | |
#define COMPUTEGAINFLOOR_START() | |
#define COMPUTEGAINFLOOR_STOP() | |
#endif | |
#if TM_PROFILE_FILTERDCNOTCH16 | |
#define FILTERDCNOTCH16_START() PROFILE_START() | |
#define FILTERDCNOTCH16_STOP() PROFILE_STOP() | |
#else | |
#define FILTERDCNOTCH16_START() | |
#define FILTERDCNOTCH16_STOP() | |
#endif | |
#if TM_PROFILE_MDFINNERPROD | |
#define MDFINNERPROD_START() PROFILE_START() | |
#define MDFINNERPROD_STOP() PROFILE_STOP() | |
#else | |
#define MDFINNERPROD_START() | |
#define MDFINNERPROD_STOP() | |
#endif | |
#if TM_PROFILE_SPECTRALMULACCUM | |
#define SPECTRALMULACCUM_START() PROFILE_START() | |
#define SPECTRALMULACCUM_STOP() PROFILE_STOP() | |
#else | |
#define SPECTRALMULACCUM_START() | |
#define SPECTRALMULACCUM_STOP() | |
#endif | |
#if TM_PROFILE_WEIGHTEDSPECTRALMULCONJ | |
#define WEIGHTEDSPECTRALMULCONJ_START() PROFILE_START() | |
#define WEIGHTEDSPECTRALMULCONJ_STOP() PROFILE_STOP() | |
#else | |
#define WEIGHTEDSPECTRALMULCONJ_START() | |
#define WEIGHTEDSPECTRALMULCONJ_STOP() | |
#endif | |
#if TM_PROFILE_MDFADJUSTPROP | |
#define MDFADJUSTPROP_START() PROFILE_START() | |
#define MDFADJUSTPROP_STOP() PROFILE_STOP() | |
#else | |
#define MDFADJUSTPROP_START() | |
#define MDFADJUSTPROP_STOP() | |
#endif | |
#if TM_PROFILE_SPEEXECHOGETRESIDUAL | |
#define SPEEXECHOGETRESIDUAL_START() PROFILE_START() | |
#define SPEEXECHOGETRESIDUAL_STOP() PROFILE_STOP() | |
#else | |
#define SPEEXECHOGETRESIDUAL_START() | |
#define SPEEXECHOGETRESIDUAL_STOP() | |
#endif | |
#if TM_PROFILE_LSPENFORCEMARGIN | |
#define LSPENFORCEMARGIN_START() PROFILE_START() | |
#define LSPENFORCEMARGIN_STOP() PROFILE_STOP() | |
#else | |
#define LSPENFORCEMARGIN_START() | |
#define LSPENFORCEMARGIN_STOP() | |
#endif | |
#if TM_PROFILE_LSPTOLPC | |
#define LSPTOLPC_START() PROFILE_START() | |
#define LSPTOLPC_STOP() PROFILE_STOP() | |
#else | |
#define LSPTOLPC_START() | |
#define LSPTOLPC_STOP() | |
#endif | |
#if TM_PROFILE_MAXIMIZERANGE | |
#define MAXIMIZERANGE_START() PROFILE_START() | |
#define MAXIMIZERANGE_STOP() PROFILE_STOP() | |
#else | |
#define MAXIMIZERANGE_START() | |
#define MAXIMIZERANGE_STOP() | |
#endif | |
#if TM_PROFILE_RENORMRANGE | |
#define RENORMRANGE_START() PROFILE_START() | |
#define RENORMRANGE_STOP() PROFILE_STOP() | |
#else | |
#define RENORMRANGE_START() | |
#define RENORMRANGE_STOP() | |
#endif | |
#if TM_PROFILE_POWERSPECTRUM | |
#define POWERSPECTRUM_START() PROFILE_START() | |
#define POWERSPECTRUM_STOP() PROFILE_STOP() | |
#else | |
#define POWERSPECTRUM_START() | |
#define POWERSPECTRUM_STOP() | |
#endif | |
#if TM_PROFILE_QMFSYNTH | |
#define QMFSYNTH_START() PROFILE_START() | |
#define QMFSYNTH_STOP() PROFILE_STOP() | |
#else | |
#define QMFSYNTH_START() | |
#define QMFSYNTH_STOP() | |
#endif | |
#if TM_PROFILE_QMFDECOMP | |
#define QMFDECOMP_START() PROFILE_START() | |
#define QMFDECOMP_STOP() PROFILE_STOP() | |
#else | |
#define QMFDECOMP_START() | |
#define QMFDECOMP_STOP() | |
#endif | |
#if TM_PROFILE_FILTERBANKCOMPUTEBANK32 | |
#define FILTERBANKCOMPUTEBANK32_START() PROFILE_START() | |
#define FILTERBANKCOMPUTEBANK32_STOP() PROFILE_STOP() | |
#else | |
#define FILTERBANKCOMPUTEBANK32_START() | |
#define FILTERBANKCOMPUTEBANK32_STOP() | |
#endif | |
#if TM_PROFILE_FILTERBANKCOMPUTEPSD16 | |
#define FILTERBANKCOMPUTEPSD16_START() PROFILE_START() | |
#define FILTERBANKCOMPUTEPSD16_STOP() PROFILE_STOP() | |
#else | |
#define FILTERBANKCOMPUTEPSD16_START() | |
#define FILTERBANKCOMPUTEPSD16_STOP() | |
#endif | |