1
0
Эх сурвалжийг харах

libobs: Use bilinear low res scale effect

The normal scaling methods cannot sample enough pixels to create an
accurate output image when the output size is under half the base size,
so use the bilinear low resolution scaling effect in that case instead
to ensure a more accurate low resolution image.
jp9000 10 жил өмнө
parent
commit
13fd6ff064
1 өөрчлөгдсөн 8 нэмэгдсэн , 0 устгасан
  1. 8 0
      libobs/obs-video.c

+ 8 - 0
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;