123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 |
- /* 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
|