Mix_SetPanning не вызывается должным образом в функции обратного вызова Mix_ChannelFinished
Я использую SDL_Mixer для своего текущего проекта и пытаюсь синхронизировать звуки с помощью функции Mix_ChannelFinished. Кажется, он позволяет мне вызывать Mix_PlayChannel, но он не позволяет мне вызывать Mix_SetPanning в функции. Это приводит к тому, что аудио в очереди становится намного громче. Если я вызываю его за пределами функции, это помогает, но в начале звука в очереди есть заметный разрыв громкости.
Вот функция, которую я вызываю, когда звук закончен:
void playQueueSound(int channel)
{
printf("\n playing %d", channels[channel].soundIndex);
if (channels[channel].soundIndex > (-1))
{
//printf("\n playing %d", channels[channel].soundIndex);
AudioSource::getSource(channels[channel].objId)->removeSound(channel);
channels[channel].soundIndex = (-1);
if (channels[channel].queueIndex > (-1))
{
if (Mix_PlayChannel(channel, soundEffects[channels[channel].queueIndex].chunk, channels[channel].queueLoopMode)<0)
{
printf("\n cant play %s", Mix_GetError());
}
setObjPanning(AudioSource::getSource(channels[channel].objId), channel);
channels[channel].soundIndex = channels[channel].queueIndex;
}
else
{
channels[channel].objId = -1;
}
channels[channel].queueIndex = -1;
channels[channel].queueLoopMode = 0;
}
}