From e75dcd03748e87c4a1558988128d996534b5c514 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 28 Feb 2024 13:45:41 +0100 Subject: Update readme --- README.md | 2 +- TODO | 18 +++--------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 1d56b6f..9589e2d 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Run the script `scripts/start-replay.sh` to start replay and then `scripts/save- You can use these scripts to start replay at system startup if you add `scripts/start-replay.sh` to startup (this can be done differently depending on your desktop environment / window manager) and then go into hotkey settings on your system and choose a hotkey to run the script `scripts/save-replay.sh`. Modify `scripts/start-replay.sh` if you want to use other replay options. ## Run replay on system startup -If you installed GPU Screen Recorder from AUR or if you installed GPU Screen Recorder from source and you are running a distro that uses systemd then you will have a systemd service installed that can be started with `systemctl enable --now --user gpu-screen-recorder` +If you installed GPU Screen Recorder from AUR or from source and you are running a distro that uses systemd then you will have a systemd service installed that can be started with `systemctl enable --now --user gpu-screen-recorder` and it's configured with `$HOME/.config/gpu-screen-recorder.env` (create it if it doesn't exist). This systemd service runs GPU Screen Recorder on system startup. You can see which variables that you can use in the `gpu-screen-recorder.env` file by looking at the `extra/gpu-screen-recorder.service` file. You can use the `scripts/save-replay.sh` script to save a replay and by default the systemd service saves videos in `$HOME/Videos`.\ diff --git a/TODO b/TODO index 52f2f29..2971a9e 100644 --- a/TODO +++ b/TODO @@ -34,16 +34,8 @@ NVreg_RegistryDwords. Restore nvfbc screen recording on monitor reconfiguration. Window capture doesn't work properly in _control_ game after going from pause menu to in-game (and back to pause menu). There might be some x11 event we need to catch. Same for vr-video-player. -Fix constant framerate not working properly on amd/intel because capture framerate gets locked to the same framerate as game framerate, which doesn't work well when you need to encode multiple duplicate frames. We can skip multiple encode if we duplicate frame once and then use that same frame data as the difference between frames will be exactly the same, but hevc complains about that. Is there a way to make hevc shut up? - Properly handle monitor reconfiguration (kms vaapi, nvfbc). -Better configure vaapi. The file size is too large. - -Clear vaapi surface (for focused window). - -Window capture performance on steam deck isn't good when playing the witcher 3 for example. The capture itself is fine but video encoding puts it to 30fps even if the game runs at 57 fps. - Monitor capture on steam deck is slightly below the game fps, but only when capturing on the steam deck screen. If capturing on another monitor, there is no issue. Is this related to the dma buf rotation issue? different modifier being slow? does this always happen? @@ -69,14 +61,10 @@ On nvidia some games apparently causes the game to appear to stutter (without dr Support "screen" (all monitors) capture on wayland. This should be done by getting all drm fds and multiple EGL_DMA_BUF_PLANEX_FD_EXT to create one egl image with all fds combined. Support pipewire screen capture? -Support screen rotation. -When nvidia supports hardware cursor then capture the cursor. Right now the cursor is captured because it's a software cursor so it's composed on the dma buf. CPU usage is pretty high on AMD/Intel/(Nvidia(wayland)), why? opening and closing fds, creating egl, cuda association, is slow when done every frame. Test if desktop portal screencast has better performance. Capture is broken on amd on wlroots. It's disabled at the moment and instead uses kms capture. Find out why we get a black screen in wlroots. -First video and audio frame should be posted immediately instead of waiting 1000/fps milliseconds, to improve latency for remote desktop future functionality. - Support vulkan video encoding. That might workaround forced p2 state nvidia driver "bug". Ffmpeg supports vulkan video encoding if it's encoding with --enable-vulkan It may be possible to improve color conversion rgb->yuv shader for color edges by biasing colors to an edge, instead of letting color overlaying with bilinear filtering handle it. @@ -84,8 +72,6 @@ It may be possible to improve color conversion rgb->yuv shader for color edges b When webcam is supported mention that nvidia_drm.modeset=1 must be set on nvidia x11 (it's required on wayland so it's not needed there. Or does eglstream work without it??). Check if this really is the case. Support green screen removal, cropping, shader effects in general (circle mask, rounded corners, etc). -Use vfr on nvidia x11 as well, otherwise network data could slow it down to below target fps and mess it up. - Preset is set to p5 for now but it should ideally be p6 or p7. This change is needed because for certain sizes of a window (or monitor?) such as 971x780 causes encoding to freeze when using h264 codec. This is a new(?) nvidia driver bug. @@ -126,4 +112,6 @@ Rotate cursor texture properly (around top left origin). Color range doesn't seem to work on nvidia. This might be because the output color format is set to rgb in which case it handles everything color related itself? -Setup hardware video context so we can query constraints and capabilities for better default and better error messages. \ No newline at end of file +Setup hardware video context so we can query constraints and capabilities for better default and better error messages. + +Use CAP_SYS_NICE in flatpak too on the main gpu screen recorder binary. It makes recording smoother, especially with constant framerate. \ No newline at end of file -- cgit v1.2.3