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
11 changes: 8 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ jobs:
libgtk-3-dev \
libavahi-client-dev \
libqrencode-dev \
libpng-dev
libpng-dev \
libx11-dev

- name: Build (${{ matrix.build-type }})
run: |
Expand Down Expand Up @@ -77,7 +78,8 @@ jobs:
libgtk-3-dev \
libavahi-client-dev \
libqrencode-dev \
libpng-dev
libpng-dev \
libx11-dev

- name: Build tests
run: make test-build
Expand Down Expand Up @@ -112,6 +114,7 @@ jobs:
libavahi-client-dev \
libqrencode-dev \
libpng-dev \
libx11-dev \
xvfb

- name: Build
Expand Down Expand Up @@ -179,6 +182,7 @@ jobs:
libavahi-client-dev \
libqrencode-dev \
libpng-dev \
libx11-dev \
valgrind

- name: Build with debug symbols
Expand Down Expand Up @@ -282,7 +286,8 @@ jobs:
libgtk-3-dev \
libavahi-client-dev \
libqrencode-dev \
libpng-dev
libpng-dev \
libx11-dev

- name: Configure CMake
run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ build/
*.pdb
rootstream
tools/rstr-player
_codeql_build_dir/
_codeql_detected_source_root
12 changes: 12 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ if(UNIX AND NOT APPLE)
pkg_check_modules(AVAHI avahi-client)
pkg_check_modules(QRENCODE libqrencode)
pkg_check_modules(PNG libpng)
pkg_check_modules(X11 x11)

if(VAAPI_FOUND)
add_compile_definitions(HAVE_VAAPI)
Expand All @@ -86,6 +87,10 @@ if(UNIX AND NOT APPLE)
if(AVAHI_FOUND)
add_compile_definitions(HAVE_AVAHI)
endif()

if(X11_FOUND)
add_compile_definitions(HAVE_X11)
endif()
endif()

if(WIN32)
Expand Down Expand Up @@ -128,6 +133,8 @@ set(COMMON_SOURCES

set(LINUX_SOURCES
src/drm_capture.c
src/x11_capture.c
src/dummy_capture.c
src/vaapi_encoder.c
src/nvenc_encoder.c
src/vaapi_decoder.c
Expand Down Expand Up @@ -218,6 +225,11 @@ if(UNIX AND NOT APPLE)
target_include_directories(rootstream PRIVATE ${AVAHI_INCLUDE_DIRS})
endif()

if(X11_FOUND)
target_link_libraries(rootstream PRIVATE ${X11_LIBRARIES})
target_include_directories(rootstream PRIVATE ${X11_INCLUDE_DIRS})
endif()

if(QRENCODE_FOUND)
target_link_libraries(rootstream PRIVATE ${QRENCODE_LIBRARIES})
target_include_directories(rootstream PRIVATE ${QRENCODE_INCLUDE_DIRS})
Expand Down
18 changes: 16 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,16 @@ else
$(warning ALSA not found - audio will not work. Install libasound2-dev or alsa-lib-devel)
endif

# X11 (optional, for X11 capture fallback)
X11_FOUND := $(shell pkg-config --exists x11 && echo yes)
ifeq ($(X11_FOUND),yes)
CFLAGS += $(shell pkg-config --cflags x11)
LIBS += $(shell pkg-config --libs x11)
CFLAGS += -DHAVE_X11
else
$(info X11 not found - X11 capture backend will be disabled)
endif

# NVENC (optional, for NVIDIA GPU encoding)
# Check both CUDA and NVENC SDK headers
CUDA_FOUND := $(shell pkg-config --exists cuda && echo yes)
Expand Down Expand Up @@ -131,7 +141,10 @@ PLAYER := tools/rstr-player

# Source files
SRCS := src/main.c \
src/core.c \
src/drm_capture.c \
src/x11_capture.c \
src/dummy_capture.c \
src/vaapi_encoder.c \
src/vaapi_decoder.c \
src/nvenc_encoder.c \
Expand All @@ -149,7 +162,8 @@ SRCS := src/main.c \
src/config.c \
src/latency.c \
src/recording.c \
src/platform/platform_linux.c
src/platform/platform_linux.c \
src/packet_validate.c

ifdef HEADLESS
SRCS := $(filter-out src/tray.c,$(SRCS))
Expand Down Expand Up @@ -215,7 +229,7 @@ $(TARGET): $(OBJS)

# Build rstr-player tool
# Note: Needs many modules for dependencies - simplified player would be better long-term
$(PLAYER): tools/rstr-player.c src/recording.c src/vaapi_decoder.c src/display_sdl2.c src/network.c src/crypto.c src/config.c src/input.c src/opus_codec.c src/audio_playback.c src/latency.c src/platform/platform_linux.c
$(PLAYER): tools/rstr-player.c src/recording.c src/vaapi_decoder.c src/display_sdl2.c src/network.c src/crypto.c src/config.c src/input.c src/opus_codec.c src/audio_playback.c src/latency.c src/platform/platform_linux.c src/packet_validate.c
@echo "🔗 Building rstr-player..."
@$(CC) $(CFLAGS) $^ -o $(PLAYER) $(LDFLAGS) $(LIBS)
@echo "✓ Build complete: $(PLAYER)"
Expand Down
Loading
Loading