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

0 ответов

Другие вопросы по тегам