summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/mplayer.114
-rw-r--r--libmpcodecs/vf_pullup.c4
2 files changed, 15 insertions, 3 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index 3d4eb1fcfe..983c1ddb5a 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -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
diff --git a/libmpcodecs/vf_pullup.c b/libmpcodecs/vf_pullup.c
index 710d24e3cd..118ab23f5d 100644
--- a/libmpcodecs/vf_pullup.c
+++ b/libmpcodecs/vf_pullup.c
@@ -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;
}