Avoid looking in the buffer queue to find the frame size
This commit is contained in:
parent
35c38e0b5e
commit
c00b2f9254
16
Alc/mixer.c
16
Alc/mixer.c
@ -446,21 +446,7 @@ ALvoid MixSource(ALsource *Source, ALCdevice *Device, ALuint SamplesToDo)
|
|||||||
Looping = Source->bLooping;
|
Looping = Source->bLooping;
|
||||||
increment = Source->Params.Step;
|
increment = Source->Params.Step;
|
||||||
Resampler = Source->Resampler;
|
Resampler = Source->Resampler;
|
||||||
|
FrameSize = Source->NumChannels * Source->SampleSize;
|
||||||
/* Get buffer info */
|
|
||||||
FrameSize = 0;
|
|
||||||
BufferListItem = Source->queue;
|
|
||||||
for(i = 0;i < Source->BuffersInQueue;i++)
|
|
||||||
{
|
|
||||||
const ALbuffer *ALBuffer;
|
|
||||||
if((ALBuffer=BufferListItem->buffer) != NULL)
|
|
||||||
{
|
|
||||||
FrameSize = FrameSizeFromFmt(ALBuffer->FmtChannels,
|
|
||||||
ALBuffer->FmtType);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
BufferListItem = BufferListItem->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get current buffer queue item */
|
/* Get current buffer queue item */
|
||||||
BufferListItem = Source->queue;
|
BufferListItem = Source->queue;
|
||||||
|
@ -87,6 +87,7 @@ typedef struct ALsource
|
|||||||
ALint lSourceType;
|
ALint lSourceType;
|
||||||
|
|
||||||
ALuint NumChannels;
|
ALuint NumChannels;
|
||||||
|
ALuint SampleSize;
|
||||||
|
|
||||||
/* HRTF info */
|
/* HRTF info */
|
||||||
ALfloat HrtfHistory[MAXCHANNELS][HRTF_LENGTH];
|
ALfloat HrtfHistory[MAXCHANNELS][HRTF_LENGTH];
|
||||||
|
@ -567,6 +567,7 @@ AL_API ALvoid AL_APIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
|
|||||||
Source->BuffersInQueue = 1;
|
Source->BuffersInQueue = 1;
|
||||||
|
|
||||||
Source->NumChannels = ChannelsFromFmt(buffer->FmtChannels);
|
Source->NumChannels = ChannelsFromFmt(buffer->FmtChannels);
|
||||||
|
Source->SampleSize = BytesFromFmt(buffer->FmtType);
|
||||||
if(buffer->FmtChannels == FmtMono)
|
if(buffer->FmtChannels == FmtMono)
|
||||||
Source->Update = CalcSourceParams;
|
Source->Update = CalcSourceParams;
|
||||||
else
|
else
|
||||||
@ -1613,6 +1614,7 @@ AL_API ALvoid AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei n, const A
|
|||||||
BufferFmt = buffer;
|
BufferFmt = buffer;
|
||||||
|
|
||||||
Source->NumChannels = ChannelsFromFmt(buffer->FmtChannels);
|
Source->NumChannels = ChannelsFromFmt(buffer->FmtChannels);
|
||||||
|
Source->SampleSize = BytesFromFmt(buffer->FmtType);
|
||||||
if(buffer->FmtChannels == FmtMono)
|
if(buffer->FmtChannels == FmtMono)
|
||||||
Source->Update = CalcSourceParams;
|
Source->Update = CalcSourceParams;
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user