From 48cd80f24ef24a41fd5d461e0e4356ecfd239bef Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 5 Jul 2024 18:57:06 +0200 Subject: Add encoder option to systemd service file --- extra/gpu-screen-recorder.env | 1 + extra/gpu-screen-recorder.service | 3 ++- src/encoder/video/software.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/extra/gpu-screen-recorder.env b/extra/gpu-screen-recorder.env index ce9f223..57dd424 100644 --- a/extra/gpu-screen-recorder.env +++ b/extra/gpu-screen-recorder.env @@ -9,3 +9,4 @@ FRAMERATE=60 REPLAYDURATION=60 OUTPUTDIR=/run/media/dec05eba/SSD1TB/Videos/aaaa KEYINT=2 +ENCODER=gpu \ No newline at end of file diff --git a/extra/gpu-screen-recorder.service b/extra/gpu-screen-recorder.service index 6933f66..68c8ab1 100644 --- a/extra/gpu-screen-recorder.service +++ b/extra/gpu-screen-recorder.service @@ -16,7 +16,8 @@ Environment=OUTPUTDIR=%h/Videos Environment=MAKEFOLDERS=no Environment=COLOR_RANGE=limited Environment=KEYINT=2 -ExecStart=/bin/sh -c 'AUDIO="${AUDIO_DEVICE:-$(pactl get-default-sink).monitor}"; gpu-screen-recorder -v no -w $WINDOW -c $CONTAINER -q $QUALITY -k $CODEC -ac $AUDIO_CODEC -a "$AUDIO" -a "$SECONDARY_AUDIO_DEVICE" -f $FRAMERATE -r $REPLAYDURATION -o "$OUTPUTDIR" -mf $MAKEFOLDERS $ADDITIONAL_ARGS -cr $COLOR_RANGE -keyint $KEYINT' +Environment=ENCODER=gpu +ExecStart=/bin/sh -c 'AUDIO="${AUDIO_DEVICE:-$(pactl get-default-sink).monitor}"; gpu-screen-recorder -v no -w $WINDOW -c $CONTAINER -q $QUALITY -k $CODEC -ac $AUDIO_CODEC -a "$AUDIO" -a "$SECONDARY_AUDIO_DEVICE" -f $FRAMERATE -r $REPLAYDURATION -o "$OUTPUTDIR" -mf $MAKEFOLDERS $ADDITIONAL_ARGS -cr $COLOR_RANGE -keyint $KEYINT -encoder $ENCODER' KillSignal=SIGINT Restart=on-failure RestartSec=5s diff --git a/src/encoder/video/software.c b/src/encoder/video/software.c index 4666ffd..f3b311e 100644 --- a/src/encoder/video/software.c +++ b/src/encoder/video/software.c @@ -90,6 +90,8 @@ static void gsr_video_encoder_software_copy_textures_to_frame(gsr_video_encoder const unsigned int formats[2] = { GL_RED, GL_RG }; for(int i = 0; i < 2; ++i) { encoder_software->params.egl->glBindTexture(GL_TEXTURE_2D, encoder_software->target_textures[i]); + // We could use glGetTexSubImage and then we wouldn't have to use a specific linesize (LINESIZE_ALIGNMENT) that adds padding, + // but glGetTexSubImage is only available starting from opengl 4.5. encoder_software->params.egl->glGetTexImage(GL_TEXTURE_2D, 0, formats[i], GL_UNSIGNED_BYTE, frame->data[i]); } encoder_software->params.egl->glBindTexture(GL_TEXTURE_2D, 0); -- cgit v1.2.3