aboutsummaryrefslogtreecommitdiffstats
path: root/utils/makemhr
diff options
context:
space:
mode:
Diffstat (limited to 'utils/makemhr')
-rw-r--r--utils/makemhr/loaddef.cpp12
-rw-r--r--utils/makemhr/loadsofa.cpp8
-rw-r--r--utils/makemhr/makemhr.cpp50
-rw-r--r--utils/makemhr/makemhr.h1
4 files changed, 34 insertions, 37 deletions
diff --git a/utils/makemhr/loaddef.cpp b/utils/makemhr/loaddef.cpp
index ab505f47..b6b62359 100644
--- a/utils/makemhr/loaddef.cpp
+++ b/utils/makemhr/loaddef.cpp
@@ -1463,9 +1463,9 @@ static int ReadIndexTriplet(TokenReaderT *tr, const HrirDataT *hData, uint *fi,
{
int intVal;
- if(hData->mFdCount > 1)
+ if(hData->mFds.size() > 1)
{
- if(!TrReadInt(tr, 0, static_cast<int>(hData->mFdCount) - 1, &intVal))
+ if(!TrReadInt(tr, 0, static_cast<int>(hData->mFds.size()-1), &intVal))
return 0;
*fi = static_cast<uint>(intVal);
if(!TrReadOperator(tr, ","))
@@ -1846,12 +1846,12 @@ static int ProcessSources(TokenReaderT *tr, HrirDataT *hData, const uint outRate
else
aer[0] = std::fmod(360.0f - aer[0], 360.0f);
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
double delta = aer[2] - hData->mFds[fi].mDistance;
if(std::abs(delta) < 0.001) break;
}
- if(fi >= hData->mFdCount)
+ if(fi >= hData->mFds.size())
continue;
double ef{(90.0 + aer[1]) / 180.0 * (hData->mFds[fi].mEvCount - 1)};
@@ -1981,7 +1981,7 @@ static int ProcessSources(TokenReaderT *tr, HrirDataT *hData, const uint outRate
hData->mIrPoints = irPoints;
resampler.reset();
}
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -2016,7 +2016,7 @@ static int ProcessSources(TokenReaderT *tr, HrirDataT *hData, const uint outRate
}
for(uint ti{0};ti < channels;ti++)
{
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
{
diff --git a/utils/makemhr/loadsofa.cpp b/utils/makemhr/loadsofa.cpp
index a0f92cef..9bcb6316 100644
--- a/utils/makemhr/loadsofa.cpp
+++ b/utils/makemhr/loadsofa.cpp
@@ -474,7 +474,7 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
return false;
sofaHrtf = nullptr;
- for(uint fi{0u};fi < hData->mFdCount;fi++)
+ for(uint fi{0u};fi < hData->mFds.size();fi++)
{
uint ei{0u};
for(;ei < hData->mFds[fi].mEvCount;ei++)
@@ -512,7 +512,7 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
size_t hrir_total{0};
const uint channels{(hData->mChannelType == CT_STEREO) ? 2u : 1u};
double *hrirs = hData->mHrirsBase.data();
- for(uint fi{0u};fi < hData->mFdCount;fi++)
+ for(uint fi{0u};fi < hData->mFds.size();fi++)
{
for(uint ei{0u};ei < hData->mFds[fi].mEvStart;ei++)
{
@@ -537,7 +537,7 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
PPhaseResampler rs;
rs.init(hData->mIrRate, OnsetRateMultiple*hData->mIrRate);
- for(uint fi{0u};fi < hData->mFdCount;fi++)
+ for(uint fi{0u};fi < hData->mFds.size();fi++)
{
for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -568,7 +568,7 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
return false;
MagCalculator calculator{hData->mFftSize, hData->mIrPoints};
- for(uint fi{0u};fi < hData->mFdCount;fi++)
+ for(uint fi{0u};fi < hData->mFds.size();fi++)
{
for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvCount;ei++)
{
diff --git a/utils/makemhr/makemhr.cpp b/utils/makemhr/makemhr.cpp
index 00506727..dac6bd3c 100644
--- a/utils/makemhr/makemhr.cpp
+++ b/utils/makemhr/makemhr.cpp
@@ -363,9 +363,9 @@ static int StoreMhr(const HrirDataT *hData, const char *filename)
return 0;
if(!WriteBin4(1, hData->mIrPoints, fp, filename))
return 0;
- if(!WriteBin4(1, hData->mFdCount, fp, filename))
+ if(!WriteBin4(1, static_cast<uint>(hData->mFds.size()), fp, filename))
return 0;
- for(fi = hData->mFdCount-1;fi < hData->mFdCount;fi--)
+ for(fi = static_cast<uint>(hData->mFds.size()-1);fi < hData->mFds.size();fi--)
{
auto fdist = static_cast<uint32_t>(std::round(1000.0 * hData->mFds[fi].mDistance));
if(!WriteBin4(2, fdist, fp, filename))
@@ -379,7 +379,7 @@ static int StoreMhr(const HrirDataT *hData, const char *filename)
}
}
- for(fi = hData->mFdCount-1;fi < hData->mFdCount;fi--)
+ for(fi = static_cast<uint>(hData->mFds.size()-1);fi < hData->mFds.size();fi--)
{
constexpr double scale{8388607.0};
constexpr uint bps{3u};
@@ -403,7 +403,7 @@ static int StoreMhr(const HrirDataT *hData, const char *filename)
}
}
}
- for(fi = hData->mFdCount-1;fi < hData->mFdCount;fi--)
+ for(fi = static_cast<uint>(hData->mFds.size()-1);fi < hData->mFds.size();fi--)
{
/* Delay storage has 2 bits of extra precision. */
constexpr double DelayPrecScale{4.0};
@@ -442,7 +442,7 @@ static void BalanceFieldMagnitudes(const HrirDataT *hData, const uint channels,
uint fi, ei, ai, ti, i;
double maxMag{0.0};
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
maxMags[fi] = 0.0;
@@ -462,7 +462,7 @@ static void BalanceFieldMagnitudes(const HrirDataT *hData, const uint channels,
maxMag = std::max(maxMags[fi], maxMag);
}
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
const double magFactor{maxMag / maxMags[fi]};
@@ -494,10 +494,10 @@ static void CalculateDfWeights(const HrirDataT *hData, double *weights)
sum = 0.0;
// The head radius acts as the limit for the inner radius.
innerRa = hData->mRadius;
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
// Each volume ends half way between progressive field measurements.
- if((fi + 1) < hData->mFdCount)
+ if((fi + 1) < hData->mFds.size())
outerRa = 0.5f * (hData->mFds[fi].mDistance + hData->mFds[fi + 1].mDistance);
// The final volume has its limit extended to some practical value.
// This is done to emphasize the far-field responses in the average.
@@ -525,7 +525,7 @@ static void CalculateDfWeights(const HrirDataT *hData, double *weights)
innerRa = outerRa;
}
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
// Normalize the weights given the total surface coverage for all
// fields.
@@ -541,7 +541,7 @@ static void CalculateDfWeights(const HrirDataT *hData, double *weights)
*/
static void CalculateDiffuseFieldAverage(const HrirDataT *hData, const uint channels, const uint m, const int weighted, const double limit, double *dfa)
{
- std::vector<double> weights(hData->mFdCount * MAX_EV_COUNT);
+ std::vector<double> weights(hData->mFds.size() * MAX_EV_COUNT);
uint count, ti, fi, ei, i, ai;
if(weighted)
@@ -556,14 +556,14 @@ static void CalculateDiffuseFieldAverage(const HrirDataT *hData, const uint chan
// If coverage weighting is not used, the weights still need to be
// averaged by the number of existing HRIRs.
count = hData->mIrCount;
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvStart;ei++)
count -= hData->mFds[fi].mEvs[ei].mAzCount;
}
weight = 1.0 / count;
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = hData->mFds[fi].mEvStart;ei < hData->mFds[fi].mEvCount;ei++)
weights[(fi * MAX_EV_COUNT) + ei] = weight;
@@ -573,7 +573,7 @@ static void CalculateDiffuseFieldAverage(const HrirDataT *hData, const uint chan
{
for(i = 0;i < m;i++)
dfa[(ti * m) + i] = 0.0;
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = hData->mFds[fi].mEvStart;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -605,7 +605,7 @@ static void DiffuseFieldEqualize(const uint channels, const uint m, const double
{
uint ti, fi, ei, ai, i;
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = hData->mFds[fi].mEvStart;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -758,7 +758,7 @@ static void SynthesizeOnsets(HrirDataT *hData)
}
}
};
- std::for_each(hData->mFds.begin(), hData->mFds.begin()+hData->mFdCount, proc_field);
+ std::for_each(hData->mFds.begin(), hData->mFds.end(), proc_field);
}
/* Attempt to synthesize any missing HRIRs at the bottom elevations of each
@@ -871,7 +871,7 @@ static void SynthesizeHrirs(HrirDataT *hData)
field.mEvs[0].mAzs[0].mIrs[ti][i] *= filter[i];
}
};
- std::for_each(hData->mFds.begin(), hData->mFds.begin()+hData->mFdCount, proc_field);
+ std::for_each(hData->mFds.begin(), hData->mFds.end(), proc_field);
}
// The following routines assume a full set of HRIRs for all elevations.
@@ -936,7 +936,7 @@ static void ReconstructHrirs(const HrirDataT *hData, const uint numThreads)
reconstructor.mDone.store(0, std::memory_order_relaxed);
reconstructor.mFftSize = hData->mFftSize;
reconstructor.mIrPoints = hData->mIrPoints;
- for(uint fi{0u};fi < hData->mFdCount;fi++)
+ for(uint fi{0u};fi < hData->mFds.size();fi++)
{
const HrirFdT &field = hData->mFds[fi];
for(uint ei{0};ei < field.mEvCount;ei++)
@@ -1005,7 +1005,7 @@ static void NormalizeHrirs(HrirDataT *hData)
auto measure_field = [measure_elev](const LevelPair levels, const HrirFdT &field)
{ return std::accumulate(field.mEvs, field.mEvs+field.mEvCount, levels, measure_elev); };
- const auto maxlev = std::accumulate(hData->mFds.begin(), hData->mFds.begin()+hData->mFdCount,
+ const auto maxlev = std::accumulate(hData->mFds.begin(), hData->mFds.end(),
LevelPair{0.0, 0.0}, measure_field);
/* Normalize using the maximum RMS of the HRIRs. The RMS measure for the
@@ -1032,7 +1032,7 @@ static void NormalizeHrirs(HrirDataT *hData)
auto proc1_field = [proc_elev](HrirFdT &field)
{ std::for_each(field.mEvs, field.mEvs+field.mEvCount, proc_elev); };
- std::for_each(hData->mFds.begin(), hData->mFds.begin()+hData->mFdCount, proc1_field);
+ std::for_each(hData->mFds.begin(), hData->mFds.end(), proc1_field);
}
// Calculate the left-ear time delay using a spherical head model.
@@ -1059,7 +1059,7 @@ static void CalculateHrtds(const HeadModelT model, const double radius, HrirData
if(model == HM_SPHERE)
{
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -1077,7 +1077,7 @@ static void CalculateHrtds(const HeadModelT model, const double radius, HrirData
}
else if(customRatio != 1.0)
{
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -1094,7 +1094,7 @@ static void CalculateHrtds(const HeadModelT model, const double radius, HrirData
}
double maxHrtd{0.0};
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
double minHrtd{std::numeric_limits<double>::infinity()};
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
@@ -1126,7 +1126,7 @@ static void CalculateHrtds(const HeadModelT model, const double radius, HrirData
{
fprintf(stdout, " Scaling for max delay of %f samples to %f\n...\n", maxHrtd, MAX_HRTD);
const double scale{MAX_HRTD / maxHrtd};
- for(fi = 0;fi < hData->mFdCount;fi++)
+ for(fi = 0;fi < hData->mFds.size();fi++)
{
for(ei = 0;ei < hData->mFds[fi].mEvCount;ei++)
{
@@ -1161,7 +1161,6 @@ int PrepareHrirData(const uint fdCount, const double (&distances)[MAX_FD_COUNT],
hData->mAzsBase.resize(azTotal);
hData->mFds.resize(fdCount);
hData->mIrCount = azTotal;
- hData->mFdCount = fdCount;
evTotal = 0;
azTotal = 0;
for(fi = 0;fi < fdCount;fi++)
@@ -1253,7 +1252,7 @@ static int ProcessDefinition(const char *inName, const uint outRate, const Chann
uint m{hData.mFftSize/2u + 1u};
auto dfa = std::vector<double>(c * m);
- if(hData.mFdCount > 1)
+ if(hData.mFds.size() > 1)
{
fprintf(stdout, "Balancing field magnitudes...\n");
BalanceFieldMagnitudes(&hData, c, m);
@@ -1274,7 +1273,6 @@ static int ProcessDefinition(const char *inName, const uint outRate, const Chann
fprintf(stdout, "Clearing %zu near field%s...\n", hData.mFds.size()-1,
(hData.mFds.size()-1 != 1) ? "s" : "");
hData.mFds.erase(hData.mFds.cbegin(), hData.mFds.cend()-1);
- hData.mFdCount = 1;
}
}
fprintf(stdout, "Synthesizing missing elevations...\n");
diff --git a/utils/makemhr/makemhr.h b/utils/makemhr/makemhr.h
index 42f630e2..829ce5d6 100644
--- a/utils/makemhr/makemhr.h
+++ b/utils/makemhr/makemhr.h
@@ -96,7 +96,6 @@ struct HrirDataT {
uint mIrSize{0u};
double mRadius{0.0};
uint mIrCount{0u};
- uint mFdCount{0u};
std::vector<double> mHrirsBase;
std::vector<HrirEvT> mEvsBase;