Skip to content

Commit

Permalink
Windows compile fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
marcel303 committed Jun 8, 2022
1 parent bb19447 commit 8dc7c97
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
19 changes: 19 additions & 0 deletions users/marcel/flacdecode1/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,41 @@

#include <stdio.h>

#ifdef _MSC_VER
#include <intrin.h>
#endif

struct Integer
{
static int numberOfLeadingZeros(const uint32_t value)
{
return
value == 0
? 32
#ifdef _MSC_VER
: __lzcnt(value);
#else
: __builtin_clz(value);
#endif
}

static int numberOfLeadingZeros64(const uint64_t value)
{
#ifdef _MSC_VER
if (value == 0)
return 64;

const int n = numberOfLeadingZeros(uint32_t(value >> 32));
if (n != 0)
return n;

return 32 + numberOfLeadingZeros(uint32_t(value));
#else
return
value == 0
? 64
: __builtin_clzll(value);
#endif
}
};

Expand Down
9 changes: 7 additions & 2 deletions users/marcel/pitchshift1/pshifter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

#include "fourier.h"

#include "Debugging.h"
#include "Log.h"

#ifdef HAVE_SSE_INTRINSICS
Expand Down Expand Up @@ -95,8 +96,12 @@ static int double2int(double value)

template <typename T> static void complex_fft(T & buffer, double direction)
{
ALIGN16 double real[buffer.size()];
ALIGN16 double imag[buffer.size()];
const int kMaxBufferSize = 4096;

Assert(buffer.size() <= kMaxBufferSize);

ALIGN16 double real[kMaxBufferSize];
ALIGN16 double imag[kMaxBufferSize];

const int numBits = Fourier::integerLog2(buffer.size());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,14 +170,18 @@ void SpatialAudioSystem_Binaural::updatePanning()

void SpatialAudioSystem_Binaural::generateLR(float * __restrict outputSamplesL, float * __restrict outputSamplesR, const int numSamples)
{
const int kMaxSamples = binaural::Binauralizer::SampleBuffer::kBufferSize;

Assert(numSamples <= kMaxSamples);

memset(outputSamplesL, 0, numSamples * sizeof(float));
memset(outputSamplesR, 0, numSamples * sizeof(float));

sources_mutex.lock();
{
for (Source * source = sources; source != nullptr; source = source->next)
{
ALIGN16 float inputSamples[numSamples];
ALIGN16 float inputSamples[kMaxSamples];

// generate source audio
source->audioSource->generate(inputSamples, numSamples);
Expand All @@ -200,8 +204,8 @@ void SpatialAudioSystem_Binaural::generateLR(float * __restrict outputSamplesL,
source->elevation.load(),
source->azimuth.load());

ALIGN16 float samplesL[numSamples];
ALIGN16 float samplesR[numSamples];
ALIGN16 float samplesL[kMaxSamples];
ALIGN16 float samplesR[kMaxSamples];
source->binauralizer.generateLR(
samplesL,
samplesR,
Expand Down

0 comments on commit 8dc7c97

Please sign in to comment.