Fix B-Format HRTF decoding
This commit is contained in:
parent
4bdd58bc83
commit
64858e3e94
13
Alc/hrtf.c
13
Alc/hrtf.c
@ -312,7 +312,10 @@ ALuint GetMovingHrtfCoeffs(const struct Hrtf *Hrtf, ALfloat elevation, ALfloat a
|
||||
}
|
||||
|
||||
|
||||
/* Calculates HRTF coefficients for B-Format channels (only up to first-order). */
|
||||
/* Calculates HRTF coefficients for B-Format channels (only up to first-order).
|
||||
* Note that these will decode a B-Format output mix, which uses FuMa ordering
|
||||
* and scaling, not N3D!
|
||||
*/
|
||||
void GetBFormatHrtfCoeffs(const struct Hrtf *Hrtf, const ALuint num_chans, ALfloat (**coeffs_list)[2], ALuint **delay_list)
|
||||
{
|
||||
ALuint elev_idx, azi_idx;
|
||||
@ -366,10 +369,10 @@ void GetBFormatHrtfCoeffs(const struct Hrtf *Hrtf, const ALuint num_chans, ALflo
|
||||
y = sinf(-az) * cosf(elev);
|
||||
z = sinf(elev);
|
||||
|
||||
ambi_coeffs[0] = 1.0f;
|
||||
ambi_coeffs[1] = 0.5774f * y;
|
||||
ambi_coeffs[2] = 0.5774f * z;
|
||||
ambi_coeffs[3] = 0.5774f * x;
|
||||
ambi_coeffs[0] = 1.4142f;
|
||||
ambi_coeffs[1] = x;
|
||||
ambi_coeffs[2] = y;
|
||||
ambi_coeffs[3] = z;
|
||||
|
||||
for(c = 0;c < num_chans;c++)
|
||||
{
|
||||
|
@ -496,7 +496,7 @@ ALvoid aluInitPanning(ALCdevice *device)
|
||||
|
||||
for(i = 0;i < 4;++i)
|
||||
{
|
||||
static const enum Channel inputs[4] = { BFormatW, BFormatY, BFormatZ, BFormatX };
|
||||
static const enum Channel inputs[4] = { BFormatW, BFormatX, BFormatY, BFormatZ };
|
||||
int chan = GetChannelIdxByName(device, inputs[i]);
|
||||
coeffs_list[i] = device->Hrtf_Params[chan].Coeffs;
|
||||
delay_list[i] = device->Hrtf_Params[chan].Delay;
|
||||
|
Loading…
Reference in New Issue
Block a user