pullup docs + new feature for slow cpus :)

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13268 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
rfelker 2004-09-06 21:25:59 +00:00
parent fa0823db47
commit 49a7110b03
2 changed files with 15 additions and 3 deletions

View File

@ -3922,7 +3922,7 @@ Further development on ivtc has stopped, as the pullup and filmdint
filters appear to be much more accurate.
.
.TP
.B pullup[=jl:jr:jt:jb:sb]\
.B pullup[=jl:jr:jt:jb:sb:mp]\
Third-generation pulldown reversal (inverse telecine) filter,
capable of handling mixed hard-telecine, 24 fps progressive, and 30
fps progressive content.
@ -3941,6 +3941,18 @@ 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.
Conversely, setting it to -1 will make pullup match fields more
easily.
This may help processing of video where there is slight blurring
between the fields, but may also cause there to be interlaced frames
in the output.
The mp (metric plane) option may be set to 1 or 2 to use a chroma
plane instead of the luma plane for doing pullup's computations.
This may improve accuracy on very clean source material, but more
likely will decrease accuracy, especially if there is chroma noise
(rainbow effect) or any grayscale video.
The main purpose of setting mp to a chroma plane is to reduce cpu load
and make pullup usable in realtime on slow machines.
.br
.I NOTE:
Always follow pullup with the softskip filter when encoding to ensure

View File

@ -77,7 +77,6 @@ static void init_pullup(struct vf_instance_s* vf, mp_image_t *mpi)
c->stride[1] = c->stride[2] = mpi->chroma_width;
c->stride[3] = c->w[3];
c->background[1] = c->background[2] = 128;
c->metric_plane = 0;
}
if (gCpuCaps.hasMMX) c->cpu |= PULLUP_CPU_MMX;
@ -324,8 +323,9 @@ static int open(vf_instance_t *vf, char* args)
c->junk_left = c->junk_right = 1;
c->junk_top = c->junk_bottom = 4;
c->strict_breaks = 0;
c->metric_plane = 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);
sscanf(args, "%d:%d:%d:%d:%d:%d", &c->junk_left, &c->junk_right, &c->junk_top, &c->junk_bottom, &c->strict_breaks, &c->metric_plane);
}
return 1;
}