Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThorvald Natvig <slicer@users.sourceforge.net>2008-07-04 15:21:53 +0400
committerThorvald Natvig <slicer@users.sourceforge.net>2008-07-04 15:21:53 +0400
commit545968323218c787ad51dccc8a0d73d486d5caa8 (patch)
tree5d2680efcc66fca95046a391d1f9e6a23f232723 /speexbuild
parent5246e8e904dfbcc66dd521dade65e147aee367b4 (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.cpp62
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;
}