aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/recorder
AgeCommit message (Collapse)Author
2026-08-08Fix nvenc crash on shutdown. part 2dec05eba
2026-08-08Fix nvenc crash on shutdowndec05eba
2026-08-07Revert "Clear replay data in replay save thread to not block the main ↵dec05eba
capture thread" This reverts commit 5db30f3fb99545524fc80f87ecc488972aec1711.
2026-08-06Faster shutdown time when several gb of replay data is in ramdec05eba
2026-08-06Clear replay data in replay save thread to not block the main capture threaddec05eba
2026-08-05ipc: save-replay: add restart-replay optiondec05eba
2026-08-05workaround ffmpeg hybrid_fragmented bug when no packets have been recorded yetdec05eba
2026-08-05ipc: response with video path in save recording/replaydec05eba
2026-08-02Fix --info command on appleldec05eba
2026-08-02feat: Apple Silicon supportWalter McKelvie
2026-08-02Document the ipc option next to the signals in the readmedec05eba
The remote control section is now split into a signals part and an ipc part with gsr-cli examples, and it points at the gsr-cli man page and the IPC section of the gpu-screen-recorder man page.
2026-08-02Add -ipc option to control gpu-screen-recorder over a unix domain socketdec05eba
The socket accepts the same commands as the signal handlers, except that saving a replay takes an arbitrary number of seconds instead of only the fixed times that the signals provide. Requests and replies are newline terminated json objects and every request is replied to, parsed with the sj.h json library that was added to external. Requests are handled on a thread that only runs while the recorder exists, so the recorder control fields are now atomics, which they have to be now that another thread writes them.
2026-08-02Remove unused parameter from recorder_update_fps_countersdec05eba
2026-08-02Fix indentation and spacing of the code moved out of main.cppdec05eba
2026-08-02Add resource cleanup on all pathsdec05eba
The recorder, screenshot and cli now free everything they create, also when setup fails. Adds gsr_windowing_deinit, implements the missing gsr_window_destroy and destroys the pipewire registry proxy.
2026-08-01Fix video size becoming 0x0 when every capture source size is a percentagedec05eba
The video size is the area that the capture sources cover, but a capture source with a percentage size is relative to the video size and can't be used to calculate it. When there is no other capture source to calculate the video size from, use the size of the capture sources themselves.
2026-08-01Remove unused includesdec05eba
Most were left over from moving code out of main.cpp and from replacing fprintf with gsr_log. Also fixes building without the app_audio option.
2026-08-01Split the recorder setup and record loop into named functionsdec05eba
2026-08-01Return errors from gsr_recorder_create instead of exitingdec05eba
The recorder now cleans up after a failed setup and the caller decides what to do with the error, so only main and forked child processes exit.
2026-08-01Rewrite main.cpp in C as a thin CLI on top of a new gsr_recorder library APIdec05eba
The recording setup, record loop and teardown moved into a gsr_recorder pseudo class that reports saved recordings through callbacks, so the CLI only parses arguments, handles signals and prints results. The project is now built as pure C.
2026-08-01Move screenshot capture and CLI commands from main.cpp into separate modulesdec05eba
The list commands return exit codes through args_parser instead of exiting.
2026-08-01Move muxing and replay saving from main.cpp into muxer and replay_save modulesdec05eba
Replay saving uses a pthread with an owning result struct instead of std::future and a global output filepath.
2026-08-01Move audio capture from main.cpp into audio_capture module and replace ↵dec05eba
std::thread with pthread Audio device and mix threads are now pthreads with explicit context structs, and the paused time tracking moved into a gsr_recording_clock.
2026-08-01Move audio input parsing and validation from main.cpp into audio_input moduledec05eba
2026-08-01Move capture source parsing and capture creation from main.cpp into C modulesdec05eba
Capture sources are C structs with fixed size names and a growable array, and the lazily initialized kms client, night light and cursor globals are now owned by gsr_capture_deps.
2026-08-01Move windowing setup from main.cpp into windowing moduledec05eba
The recording path and the list commands now share the same windowing setup code instead of duplicating it.
2026-08-01Move video/audio codec selection from main.cpp into codec_select moduledec05eba
Codec selection returns gsr_error values instead of exiting, and takes gsr_recorder_settings instead of the argument parser.
2026-08-01Move audio/video codec setup from main.cpp into C modulesdec05eba
Adds gsr_recorder_settings, a library-friendly settings struct embedded in args_parser, so the new modules don't depend on the argument parser. The codec functions return errors instead of exiting.