# HG changeset patch # User rfelker # Date 1086844850 0 # Node ID bb9bf9a97ac6b7184a0927dc22826ba690fc95df # Parent 8584fdad01882f5e6c82c11f071fb41f8552afea configurable 'junk' borders for pullup diff -r 8584fdad0188 -r bb9bf9a97ac6 DOCS/man/en/mplayer.1 --- a/DOCS/man/en/mplayer.1 Thu Jun 10 05:06:34 2004 +0000 +++ b/DOCS/man/en/mplayer.1 Thu Jun 10 05:20:50 2004 +0000 @@ -3176,7 +3176,7 @@ Further development on ivtc has stopped, as the pullup and filmdint filters appear to be much more accurate. .TP -.B pullup\ +.B pullup[=jl:jr:jt:jb:sb]\ Third-generation pulldown reversal (inverse telecine) filter, capable of handling mixed hard-telecine, 24 fps progressive, and 30 fps progressive content. @@ -3186,7 +3186,15 @@ a pattern to follow, but it instead looks forward to the following fields in order to identify matches and rebuild progressive frames. It is still under development, but believed to be quite accurate. -No configuration options are available yet. +The jl, jr, jt, and jb options set the amount of "junk" to ignore at +the left, right, top, and bottom of the image, respectively. +Left/right are in units of 8 pixels, while top/bottom are in units of +2 lines. +The default is 8 pixels on each side. +Setting the sb (strict breaks) option to 1 will reduce the chances of +pullup generating an occasional mismatched frame, but it may also +cause an excessive number of frames to be dropped during high motion +sequences. .I NOTE: Always follow pullup with the softskip filter when encoding to ensure that pullup is able to see each frame. Failure to do so will lead to diff -r 8584fdad0188 -r bb9bf9a97ac6 libmpcodecs/vf_pullup.c --- a/libmpcodecs/vf_pullup.c Thu Jun 10 05:06:34 2004 +0000 +++ b/libmpcodecs/vf_pullup.c Thu Jun 10 05:20:50 2004 +0000 @@ -80,11 +80,6 @@ c->metric_plane = 0; } - c->strict_breaks = 0; - c->junk_left = c->junk_right = 1; - c->junk_top = c->junk_bottom = 4; - c->verbose = verbose; - if (gCpuCaps.hasMMX) c->cpu |= PULLUP_CPU_MMX; if (gCpuCaps.hasMMX2) c->cpu |= PULLUP_CPU_MMX2; if (gCpuCaps.has3DNow) c->cpu |= PULLUP_CPU_3DNOW; @@ -315,6 +310,7 @@ static int open(vf_instance_t *vf, char* args) { struct vf_priv_s *p; + struct pullup_context *c; vf->get_image = get_image; vf->put_image = put_image; vf->config = config; @@ -322,8 +318,15 @@ vf->uninit = uninit; vf->default_reqs = VFCAP_ACCEPT_STRIDE; vf->priv = p = calloc(1, sizeof(struct vf_priv_s)); - p->ctx = pullup_alloc_context(); + p->ctx = c = pullup_alloc_context(); p->fakecount = 2; + c->verbose = verbose; + c->junk_left = c->junk_right = 1; + c->junk_top = c->junk_bottom = 4; + c->strict_breaks = 0; + if (args) { + sscanf(args, "%d:%d:%d:%d:%d", &c->junk_left, &c->junk_right, &c->junk_top, &c->junk_bottom, &c->strict_breaks); + } return 1; }