diff --git a/CMakeLists.txt b/CMakeLists.txt index 5490008..fd7e5a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,6 +72,7 @@ if(UNIX AND NOT APPLE) pkg_check_modules(DRM REQUIRED libdrm) pkg_check_modules(VAAPI libva libva-drm) pkg_check_modules(ALSA REQUIRED alsa) + pkg_check_modules(PULSEAUDIO libpulse-simple libpulse) if(NOT HEADLESS) pkg_check_modules(GTK3 REQUIRED gtk+-3.0) @@ -93,6 +94,10 @@ if(UNIX AND NOT APPLE) if(X11_FOUND) add_compile_definitions(HAVE_X11) endif() + + if(PULSEAUDIO_FOUND) + add_compile_definitions(HAVE_PULSEAUDIO) + endif() endif() if(WIN32) @@ -400,6 +405,7 @@ message(STATUS " Build Client: ${BUILD_CLIENT}") message(STATUS " Headless: ${HEADLESS}") if(UNIX) message(STATUS " VA-API: ${VAAPI_FOUND}") + message(STATUS " PulseAudio: ${PULSEAUDIO_FOUND}") message(STATUS " Avahi: ${AVAHI_FOUND}") endif() message(STATUS "") diff --git a/src/network.c b/src/network.c index 7bf30df..4a4fb4d 100644 --- a/src/network.c +++ b/src/network.c @@ -617,7 +617,17 @@ int rootstream_net_recv(rootstream_ctx_t *ctx, int timeout_ms) { } if (!drop_audio) { - audio_playback_write(ctx, pcm_buffer, pcm_samples); + /* Use audio playback backend if available */ + if (ctx->audio_playback_backend && ctx->audio_playback_backend->playback_fn) { + ctx->audio_playback_backend->playback_fn(ctx, pcm_buffer, pcm_samples); + } else { + /* Warn once if audio backend is not available */ + static bool warned_no_backend = false; + if (!warned_no_backend) { + fprintf(stderr, "WARNING: No audio playback backend available, audio will be dropped\n"); + warned_no_backend = true; + } + } ctx->last_audio_ts_us = header.timestamp_us; } } else {