diff options
author | Thorvald Natvig <slicer@users.sourceforge.net> | 2008-07-04 15:21:53 +0400 |
---|---|---|
committer | Thorvald Natvig <slicer@users.sourceforge.net> | 2008-07-04 15:21:53 +0400 |
commit | 545968323218c787ad51dccc8a0d73d486d5caa8 (patch) | |
tree | 5d2680efcc66fca95046a391d1f9e6a23f232723 /speexbuild | |
parent | 5246e8e904dfbcc66dd521dade65e147aee367b4 (diff) |
Intel C++ release build with ICE breaks with inlining.
git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1194 05730e5d-ab1b-0410-a4ac-84af385074fa
Diffstat (limited to 'speexbuild')
-rw-r--r-- | speexbuild/SpeexMark.cpp | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/speexbuild/SpeexMark.cpp b/speexbuild/SpeexMark.cpp index e03556bd0..c23d6533e 100644 --- a/speexbuild/SpeexMark.cpp +++ b/speexbuild/SpeexMark.cpp @@ -1,3 +1,10 @@ + +#if defined(__INTEL_COMPILER) +#include <mathimf.h> +#else +#include <math.h> +#endif + #include <QtCore> static const float tfreq1 = 48000.f; @@ -10,11 +17,12 @@ static const float tfreq2 = 44100.f; #define CALLGRIND_START_INSTRUMENTATION #define CALLGRIND_STOP_INSTRUMENTATION #define CALLGRIND_ZERO_STATS +#define lroundf(x) ( static_cast<long int>( (x) + ((x) >= 0.0f ? 0.5f : -0.5f) ) ) +#define lround(x) ( static_cast<long int>( (x) + ((x) >= 0.0 ? 0.5 : -0.5) ) ) #else #include <valgrind/callgrind.h> #endif -#include <math.h> #include <speex/speex.h> #include <speex/speex_jitter.h> #include <speex/speex_preprocess.h> @@ -55,7 +63,7 @@ int main(int argc, char **argv) { int iFrameSize; speex_encoder_ctl(enc, SPEEX_GET_FRAME_SIZE, &iFrameSize); - + void *dec = speex_decoder_init(&speex_wb_mode); iarg = 1; speex_decoder_ctl(dec, SPEEX_SET_ENH, &iarg); @@ -93,23 +101,23 @@ int main(int argc, char **argv) { for(int i=0;i<nframes;i++) { sv.append(reinterpret_cast<short *>(v[i].data())); } - + float oframe[2048]; float resampframe[32768]; float verifyframe[32768]; - + const float sfraq1 = tfreq1 / 16000.0f; float fOutSize1 = iFrameSize * sfraq1; int iOutSize1 = lroundf(fOutSize1); - + const float sfraq2 = tfreq2 / 16000.0f; float fOutSize2 = iFrameSize * sfraq2; int iOutSize2 = lroundf(fOutSize2); - + int err; SpeexResamplerState *srs1 = speex_resampler_init(1, 16000, lroundf(tfreq1), 3, &err); SpeexResamplerState *srs2 = speex_resampler_init(1, 16000, lroundf(tfreq2), 3, &err); - + SpeexBits sb; speex_bits_init(&sb); @@ -127,31 +135,35 @@ int main(int argc, char **argv) { t.restart(); nframes = qMin(nframes, 10); - + + int iter = 100; + CALLGRIND_START_INSTRUMENTATION; - for(int i=0;i<nframes-2;i++) { - speex_bits_reset(&sb); + for(int j=0;j<iter;j++) { + for(int i=0;i<nframes-2;i++) { + speex_bits_reset(&sb); + + speex_echo_cancellation(ses, sv[i], sv[i+2], tframe); - speex_echo_cancellation(ses, sv[i], sv[i+2], tframe); + speex_preprocess_run(spp, tframe); - speex_preprocess_run(spp, tframe); + speex_encode_int(enc, tframe, &sb); + len = speex_bits_nbytes(&sb); + speex_bits_write(&sb, data, len); - speex_encode_int(enc, tframe, &sb); - len = speex_bits_nbytes(&sb); - speex_bits_write(&sb, data, len); + speex_bits_read_from(&sb, data, len); + speex_decode(dec, &sb, oframe); - speex_bits_read_from(&sb, data, len); - speex_decode(dec, &sb, oframe); - - inlen = iFrameSize; - outlen = iOutSize1; - speex_resampler_process_float(srs1, 0, oframe, &inlen, resampframe, &outlen); + inlen = iFrameSize; + outlen = iOutSize1; + speex_resampler_process_float(srs1, 0, oframe, &inlen, resampframe, &outlen); - inlen = iFrameSize; - outlen = iOutSize2; - speex_resampler_process_float(srs2, 0, oframe, &inlen, resampframe, &outlen); + inlen = iFrameSize; + outlen = iOutSize2; + speex_resampler_process_float(srs2, 0, oframe, &inlen, resampframe, &outlen); + } } CALLGRIND_STOP_INSTRUMENTATION; @@ -163,7 +175,7 @@ int main(int argc, char **argv) { #endif qWarning("Used %llu usec", e); - qWarning("%.2f times realtime", (20000ULL * nframes) / (e * 1.0)); + qWarning("%.2f times realtime", (20000ULL * nframes * iter) / (e * 1.0)); return 0; } |