diff options
Diffstat (limited to 'Alc/mixer_sse.c')
-rw-r--r-- | Alc/mixer_sse.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/Alc/mixer_sse.c b/Alc/mixer_sse.c index e33b3ef3..21234f0f 100644 --- a/Alc/mixer_sse.c +++ b/Alc/mixer_sse.c @@ -138,9 +138,8 @@ static inline void ApplyCoeffs(ALuint Offset, ALfloat (*restrict Values)[2], #undef SUFFIX -void MixDirect_SSE(DirectParams *params, - ALfloat (*restrict OutBuffer)[BUFFERSIZE], const ALfloat *restrict data, - ALuint Counter, ALuint srcchan, ALuint OutPos, ALuint BufferSize) +void MixDirect_SSE(ALfloat (*restrict OutBuffer)[BUFFERSIZE], const ALfloat *data, + MixGains *Gains, ALuint Counter, ALuint OutPos, ALuint BufferSize) { ALfloat DrySend, Step; __m128 gain, step; @@ -149,8 +148,8 @@ void MixDirect_SSE(DirectParams *params, for(c = 0;c < MaxChannels;c++) { ALuint pos = 0; - DrySend = params->Mix.Gains.Current[srcchan][c]; - Step = params->Mix.Gains.Step[srcchan][c]; + DrySend = Gains->Current[c]; + Step = Gains->Step[c]; if(Step != 1.0f && Counter > 0) { /* Mix with applying gain steps in aligned multiples of 4. */ @@ -180,8 +179,8 @@ void MixDirect_SSE(DirectParams *params, DrySend *= Step; } if(pos == Counter) - DrySend = params->Mix.Gains.Target[srcchan][c]; - params->Mix.Gains.Current[srcchan][c] = DrySend; + DrySend = Gains->Target[c]; + Gains->Current[c] = DrySend; /* Mix until pos is aligned with 4 or the mix is done. */ for(;pos < BufferSize && (pos&3) != 0;pos++) OutBuffer[c][OutPos+pos] += data[pos]*DrySend; |