diff --git a/README.md b/README.md index 410bf55..b72098d 100644 --- a/README.md +++ b/README.md @@ -55,14 +55,14 @@ GPU Screen Recorder uses meson build system so you need to install `meson` to bu ## Build dependencies These are the dependencies needed to build GPU Screen Recorder: -* vulkan-headers -* ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter) * x11 (libx11, libxcomposite, libxrandr, libxfixes, libxdamage) -* libpulse +* wayland (wayland-client, wayland-egl, wayland-scanner) +* ffmpeg (libavcodec, libavformat, libavutil, libswresample, libavfilter) * libva (and libva-drm) +* libpulse * libdrm * libcap -* wayland (wayland-client, wayland-egl, wayland-scanner) +* vulkan-headers ## Optional dependencies When building GPU Screen Recorder with portal support (`-Dportal=true` meson option, which is enabled by default) these dependencies are also needed: @@ -80,7 +80,7 @@ There are also additional dependencies needed at runtime depending on your GPU v ### Intel * mesa -* vaapi (intel-media-driver/libva-intel-driver/linux-firmware-intel, depending on which intel iGPU you have) +* vaapi (intel-media-driver/libva-intel-driver/linux-firmware-intel, depending on which intel GPU you have) ### NVIDIA * cuda runtime (libcuda.so.1) (libnvidia-compute) diff --git a/TODO b/TODO index 3b02bfe..d5312d2 100644 --- a/TODO +++ b/TODO @@ -305,7 +305,7 @@ It's possible for microphone audio to get desynced when recording together with We can use dri2connect/dri3open to get the /dev/dri/card device. Note that this doesn't work on nvidia x11. -Add support for QVBR (QP with target bitrate). +Add support for QVBR (QP with target bitrate). Maybe use VBR instead, since nvidia doesn't support QVBR and neither does vulkan. KDE Plasma Wayland seems to use overlay planes now in non-fullscreen mode(limited to 1 overlay plane per gpu). Check if this is the case in the latest kde on arch linux. If it is, then support it in kms capture. @@ -332,3 +332,9 @@ Add option to specify medium/high/very high/ultra for -bm cbr as well, which sho This should also be reflected in gsr ui. Create a manpage and move --help text there and mention the manpage command to view it (and make it work in flatpak, maybe with man ). + +Implement webcam support by using mjpeg with v4l2 and use ffmpeg mjpeg decoder. + +After adding rpc, making recording while in replay/streaming work differently. Start recording should take audio as an argument, to optionally specify different audio for recording than replay/stream. + +After adding rpc, make it possible to add/remove audio and video. The same number of audio tracks should remain, but the audio devices/app should be possible to configure. You should be able to configure the capture sources however you want. diff --git a/src/main.cpp b/src/main.cpp index 8a9524e..b8dede5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1651,7 +1651,12 @@ static bool get_supported_video_codecs_with_cpu_fallback(gsr_egl *egl, args_pars fprintf(stderr, "gsr warning: cpu encoding is used but video codec isn't set to h264. Forcing video codec to h264\n"); args_parser->video_codec = GSR_VIDEO_CODEC_H264; } + args_parser->video_encoder = GSR_VIDEO_ENCODER_HW_CPU; + if(args_parser->video_encoder == GSR_VIDEO_ENCODER_HW_CPU && args_parser->bitrate_mode == GSR_BITRATE_MODE_VBR) { + fprintf(stderr, "gsr warning: bitrate mode has been forcefully set to qp because software encoding option doesn't support vbr option\n"); + args_parser->bitrate_mode = GSR_BITRATE_MODE_QP; + } return true; }