Skip to content

Commit 9ae4655

Browse files
added firstInit flag
1 parent 793b6da commit 9ae4655

File tree

15 files changed

+34
-14
lines changed

15 files changed

+34
-14
lines changed

‎examples/src/ambi_bin/ambi_bin.c‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ void ambi_bin_create
7777

7878
/* afSTFT and audio buffers */
7979
pData->fs = 48000;
80+
pData->firstInit = 1;
8081
pData->hSTFT = NULL;
8182
pData->SHFrameTD = (float**)malloc2d(MAX_NUM_SH_SIGNALS, AMBI_BIN_FRAME_SIZE, sizeof(float));
8283
pData->binFrameTD = (float**)malloc2d(NUM_EARS, AMBI_BIN_FRAME_SIZE, sizeof(float));
@@ -152,10 +153,11 @@ void ambi_bin_init
152153
ambi_bin_data *pData = (ambi_bin_data*)(hAmbi);
153154

154155
/* define frequency vector */
155-
if(pData->fs != sampleRate){
156+
if(pData->fs != sampleRate || pData->firstInit){
156157
pData->fs = sampleRate;
157158
pData->reinit_hrtfsFLAG = 1;
158159
ambi_bin_setCodecStatus(hAmbi, CODEC_STATUS_NOT_INITIALISED);
160+
pData->firstInit = 0;
159161
}
160162
afSTFT_getCentreFreqs(pData->hSTFT, (float)pData->fs, HYBRID_BANDS, (float*)pData->freqVector);
161163

‎examples/src/ambi_bin/ambi_bin_internal.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ typedef struct _ambi_bin_codecPars
122122
typedef struct _ambi_bin
123123
{
124124
/* audio buffers + afSTFT time-frequency transform handle */
125-
_Atomic_INT32 fs; /**< host sampling rate */
125+
_Atomic_INT32 fs; /**< host sampling rate */
126+
int firstInit; /**< flag, 1: `_init()` function has never been called, 0: `_init()` function has been called */
126127
float** SHFrameTD; /**< Input spherical harmonic (SH) signals in the time-domain; #MAX_NUM_SH_SIGNALS x #AMBI_BIN_FRAME_SIZE */
127128
float** binFrameTD; /**< Output binaural signals in the time-domain; #NUM_EARS x #AMBI_BIN_FRAME_SIZE */
128129
float_complex*** SHframeTF; /**< Input spherical harmonic (SH) signals in the time-frequency domain; #HYBRID_BANDS x #MAX_NUM_SH_SIGNALS x #TIME_SLOTS */

‎examples/src/ambi_dec/ambi_dec.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ void ambi_dec_create
7474

7575
/* afSTFT stuff and audio buffers */
7676
pData->fs = 48000.0f;
77-
pData->hSTFT = NULL;
77+
pData->firstInit = 1;
78+
pData->hSTFT = NULL;
7879
pData->SHFrameTD = (float**)malloc2d(MAX_NUM_SH_SIGNALS, AMBI_DEC_FRAME_SIZE, sizeof(float));
7980
pData->outputFrameTD = (float**)malloc2d(SAF_MAX(MAX_NUM_LOUDSPEAKERS, NUM_EARS), AMBI_DEC_FRAME_SIZE, sizeof(float));
8081
pData->SHframeTF = (float_complex***)malloc3d(HYBRID_BANDS, MAX_NUM_SH_SIGNALS, TIME_SLOTS, sizeof(float_complex));
@@ -177,10 +178,11 @@ void ambi_dec_init
177178
ambi_dec_data *pData = (ambi_dec_data*)(hAmbi);
178179

179180
/* define frequency vector */
180-
if(pData->fs != sampleRate){
181+
if(pData->fs != sampleRate || pData->firstInit){
181182
pData->fs = sampleRate;
182183
pData->reinit_hrtfsFLAG = 1;
183184
ambi_dec_setCodecStatus(hAmbi, CODEC_STATUS_NOT_INITIALISED);
185+
pData->firstInit = 0;
184186
}
185187
afSTFT_getCentreFreqs(pData->hSTFT, (float)pData->fs, HYBRID_BANDS, pData->freqVector);
186188
}

‎examples/src/ambi_dec/ambi_dec_internal.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ typedef struct _ambi_dec
144144
void* hSTFT; /**< afSTFT handle */
145145
int afSTFTdelay; /**< for host delay compensation */
146146
_Atomic_INT32 fs; /**< host sampling rate */
147+
int firstInit; /**< flag, 1: `_init()` function has never been called, 0: `_init()` function has been called */
147148
float freqVector[HYBRID_BANDS]; /**< frequency vector for time-frequency transform, in Hz */
148149

149150
/* our codec configuration */

‎examples/src/array2sh/array2sh.c‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ void array2sh_create
7171

7272
/* time-frequency transform + buffers */
7373
pData->fs = 48000.0f;
74+
pData->firstInit = 1;
7475
pData->hSTFT = NULL;
7576
pData->inputFrameTD = (float**)malloc2d(MAX_NUM_SENSORS, ARRAY2SH_FRAME_SIZE, sizeof(float));
7677
pData->SHframeTD = (float**)malloc2d(MAX_NUM_SH_SIGNALS, ARRAY2SH_FRAME_SIZE, sizeof(float));
@@ -153,10 +154,11 @@ void array2sh_init
153154
{
154155
array2sh_data *pData = (array2sh_data*)(hA2sh);
155156

156-
if(pData->fs != sampleRate){
157+
if(pData->fs != sampleRate || pData->firstInit){
157158
pData->fs = sampleRate;
158159
pData->reinitSHTmatrixFLAG = 1;
159160
array2sh_setEvalStatus(hA2sh, EVAL_STATUS_NOT_EVALUATED);
161+
pData->firstInit = 0;
160162
}
161163
afSTFT_getCentreFreqs(pData->hSTFT, (float)pData->fs, HYBRID_BANDS, pData->freqVector);
162164
pData->freqVector[0] = pData->freqVector[1]/4.0f; /* avoids NaNs at DC */

‎examples/src/array2sh/array2sh_internal.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ typedef struct _array2sh
148148
_Atomic_FLOAT32 progressBar0_1; /**< Current (re)initialisation progress, between [0..1] */
149149
char* progressBarText; /**< Current (re)initialisation step, string */
150150
int fs; /**< sampling rate, hz */
151+
int firstInit; /**< flag, 1: `_init()` function has never been called, 0: `_init()` function has been called */
151152
_Atomic_INT32 new_order; /**< new encoding order (current value will be replaced by this after next re-init) */
152153

153154
/* For diffuse-field equalisation */

‎examples/src/binauraliser/binauraliser.c‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ void binauraliser_create
5959
/* time-frequency transform + buffers */
6060
pData->hSTFT = NULL;
6161
pData->fs = 48000.0f;
62+
pData->firstInit = 1;
6263
pData->inputFrameTD = (float**)malloc2d(MAX_NUM_INPUTS, BINAURALISER_FRAME_SIZE, sizeof(float));
6364
pData->outframeTD = (float**)malloc2d(NUM_EARS, BINAURALISER_FRAME_SIZE, sizeof(float));
6465
pData->inputframeTF = (float_complex***)malloc3d(HYBRID_BANDS, MAX_NUM_INPUTS, TIME_SLOTS, sizeof(float_complex));
@@ -144,10 +145,11 @@ void binauraliser_init
144145

145146
/* define frequency vector */
146147
pData->fs = sampleRate;
147-
if(pData->fs != sampleRate){
148+
if(pData->fs != sampleRate || pData->firstInit){
148149
pData->fs = sampleRate;
149150
pData->reInitHRTFsAndGainTables = 1;
150151
binauraliser_setCodecStatus(hBin, CODEC_STATUS_NOT_INITIALISED);
152+
pData->firstInit = 0;
151153
}
152154
if (pData->codecStatus == CODEC_STATUS_INITIALISED)
153155
afSTFT_getCentreFreqs(pData->hSTFT, (float)sampleRate, HYBRID_BANDS, pData->freqVector);

‎examples/src/binauraliser/binauraliser_internal.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ typedef struct _binauraliser
8484
float_complex*** inputframeTF; /**< time-frequency domain input frame; #HYBRID_BANDS x #MAX_NUM_INPUTS x #TIME_SLOTS */
8585
float_complex*** outputframeTF; /**< time-frequency domain input frame; #HYBRID_BANDS x #NUM_EARS x #TIME_SLOTS */
8686
_Atomic_FLOAT32 fs; /**< Host sampling rate, in Hz */
87+
int firstInit; /**< flag, 1: `_init()` function has never been called, 0: `_init()` function has been called */
8788
float freqVector[HYBRID_BANDS]; /**< Frequency vector (filterbank centre frequencies) */
8889
void* hSTFT; /**< afSTFT handle */
8990

‎examples/src/binauraliser_nf/binauraliser_nf.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ void binauraliserNF_destroy
177177

178178
void binauraliserNF_init
179179
(
180-
void * const hBin, int sampleRate
180+
void * const hBin, int sampleRate
181181
)
182182
{
183183
binauraliser_init(hBin, sampleRate);

‎examples/src/binauraliser_nf/binauraliser_nf_internal.h‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ typedef struct _binauraliserNF {
6969
float_complex*** inputframeTF; /**< time-frequency domain input frame; #HYBRID_BANDS x #MAX_NUM_INPUTS x #TIME_SLOTS */
7070
float_complex*** outputframeTF; /**< time-frequency domain input frame; #HYBRID_BANDS x #NUM_EARS x #TIME_SLOTS */
7171
_Atomic_FLOAT32 fs; /**< Host sampling rate, in Hz */
72+
int firstInit; /**< flag, 1: `_init()` function has never been called, 0: `_init()` function has been called */
7273
float freqVector[HYBRID_BANDS]; /**< Frequency vector (filterbank centre frequencies) */
7374
void* hSTFT; /**< afSTFT handle */
7475

@@ -126,6 +127,7 @@ typedef struct _binauraliserNF {
126127
_Atomic_INT32 useRollPitchYawFlag; /**< rotation order flag, 1: r-p-y, 0: y-p-r */
127128
_Atomic_FLOAT32 src_gains[MAX_NUM_INPUTS]; /**< Gains applied per source */
128129

130+
129131
/* End copied _binauraliser struct members. The following are unique to the _binauraliserNF struct */
130132

131133
float b_dvf[MAX_NUM_INPUTS][NUM_EARS][2]; /**< shelf IIR numerator coefficients for each input, left and right. */

0 commit comments

Comments
 (0)