From 01786a3f11a57213f08fc6b39293756687cd10c7 Mon Sep 17 00:00:00 2001 From: Richard Stanway Date: Sat, 25 Feb 2023 16:33:54 +0100 Subject: [PATCH] libobs: Disable encoder scaling request if it matches output size It was possible to set the encoder to scale the video to the same size as the output, resulting in unnecessary passes through swscale and skipping hardware encoders. This was a common user error in Advanced Output mode where they would tick the rescale box but leave it at the same resolution as their main output. --- libobs/obs-encoder.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libobs/obs-encoder.c b/libobs/obs-encoder.c index 42b151961..8d8c8620c 100644 --- a/libobs/obs-encoder.c +++ b/libobs/obs-encoder.c @@ -694,6 +694,18 @@ void obs_encoder_set_scaled_size(obs_encoder_t *encoder, uint32_t width, return; } + const struct video_output_info *voi; + voi = video_output_get_info(encoder->media); + if (voi && voi->width == width && voi->height == height) { + blog(LOG_WARNING, + "encoder '%s': Scaled resolution " + "matches output resolution, scaling " + "disabled", + obs_encoder_get_name(encoder)); + encoder->scaled_width = encoder->scaled_height = 0; + return; + } + encoder->scaled_width = width; encoder->scaled_height = height; }