vf_scale: actually respect param and param2 suboptions

This was forgotten in commit b81f5e2.
This commit is contained in:
wm4 2013-07-22 14:41:33 +02:00
parent db9102765a
commit 0b160e1257
3 changed files with 8 additions and 0 deletions

View File

@ -425,6 +425,9 @@ static int vf_open(vf_instance_t *vf, char *args)
vf->control = control;
vf->uninit = uninit;
vf->priv->sws = mp_sws_alloc(vf);
vf->priv->sws->params[0] = vf->priv->param[0];
vf->priv->sws->params[1] = vf->priv->param[1];
mp_msg(MSGT_VFILTER, MSGL_V, "SwScale params: %d x %d (-1=no scaling)\n",
vf->priv->cfg_w, vf->priv->cfg_h);

View File

@ -164,6 +164,7 @@ struct mp_sws_context *mp_sws_alloc(void *talloc_parent)
.contrast = 1 << 16, // 1.0 in 16.16 fixed point
.saturation = 1 << 16,
.force_reload = true,
.params = {SWS_PARAM_DEFAULT, SWS_PARAM_DEFAULT},
.cached = talloc_zero(ctx, struct mp_sws_context),
};
talloc_set_destructor(ctx, free_mp_sws);
@ -223,6 +224,9 @@ int mp_sws_reinit(struct mp_sws_context *ctx)
av_opt_set_int(ctx->sws, "dsth", dst->h, 0);
av_opt_set_int(ctx->sws, "dst_format", d_fmt, 0);
av_opt_set_double(ctx->sws, "param0", ctx->params[0], 0);
av_opt_set_double(ctx->sws, "param1", ctx->params[1], 0);
// This can fail even with normal operation, e.g. if a conversion path
// simply does not support these settings.
sws_setColorspaceDetails(ctx->sws, sws_getCoefficients(s_csp), s_range,

View File

@ -37,6 +37,7 @@ struct mp_sws_context {
// By default, they are NULL.
// Freeing the mp_sws_context will deallocate these if set.
struct SwsFilter *src_filter, *dst_filter;
double params[2];
// Cached context (if any)
struct SwsContext *sws;