Я борюсь с воспроизведением звука в C.
здесь моя функция:
void playSound(char* path)
{
SDL_AudioSpec wavSpec;
Uint32 wavLength;
Uint8 *wavBuffer;
SDL_LoadWAV(path, &wavSpec, &wavBuffer, &wavLength);
SDL_AudioDeviceID deviceId = SDL_OpenAudioDevice(NULL, 0, &wavSpec, NULL, 0);
SDL_QueueAudio(deviceId, wavBuffer, wavLength);
SDL_PauseAudioDevice(deviceId, 0);
if (SDL_GetQueuedAudioSize(deviceId) == 0) {
SDL_CloseAudioDevice(deviceId);
SDL_FreeWAV(wavBuffer);
}
}
Звук будет воспроизводиться несколько раз, а затем не будет воспроизводиться снова.
Я проверяю SDL_GetQueuedAudioSize, и когда он достигает 0, звук больше не воспроизводится.
Я думаю, что это о буфере, когда он пуст ... не знаю, я неправильно понял некоторую точку.
Мне не разрешеноиспользуйте другую библиотеку.