aboutsummaryrefslogtreecommitdiffstats
path: root/utils/makemhr/loadsofa.cpp
diff options
context:
space:
mode:
authorChris Robinson <chris.kcat@gmail.com>2019-09-23 18:37:36 -0700
committerChris Robinson <chris.kcat@gmail.com>2019-09-23 18:37:36 -0700
commite01b32f8e02730b9e4474bbfcdbf2b88fc6c16f5 (patch)
treef2fb99cd581703450f722e41a9f896bb55cd0b8e /utils/makemhr/loadsofa.cpp
parent34a0fad6cd2513f640c58dcff16817d00cf00456 (diff)
Use istream for makemhr input
Diffstat (limited to 'utils/makemhr/loadsofa.cpp')
-rw-r--r--utils/makemhr/loadsofa.cpp41
1 files changed, 22 insertions, 19 deletions
diff --git a/utils/makemhr/loadsofa.cpp b/utils/makemhr/loadsofa.cpp
index 219eb558..e0c08349 100644
--- a/utils/makemhr/loadsofa.cpp
+++ b/utils/makemhr/loadsofa.cpp
@@ -21,13 +21,20 @@
* Or visit: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
+#include "loadsofa.h"
+
+#include <algorithm>
+#include <cmath>
+#include <cstdio>
+#include <iterator>
#include <memory>
#include <numeric>
-#include <algorithm>
+#include <string>
+#include <vector>
-#include "mysofa.h"
+#include "makemhr.h"
-#include "loadsofa.h"
+#include "mysofa.h"
static const char *SofaErrorStr(int err)
@@ -216,10 +223,11 @@ static bool PrepareLayout(const uint m, const float *xyzs, HrirDataT *hData)
{
float ev{90.0f + elems[ei]};
float eif{std::round(ev / step)};
+ const uint ei_start{static_cast<uint>(eif)};
- if(std::fabs(eif - static_cast<uint>(eif)) < (0.1f / step))
+ if(std::fabs(eif - static_cast<float>(ei_start)) < (0.1f/step))
{
- evStart = static_cast<uint>(eif);
+ evStart = ei_start;
break;
}
}
@@ -428,8 +436,8 @@ static double CalcHrirOnset(const uint rate, const uint n, std::vector<double> &
}
double mag{std::accumulate(upsampled.cbegin(), upsampled.cend(), double{0.0},
- [](const double mag, const double sample) -> double
- { return std::max(mag, std::abs(sample)); })};
+ [](const double magnitude, const double sample) -> double
+ { return std::max(magnitude, std::abs(sample)); })};
mag *= 0.15;
auto iter = std::find_if(upsampled.cbegin(), upsampled.cend(),
@@ -487,14 +495,14 @@ static bool LoadResponses(MYSOFA_HRTF *sofaHrtf, HrirDataT *hData)
if(field == hData->mFds.cend())
continue;
- double ef{(90.0+aer[1]) * (field->mEvCount-1) / 180.0};
+ double ef{(90.0+aer[1]) / 180.0 * (field->mEvCount-1)};
auto ei = static_cast<int>(std::round(ef));
- ef = (ef-ei) * 180.0f / (field->mEvCount-1);
+ ef = (ef-ei) * 180.0 / (field->mEvCount-1);
if(std::abs(ef) >= 0.1) continue;
- double af{aer[0] * field->mEvs[ei].mAzCount / 360.0f};
+ double af{aer[0] / 360.0 * field->mEvs[ei].mAzCount};
auto ai = static_cast<int>(std::round(af));
- af = (af-ai) * 360.0f / field->mEvs[ei].mAzCount;
+ af = (af-ai) * 360.0 / field->mEvs[ei].mAzCount;
ai %= field->mEvs[ei].mAzCount;
if(std::abs(af) >= 0.1) continue;
@@ -541,14 +549,9 @@ bool LoadSofaFile(const char *filename, const uint fftSize, const uint truncSize
return false;
}
+ /* NOTE: Some valid SOFA files are failing this check. */
err = mysofa_check(sofaHrtf.get());
if(err != MYSOFA_OK)
-/* NOTE: Some valid SOFA files are failing this check.
- {
- fprintf(stdout, "Error: Malformed source file '%s' (%s).\n", filename, SofaErrorStr(err));
- return false;
- }
-*/
fprintf(stderr, "Warning: Supposedly malformed source file '%s' (%s).\n", filename,
SofaErrorStr(err));
@@ -589,8 +592,8 @@ bool LoadSofaFile(const char *filename, const uint fftSize, const uint truncSize
/* Assume a default head radius of 9cm. */
hData->mRadius = 0.09;
- if(!PrepareSampleRate(sofaHrtf.get(), hData) || !PrepareDelay(sofaHrtf.get(), hData) ||
- !CheckIrData(sofaHrtf.get()))
+ if(!PrepareSampleRate(sofaHrtf.get(), hData) || !PrepareDelay(sofaHrtf.get(), hData)
+ || !CheckIrData(sofaHrtf.get()))
return false;
if(!PrepareLayout(sofaHrtf->M, sofaHrtf->SourcePosition.values, hData))
return false;