diff --git a/src/audio.h b/src/audio.h
index 229d7bd..8236e2a 100644
--- a/src/audio.h
+++ b/src/audio.h
@@ -17,6 +17,8 @@
* along with Moonlight; if not, see .
*/
+#include
+
#include "limelight-common/Limelight.h"
extern const char* audio_device;
@@ -27,4 +29,5 @@ extern AUDIO_RENDERER_CALLBACKS audio_callbacks_sdl;
#endif
#ifdef HAVE_PULSE
extern AUDIO_RENDERER_CALLBACKS audio_callbacks_pulse;
+bool audio_pulse_init();
#endif
diff --git a/src/audio/pulse.c b/src/audio/pulse.c
index af9a1e9..bcb92aa 100644
--- a/src/audio/pulse.c
+++ b/src/audio/pulse.c
@@ -34,6 +34,22 @@ static pa_simple *dev = NULL;
static short pcmBuffer[FRAME_SIZE * MAX_CHANNEL_COUNT];
static int channelCount;
+bool audio_pulse_init() {
+ pa_sample_spec spec = {
+ .format = PA_SAMPLE_S16LE,
+ .rate = 44000,
+ .channels = 2
+ };
+
+ int error;
+ dev = pa_simple_new(NULL, "Moonlight Embedded", PA_STREAM_PLAYBACK, NULL, "Streaming", &spec, NULL, NULL, &error);
+ if (dev) {
+ pa_simple_free(dev);
+ return true;
+ } else
+ return false;
+}
+
static void pulse_renderer_init(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig) {
int rc, error;
unsigned char alsaMapping[6];
diff --git a/src/platform.c b/src/platform.c
index 2278042..3d4a81f 100644
--- a/src/platform.c
+++ b/src/platform.c
@@ -89,7 +89,8 @@ AUDIO_RENDERER_CALLBACKS* platform_get_audio(enum platform system) {
#endif
default:
#ifdef HAVE_PULSE
- return &audio_callbacks_pulse;
+ if (audio_pulse_init())
+ return &audio_callbacks_pulse;
#endif
return &audio_callbacks_alsa;
}