diff options
author | Chris Robinson <[email protected]> | 2014-11-23 10:49:54 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2014-11-23 10:49:54 -0800 |
commit | 45d6bb58a4293c5b1ab229cea86e0ef24a2a084b (patch) | |
tree | ec03ad6eac812ae209f8d973687afa5b99616133 /Alc/mixer_defs.h | |
parent | fc3608b381c0492674b4cfc1da0dcf5389ace722 (diff) |
Partially revert "Use a different method for HRTF mixing"
The sound localization with virtual channel mixing was just too poor, so while
it's more costly to do per-source HRTF mixing, it's unavoidable if you want
good localization.
This is only partially reverted because having the virtual channel is still
beneficial, particularly with B-Format rendering and effect mixing which
otherwise skip HRTF processing. As before, the number of virtual channels can
potentially be customized, specifying more or less channels depending on the
system's needs.
Diffstat (limited to 'Alc/mixer_defs.h')
-rw-r--r-- | Alc/mixer_defs.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Alc/mixer_defs.h b/Alc/mixer_defs.h index 62dad9dc..c1500ed2 100644 --- a/Alc/mixer_defs.h +++ b/Alc/mixer_defs.h @@ -20,15 +20,17 @@ const ALfloat *Resample_cubic32_C(const ALfloat *src, ALuint frac, ALuint increm /* C mixers */ void MixHrtf_C(ALfloat (*restrict OutBuffer)[BUFFERSIZE], const ALfloat *data, - ALuint Offset, const ALuint IrSize, const struct HrtfParams *hrtfparams, - struct HrtfState *hrtfstate, ALuint BufferSize); + ALuint Counter, ALuint Offset, ALuint OutPos, const ALuint IrSize, + const struct HrtfParams *hrtfparams, struct HrtfState *hrtfstate, + ALuint BufferSize); void Mix_C(const ALfloat *data, ALuint OutChans, ALfloat (*restrict OutBuffer)[BUFFERSIZE], struct MixGains *Gains, ALuint Counter, ALuint OutPos, ALuint BufferSize); /* SSE mixers */ void MixHrtf_SSE(ALfloat (*restrict OutBuffer)[BUFFERSIZE], const ALfloat *data, - ALuint Offset, const ALuint IrSize, const struct HrtfParams *hrtfparams, - struct HrtfState *hrtfstate, ALuint BufferSize); + ALuint Counter, ALuint Offset, ALuint OutPos, const ALuint IrSize, + const struct HrtfParams *hrtfparams, struct HrtfState *hrtfstate, + ALuint BufferSize); void Mix_SSE(const ALfloat *data, ALuint OutChans, ALfloat (*restrict OutBuffer)[BUFFERSIZE], struct MixGains *Gains, ALuint Counter, ALuint OutPos, ALuint BufferSize); @@ -54,8 +56,9 @@ const ALfloat *Resample_lerp32_SSE41(const ALfloat *src, ALuint frac, ALuint inc /* Neon mixers */ void MixHrtf_Neon(ALfloat (*restrict OutBuffer)[BUFFERSIZE], const ALfloat *data, - ALuint Offset, const ALuint IrSize, const struct HrtfParams *hrtfparams, - struct HrtfState *hrtfstate, ALuint BufferSize); + ALuint Counter, ALuint Offset, ALuint OutPos, const ALuint IrSize, + const struct HrtfParams *hrtfparams, struct HrtfState *hrtfstate, + ALuint BufferSize); void Mix_Neon(const ALfloat *data, ALuint OutChans, ALfloat (*restrict OutBuffer)[BUFFERSIZE], struct MixGains *Gains, ALuint Counter, ALuint OutPos, ALuint BufferSize); |