diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-09-16 22:28:12 +0300 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-09-16 22:28:12 +0300 |
commit | e1ecc4315265c465080616b8d8d9257b3aab6ee9 (patch) | |
tree | d8a3aacf1b5468c59da202e44c5035924f5c1a3e /libmpcodecs/vf_expand.c | |
parent | 0e1b7765be878491565cf5e471f22b15e106164c (diff) | |
parent | 4dae2a980c4313deed6ddb69556d2ead4417119c (diff) | |
download | mpv-e1ecc4315265c465080616b8d8d9257b3aab6ee9.tar.bz2 mpv-e1ecc4315265c465080616b8d8d9257b3aab6ee9.tar.xz |
Merge svn changes up to r29684
Diffstat (limited to 'libmpcodecs/vf_expand.c')
-rw-r--r-- | libmpcodecs/vf_expand.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c index 7d91e3a236..b6a2822745 100644 --- a/libmpcodecs/vf_expand.c +++ b/libmpcodecs/vf_expand.c @@ -26,6 +26,13 @@ #include "m_struct.h" static struct vf_priv_s { + // These four values are a backup of the values parsed from the command line. + // This is necessary so that we do not get a mess upon filter reinit due to + // e.g. aspect changes and with only aspect specified on the command line, + // where we would otherwise use the values calculated for a different aspect + // instead of recalculating them again. + int cfg_exp_w, cfg_exp_h; + int cfg_exp_x, cfg_exp_y; int exp_w,exp_h; int exp_x,exp_y; int osd_enabled; @@ -196,6 +203,10 @@ static int config(struct vf_instance* vf, return vf_next_config(vf,width,height,d_width,d_height,flags,outfmt); } if (outfmt == IMGFMT_IF09) return 0; + vf->priv->exp_x = vf->priv->cfg_exp_x; + vf->priv->exp_y = vf->priv->cfg_exp_y; + vf->priv->exp_w = vf->priv->cfg_exp_w; + vf->priv->exp_h = vf->priv->cfg_exp_h; // calculate the missing parameters: #if 0 if(vf->priv->exp_w<width) vf->priv->exp_w=width; @@ -441,11 +452,11 @@ static int open(vf_instance_t *vf, char* args){ vf->draw_slice=draw_slice; vf->get_image=get_image; vf->put_image=put_image; - mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, osd: %d, aspect: %lf, round: %d\n", - vf->priv->exp_w, - vf->priv->exp_h, - vf->priv->exp_x, - vf->priv->exp_y, + mp_msg(MSGT_VFILTER, MSGL_INFO, "Expand: %d x %d, %d ; %d, osd: %d, aspect: %f, round: %d\n", + vf->priv->cfg_exp_w, + vf->priv->cfg_exp_h, + vf->priv->cfg_exp_x, + vf->priv->cfg_exp_y, vf->priv->osd_enabled, vf->priv->aspect, vf->priv->round); @@ -453,11 +464,11 @@ static int open(vf_instance_t *vf, char* args){ } #define ST_OFF(f) M_ST_OFF(struct vf_priv_s,f) -static const m_option_t vf_opts_fields[] = { - {"w", ST_OFF(exp_w), CONF_TYPE_INT, 0, 0 ,0, NULL}, - {"h", ST_OFF(exp_h), CONF_TYPE_INT, 0, 0 ,0, NULL}, - {"x", ST_OFF(exp_x), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL}, - {"y", ST_OFF(exp_y), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL}, +static m_option_t vf_opts_fields[] = { + {"w", ST_OFF(cfg_exp_w), CONF_TYPE_INT, 0, 0 ,0, NULL}, + {"h", ST_OFF(cfg_exp_h), CONF_TYPE_INT, 0, 0 ,0, NULL}, + {"x", ST_OFF(cfg_exp_x), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL}, + {"y", ST_OFF(cfg_exp_y), CONF_TYPE_INT, M_OPT_MIN, -1, 0, NULL}, {"osd", ST_OFF(osd_enabled), CONF_TYPE_FLAG, 0 , 0, 1, NULL}, {"aspect", ST_OFF(aspect), CONF_TYPE_DOUBLE, M_OPT_MIN, 0, 0, NULL}, {"round", ST_OFF(round), CONF_TYPE_INT, M_OPT_MIN, 1, 0, NULL}, |