diff options
author | dec05eba <dec05eba@protonmail.com> | 2023-11-22 17:31:18 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2023-11-22 17:31:18 +0100 |
commit | 2f60f4c109f1bcc748d5f0d937476e8708a4073b (patch) | |
tree | abbb2f6e8502c850e02b3c424468d9588831321e | |
parent | 6ace5405e4d5838a19f10cf11401df2016ce4645 (diff) |
h264 vaapi quality 5
-rwxr-xr-x | install.sh | 2 | ||||
-rw-r--r-- | src/egl.c | 6 | ||||
-rw-r--r-- | src/main.cpp | 4 |
3 files changed, 8 insertions, 4 deletions
@@ -14,7 +14,9 @@ install -Dm755 "gpu-screen-recorder" "/usr/bin/gpu-screen-recorder" if [ -d "/usr/lib/systemd/user" ]; then install -Dm644 "extra/gpu-screen-recorder.service" "/usr/lib/systemd/user/gpu-screen-recorder.service" fi +# Not necessary, but removes the password prompt when trying to record a monitor on amd/intel or nvidia wayland setcap cap_sys_admin+ep /usr/bin/gsr-kms-server +# Not ncessary, but allows use of EGL_CONTEXT_PRIORITY_LEVEL_IMG which might decrease performance impact on the system setcap cap_sys_nice+ep /usr/bin/gpu-screen-recorder echo "Successfully installed gpu-screen-recorder" @@ -227,13 +227,13 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { const int32_t attr[] = { EGL_BUFFER_SIZE, 24, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, - EGL_NONE, EGL_NONE + EGL_NONE }; const int32_t ctxattr[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_CONTEXT_PRIORITY_LEVEL_IMG, EGL_CONTEXT_PRIORITY_HIGH_IMG, /* requires cap_sys_nice, ignored otherwise */ - EGL_NONE, EGL_NONE + EGL_NONE }; if(wayland) { @@ -249,7 +249,7 @@ static bool gsr_egl_create_window(gsr_egl *self, bool wayland) { // Fetch globals wl_display_roundtrip(self->wayland.dpy); - // fetch wl_output + // Fetch wl_output wl_display_roundtrip(self->wayland.dpy); if(!self->wayland.compositor) { diff --git a/src/main.cpp b/src/main.cpp index 797c290..6ab0ef1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -417,6 +417,8 @@ static AVCodecContext *create_video_codec_context(AVPixelFormat pix_fmt, //codec_context->rc_max_rate = codec_context->bit_rate; //codec_context->rc_min_rate = codec_context->bit_rate; //codec_context->rc_buffer_size = codec_context->bit_rate / 10; + // TODO: Do this when not using cqp + //codec_context->rc_initial_buffer_occupancy = codec_context->bit_rate * 1000; codec_context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; @@ -735,7 +737,7 @@ static void open_video(AVCodecContext *codec_context, VideoQuality video_quality if(codec_context->codec_id == AV_CODEC_ID_H264) { av_dict_set(&options, "profile", "high", 0); - av_dict_set_int(&options, "quality", 7, 0); + av_dict_set_int(&options, "quality", 5, 0); // quality preset } else if(codec_context->codec_id == AV_CODEC_ID_AV1) { av_dict_set(&options, "profile", "main", 0); // TODO: use professional instead? av_dict_set(&options, "tier", "main", 0); |