Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ if(UNIX AND NOT APPLE)
pkg_check_modules(VAAPI libva libva-drm)
pkg_check_modules(ALSA REQUIRED alsa)
pkg_check_modules(PULSEAUDIO libpulse-simple libpulse)
pkg_check_modules(PIPEWIRE libpipewire-0.3)

if(NOT HEADLESS)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
Expand All @@ -98,6 +99,10 @@ if(UNIX AND NOT APPLE)
if(PULSEAUDIO_FOUND)
add_compile_definitions(HAVE_PULSEAUDIO)
endif()

if(PIPEWIRE_FOUND)
add_compile_definitions(HAVE_PIPEWIRE)
endif()
endif()

if(WIN32)
Expand Down Expand Up @@ -151,6 +156,8 @@ set(LINUX_SOURCES
src/audio_playback.c
src/audio_capture_pulse.c
src/audio_playback_pulse.c
src/audio_capture_pipewire.c
src/audio_playback_pipewire.c
src/audio_capture_dummy.c
src/audio_playback_dummy.c
src/input.c
Expand Down Expand Up @@ -233,6 +240,11 @@ if(UNIX AND NOT APPLE)
target_include_directories(rootstream PRIVATE ${PULSEAUDIO_INCLUDE_DIRS})
endif()

if(PIPEWIRE_FOUND)
target_link_libraries(rootstream PRIVATE ${PIPEWIRE_LIBRARIES})
target_include_directories(rootstream PRIVATE ${PIPEWIRE_INCLUDE_DIRS})
endif()

if(NOT HEADLESS AND GTK3_FOUND)
target_link_libraries(rootstream PRIVATE ${GTK3_LIBRARIES})
target_include_directories(rootstream PRIVATE ${GTK3_INCLUDE_DIRS})
Expand Down Expand Up @@ -277,6 +289,7 @@ if(UNIX AND NOT APPLE)
src/opus_codec.c
src/audio_playback.c
src/audio_playback_pulse.c
src/audio_playback_pipewire.c
src/audio_playback_dummy.c
src/latency.c
${PLATFORM_SOURCES}
Expand All @@ -301,6 +314,11 @@ if(UNIX AND NOT APPLE)
target_include_directories(rstr-player PRIVATE ${PULSEAUDIO_INCLUDE_DIRS})
endif()

if(PIPEWIRE_FOUND)
target_link_libraries(rstr-player PRIVATE ${PIPEWIRE_LIBRARIES})
target_include_directories(rstr-player PRIVATE ${PIPEWIRE_INCLUDE_DIRS})
endif()

if(Opus_FOUND)
target_link_libraries(rstr-player PRIVATE Opus::opus)
else()
Expand Down Expand Up @@ -406,6 +424,7 @@ message(STATUS " Headless: ${HEADLESS}")
if(UNIX)
message(STATUS " VA-API: ${VAAPI_FOUND}")
message(STATUS " PulseAudio: ${PULSEAUDIO_FOUND}")
message(STATUS " PipeWire: ${PIPEWIRE_FOUND}")
message(STATUS " Avahi: ${AVAHI_FOUND}")
endif()
message(STATUS "")
13 changes: 13 additions & 0 deletions include/rootstream.h
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,19 @@ int audio_playback_write_pulse(rootstream_ctx_t *ctx, int16_t *samples,
size_t num_samples);
void audio_playback_cleanup_pulse(rootstream_ctx_t *ctx);

/* Audio backends - PipeWire */
bool audio_capture_pipewire_available(void);
int audio_capture_init_pipewire(rootstream_ctx_t *ctx);
int audio_capture_frame_pipewire(rootstream_ctx_t *ctx, int16_t *samples,
size_t *num_samples);
void audio_capture_cleanup_pipewire(rootstream_ctx_t *ctx);

bool audio_playback_pipewire_available(void);
int audio_playback_init_pipewire(rootstream_ctx_t *ctx);
int audio_playback_write_pipewire(rootstream_ctx_t *ctx, const int16_t *samples,
size_t num_samples);
void audio_playback_cleanup_pipewire(rootstream_ctx_t *ctx);

/* Audio backends - Dummy (silent/discard) */
int audio_capture_init_dummy(rootstream_ctx_t *ctx);
int audio_capture_frame_dummy(rootstream_ctx_t *ctx, int16_t *samples,
Expand Down
Loading
Loading