summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-09-17 01:47:43 +0200
committerNiklas Haas <github-daiK1o@haasn.dev>2023-09-19 22:26:56 +0200
commit4bedcd36f69009253433582a84fcf513ff68966d (patch)
treeda641a489ee6e99b23b80515dff78bd8b128f1d4 /video
parent8121d41245c62f44106b898eaaf0328db1ab239e (diff)
downloadmpv-4bedcd36f69009253433582a84fcf513ff68966d.tar.bz2
mpv-4bedcd36f69009253433582a84fcf513ff68966d.tar.xz
vo: make cscale follow scale by default
Diffstat (limited to 'video')
-rw-r--r--video/out/gpu/video.c17
-rw-r--r--video/out/vo_gpu_next.c4
2 files changed, 19 insertions, 2 deletions
diff --git a/video/out/gpu/video.c b/video/out/gpu/video.c
index 03331d7e2c..c6c7489053 100644
--- a/video/out/gpu/video.c
+++ b/video/out/gpu/video.c
@@ -307,7 +307,7 @@ static const struct gl_video_opts gl_video_opts_def = {
.cutoff = 0.001}, // scale
{{NULL, .params={NAN, NAN}}, {.params = {NAN, NAN}},
.cutoff = 0.001}, // dscale
- {{"bilinear", .params={NAN, NAN}}, {.params = {NAN, NAN}},
+ {{NULL, .params={NAN, NAN}}, {.params = {NAN, NAN}},
.cutoff = 0.001}, // cscale
{{"mitchell", .params={NAN, NAN}}, {.params = {NAN, NAN}},
.clamp = 1, }, // tscale
@@ -1733,6 +1733,12 @@ static void reinit_scaler(struct gl_video *p, struct scaler *scaler,
conf = &p->opts.scaler[SCALER_SCALE];
}
+ if (conf && scaler->index == SCALER_CSCALE && (!conf->kernel.name ||
+ !conf->kernel.name[0]))
+ {
+ conf = &p->opts.scaler[SCALER_SCALE];
+ }
+
struct filter_kernel bare_window;
const struct filter_kernel *t_kernel = mp_find_filter_kernel(conf->kernel.name);
const struct filter_window *t_window = mp_find_filter_window(conf->window.name);
@@ -2302,6 +2308,13 @@ static void pass_read_video(struct gl_video *p)
continue;
const struct scaler_config *conf = &p->opts.scaler[scaler_id];
+
+ if (scaler_id == SCALER_CSCALE && (!conf->kernel.name ||
+ !conf->kernel.name[0]))
+ {
+ conf = &p->opts.scaler[SCALER_SCALE];
+ }
+
struct scaler *scaler = &p->scaler[scaler_id];
// bilinear scaling is a free no-op thanks to GPU sampling
@@ -4180,6 +4193,8 @@ static int validate_scaler_opt(struct mp_log *log, const m_option_t *opt,
r = M_OPT_EXIT;
} else if (bstr_equals0(name, "dscale") && !param.len) {
return r; // empty dscale means "use same as upscaler"
+ } else if (bstr_equals0(name, "cscale") && !param.len) {
+ return r; // empty cscale means "use same as upscaler"
} else {
snprintf(s, sizeof(s), "%.*s", BSTR_P(param));
if (!handle_scaler_opt(s, tscale))
diff --git a/video/out/vo_gpu_next.c b/video/out/vo_gpu_next.c
index ff76b3f264..422b7c0639 100644
--- a/video/out/vo_gpu_next.c
+++ b/video/out/vo_gpu_next.c
@@ -1740,7 +1740,9 @@ static const struct pl_filter_config *map_scaler(struct priv *p,
const struct gl_video_opts *opts = p->opts_cache->opts;
const struct scaler_config *cfg = &opts->scaler[unit];
- if (unit == SCALER_DSCALE && (!cfg->kernel.name || !strcmp(cfg->kernel.name, "")))
+ if (unit == SCALER_DSCALE && (!cfg->kernel.name || !cfg->kernel.name[0]))
+ cfg = &opts->scaler[SCALER_SCALE];
+ if (unit == SCALER_CSCALE && (!cfg->kernel.name || !cfg->kernel.name[0]))
cfg = &opts->scaler[SCALER_SCALE];
for (int i = 0; fixed_presets[i].name; i++) {