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.
This commit is contained in:
jp9000
2015-04-06 07:35:09 -07:00
parent 65517ea4cf
commit 13fd6ff064

View File

@@ -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;