Add encoder option to systemd service file

This commit is contained in:
dec05eba
2024-07-05 18:57:06 +02:00
parent d53fcfcf6e
commit 48cd80f24e
3 changed files with 5 additions and 1 deletions

View File

@@ -9,3 +9,4 @@ FRAMERATE=60
REPLAYDURATION=60 REPLAYDURATION=60
OUTPUTDIR=/run/media/dec05eba/SSD1TB/Videos/aaaa OUTPUTDIR=/run/media/dec05eba/SSD1TB/Videos/aaaa
KEYINT=2 KEYINT=2
ENCODER=gpu

View File

@@ -16,7 +16,8 @@ Environment=OUTPUTDIR=%h/Videos
Environment=MAKEFOLDERS=no Environment=MAKEFOLDERS=no
Environment=COLOR_RANGE=limited Environment=COLOR_RANGE=limited
Environment=KEYINT=2 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 KillSignal=SIGINT
Restart=on-failure Restart=on-failure
RestartSec=5s RestartSec=5s

View File

@@ -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 }; const unsigned int formats[2] = { GL_RED, GL_RG };
for(int i = 0; i < 2; ++i) { for(int i = 0; i < 2; ++i) {
encoder_software->params.egl->glBindTexture(GL_TEXTURE_2D, encoder_software->target_textures[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->glGetTexImage(GL_TEXTURE_2D, 0, formats[i], GL_UNSIGNED_BYTE, frame->data[i]);
} }
encoder_software->params.egl->glBindTexture(GL_TEXTURE_2D, 0); encoder_software->params.egl->glBindTexture(GL_TEXTURE_2D, 0);