0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 20:03:10 +02:00

configurable 'junk' borders for pullup

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@12550 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
rfelker 2004-06-10 05:20:50 +00:00
parent ff86bb362e
commit be7eef3827
2 changed files with 19 additions and 8 deletions

View File

@ -3176,7 +3176,7 @@ As with detc, you must specify the correct output framerate (\-ofps
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 @@ Like ivtc, pullup is stateless in the sense that it does not lock onto
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

View File

@ -80,11 +80,6 @@ static void init_pullup(struct vf_instance_s* vf, mp_image_t *mpi)
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 void uninit(struct vf_instance_s* vf)
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 @@ static int open(vf_instance_t *vf, char* args)
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;
}