diff --git a/libobs/obs-video.c b/libobs/obs-video.c index fa1b436e00ef31c23dc8b77e489af88389d61e8b..b50f304d11ca5d61ebdb8c6175c2ef3264ba34a1 100644 --- a/libobs/obs-video.c +++ b/libobs/obs-video.c @@ -156,6 +156,14 @@ static inline void render_main_texture(struct obs_core_video *video, static inline gs_effect_t *get_scale_effect_internal( struct obs_core_video *video) { + /* if the dimension is under half the size of the original image, + * bicubic/lanczos can't sample enough pixels to create an accurate + * image, so use the bilinear low resolution effect instead */ + if (video->output_width < (video->base_width / 2) && + video->output_height < (video->base_height / 2)) { + return video->bilinear_lowres_effect; + } + switch (video->scale_type) { case OBS_SCALE_BILINEAR: return video->default_effect; case OBS_SCALE_LANCZOS: return video->lanczos_effect;