From 3dc33b6f84fc0d2019df37aebdbc367a1e3f767a Mon Sep 17 00:00:00 2001 From: Kevin Alexis Contreras <36680385+KiritoDv@users.noreply.github.com> Date: Tue, 14 Jun 2022 14:04:47 -0500 Subject: [PATCH] Added GetSampleRate function --- libultraship/libultraship/AudioPlayer.h | 1 + .../libultraship/PulseAudioPlayer.cpp | 2 +- libultraship/libultraship/SDLAudioPlayer.cpp | 30 +++++++++---------- .../libultraship/WasapiAudioPlayer.cpp | 4 +-- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/libultraship/libultraship/AudioPlayer.h b/libultraship/libultraship/AudioPlayer.h index 175cc5100..346239624 100644 --- a/libultraship/libultraship/AudioPlayer.h +++ b/libultraship/libultraship/AudioPlayer.h @@ -11,5 +11,6 @@ namespace Ship { virtual int Buffered(void) = 0; virtual int GetDesiredBuffered(void) = 0; virtual void Play(const uint8_t* buf, uint32_t len) = 0; + constexpr int GetSampleRate() const { return 44100; } }; } diff --git a/libultraship/libultraship/PulseAudioPlayer.cpp b/libultraship/libultraship/PulseAudioPlayer.cpp index 955b225d1..7762f0259 100644 --- a/libultraship/libultraship/PulseAudioPlayer.cpp +++ b/libultraship/libultraship/PulseAudioPlayer.cpp @@ -74,7 +74,7 @@ namespace Ship // Create stream pa_sample_spec ss; ss.format = PA_SAMPLE_S16LE; - ss.rate = 32000; + ss.rate = this->GetSampleRate(); ss.channels = 2; pa_buffer_attr attr; diff --git a/libultraship/libultraship/SDLAudioPlayer.cpp b/libultraship/libultraship/SDLAudioPlayer.cpp index ec3842acb..1cc3d61d1 100644 --- a/libultraship/libultraship/SDLAudioPlayer.cpp +++ b/libultraship/libultraship/SDLAudioPlayer.cpp @@ -2,40 +2,40 @@ #include "spdlog/spdlog.h" namespace Ship { - bool SDLAudioPlayer::Init(void) { + bool SDLAudioPlayer::Init(void) { if (SDL_Init(SDL_INIT_AUDIO) != 0) { - SPDLOG_ERROR("SDL init error: %s\n", SDL_GetError()); - return false; + SPDLOG_ERROR("SDL init error: %s\n", SDL_GetError()); + return false; } SDL_AudioSpec want, have; SDL_zero(want); - want.freq = 44000; + want.freq = this->GetSampleRate(); want.format = AUDIO_S16; want.channels = 2; want.samples = 1024; want.callback = NULL; Device = SDL_OpenAudioDevice(NULL, 0, &want, &have, 0); if (Device == 0) { - SPDLOG_ERROR("SDL_OpenAudio error: {}", SDL_GetError()); - return false; + SPDLOG_ERROR("SDL_OpenAudio error: {}", SDL_GetError()); + return false; } SDL_PauseAudioDevice(Device, 0); return true; - } + } - int SDLAudioPlayer::Buffered(void) { + int SDLAudioPlayer::Buffered(void) { // 4 is sizeof(int16_t) * num_channels (2 for stereo) return SDL_GetQueuedAudioSize(Device) / 4; - } + } - int SDLAudioPlayer::GetDesiredBuffered(void) { + int SDLAudioPlayer::GetDesiredBuffered(void) { return 1680; - } + } - void SDLAudioPlayer::Play(const uint8_t* Buffer, uint32_t BufferLen) { + void SDLAudioPlayer::Play(const uint8_t* Buffer, uint32_t BufferLen) { if (Buffered() < 6000) { - // Don't fill the audio buffer too much in case this happens - SDL_QueueAudio(Device, Buffer, BufferLen); + // Don't fill the audio buffer too much in case this happens + SDL_QueueAudio(Device, Buffer, BufferLen); } - } + } } \ No newline at end of file diff --git a/libultraship/libultraship/WasapiAudioPlayer.cpp b/libultraship/libultraship/WasapiAudioPlayer.cpp index c4bea0b4f..7062613c8 100644 --- a/libultraship/libultraship/WasapiAudioPlayer.cpp +++ b/libultraship/libultraship/WasapiAudioPlayer.cpp @@ -30,8 +30,8 @@ namespace Ship { WAVEFORMATEX desired; desired.wFormatTag = WAVE_FORMAT_PCM; desired.nChannels = 2; - desired.nSamplesPerSec = 44100; - desired.nAvgBytesPerSec = 44100 * 2 * 2; + desired.nSamplesPerSec = this->GetSampleRate(); + desired.nAvgBytesPerSec = desired.nSamplesPerSec * 2 * 2; desired.nBlockAlign = 4; desired.wBitsPerSample = 16; desired.cbSize = 0;