From e4321a8f184a0b149063f0c0950ad642700083eb Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 11:04:27 -0800 Subject: [PATCH 1/7] add audio-client externals to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index cab7d60928..efdadd51a7 100644 --- a/.gitignore +++ b/.gitignore @@ -39,5 +39,8 @@ interface/resources/visage/* # Ignore interfaceCache for Linux users interface/interfaceCache/ +# ignore audio-client externals +libraries/audio-client/external/*/* + gvr-interface/assets/oculussig* gvr-interface/libs/* \ No newline at end of file From d3828c7d89e1e9797a3eb5bd86e480f62e5a5497 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 11:05:16 -0800 Subject: [PATCH 2/7] remove gverb from externals --- .../external/gverb/include/gverb.h | 234 ------------------ .../external/gverb/include/gverbdsp.h | 85 ------- .../external/gverb/include/ladspa-util.h | 234 ------------------ .../audio-client/external/gverb/readme.txt | 14 -- .../audio-client/external/gverb/src/gverb.c | 207 ---------------- .../external/gverb/src/gverbdsp.c | 130 ---------- 6 files changed, 904 deletions(-) delete mode 100755 libraries/audio-client/external/gverb/include/gverb.h delete mode 100755 libraries/audio-client/external/gverb/include/gverbdsp.h delete mode 100755 libraries/audio-client/external/gverb/include/ladspa-util.h delete mode 100644 libraries/audio-client/external/gverb/readme.txt delete mode 100755 libraries/audio-client/external/gverb/src/gverb.c delete mode 100755 libraries/audio-client/external/gverb/src/gverbdsp.c diff --git a/libraries/audio-client/external/gverb/include/gverb.h b/libraries/audio-client/external/gverb/include/gverb.h deleted file mode 100755 index cd9c1a893d..0000000000 --- a/libraries/audio-client/external/gverb/include/gverb.h +++ /dev/null @@ -1,234 +0,0 @@ -/* - - Copyright (C) 1999 Juhana Sadeharju - kouhia at nic.funet.fi - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - */ - -#ifndef GVERB_H -#define GVERB_H - -#include -#include -#include -#include "gverbdsp.h" -#include "gverb.h" -#include "ladspa-util.h" - -#define FDNORDER 4 - -typedef struct { - int rate; - float inputbandwidth; - float taillevel; - float earlylevel; - ty_damper *inputdamper; - float maxroomsize; - float roomsize; - float revtime; - float maxdelay; - float largestdelay; - ty_fixeddelay **fdndels; - float *fdngains; - int *fdnlens; - ty_damper **fdndamps; - float fdndamping; - ty_diffuser **ldifs; - ty_diffuser **rdifs; - ty_fixeddelay *tapdelay; - int *taps; - float *tapgains; - float *d; - float *u; - float *f; - double alpha; -} ty_gverb; - - -ty_gverb *gverb_new(int, float, float, float, float, float, float, float, float); -void gverb_free(ty_gverb *); -void gverb_flush(ty_gverb *); -static void gverb_do(ty_gverb *, float, float *, float *); -static void gverb_set_roomsize(ty_gverb *, float); -static void gverb_set_revtime(ty_gverb *, float); -static void gverb_set_damping(ty_gverb *, float); -static void gverb_set_inputbandwidth(ty_gverb *, float); -static void gverb_set_earlylevel(ty_gverb *, float); -static void gverb_set_taillevel(ty_gverb *, float); - -/* - * This FDN reverb can be made smoother by setting matrix elements at the - * diagonal and near of it to zero or nearly zero. By setting diagonals to zero - * means we remove the effect of the parallel comb structure from the - * reverberation. A comb generates uniform impulse stream to the reverberation - * impulse response, and thus it is not good. By setting near diagonal elements - * to zero means we remove delay sequences having consequtive delays of the - * similar lenths, when the delays are in sorted in length with respect to - * matrix element index. The matrix described here could be generated by - * differencing Rocchesso's circulant matrix at max diffuse value and at low - * diffuse value (approaching parallel combs). - * - * Example 1: - * Set a(k,k), for all k, equal to 0. - * - * Example 2: - * Set a(k,k), a(k,k-1) and a(k,k+1) equal to 0. - * - * Example 3: The transition to zero gains could be smooth as well. - * a(k,k-1) and a(k,k+1) could be 0.3, and a(k,k-2) and a(k,k+2) could - * be 0.5, say. - */ - -static __inline void gverb_fdnmatrix(float *a, float *b) -{ - const float dl0 = a[0], dl1 = a[1], dl2 = a[2], dl3 = a[3]; - - b[0] = 0.5f*(+dl0 + dl1 - dl2 - dl3); - b[1] = 0.5f*(+dl0 - dl1 - dl2 + dl3); - b[2] = 0.5f*(-dl0 + dl1 - dl2 + dl3); - b[3] = 0.5f*(+dl0 + dl1 + dl2 + dl3); -} - -static __inline void gverb_do(ty_gverb *p, float x, float *yl, float *yr) -{ - float z; - unsigned int i; - float lsum,rsum,sum,sign; - - if ((x != x) || fabsf(x) > 100000.0f) { - x = 0.0f; - } - - z = damper_do(p->inputdamper, x); - - z = diffuser_do(p->ldifs[0],z); - - for(i = 0; i < FDNORDER; i++) { - p->u[i] = p->tapgains[i]*fixeddelay_read(p->tapdelay,p->taps[i]); - } - fixeddelay_write(p->tapdelay,z); - - for(i = 0; i < FDNORDER; i++) { - p->d[i] = damper_do(p->fdndamps[i], - p->fdngains[i]*fixeddelay_read(p->fdndels[i], - p->fdnlens[i])); - } - - sum = 0.0f; - sign = 1.0f; - for(i = 0; i < FDNORDER; i++) { - sum += sign*(p->taillevel*p->d[i] + p->earlylevel*p->u[i]); - sign = -sign; - } - sum += x*p->earlylevel; - lsum = sum; - rsum = sum; - - gverb_fdnmatrix(p->d,p->f); - - for(i = 0; i < FDNORDER; i++) { - fixeddelay_write(p->fdndels[i],p->u[i]+p->f[i]); - } - - lsum = diffuser_do(p->ldifs[1],lsum); - lsum = diffuser_do(p->ldifs[2],lsum); - lsum = diffuser_do(p->ldifs[3],lsum); - rsum = diffuser_do(p->rdifs[1],rsum); - rsum = diffuser_do(p->rdifs[2],rsum); - rsum = diffuser_do(p->rdifs[3],rsum); - - *yl = lsum; - *yr = rsum; -} - -static __inline void gverb_set_roomsize(ty_gverb *p, const float a) -{ - unsigned int i; - - if (a <= 1.0 || (a != a)) { - p->roomsize = 1.0; - } else { - p->roomsize = a; - } - p->largestdelay = p->rate * p->roomsize * 0.00294f; - - p->fdnlens[0] = f_round(1.000000f*p->largestdelay); - p->fdnlens[1] = f_round(0.816490f*p->largestdelay); - p->fdnlens[2] = f_round(0.707100f*p->largestdelay); - p->fdnlens[3] = f_round(0.632450f*p->largestdelay); - for(i = 0; i < FDNORDER; i++) { - p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]); - } - - p->taps[0] = 5+f_round(0.410f*p->largestdelay); - p->taps[1] = 5+f_round(0.300f*p->largestdelay); - p->taps[2] = 5+f_round(0.155f*p->largestdelay); - p->taps[3] = 5+f_round(0.000f*p->largestdelay); - - for(i = 0; i < FDNORDER; i++) { - p->tapgains[i] = powf((float)p->alpha, p->taps[i]); - } - -} - -static __inline void gverb_set_revtime(ty_gverb *p,float a) -{ - float ga,gt; - double n; - unsigned int i; - - p->revtime = a; - - ga = 60.0; - gt = p->revtime; - ga = powf(10.0f,-ga/20.0f); - n = p->rate*gt; - p->alpha = (double)powf(ga,1.0f/n); - - for(i = 0; i < FDNORDER; i++) { - p->fdngains[i] = -powf((float)p->alpha, p->fdnlens[i]); - } - -} - -static __inline void gverb_set_damping(ty_gverb *p,float a) -{ - unsigned int i; - - p->fdndamping = a; - for(i = 0; i < FDNORDER; i++) { - damper_set(p->fdndamps[i],p->fdndamping); - } -} - -static __inline void gverb_set_inputbandwidth(ty_gverb *p,float a) -{ - p->inputbandwidth = a; - damper_set(p->inputdamper,1.0 - p->inputbandwidth); -} - -static __inline void gverb_set_earlylevel(ty_gverb *p,float a) -{ - p->earlylevel = a; -} - -static __inline void gverb_set_taillevel(ty_gverb *p,float a) -{ - p->taillevel = a; -} - -#endif diff --git a/libraries/audio-client/external/gverb/include/gverbdsp.h b/libraries/audio-client/external/gverb/include/gverbdsp.h deleted file mode 100755 index df228868d7..0000000000 --- a/libraries/audio-client/external/gverb/include/gverbdsp.h +++ /dev/null @@ -1,85 +0,0 @@ - -#ifndef GVERBDSP_H -#define GVERBDSP_H - -#include "ladspa-util.h" - -typedef struct { - int size; - int idx; - float *buf; -} ty_fixeddelay; - -typedef struct { - int size; - float coeff; - int idx; - float *buf; -} ty_diffuser; - -typedef struct { - float damping; - float delay; -} ty_damper; - -ty_diffuser *diffuser_make(int, float); -void diffuser_free(ty_diffuser *); -void diffuser_flush(ty_diffuser *); -//float diffuser_do(ty_diffuser *, float); - -ty_damper *damper_make(float); -void damper_free(ty_damper *); -void damper_flush(ty_damper *); -//void damper_set(ty_damper *, float); -//float damper_do(ty_damper *, float); - -ty_fixeddelay *fixeddelay_make(int); -void fixeddelay_free(ty_fixeddelay *); -void fixeddelay_flush(ty_fixeddelay *); -//float fixeddelay_read(ty_fixeddelay *, int); -//void fixeddelay_write(ty_fixeddelay *, float); - -int isprime(int); -int nearest_prime(int, float); - -static __inline float diffuser_do(ty_diffuser *p, float x) -{ - float y,w; - - w = x - p->buf[p->idx]*p->coeff; - w = flush_to_zero(w); - y = p->buf[p->idx] + w*p->coeff; - p->buf[p->idx] = w; - p->idx = (p->idx + 1) % p->size; - return(y); -} - -static __inline float fixeddelay_read(ty_fixeddelay *p, int n) -{ - int i; - - i = (p->idx - n + p->size) % p->size; - return(p->buf[i]); -} - -static __inline void fixeddelay_write(ty_fixeddelay *p, float x) -{ - p->buf[p->idx] = x; - p->idx = (p->idx + 1) % p->size; -} - -static __inline void damper_set(ty_damper *p, float damping) -{ - p->damping = damping; -} - -static __inline float damper_do(ty_damper *p, float x) -{ - float y; - - y = x*(1.0-p->damping) + p->delay*p->damping; - p->delay = y; - return(y); -} - -#endif diff --git a/libraries/audio-client/external/gverb/include/ladspa-util.h b/libraries/audio-client/external/gverb/include/ladspa-util.h deleted file mode 100755 index ac7cad28ab..0000000000 --- a/libraries/audio-client/external/gverb/include/ladspa-util.h +++ /dev/null @@ -1,234 +0,0 @@ -/* Some misc util functions for audio DSP work, written by Steve Harris, - * December 2000 - * - * steve@plugin.org.uk - */ - -#ifndef LADSPA_UTIL_H -#define LADSPA_UTIL_H - -#include -#include -#include - -#define buffer_write(a, b) a=(b) - -// 16.16 fixpoint -typedef union { - int32_t all; - struct { -#ifdef WORDS_BIGENDIAN - int16_t in; - uint16_t fr; -#else - uint16_t fr; - int16_t in; -#endif - } part; -} fixp16; - -// 32.32 fixpoint -typedef union { - int64_t all; - struct { -#ifdef WORDS_BIGENDIAN - int32_t in; - uint32_t fr; -#else - uint32_t fr; - int32_t in; -#endif - } part; -} fixp32; - -/* 32 bit "pointer cast" union */ -typedef union { - float f; - int32_t i; -} ls_pcast32; - -// Sometimes it doesn't get defined, even though it eists and C99 is declared -long int lrintf (float x); - -// 1.0 / ln(2) -#define LN2R 1.442695041f - -/* detet floating point denormal numbers by comparing them to the smallest - * normal, crap, but reliable */ -#define DN_CHECK(x, l) if (fabs(x) < 1e-38) printf("DN: " l"\n") - -// Denormalise floats, only actually needed for PIII and recent PowerPC -//#define FLUSH_TO_ZERO(fv) (((*(unsigned int*)&(fv))&0x7f800000)==0)?0.0f:(fv) - -static __inline float flush_to_zero(float f) -{ - ls_pcast32 v; - - v.f = f; - - // original: return (v.i & 0x7f800000) == 0 ? 0.0f : f; - // version from Tim Blechmann - return (v.i & 0x7f800000) < 0x08000000 ? 0.0f : f; -} - -static __inline void round_to_zero(volatile float *f) -{ - *f += 1e-18; - *f -= 1e-18; -} - -/* A set of branchless clipping operations from Laurent de Soras */ - -static __inline float f_max(float x, float a) -{ - x -= a; - x += fabs(x); - x *= 0.5; - x += a; - - return x; -} - -static __inline float f_min(float x, float b) -{ - x = b - x; - x += fabs(x); - x *= 0.5; - x = b - x; - - return x; -} - -static __inline float f_clamp(float x, float a, float b) -{ - const float x1 = fabs(x - a); - const float x2 = fabs(x - b); - - x = x1 + a + b; - x -= x2; - x *= 0.5; - - return x; -} - -// Limit a value to be l<=v<=u -#define LIMIT(v,l,u) ((v)<(l)?(l):((v)>(u)?(u):(v))) - -// Truncate-to-zero modulo (ANSI C doesn't specify) will only work -// if -m < v < 2m -#define MOD(v,m) (v<0?v+m:(v>=m?v-m:v)) - -// Truncate-to-zero modulo (ANSI C doesn't specify) will only work -// if v > -m and v < m -#define NEG_MOD(v,m) ((v)<0?((v)+(m)):(v)) - -// Convert a value in dB's to a coefficent -#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f) -#define CO_DB(v) (20.0f * log10f(v)) - -// Linearly interpolate [ = a * (1 - f) + b * f] -#define LIN_INTERP(f,a,b) ((a) + (f) * ((b) - (a))) - -// Cubic interpolation function -static __inline float cube_interp(const float fr, const float inm1, const float - in, const float inp1, const float inp2) -{ - return in + 0.5f * fr * (inp1 - inm1 + - fr * (4.0f * inp1 + 2.0f * inm1 - 5.0f * in - inp2 + - fr * (3.0f * (in - inp1) - inm1 + inp2))); -} - -/* fast sin^2 aproxiamtion, adapted from jan AT rpgfan's posting to the - * music-dsp list */ -static __inline float f_sin_sq(float angle) -{ - const float asqr = angle * angle; - float result = -2.39e-08f; - - result *= asqr; - result += 2.7526e-06f; - result *= asqr; - result -= 1.98409e-04f; - result *= asqr; - result += 8.3333315e-03f; - result *= asqr; - result -= 1.666666664e-01f; - result *= asqr; - result += 1.0f; - result *= angle; - - return result * result; -} - -#ifdef HAVE_LRINTF - -#define f_round(f) lrintf(f) - -#else - -// Round float to int using IEEE int* hack -static __inline int f_round(float f) -{ - ls_pcast32 p; - - p.f = f; - p.f += (3<<22); - - return p.i - 0x4b400000; -} - -#endif - -// Truncate float to int -static __inline int f_trunc(float f) -{ - return f_round(floorf(f)); -} - -/* Andrew Simper's pow(2, x) aproximation from the music-dsp list */ - -#if 0 - -/* original */ -static __inline float f_pow2(float x) -{ - long *px = (long*)(&x); // store address of float as long pointer - const float tx = (x-0.5f) + (3<<22); // temporary value for truncation - const long lx = *((long*)&tx) - 0x4b400000; // integer power of 2 - const float dx = x-(float)(lx); // float remainder of power of 2 - - x = 1.0f + dx*(0.6960656421638072f + // cubic apporoximation of 2^x - dx*(0.224494337302845f + // for x in the range [0, 1] - dx*(0.07944023841053369f))); - *px += (lx<<23); // add integer power of 2 to exponent - - return x; -} - -#else - -/* union version */ -static __inline float f_pow2(float x) -{ - ls_pcast32 *px, tx, lx; - float dx; - - px = (ls_pcast32 *)&x; // store address of float as long pointer - tx.f = (x-0.5f) + (3<<22); // temporary value for truncation - lx.i = tx.i - 0x4b400000; // integer power of 2 - dx = x - (float)lx.i; // float remainder of power of 2 - - x = 1.0f + dx * (0.6960656421638072f + // cubic apporoximation of 2^x - dx * (0.224494337302845f + // for x in the range [0, 1] - dx * (0.07944023841053369f))); - (*px).i += (lx.i << 23); // add integer power of 2 to exponent - - return (*px).f; -} - -#endif - -/* Fast exponentiation function, y = e^x */ -#define f_exp(x) f_pow2(x * LN2R) - -#endif diff --git a/libraries/audio-client/external/gverb/readme.txt b/libraries/audio-client/external/gverb/readme.txt deleted file mode 100644 index 29e10eb125..0000000000 --- a/libraries/audio-client/external/gverb/readme.txt +++ /dev/null @@ -1,14 +0,0 @@ -Instructions for adding the Gverb library to Interface -(This is a required library) -Clément Brisset, October 22nd, 2014 - -1. Go to https://github.com/highfidelity/gverb - Or download the sources directly via this link: - https://github.com/highfidelity/gverb/archive/master.zip - -2. Extract the archive - -3. Place the directories “include” and “src” in libraries/audio-client/external/gverb - (Normally next to this readme) - -4. Clear your build directory, run cmake, build and you should be all set. diff --git a/libraries/audio-client/external/gverb/src/gverb.c b/libraries/audio-client/external/gverb/src/gverb.c deleted file mode 100755 index e3980232bc..0000000000 --- a/libraries/audio-client/external/gverb/src/gverb.c +++ /dev/null @@ -1,207 +0,0 @@ -/* - - Copyright (C) 1999 Juhana Sadeharju - kouhia at nic.funet.fi - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - */ - - -#include -#include -#include -#include -#include "gverbdsp.h" -#include "gverb.h" -#include "../include/ladspa-util.h" - -ty_gverb *gverb_new(int srate, float maxroomsize, float roomsize, - float revtime, - float damping, float spread, - float inputbandwidth, float earlylevel, - float taillevel) -{ - ty_gverb *p; - float ga,gb,gt; - int i,n; - float r; - float diffscale; - int a,b,c,cc,d,dd,e; - float spread1,spread2; - - p = (ty_gverb *)malloc(sizeof(ty_gverb)); - p->rate = srate; - p->fdndamping = damping; - p->maxroomsize = maxroomsize; - p->roomsize = roomsize; - p->revtime = revtime; - p->earlylevel = earlylevel; - p->taillevel = taillevel; - - p->maxdelay = p->rate*p->maxroomsize/340.0; - p->largestdelay = p->rate*p->roomsize/340.0; - - - /* Input damper */ - - p->inputbandwidth = inputbandwidth; - p->inputdamper = damper_make(1.0 - p->inputbandwidth); - - - /* FDN section */ - - - p->fdndels = (ty_fixeddelay **)calloc(FDNORDER, sizeof(ty_fixeddelay *)); - for(i = 0; i < FDNORDER; i++) { - p->fdndels[i] = fixeddelay_make((int)p->maxdelay+1000); - } - p->fdngains = (float *)calloc(FDNORDER, sizeof(float)); - p->fdnlens = (int *)calloc(FDNORDER, sizeof(int)); - - p->fdndamps = (ty_damper **)calloc(FDNORDER, sizeof(ty_damper *)); - for(i = 0; i < FDNORDER; i++) { - p->fdndamps[i] = damper_make(p->fdndamping); - } - - ga = 60.0; - gt = p->revtime; - ga = powf(10.0f,-ga/20.0f); - n = p->rate*gt; - p->alpha = pow((double)ga, 1.0/(double)n); - - gb = 0.0; - for(i = 0; i < FDNORDER; i++) { - if (i == 0) gb = 1.000000*p->largestdelay; - if (i == 1) gb = 0.816490*p->largestdelay; - if (i == 2) gb = 0.707100*p->largestdelay; - if (i == 3) gb = 0.632450*p->largestdelay; - -#if 0 - p->fdnlens[i] = nearest_prime((int)gb, 0.5); -#else - p->fdnlens[i] = f_round(gb); -#endif - p->fdngains[i] = -powf((float)p->alpha,p->fdnlens[i]); - } - - p->d = (float *)calloc(FDNORDER, sizeof(float)); - p->u = (float *)calloc(FDNORDER, sizeof(float)); - p->f = (float *)calloc(FDNORDER, sizeof(float)); - - /* Diffuser section */ - - diffscale = (float)p->fdnlens[3]/(210+159+562+410); - spread1 = spread; - spread2 = 3.0*spread; - - b = 210; - r = 0.125541; - a = spread1*r; - c = 210+159+a; - cc = c-b; - r = 0.854046; - a = spread2*r; - d = 210+159+562+a; - dd = d-c; - e = 1341-d; - - p->ldifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *)); - p->ldifs[0] = diffuser_make((int)(diffscale*b),0.75); - p->ldifs[1] = diffuser_make((int)(diffscale*cc),0.75); - p->ldifs[2] = diffuser_make((int)(diffscale*dd),0.625); - p->ldifs[3] = diffuser_make((int)(diffscale*e),0.625); - - b = 210; - r = -0.568366; - a = spread1*r; - c = 210+159+a; - cc = c-b; - r = -0.126815; - a = spread2*r; - d = 210+159+562+a; - dd = d-c; - e = 1341-d; - - p->rdifs = (ty_diffuser **)calloc(4, sizeof(ty_diffuser *)); - p->rdifs[0] = diffuser_make((int)(diffscale*b),0.75); - p->rdifs[1] = diffuser_make((int)(diffscale*cc),0.75); - p->rdifs[2] = diffuser_make((int)(diffscale*dd),0.625); - p->rdifs[3] = diffuser_make((int)(diffscale*e),0.625); - - - - /* Tapped delay section */ - - p->tapdelay = fixeddelay_make(44000); - p->taps = (int *)calloc(FDNORDER, sizeof(int)); - p->tapgains = (float *)calloc(FDNORDER, sizeof(float)); - - p->taps[0] = 5+0.410*p->largestdelay; - p->taps[1] = 5+0.300*p->largestdelay; - p->taps[2] = 5+0.155*p->largestdelay; - p->taps[3] = 5+0.000*p->largestdelay; - - for(i = 0; i < FDNORDER; i++) { - p->tapgains[i] = pow(p->alpha,(double)p->taps[i]); - } - - return(p); -} - -void gverb_free(ty_gverb *p) -{ - int i; - - damper_free(p->inputdamper); - for(i = 0; i < FDNORDER; i++) { - fixeddelay_free(p->fdndels[i]); - damper_free(p->fdndamps[i]); - diffuser_free(p->ldifs[i]); - diffuser_free(p->rdifs[i]); - } - free(p->fdndels); - free(p->fdngains); - free(p->fdnlens); - free(p->fdndamps); - free(p->d); - free(p->u); - free(p->f); - free(p->ldifs); - free(p->rdifs); - free(p->taps); - free(p->tapgains); - fixeddelay_free(p->tapdelay); - free(p); -} - -void gverb_flush(ty_gverb *p) -{ - int i; - - damper_flush(p->inputdamper); - for(i = 0; i < FDNORDER; i++) { - fixeddelay_flush(p->fdndels[i]); - damper_flush(p->fdndamps[i]); - diffuser_flush(p->ldifs[i]); - diffuser_flush(p->rdifs[i]); - } - memset(p->d, 0, FDNORDER * sizeof(float)); - memset(p->u, 0, FDNORDER * sizeof(float)); - memset(p->f, 0, FDNORDER * sizeof(float)); - fixeddelay_flush(p->tapdelay); -} - -/* swh: other functions are now in the .h file for inlining */ diff --git a/libraries/audio-client/external/gverb/src/gverbdsp.c b/libraries/audio-client/external/gverb/src/gverbdsp.c deleted file mode 100755 index 05a90f897e..0000000000 --- a/libraries/audio-client/external/gverb/src/gverbdsp.c +++ /dev/null @@ -1,130 +0,0 @@ - - -/* - - Copyright (C) 1999 Juhana Sadeharju - kouhia at nic.funet.fi - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - */ - -#include -#include -#include -#include - -#include "gverbdsp.h" - -#define TRUE 1 -#define FALSE 0 - -ty_diffuser *diffuser_make(int size, float coeff) -{ - ty_diffuser *p; - int i; - - p = (ty_diffuser *)malloc(sizeof(ty_diffuser)); - p->size = size; - p->coeff = coeff; - p->idx = 0; - p->buf = (float *)malloc(size*sizeof(float)); - for (i = 0; i < size; i++) p->buf[i] = 0.0; - return(p); -} - -void diffuser_free(ty_diffuser *p) -{ - free(p->buf); - free(p); -} - -void diffuser_flush(ty_diffuser *p) -{ - memset(p->buf, 0, p->size * sizeof(float)); -} - -ty_damper *damper_make(float damping) -{ - ty_damper *p; - - p = (ty_damper *)malloc(sizeof(ty_damper)); - p->damping = damping; - p->delay = 0.0f; - return(p); -} - -void damper_free(ty_damper *p) -{ - free(p); -} - -void damper_flush(ty_damper *p) -{ - p->delay = 0.0f; -} - -ty_fixeddelay *fixeddelay_make(int size) -{ - ty_fixeddelay *p; - int i; - - p = (ty_fixeddelay *)malloc(sizeof(ty_fixeddelay)); - p->size = size; - p->idx = 0; - p->buf = (float *)malloc(size*sizeof(float)); - for (i = 0; i < size; i++) p->buf[i] = 0.0; - return(p); -} - -void fixeddelay_free(ty_fixeddelay *p) -{ - free(p->buf); - free(p); -} - -void fixeddelay_flush(ty_fixeddelay *p) -{ - memset(p->buf, 0, p->size * sizeof(float)); -} - -int isprime(int n) -{ - unsigned int i; - const unsigned int lim = (int)sqrtf((float)n); - - if (n == 2) return(TRUE); - if ((n & 1) == 0) return(FALSE); - for(i = 3; i <= lim; i += 2) - if ((n % i) == 0) return(FALSE); - return(TRUE); -} - -int nearest_prime(int n, float rerror) - /* relative error; new prime will be in range - * [n-n*rerror, n+n*rerror]; - */ -{ - int bound,k; - - if (isprime(n)) return(n); - /* assume n is large enough and n*rerror enough smaller than n */ - bound = n*rerror; - for(k = 1; k <= bound; k++) { - if (isprime(n+k)) return(n+k); - if (isprime(n-k)) return(n-k); - } - return(-1); -} From 2af54dcf955d97441376f295e35418f93058d383 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 11:52:34 -0800 Subject: [PATCH 3/7] update Qt requirement to 5.4 in BUILD --- BUILD.md | 10 +++++----- BUILD_WIN.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/BUILD.md b/BUILD.md index d98ac99246..846ed1e44e 100644 --- a/BUILD.md +++ b/BUILD.md @@ -1,7 +1,7 @@ ###Dependencies * [cmake](http://www.cmake.org/cmake/resources/software.html) ~> 2.8.12.2 -* [Qt](http://qt-project.org/downloads) ~> 5.3.0 +* [Qt](http://qt-project.org/downloads) ~> 5.4.0 * [glm](http://glm.g-truc.net/0.9.5/index.html) ~> 0.9.5.4 * [OpenSSL](https://www.openssl.org/related/binaries.html) ~> 1.0.1g * IMPORTANT: OpenSSL 1.0.1g is critical to avoid a security vulnerability. @@ -22,12 +22,12 @@ Hifi uses CMake to generate build files and project files for your platform. ####Qt In order for CMake to find the Qt5 find modules, you will need to set an ENV variable pointing to your Qt installation. -For example, a Qt5 5.3.2 installation to /usr/local/qt5 would require that QT_CMAKE_PREFIX_PATH be set with the following command. This can either be entered directly into your shell session before you build or in your shell profile (e.g.: ~/.bash_profile, ~/.bashrc, ~/.zshrc - this depends on your shell and environment). +For example, a Qt5 5.4.0 installation to /usr/local/qt5 would require that QT_CMAKE_PREFIX_PATH be set with the following command. This can either be entered directly into your shell session before you build or in your shell profile (e.g.: ~/.bash_profile, ~/.bashrc, ~/.zshrc - this depends on your shell and environment). The path it needs to be set to will depend on where and how Qt5 was installed. e.g. - export QT_CMAKE_PREFIX_PATH=/usr/local/qt/5.3.2/clang_64/lib/cmake/ - export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.3.2/lib/cmake + export QT_CMAKE_PREFIX_PATH=/usr/local/qt/5.4.0/clang_64/lib/cmake/ + export QT_CMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.4.0/lib/cmake export QT_CMAKE_PREFIX_PATH=/usr/local/opt/qt5/lib/cmake ####Generating build files @@ -42,7 +42,7 @@ Any variables that need to be set for CMake to find dependencies can be set as E For example, to pass the QT_CMAKE_PREFIX_PATH variable during build file generation: - cmake .. -DQT_CMAKE_PREFIX_PATH=/usr/local/qt/5.3.2/lib/cmake + cmake .. -DQT_CMAKE_PREFIX_PATH=/usr/local/qt/5.4.0/lib/cmake ####Finding Dependencies You can point our [Cmake find modules](cmake/modules/) to the correct version of dependencies by setting one of the three following variables to the location of the correct version of the dependency. diff --git a/BUILD_WIN.md b/BUILD_WIN.md index 85ddcd48ed..3c0ece7f6d 100644 --- a/BUILD_WIN.md +++ b/BUILD_WIN.md @@ -27,7 +27,7 @@ NOTE: Qt does not support 64-bit builds on Windows 7, so you must use the 32-bit * [Download the online installer](http://qt-project.org/downloads) * When it asks you to select components, ONLY select the following: - * Qt > Qt 5.3.2 > **msvc2013 32-bit OpenGL** + * Qt > Qt 5.4.0 > **msvc2013 32-bit OpenGL** * [Download the offline installer](http://download.qt-project.org/official_releases/qt/5.3/5.3.2/qt-opensource-windows-x86-msvc2013_opengl-5.3.2.exe) From 763994da5a26c90ba4af97137539c53f2da88fc0 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 12:44:03 -0800 Subject: [PATCH 4/7] handle gverb move to audio-client --- .gitignore | 1 + cmake/android/AndroidManifest.xml.in | 2 +- .../audio-client}/external/gverb/readme.txt | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) rename {interface => libraries/audio-client}/external/gverb/readme.txt (70%) diff --git a/.gitignore b/.gitignore index efdadd51a7..2c13e8117f 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ interface/interfaceCache/ # ignore audio-client externals libraries/audio-client/external/*/* +!libraries/audio-client/external/*/readme.txt gvr-interface/assets/oculussig* gvr-interface/libs/* \ No newline at end of file diff --git a/cmake/android/AndroidManifest.xml.in b/cmake/android/AndroidManifest.xml.in index f6ce914148..c85430b5b1 100755 --- a/cmake/android/AndroidManifest.xml.in +++ b/cmake/android/AndroidManifest.xml.in @@ -51,7 +51,7 @@ android:configChanges="screenSize|orientation|keyboardHidden|keyboard"> - ${HOCKEY_APP_ACTIVITY} + ${ANDROID_EXTRA_APPLICATION_XML} diff --git a/interface/external/gverb/readme.txt b/libraries/audio-client/external/gverb/readme.txt similarity index 70% rename from interface/external/gverb/readme.txt rename to libraries/audio-client/external/gverb/readme.txt index 2f8991b1d4..bb01e48a74 100644 --- a/interface/external/gverb/readme.txt +++ b/libraries/audio-client/external/gverb/readme.txt @@ -1,5 +1,4 @@ - -Instructions for adding the Gverb library to Interface +Instructions for adding the Gverb library to audio-client (This is a required library) Clément Brisset, October 22nd, 2014 @@ -9,7 +8,7 @@ Clément Brisset, October 22nd, 2014 2. Extract the archive -3. Place the directories “include” and “src” in interface/external/gverb +3. Place the directories “include” and “src” in libraries/audio-client/external/gverb (Normally next to this readme) 4. Clear your build directory, run cmake, build and you should be all set. From b696f46d257322dce93c271730d633fa1ebc9b99 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 12:49:37 -0800 Subject: [PATCH 5/7] add the url scheme handler for hifi --- gvr-interface/CMakeLists.txt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/gvr-interface/CMakeLists.txt b/gvr-interface/CMakeLists.txt index 450914da75..bf7d34a9cb 100644 --- a/gvr-interface/CMakeLists.txt +++ b/gvr-interface/CMakeLists.txt @@ -50,7 +50,7 @@ endif () # the presence of a HOCKEY_APP_ID means we are making a beta build if (ANDROID AND HOCKEY_APP_ID) set(HOCKEY_APP_ENABLED true) - set(HOCKEY_APP_ACTIVITY "") + set(HOCKEY_APP_ACTIVITY "\n") set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceBetaActivity) set(ANDROID_DEPLOY_QT_INSTALL "") set(ANDROID_APK_CUSTOM_NAME "Interface-beta.apk") @@ -71,9 +71,18 @@ elseif (ANDROID) endif () if (ANDROID) + + set(HIFI_URL_INTENT "\ + \n \ + \n \ + \n \ + \n \ + \n " + ) + + set(ANDROID_EXTRA_APPLICATION_XML "${HOCKEY_APP_ACTIVITY}${HIFI_URL_INTENT}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/hockeyapp.xml.in" "${ANDROID_APK_BUILD_DIR}/res/values/hockeyapp.xml") - qt_create_apk() endif (ANDROID) \ No newline at end of file From dd4f4f09934c44b334814ce30dfba5c4b28e5534 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 13:03:39 -0800 Subject: [PATCH 6/7] repairs for hifi scheme handling on android --- cmake/android/AndroidManifest.xml.in | 28 +++++++++++--------- gvr-interface/CMakeLists.txt | 39 +++++++++++++--------------- gvr-interface/src/GVRInterface.cpp | 6 ++--- 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/cmake/android/AndroidManifest.xml.in b/cmake/android/AndroidManifest.xml.in index c85430b5b1..ea11d81cff 100755 --- a/cmake/android/AndroidManifest.xml.in +++ b/cmake/android/AndroidManifest.xml.in @@ -8,12 +8,14 @@ - + + @@ -42,17 +44,19 @@ + + ${ANDROID_EXTRA_ACTIVITY_XML} - + ${ANDROID_EXTRA_APPLICATION_XML} - diff --git a/gvr-interface/CMakeLists.txt b/gvr-interface/CMakeLists.txt index bf7d34a9cb..bd0eb07e87 100644 --- a/gvr-interface/CMakeLists.txt +++ b/gvr-interface/CMakeLists.txt @@ -1,6 +1,21 @@ set(TARGET_NAME gvr-interface) if (ANDROID) + set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build") + set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk") + + set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME}) + set(ANDROID_APP_DISPLAY_NAME Interface) + set(ANDROID_API_LEVEL 19) + set(ANDROID_APK_PACKAGE io.highfidelity.gvrinterface) + set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceActivity) + set(ANDROID_APK_VERSION_NAME "0.1") + set(ANDROID_APK_VERSION_CODE 1) + set(ANDROID_DEPLOY_QT_INSTALL "--install") + + set(BUILD_SHARED_LIBS ON) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}") + setup_hifi_library(Gui Widgets AndroidExtras) else () setup_hifi_project(Gui Widgets) @@ -13,25 +28,6 @@ include_glm() link_hifi_libraries(shared networking audio-client avatars) include_dependency_includes() -if (ANDROID) - - set(ANDROID_APK_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk-build") - set(ANDROID_APK_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/apk") - - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${ANDROID_APK_OUTPUT_DIR}/libs/${ANDROID_ABI}") - set(BUILD_SHARED_LIBS ON) - - set(ANDROID_SDK_ROOT $ENV{ANDROID_HOME}) - set(ANDROID_APP_DISPLAY_NAME Interface) - set(ANDROID_API_LEVEL 19) - set(ANDROID_APK_PACKAGE io.highfidelity.gvrinterface) - set(ANDROID_ACTIVITY_NAME io.highfidelity.gvrinterface.InterfaceActivity) - set(ANDROID_APK_VERSION_NAME "0.1") - set(ANDROID_APK_VERSION_CODE 1) - set(ANDROID_DEPLOY_QT_INSTALL "--install") - -endif () - find_package(LibOVR) if (LIBOVR_FOUND) add_definitions(-DHAVE_LIBOVR) @@ -77,10 +73,11 @@ if (ANDROID) \n \ \n \ \n \ - \n " + \n " ) - set(ANDROID_EXTRA_APPLICATION_XML "${HOCKEY_APP_ACTIVITY}${HIFI_URL_INTENT}") + set(ANDROID_EXTRA_APPLICATION_XML "${HOCKEY_APP_ACTIVITY}") + set(ANDROID_EXTRA_ACTIVITY_XML "${HIFI_URL_INTENT}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/templates/hockeyapp.xml.in" "${ANDROID_APK_BUILD_DIR}/res/values/hockeyapp.xml") qt_create_apk() diff --git a/gvr-interface/src/GVRInterface.cpp b/gvr-interface/src/GVRInterface.cpp index 57907ee752..2517af91f6 100644 --- a/gvr-interface/src/GVRInterface.cpp +++ b/gvr-interface/src/GVRInterface.cpp @@ -9,7 +9,7 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifdef Q_OS_ANDROID +#ifdef Q_WS_ANDROID #include #include @@ -42,7 +42,7 @@ GVRInterface::GVRInterface(int argc, char* argv[]) : connect(this, &QGuiApplication::applicationStateChanged, this, &GVRInterface::handleApplicationStateChange); -#if defined(Q_OS_ANDROID) && defined(HAVE_LIBOVR) +#if defined(Q_WS_ANDROID) && defined(HAVE_LIBOVR) QAndroidJniEnvironment jniEnv; QPlatformNativeInterface* interface = QApplication::platformNativeInterface(); @@ -59,7 +59,7 @@ GVRInterface::GVRInterface(int argc, char* argv[]) : } void GVRInterface::idle() { -#if defined(Q_OS_ANDROID) && defined(HAVE_LIBOVR) +#if defined(Q_WS_ANDROID) && defined(HAVE_LIBOVR) if (!_inVRMode && ovr_IsHeadsetDocked()) { qDebug() << "The headset just got docked - assume we are in VR mode."; _inVRMode = true; From dc866b62e48290d27129657785371a10ab7b8d50 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 29 Jan 2015 13:50:11 -0800 Subject: [PATCH 7/7] repairs to hifi url handling --- .../gvrinterface/InterfaceActivity.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java index be4d42e725..2b35c19960 100644 --- a/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java +++ b/gvr-interface/src/java/io/highfidelity/gvrinterface/InterfaceActivity.java @@ -11,8 +11,11 @@ package io.highfidelity.gvrinterface; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.view.WindowManager; +import android.util.Log; import org.qtproject.qt5.android.bindings.QtActivity; public class InterfaceActivity extends QtActivity { @@ -21,5 +24,16 @@ public class InterfaceActivity extends QtActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + // Get the intent that started this activity in case we have a hifi:// URL to parse + Intent intent = getIntent(); + if (intent.getAction() == Intent.ACTION_VIEW) { + Uri data = intent.getData(); + + if (data.getScheme().equals("hifi")) { + + } + } + } } \ No newline at end of file