Fix B-Format HRTF decoding

This commit is contained in:
Chris Robinson 2015-09-23 16:02:46 -07:00
parent 4bdd58bc83
commit 64858e3e94
2 changed files with 9 additions and 6 deletions

View File

@ -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++)
{

View File

@ -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;