summaryrefslogtreecommitdiffstats
path: root/video/out/opengl/video.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-01-25 21:46:01 +0100
committerwm4 <wm4@nowhere>2016-01-25 21:46:40 +0100
commit521110054d89f5066549288092fd945968dd4d50 (patch)
tree3d5dabc0ff275ecdd1389ecc066d2bef1b3daa88 /video/out/opengl/video.c
parentbd1fb6f9b13f2b70a0bfcd0b6be3e16917dfd8bb (diff)
downloadmpv-521110054d89f5066549288092fd945968dd4d50.tar.bz2
mpv-521110054d89f5066549288092fd945968dd4d50.tar.xz
vo_opengl: add tscale-interpolates-only sub-option
Diffstat (limited to 'video/out/opengl/video.c')
-rw-r--r--video/out/opengl/video.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index 8a23b2570b..c646a6306a 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -338,6 +338,7 @@ const struct gl_video_opts gl_video_opts_def = {
.clamp = 1, }, // tscale
},
.scaler_resizes_only = 1,
+ .tscale_interpolates_only = 1,
.scaler_lut_size = 6,
.alpha_mode = 3,
.background = {0, 0, 0, 255},
@@ -363,6 +364,7 @@ const struct gl_video_opts gl_video_opts_hq_def = {
.clamp = 1, }, // tscale
},
.scaler_resizes_only = 1,
+ .tscale_interpolates_only = 1,
.scaler_lut_size = 6,
.alpha_mode = 3,
.background = {0, 0, 0, 255},
@@ -406,6 +408,7 @@ const struct m_sub_options gl_video_conf = {
SCALER_OPTS("tscale", 3),
OPT_INTRANGE("scaler-lut-size", scaler_lut_size, 0, 4, 10),
OPT_FLAG("scaler-resizes-only", scaler_resizes_only, 0),
+ OPT_FLAG("tscale-interpolates-only", tscale_interpolates_only, 0),
OPT_FLAG("linear-scaling", linear_scaling, 0),
OPT_FLAG("correct-downscaling", correct_downscaling, 0),
OPT_FLAG("sigmoid-upscaling", sigmoid_upscaling, 0),
@@ -2182,8 +2185,11 @@ void gl_video_render_frame(struct gl_video *p, struct vo_frame *frame, int fbo)
if (has_frame) {
gl_sc_set_vao(p->sc, &p->vao);
+ bool same_rate = !(frame->repeat || frame->num_vsyncs > 1);
+
if (p->opts.interpolation && frame->display_synced &&
- (p->frames_drawn || !frame->still))
+ (p->frames_drawn || !frame->still) &&
+ (!same_rate || !p->opts.tscale_interpolates_only))
{
gl_video_interpolate_frame(p, frame, fbo);
} else {