diff options
author | Sven Gothel <[email protected]> | 2014-01-26 07:06:02 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-01-26 07:06:02 +0100 |
commit | e6f4251945c228a775649b5ccd7f11dd4519c28d (patch) | |
tree | 8454b34363358cf9bb502021a68c6985c97daac4 /Alc/mixer_c.c | |
parent | 389ae1f767bfad6116e21306fc3cdf89a4cbcc0a (diff) | |
parent | 49baa9128dd98e986639def4f24c7522d9ec6b56 (diff) |
Merge branch 'UPSTREAM'
Diffstat (limited to 'Alc/mixer_c.c')
-rw-r--r-- | Alc/mixer_c.c | 66 |
1 files changed, 30 insertions, 36 deletions
diff --git a/Alc/mixer_c.c b/Alc/mixer_c.c index d9c8ca25..36d8bf5a 100644 --- a/Alc/mixer_c.c +++ b/Alc/mixer_c.c @@ -8,24 +8,23 @@ #include "alAuxEffectSlot.h" -static __inline ALfloat point32(const ALfloat *vals, ALuint frac) -{ return vals[0]; (void)frac; } -static __inline ALfloat lerp32(const ALfloat *vals, ALuint frac) +static inline ALfloat point32(const ALfloat *vals, ALuint UNUSED(frac)) +{ return vals[0]; } +static inline ALfloat lerp32(const ALfloat *vals, ALuint frac) { return lerp(vals[0], vals[1], frac * (1.0f/FRACTIONONE)); } -static __inline ALfloat cubic32(const ALfloat *vals, ALuint frac) +static inline ALfloat cubic32(const ALfloat *vals, ALuint frac) { return cubic(vals[-1], vals[0], vals[1], vals[2], frac * (1.0f/FRACTIONONE)); } -void Resample_copy32_C(const ALfloat *data, ALuint frac, - ALuint increment, ALfloat *RESTRICT OutBuffer, ALuint BufferSize) +void Resample_copy32_C(const ALfloat *data, ALuint UNUSED(frac), + ALuint increment, ALfloat *restrict OutBuffer, ALuint BufferSize) { - (void)frac; assert(increment==FRACTIONONE); memcpy(OutBuffer, data, (BufferSize+1)*sizeof(ALfloat)); } #define DECL_TEMPLATE(Sampler) \ void Resample_##Sampler##_C(const ALfloat *data, ALuint frac, \ - ALuint increment, ALfloat *RESTRICT OutBuffer, ALuint BufferSize) \ + ALuint increment, ALfloat *restrict OutBuffer, ALuint BufferSize) \ { \ ALuint pos = 0; \ ALuint i; \ @@ -47,27 +46,22 @@ DECL_TEMPLATE(cubic32) #undef DECL_TEMPLATE -static __inline void ApplyCoeffsStep(ALuint Offset, ALfloat (*RESTRICT Values)[2], - const ALuint IrSize, - ALfloat (*RESTRICT Coeffs)[2], - const ALfloat (*RESTRICT CoeffStep)[2], - ALfloat left, ALfloat right) +static inline void ApplyCoeffsStep(const ALuint IrSize, + ALfloat (*restrict Coeffs)[2], + const ALfloat (*restrict CoeffStep)[2]) { ALuint c; for(c = 0;c < IrSize;c++) { - const ALuint off = (Offset+c)&HRIR_MASK; - Values[off][0] += Coeffs[c][0] * left; - Values[off][1] += Coeffs[c][1] * right; Coeffs[c][0] += CoeffStep[c][0]; Coeffs[c][1] += CoeffStep[c][1]; } } -static __inline void ApplyCoeffs(ALuint Offset, ALfloat (*RESTRICT Values)[2], - const ALuint IrSize, - ALfloat (*RESTRICT Coeffs)[2], - ALfloat left, ALfloat right) +static inline void ApplyCoeffs(ALuint Offset, ALfloat (*restrict Values)[2], + const ALuint IrSize, + ALfloat (*restrict Coeffs)[2], + ALfloat left, ALfloat right) { ALuint c; for(c = 0;c < IrSize;c++) @@ -83,12 +77,12 @@ static __inline void ApplyCoeffs(ALuint Offset, ALfloat (*RESTRICT Values)[2], #undef SUFFIX -void MixDirect_C(const DirectParams *params, const ALfloat *RESTRICT data, ALuint srcchan, +void MixDirect_C(const DirectParams *params, const ALfloat *restrict data, ALuint srcchan, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize) { - ALfloat (*RESTRICT DryBuffer)[BUFFERSIZE] = params->OutBuffer; - ALfloat *RESTRICT ClickRemoval = params->ClickRemoval; - ALfloat *RESTRICT PendingClicks = params->PendingClicks; + ALfloat (*restrict OutBuffer)[BUFFERSIZE] = params->OutBuffer; + ALfloat *restrict ClickRemoval = params->ClickRemoval; + ALfloat *restrict PendingClicks = params->PendingClicks; ALfloat DrySend; ALuint pos; ALuint c; @@ -96,36 +90,36 @@ void MixDirect_C(const DirectParams *params, const ALfloat *RESTRICT data, ALuin for(c = 0;c < MaxChannels;c++) { DrySend = params->Gains[srcchan][c]; - if(DrySend < 0.00001f) + if(!(DrySend > GAIN_SILENCE_THRESHOLD)) continue; if(OutPos == 0) ClickRemoval[c] -= data[0]*DrySend; for(pos = 0;pos < BufferSize;pos++) - DryBuffer[c][OutPos+pos] += data[pos]*DrySend; + OutBuffer[c][OutPos+pos] += data[pos]*DrySend; if(OutPos+pos == SamplesToDo) PendingClicks[c] += data[pos]*DrySend; } } -void MixSend_C(const SendParams *params, const ALfloat *RESTRICT data, +void MixSend_C(const SendParams *params, const ALfloat *restrict data, ALuint OutPos, ALuint SamplesToDo, ALuint BufferSize) { - ALeffectslot *Slot = params->Slot; - ALfloat (*RESTRICT WetBuffer)[BUFFERSIZE] = Slot->WetBuffer; - ALfloat *RESTRICT WetClickRemoval = Slot->ClickRemoval; - ALfloat *RESTRICT WetPendingClicks = Slot->PendingClicks; - ALfloat WetSend = params->Gain; + ALfloat (*restrict OutBuffer)[BUFFERSIZE] = params->OutBuffer; + ALfloat *restrict ClickRemoval = params->ClickRemoval; + ALfloat *restrict PendingClicks = params->PendingClicks; + ALfloat WetSend; ALuint pos; - if(WetSend < 0.00001f) + WetSend = params->Gain; + if(!(WetSend > GAIN_SILENCE_THRESHOLD)) return; if(OutPos == 0) - WetClickRemoval[0] -= data[0] * WetSend; + ClickRemoval[0] -= data[0] * WetSend; for(pos = 0;pos < BufferSize;pos++) - WetBuffer[0][OutPos+pos] += data[pos] * WetSend; + OutBuffer[0][OutPos+pos] += data[pos] * WetSend; if(OutPos+pos == SamplesToDo) - WetPendingClicks[0] += data[pos] * WetSend; + PendingClicks[0] += data[pos] * WetSend; } |