Update the active source's direct and send properties after each mix

This commit is contained in:
Chris Robinson 2014-05-21 14:47:25 -07:00
parent f313ce2a96
commit 4a8d38c19a

View File

@ -356,14 +356,12 @@ ALvoid MixSource(ALactivesource *src, ALCdevice *Device, ALuint SamplesToDo)
);
if(!src->IsHrtf)
src->Dry.Mix(parms->OutBuffer, samples, &parms->Mix.Gains[chan],
maxu(parms->Counter, OutPos) - OutPos, OutPos,
DstBufferSize);
parms->Counter, OutPos, DstBufferSize);
else
src->Dry.HrtfMix(
parms->OutBuffer, SrcData, maxu(parms->Counter, OutPos) - OutPos,
parms->Offset + OutPos, OutPos, parms->Mix.Hrtf.IrSize,
&parms->Mix.Hrtf.Params[chan], &parms->Mix.Hrtf.State[chan],
DstBufferSize
parms->OutBuffer, SrcData, parms->Counter, parms->Offset,
OutPos, parms->Mix.Hrtf.IrSize, &parms->Mix.Hrtf.Params[chan],
&parms->Mix.Hrtf.State[chan], DstBufferSize
);
}
@ -381,8 +379,7 @@ ALvoid MixSource(ALactivesource *src, ALCdevice *Device, ALuint SamplesToDo)
parms->Filters[chan].ActiveType
);
src->WetMix(parms->OutBuffer, samples, &parms->Gain,
maxu(parms->Counter, OutPos) - OutPos,
OutPos, DstBufferSize);
parms->Counter, OutPos, DstBufferSize);
}
}
/* Update positions */
@ -393,6 +390,10 @@ ALvoid MixSource(ALactivesource *src, ALCdevice *Device, ALuint SamplesToDo)
DataPosFrac &= FRACTIONMASK;
}
OutPos += DstBufferSize;
src->Direct.Offset += DstBufferSize;
src->Direct.Counter = maxu(src->Direct.Counter, DstBufferSize) - DstBufferSize;
for(j = 0;j < Device->NumAuxSends;j++)
src->Send[j].Counter = maxu(src->Send[j].Counter, DstBufferSize) - DstBufferSize;
/* Handle looping sources */
while(1)
@ -443,6 +444,4 @@ ALvoid MixSource(ALactivesource *src, ALCdevice *Device, ALuint SamplesToDo)
Source->current_buffer = BufferListItem;
Source->position = DataPosInt;
Source->position_fraction = DataPosFrac;
src->Direct.Offset += OutPos;
src->Direct.Counter = maxu(src->Direct.Counter, OutPos) - OutPos;
}