aboutsummaryrefslogtreecommitdiffstats
path: root/utils/makemhr/loadsofa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/makemhr/loadsofa.cpp')
-rw-r--r--utils/makemhr/loadsofa.cpp53
1 files changed, 25 insertions, 28 deletions
diff --git a/utils/makemhr/loadsofa.cpp b/utils/makemhr/loadsofa.cpp
index 2c445dac..dcb0a35e 100644
--- a/utils/makemhr/loadsofa.cpp
+++ b/utils/makemhr/loadsofa.cpp
@@ -290,22 +290,21 @@ static bool LoadResponses(MYSOFA_HRTF *sofaHrtf, HrirDataT *hData, const DelayTy
auto field = std::find_if(hData->mFds.cbegin(), hData->mFds.cend(),
[&aer](const HrirFdT &fld) -> bool
- {
- double delta = aer[2] - fld.mDistance;
- return (std::abs(delta) < 0.001);
- });
+ { return (std::abs(aer[2] - fld.mDistance) < 0.001); });
if(field == hData->mFds.cend())
continue;
- double ef{(90.0+aer[1]) / 180.0 * (field->mEvCount-1)};
- auto ei = static_cast<int>(std::round(ef));
- ef = (ef-ei) * 180.0 / (field->mEvCount-1);
+ const double evscale{180.0 / static_cast<double>(field->mEvs.size()-1)};
+ double ef{(90.0 + aer[1]) / evscale};
+ auto ei = static_cast<uint>(std::round(ef));
+ ef = (ef - ei) * evscale;
if(std::abs(ef) >= 0.1) continue;
- double af{aer[0] / 360.0 * field->mEvs[ei].mAzCount};
- auto ai = static_cast<int>(std::round(af));
- af = (af-ai) * 360.0 / field->mEvs[ei].mAzCount;
- ai %= field->mEvs[ei].mAzCount;
+ const double azscale{360.0 / static_cast<double>(field->mEvs[ei].mAzs.size())};
+ double af{aer[0] / azscale};
+ auto ai = static_cast<uint>(std::round(af));
+ af = (af-ai) * azscale;
+ ai %= static_cast<uint>(field->mEvs[ei].mAzs.size());
if(std::abs(af) >= 0.1) continue;
HrirAzT *azd = &field->mEvs[ei].mAzs[ai];
@@ -479,26 +478,26 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
for(uint fi{0u};fi < hData->mFds.size();fi++)
{
uint ei{0u};
- for(;ei < hData->mFds[fi].mEvCount;ei++)
+ for(;ei < hData->mFds[fi].mEvs.size();ei++)
{
uint ai{0u};
- for(;ai < hData->mFds[fi].mEvs[ei].mAzCount;ai++)
+ for(;ai < hData->mFds[fi].mEvs[ei].mAzs.size();ai++)
{
HrirAzT &azd = hData->mFds[fi].mEvs[ei].mAzs[ai];
if(azd.mIrs[0] != nullptr) break;
}
- if(ai < hData->mFds[fi].mEvs[ei].mAzCount)
+ if(ai < hData->mFds[fi].mEvs[ei].mAzs.size())
break;
}
- if(ei >= hData->mFds[fi].mEvCount)
+ if(ei >= hData->mFds[fi].mEvs.size())
{
fprintf(stderr, "Missing source references [ %d, *, * ].\n", fi);
return false;
}
hData->mFds[fi].mEvStart = ei;
- for(;ei < hData->mFds[fi].mEvCount;ei++)
+ for(;ei < hData->mFds[fi].mEvs.size();ei++)
{
- for(uint ai{0u};ai < hData->mFds[fi].mEvs[ei].mAzCount;ai++)
+ for(uint ai{0u};ai < hData->mFds[fi].mEvs[ei].mAzs.size();ai++)
{
HrirAzT &azd = hData->mFds[fi].mEvs[ei].mAzs[ai];
if(azd.mIrs[0] == nullptr)
@@ -518,7 +517,7 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
{
for(uint ei{0u};ei < hData->mFds[fi].mEvStart;ei++)
{
- for(uint ai{0u};ai < hData->mFds[fi].mEvs[ei].mAzCount;ai++)
+ for(uint ai{0u};ai < hData->mFds[fi].mEvs[ei].mAzs.size();ai++)
{
HrirAzT &azd = hData->mFds[fi].mEvs[ei].mAzs[ai];
for(uint ti{0u};ti < channels;ti++)
@@ -526,8 +525,8 @@ bool LoadSofaFile(const char *filename, const uint numThreads, const uint fftSiz
}
}
- for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvCount;ei++)
- hrir_total += hData->mFds[fi].mEvs[ei].mAzCount * channels;
+ for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvs.size();ei++)
+ hrir_total += hData->mFds[fi].mEvs[ei].mAzs.size() * channels;
}
std::atomic<size_t> hrir_done{0};
@@ -539,13 +538,12 @@ 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->mFds.size();fi++)
+ for(auto &field : hData->mFds)
{
- for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvCount;ei++)
+ for(auto &elev : field.mEvs.subspan(field.mEvStart))
{
- for(uint ai{0};ai < hData->mFds[fi].mEvs[ei].mAzCount;ai++)
+ for(auto &azd : elev.mAzs)
{
- HrirAzT &azd = hData->mFds[fi].mEvs[ei].mAzs[ai];
for(uint ti{0};ti < channels;ti++)
{
hrir_done.fetch_add(1u, std::memory_order_acq_rel);
@@ -570,13 +568,12 @@ 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->mFds.size();fi++)
+ for(auto &field : hData->mFds)
{
- for(uint ei{hData->mFds[fi].mEvStart};ei < hData->mFds[fi].mEvCount;ei++)
+ for(auto &elev : field.mEvs.subspan(field.mEvStart))
{
- for(uint ai{0};ai < hData->mFds[fi].mEvs[ei].mAzCount;ai++)
+ for(auto &azd : elev.mAzs)
{
- HrirAzT &azd = hData->mFds[fi].mEvs[ei].mAzs[ai];
for(uint ti{0};ti < channels;ti++)
calculator.mIrs.push_back(azd.mIrs[ti]);
}