diff options
author | Rudolf Polzer <divverent@mplayer2.org> | 2011-06-01 06:42:24 +0000 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2011-06-24 22:31:44 +0300 |
commit | fbf688539540fa840631d2570befb3f2eae106f8 (patch) | |
tree | 1d778239e0e06838beba2307379699c5dfec86a4 /libmpcodecs/vf_pullup.c | |
parent | 84d86719fc923b3df2ad101a12bbbff931dd0578 (diff) | |
download | mpv-fbf688539540fa840631d2570befb3f2eae106f8.tar.bz2 mpv-fbf688539540fa840631d2570befb3f2eae106f8.tar.xz |
vf_pullup, vf_yadif: pts handling fixes
vf_pullup: continue to calculate pts after detecting a seek
vf_yadif: add pts calculation for the one-frame-becomes-two mode
(-vf yadif=1)
Diffstat (limited to 'libmpcodecs/vf_pullup.c')
-rw-r--r-- | libmpcodecs/vf_pullup.c | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/libmpcodecs/vf_pullup.c b/libmpcodecs/vf_pullup.c index 356774b060..056f952839 100644 --- a/libmpcodecs/vf_pullup.c +++ b/libmpcodecs/vf_pullup.c @@ -158,21 +158,16 @@ static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts) delta = 1001.0/60000.0; // delta = field time distance else delta = (pts - vf->priv->lastpts) / 2; - if (delta <= 0.0 || delta >= 0.5) { - pullup_submit_field(c, b, p, pts); + if (delta <= 0.0 || delta >= 0.5) + delta = 0.0; + vf->priv->lastpts = pts; + if (mpi->fields & MP_IMGFIELD_REPEAT_FIRST) { + pullup_submit_field(c, b, p, pts - delta); pullup_submit_field(c, b, p^1, pts); - if (mpi->fields & MP_IMGFIELD_REPEAT_FIRST) - pullup_submit_field(c, b, p, pts); + pullup_submit_field(c, b, p, pts + delta); } else { - vf->priv->lastpts = pts; - if (mpi->fields & MP_IMGFIELD_REPEAT_FIRST) { - pullup_submit_field(c, b, p, pts - delta); - pullup_submit_field(c, b, p^1, pts); - pullup_submit_field(c, b, p, pts + delta); - } else { - pullup_submit_field(c, b, p, pts - delta * 0.5); - pullup_submit_field(c, b, p^1, pts + delta * 0.5); - } + pullup_submit_field(c, b, p, pts - delta * 0.5); + pullup_submit_field(c, b, p^1, pts + delta * 0.5); } } |