| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 5 days | 6.0.1 | dec05eba | |
| 5 days | Enable ffmpeg_static by default in release builds to support gtx 1080 and ↵ | dec05eba | |
| older nvidia gpus | |||
| 5 days | nvenc query check ffmpeg nvenc version as well | dec05eba | |
| 2026-08-08 | 6.0.0 | dec05eba | |
| 2026-08-05 | Add option to statically compile ffmpeg from source | dec05eba | |
| 2026-08-02 | Fix build because of c version | dec05eba | |
| 2026-08-02 | Set c standard to c11 | dec05eba | |
| 2026-08-02 | Move gsr-cli to tools/gsr-cli | dec05eba | |
| 2026-08-02 | Add gsr-cli program that sends ipc commands to gpu-screen-recorder | dec05eba | |
| gsr-cli sends a command to the ipc socket of a running GPU Screen Recorder and exits with 0 when it replied with ok, printing the reason to stderr when it didn't, which means the commands don't have to be sent blindly like signals are. The status command checks if GPU Screen Recorder is running by connecting to the socket without sending a command, so it's also correct when a killed instance left the socket behind. The json helpers moved into src/json.c to be shared between the two programs. | |||
| 2026-08-02 | Add -ipc option to control gpu-screen-recorder over a unix domain socket | dec05eba | |
| 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-01 | Rewrite main.cpp in C as a thin CLI on top of a new gsr_recorder library API | dec05eba | |
| 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-01 | Move screenshot capture and CLI commands from main.cpp into separate modules | dec05eba | |
| The list commands return exit codes through args_parser instead of exiting. | |||
| 2026-08-01 | Move muxing and replay saving from main.cpp into muxer and replay_save modules | dec05eba | |
| Replay saving uses a pthread with an owning result struct instead of std::future and a global output filepath. | |||
| 2026-08-01 | Move 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-01 | Move audio input parsing and validation from main.cpp into audio_input module | dec05eba | |
| 2026-08-01 | Move capture source parsing and capture creation from main.cpp into C modules | dec05eba | |
| 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-01 | Move windowing setup from main.cpp into windowing module | dec05eba | |
| The recording path and the list commands now share the same windowing setup code instead of duplicating it. | |||
| 2026-08-01 | Move video/audio codec selection from main.cpp into codec_select module | dec05eba | |
| Codec selection returns gsr_error values instead of exiting, and takes gsr_recorder_settings instead of the argument parser. | |||
| 2026-08-01 | Move audio/video codec setup from main.cpp into C modules | dec05eba | |
| 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. | |||
| 2026-08-01 | Rewrite sound.cpp in C as sound.c | dec05eba | |
| 2026-08-01 | Add gsr_log logging module with log level and overridable log handler | dec05eba | |
| 2026-07-26 | 5.15.3 | dec05eba | |
| 2026-07-21 | 5.15.2 | dec05eba | |
| 2026-07-15 | 5.15.1 | dec05eba | |
| 2026-07-14 | 5.15.0 | dec05eba | |
| 2026-07-14 | kms capture: make capture work with night lights enabled | dec05eba | |
| 2026-07-04 | c++17 | dec05eba | |
| 2026-07-04 | 5.14.1 | dec05eba | |
| 2026-07-03 | 5.14.0 | dec05eba | |
| 2026-06-02 | 5.13.9 | dec05eba | |
| 2026-06-02 | Wayland socket: bypass flatpak sandbox | dec05eba | |
| 2026-05-19 | Remove vulkan dependency from meson (only headers are used) | dec05eba | |
| 2026-05-16 | 5.13.8 | dec05eba | |
| 2026-05-16 | 5.13.7 | dec05eba | |
| 2026-05-12 | 5.13.6 | dec05eba | |
| 2026-05-09 | 5.13.5 | dec05eba | |
| 2026-05-02 | 5.13.4 | dec05eba | |
| 2026-05-02 | Remove deprecated overclocking option | dec05eba | |
| 2026-04-23 | 5.13.3 | dec05eba | |
| 2026-04-22 | 5.13.2 | dec05eba | |
| 2026-04-19 | 5.13.1 | dec05eba | |
| 2026-04-17 | 5.13.0 | dec05eba | |
| 2026-04-17 | v4l2: skip resolutions that we cant import with eglCreateImage for yuyv | dec05eba | |
| 2026-03-02 | 5.12.5 | dec05eba | |
| 2026-02-12 | 5.12.4 | dec05eba | |
| 2026-01-28 | 5.12.3 | dec05eba | |
| 2026-01-25 | Install example scripts and add fix man example | Mroik | |
| 2026-01-23 | 5.12.2 | dec05eba | |
| 2026-01-20 | 5.12.1 | dec05eba | |
| 2026-01-18 | 5.12.0 | dec05eba | |
