summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/vf.rst652
-rw-r--r--Makefile52
-rwxr-xr-xconfigure10
-rw-r--r--libmpcodecs/cmmx.h202
-rw-r--r--libmpcodecs/vd_null.c56
-rw-r--r--libmpcodecs/vf.c99
-rw-r--r--libmpcodecs/vf_1bpp.c207
-rw-r--r--libmpcodecs/vf_2xsai.c336
-rw-r--r--libmpcodecs/vf_blackframe.c148
-rw-r--r--libmpcodecs/vf_bmovl.c496
-rw-r--r--libmpcodecs/vf_boxblur.c214
-rw-r--r--libmpcodecs/vf_cropdetect.c200
-rw-r--r--libmpcodecs/vf_decimate.c198
-rw-r--r--libmpcodecs/vf_denoise3d.c268
-rw-r--r--libmpcodecs/vf_detc.c458
-rw-r--r--libmpcodecs/vf_dint.c214
-rw-r--r--libmpcodecs/vf_dvbscale.c67
-rw-r--r--libmpcodecs/vf_eq.c258
-rw-r--r--libmpcodecs/vf_field.c89
-rw-r--r--libmpcodecs/vf_fil.c116
-rw-r--r--libmpcodecs/vf_filmdint.c1442
-rw-r--r--libmpcodecs/vf_fixpts.c136
-rw-r--r--libmpcodecs/vf_framestep.c203
-rw-r--r--libmpcodecs/vf_fspp.c2112
-rw-r--r--libmpcodecs/vf_geq.c197
-rw-r--r--libmpcodecs/vf_halfpack.c254
-rw-r--r--libmpcodecs/vf_harddup.c92
-rw-r--r--libmpcodecs/vf_hue.c200
-rw-r--r--libmpcodecs/vf_il.c148
-rw-r--r--libmpcodecs/vf_ivtc.c555
-rw-r--r--libmpcodecs/vf_kerndeint.c345
-rw-r--r--libmpcodecs/vf_lavc.c173
-rw-r--r--libmpcodecs/vf_lavcdeint.c188
-rw-r--r--libmpcodecs/vf_mcdeint.c330
-rw-r--r--libmpcodecs/vf_ow.c322
-rw-r--r--libmpcodecs/vf_palette.c234
-rw-r--r--libmpcodecs/vf_perspective.c341
-rw-r--r--libmpcodecs/vf_pp7.c489
-rw-r--r--libmpcodecs/vf_qp.c177
-rw-r--r--libmpcodecs/vf_remove_logo.c908
-rw-r--r--libmpcodecs/vf_rgbtest.c171
-rw-r--r--libmpcodecs/vf_sab.c292
-rw-r--r--libmpcodecs/vf_smartblur.c236
-rw-r--r--libmpcodecs/vf_softskip.c102
-rw-r--r--libmpcodecs/vf_spp.c612
-rw-r--r--libmpcodecs/vf_telecine.c190
-rw-r--r--libmpcodecs/vf_test.c332
-rw-r--r--libmpcodecs/vf_tfields.c476
-rw-r--r--libmpcodecs/vf_tile.c332
-rw-r--r--libmpcodecs/vf_tinterlace.c235
-rw-r--r--libmpcodecs/vf_uspp.c384
-rw-r--r--libmpcodecs/vf_yuvcsp.c120
-rw-r--r--libmpcodecs/vf_yvu9.c104
-rw-r--r--libmpcodecs/vqf.h228
54 files changed, 4 insertions, 16996 deletions
diff --git a/DOCS/man/en/vf.rst b/DOCS/man/en/vf.rst
index 434c2faec3..d46bd5bc06 100644
--- a/DOCS/man/en/vf.rst
+++ b/DOCS/man/en/vf.rst
@@ -217,17 +217,6 @@ dsize[=aspect|w:h:aspect-method:r]
<r>
Rounds up to make both width and height divisible by <r> (default: 1).
-yvu9
- Forces software YVU9 to YV12 colorspace conversion. Deprecated in favor of
- the software scaler.
-
-yuvcsp
- Clamps YUV color values to the CCIR 601 range without doing real
- conversion.
-
-palette
- RGB/BGR 8 -> 15/16/24/32bpp colorspace conversion using palette.
-
format[=fourcc[:outfourcc]]
Restricts the colorspace for the next filter without doing any conversion.
Use together with the scale filter for a real conversion.
@@ -391,132 +380,6 @@ pp[=filter1[:option1[:option2...]]/[-]filter2...]
Horizontal deblocking on luminance only, and switch vertical
deblocking on or off automatically depending on available CPU time.
-spp[=quality[:qp[:mode]]]
- Simple postprocessing filter that compresses and decompresses the image at
- several (or - in the case of quality level 6 - all) shifts and averages
- the results.
-
- <quality>
- 0-6 (default: 3)
-
- <qp>
- Force quantization parameter (default: 0, use QP from video).
-
- <mode>
-
- :0: hard thresholding (default)
- :1: soft thresholding (better deringing, but blurrier)
- :4: like 0, but also use B-frames' QP (may cause flicker)
- :5: like 1, but also use B-frames' QP (may cause flicker)
-
-uspp[=quality[:qp]]
- Ultra simple & slow postprocessing filter that compresses and decompresses
- the image at several (or - in the case of quality level 8 - all) shifts
- and averages the results.
-
- The way this differs from the behavior of spp is that uspp actually
- encodes & decodes each case with libavcodec Snow, whereas spp uses a
- simplified intra only 8x8 DCT similar to MJPEG.
-
- <quality>
- 0-8 (default: 3)
-
- <qp>
- Force quantization parameter (default: 0, use QP from video).
-
-fspp[=quality[:qp[:strength[:bframes]]]]
- faster version of the simple postprocessing filter
-
- <quality>
- 4-5 (equivalent to spp; default: 4)
-
- <qp>
- Force quantization parameter (default: 0, use QP from video).
-
- <-15-32>
- Filter strength, lower values mean more details but also more
- artifacts, while higher values make the image smoother but also
- blurrier (default: 0 - PSNR optimal).
-
- <bframes>
- 0: do not use QP from B-frames (default)
- 1: use QP from B-frames too (may cause flicker)
-
-pp7[=qp[:mode]]
- Variant of the spp filter, similar to spp=6 with 7 point DCT where only
- the center sample is used after IDCT.
-
- <qp>
- Force quantization parameter (default: 0, use QP from video).
-
- <mode>
- :0: hard thresholding
- :1: soft thresholding (better deringing, but blurrier)
- :2: medium thresholding (default, good results)
-
-qp=equation
- quantization parameter (QP) change filter
-
- <equation>
- some equation like ``2+2*sin(PI*qp)``
-
-geq=equation
- generic equation change filter
-
- <equation>
- Some equation, e.g. ``p(W-X\,Y)`` to flip the image horizontally. You
- can use whitespace to make the equation more readable. There are a
- couple of constants that can be used in the equation:
-
- :PI: the number pi
- :E: the number e
- :X / Y: the coordinates of the current sample
- :W / H: width and height of the image
- :SW / SH: width/height scale depending on the currently filtered plane,
- e.g. 1,1 and 0.5,0.5 for YUV 4:2:0.
- :p(x,y): returns the value of the pixel at location x/y of the current
- plane.
-
-test
- Generate various test patterns.
-
-rgbtest[=width:height]
- Generate an RGB test pattern useful for detecting RGB vs BGR issues. You
- should see a red, green and blue stripe from top to bottom.
-
- <width>
- Desired width of generated image (default: 0). 0 means width of input
- image.
-
- <height>
- Desired height of generated image (default: 0). 0 means height of
- input image.
-
-lavc[=quality:fps]
- Fast software YV12 to MPEG-1 conversion with libavcodec for use with
- DVB/DXR3/IVTV/V4L2.
-
- <quality>
- :1-31: fixed qscale
- :32-: fixed bitrate in kbits
-
- <fps>
- force output fps (float value) (default: 0, autodetect based on height)
-
-dvbscale[=aspect]
- Set up optimal scaling for DVB cards, scaling the x axis in hardware and
- calculating the y axis scaling in software to keep aspect. Only useful
- together with expand and scale.
-
- <aspect>
- Control aspect ratio, calculate as ``DVB_HEIGHT*ASPECTRATIO`` (default:
- ``576*4/3=768``), set it to ``576*(16/9)=1024`` for a 16:9 TV.
-
- *EXAMPLE*:
-
- ``--vf=dvbscale,scale=-1:0,expand=-1:576:-1:-1:1,lavc``
- FIXME: Explain what this does.
-
noise[=luma[u][t|a][h][p]:chroma[u][t|a][h][p]]
Adds noise.
@@ -528,7 +391,7 @@ noise[=luma[u][t|a][h][p]:chroma[u][t|a][h][p]]
:h: high quality (slightly better looking, slightly slower)
:p: mix random noise with a (semi)regular pattern
-denoise3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
+hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
This filter aims to reduce image noise producing smooth images and making
still images really still (This should enhance compressibility.).
@@ -542,36 +405,10 @@ denoise3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
chroma temporal strength (default:
``luma_tmp*chroma_spatial/luma_spatial``)
-hqdn3d[=luma_spatial:chroma_spatial:luma_tmp:chroma_tmp]
- High precision/quality version of the denoise3d filter. Parameters and
- usage are the same.
-
-ow[=depth[:luma_strength[:chroma_strength]]]
- Overcomplete Wavelet denoiser.
-
- <depth>
- Larger depth values will denoise lower frequency components more, but
- slow down filtering (default: 8).
- <luma_strength>
- luma strength (default: 1.0)
- <chroma_strength>
- chroma strength (default: 1.0)
-
-eq[=brightness:contrast] (OBSOLETE)
- Software equalizer with interactive controls just like the hardware
- equalizer, for cards/drivers that do not support brightness and contrast
- controls in hardware.
-
- <-100-100>
- initial brightness
- <-100-100>
- initial contrast
-
eq2[=gamma:contrast:brightness:saturation:rg:gg:bg:weight]
- Alternative software equalizer that uses lookup tables (very slow),
+ Software equalizer that uses lookup tables (slow),
allowing gamma correction in addition to simple brightness and contrast
- adjustment. Note that it uses the same MMX optimized code as ``--vf=eq``
- if all gamma values are 1.0. The parameters are given as floating point
+ adjustment. The parameters are given as floating point
values.
<0.1-10>
@@ -595,31 +432,6 @@ eq2[=gamma:contrast:brightness:saturation:rg:gg:bg:weight]
and just plain white. A value of 0.0 turns the gamma correction all
the way down while 1.0 leaves it at its full strength (default: 1.0).
-hue[=hue:saturation]
- Software equalizer with interactive controls just like the hardware
- equalizer, for cards/drivers that do not support hue and saturation
- controls in hardware.
-
- <-180-180>
- initial hue (default: 0.0)
- <-100-100>
- initial saturation, where negative values result in a negative chroma
- (default: 1.0)
-
-halfpack[=f]
- Convert planar YUV 4:2:0 to half-height packed 4:2:2, downsampling luma
- but keeping all chroma samples. Useful for output to low-resolution
- display devices when hardware downscaling is poor quality or is not
- available. Can also be used as a primitive luma-only deinterlacer with
- very low CPU usage.
-
- <f>
- By default, halfpack averages pairs of lines when downsampling. Any
- value different from 0 or 1 gives the default (averaging) behavior.
-
- :0: Only use even lines when downsampling.
- :1: Only use odd lines when downsampling.
-
ilpack[=mode]
When interlaced video is stored in YUV 4:2:0 formats, chroma interlacing
does not line up properly due to vertical downsampling of the chroma
@@ -633,60 +445,6 @@ ilpack[=mode]
:0: nearest-neighbor sampling, fast but incorrect
:1: linear interpolation (default)
-decimate[=max:hi:lo:frac]
- Drops frames that do not differ greatly from the previous frame in order
- to reduce framerate. The main use of this filter is for very-low- bitrate
- encoding (e.g. streaming over dialup modem), but it could in theory be
- used for fixing movies that were inverse-telecined incorrectly.
-
- <max>
- Sets the maximum number of consecutive frames which can be dropped (if
- positive), or the minimum interval between dropped frames (if
- negative).
- <hi>,<lo>,<frac>
- A frame is a candidate for dropping if no 8x8 region differs by more
- than a threshold of <hi>, and if not more than <frac> portion (1
- meaning the whole image) differs by more than a threshold of <lo>.
- Values of <hi> and <lo> are for 8x8 pixel blocks and represent actual
- pixel value differences, so a threshold of 64 corresponds to 1 unit of
- difference for each pixel, or the same spread out differently over the
- block.
-
-dint[=sense:level]
- The drop-deinterlace (dint) filter detects and drops the first from a set
- of interlaced video frames.
-
- <0.0-1.0>
- relative difference between neighboring pixels (default: 0.1)
- <0.0-1.0>
- What part of the image has to be detected as interlaced to drop the
- frame (default: 0.15).
-
-lavcdeint (OBSOLETE)
- FFmpeg deinterlacing filter, same as ``--vf=pp=fd``
-
-kerndeint[=thresh[:map[:order[:sharp[:twoway]]]]]
- Donald Graft's adaptive kernel deinterlacer. Deinterlaces parts of a video
- if a configurable threshold is exceeded.
-
- <0-255>
- threshold (default: 10)
- <map>
- :0: Ignore pixels exceeding the threshold (default).
- :1: Paint pixels exceeding the threshold white.
-
- <order>
- :0: Leave fields alone (default).
- :1: Swap fields.
-
- <sharp>
- :0: Disable additional sharpening (default).
- :1: Enable additional sharpening.
-
- <twoway>
- :0: Disable twoway sharpening (default).
- :1: Enable twoway sharpening.
-
unsharp[=l|cWxH:amount[:l|cWxH:amount]]
unsharp mask / gaussian blur
@@ -710,81 +468,6 @@ unsharp[=l|cWxH:amount[:l|cWxH:amount]]
swapuv
Swap U & V plane.
-il[=d|i][s][:[d|i][s]]
- (De)interleaves lines. The goal of this filter is to add the ability to
- process interlaced images pre-field without deinterlacing them. You can
- filter your interlaced DVD and play it on a TV without breaking the
- interlacing. While deinterlacing (with the postprocessing filter) removes
- interlacing permanently (by smoothing, averaging, etc) deinterleaving
- splits the frame into 2 fields (so called half pictures), so you can
- process (filter) them independently and then re-interleave them.
-
- :d: deinterleave (placing one above the other)
- :i: interleave
- :s: swap fields (exchange even & odd lines)
-
-fil[=i|d]
- (De)interleaves lines. This filter is very similar to the il filter but
- much faster, the main disadvantage is that it does not always work.
- Especially if combined with other filters it may produce randomly messed
- up images, so be happy if it works but do not complain if it does not for
- your combination of filters.
-
- :d: Deinterleave fields, placing them side by side.
- :i: Interleave fields again (reversing the effect of fil=d).
-
-field[=n]
- Extracts a single field from an interlaced image using stride arithmetic
- to avoid wasting CPU time. The optional argument n specifies whether to
- extract the even or the odd field (depending on whether n is even or odd).
-
-detc[=var1=value1:var2=value2:...]
- Attempts to reverse the 'telecine' process to recover a clean,
- non-interlaced stream at film framerate. This was the first and most
- primitive inverse telecine filter to be added to MPlayer. It works by
- latching onto the telecine 3:2 pattern and following it as long as
- possible. This makes it suitable for perfectly-telecined material, even in
- the presence of a fair degree of noise, but it will fail in the presence
- of complex post-telecine edits. Development on this filter is no longer
- taking place, as ivtc, pullup, and filmdint are better for most
- applications. The following arguments (see syntax above) may be used to
- control detc's behavior:
-
- <dr>
- Set the frame dropping mode.
-
- :0: Do not drop frames to maintain fixed output framerate (default).
- :1: Always drop a frame when there have been no drops or telecine
- merges in the past 5 frames.
- :2: Always maintain exact 5:4 input to output frame ratio.
-
- <am>
- Analysis mode.
-
- :0: Fixed pattern with initial frame number specified by <fr>.
- :1: aggressive search for telecine pattern (default)
-
- <fr>
- Set initial frame number in sequence. 0-2 are the three clean
- progressive frames; 3 and 4 are the two interlaced frames. The
- default, -1, means 'not in telecine sequence'. The number specified
- here is the type for the imaginary previous frame before the movie
- starts.
-
- <t0>, <t1>, <t2>, <t3>
- Threshold values to be used in certain modes.
-
-ivtc[=1]
- Experimental 'stateless' inverse telecine filter. Rather than trying to
- lock on to a pattern like the detc filter does, ivtc makes its decisions
- independently for each frame. This will give much better results for
- material that has undergone heavy editing after telecine was applied, but
- as a result it is not as forgiving of noisy input, for example TV capture.
- The optional parameter (ivtc=1) corresponds to the dr=1 option for the
- detc filter, and should not be used with MPlayer. Further development on
- ivtc has stopped, as the pullup and filmdint filters appear to be much
- more accurate.
-
pullup[=jl:jr:jt:jb:sb:mp]
Third-generation pulldown reversal (inverse telecine) filter, capable of
handling mixed hard-telecine, 24000/1001 fps progressive, and 30000/1001
@@ -818,75 +501,6 @@ pullup[=jl:jr:jt:jb:sb:mp]
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.
-filmdint[=options]
- Inverse telecine filter, similar to the pullup filter above. It is
- designed to handle any pulldown pattern, including mixed soft and hard
- telecine and limited support for movies that are slowed down or sped up
- from their original framerate for TV. Only the luma plane is used to find
- the frame breaks. If a field has no match, it is deinterlaced with simple
- linear approximation. If the source is MPEG-2, this must be the first
- filter to allow access to the field-flags set by the MPEG-2 decoder.
- Depending on the source MPEG, you may be fine ignoring this advice, as
- long as you do not see lots of "Bottom-first field" warnings. With no
- options it does normal inverse telecine. When this filter is used with
- MPlayer, it will result in an uneven framerate during playback, but it is
- still generally better than using pp=lb or no deinterlacing at all.
- Multiple options can be specified separated by /.
-
- crop=<w>:<h>:<x>:<y>
- Just like the crop filter, but faster, and works on mixed hard and
- soft telecined content as well as when y is not a multiple of 4. If x
- or y would require cropping fractional pixels from the chroma planes,
- the crop area is extended. This usually means that x and y must be
- even.
-
- io=<ifps>:<ofps>
- For each ifps input frames the filter will output ofps frames. This
- could be used to filter movies that are broadcast on TV at a frame
- rate different from their original framerate.
-
- luma_only=<n>
- If n is nonzero, the chroma plane is copied unchanged. This is useful
- for YV12 sampled TV, which discards one of the chroma fields.
-
- mmx2=<n>
- On x86, if n=1, use MMX2 optimized functions, if n=2, use 3DNow!
- optimized functions, otherwise, use plain C. If this option is not
- specified, MMX2 and 3DNow! are auto-detected, use this option to
- override auto-detection.
-
- fast=<n>
- The larger n will speed up the filter at the expense of accuracy. The
- default value is n=3. If n is odd, a frame immediately following a
- frame marked with the REPEAT_FIRST_FIELD MPEG flag is assumed to be
- progressive, thus filter will not spend any time on soft-telecined
- MPEG-2 content. This is the only effect of this flag if MMX2 or 3DNow!
- is available. Without MMX2 and 3DNow, if n=0 or 1, the same
- calculations will be used as with n=2 or 3. If n=2 or 3, the number of
- luma levels used to find the frame breaks is reduced from 256 to 128,
- which results in a faster filter without losing much accuracy. If n=4
- or 5, a faster, but much less accurate metric will be used to find the
- frame breaks, which is more likely to misdetect high vertical detail
- as interlaced content.
-
- verbose=<n>
- If n is nonzero, print the detailed metrics for each frame. Useful for
- debugging.
-
- dint_thres=<n>
- Deinterlace threshold. Used during de-interlacing of unmatched frames.
- Larger value means less deinterlacing, use n=256 to completely turn
- off deinterlacing. Default is n=8.
-
- comb_thres=<n>
- Threshold for comparing a top and bottom fields. Defaults to 128.
-
- diff_thres=<n>
- Threshold to detect temporal change of a field. Default is 128.
-
- sad_thres=<n>
- Sum of Absolute Difference threshold, default is 64.
-
divtc[=options]
Inverse telecine for deinterlaced video. If 3:2-pulldown telecined video
has lost one of the fields or is deinterlaced using a method that keeps
@@ -1002,49 +616,6 @@ phase[=t|b|p|a|u|T|B|A|U][:v]
average squared difference between fields for t, b, and p
alternatives.
-telecine[=start]
- Apply 3:2 'telecine' process to increase framerate by 20%. This most
- likely will not work correctly with MPlayer. The optional start parameter
- tells the filter where in the telecine pattern to start (0-3).
-
-tinterlace[=mode]
- Temporal field interlacing - merge pairs of frames into an interlaced
- frame, halving the framerate. Even frames are moved into the upper field,
- odd frames to the lower field. This can be used to fully reverse the
- effect of the tfields filter (in mode 0). Available modes are:
-
- :0: Move odd frames into the upper field, even into the lower field,
- generating a full-height frame at half framerate.
- :1: Only output odd frames, even frames are dropped; height unchanged.
- :2: Only output even frames, odd frames are dropped; height unchanged.
- :3: Expand each frame to full height, but pad alternate lines with black;
- framerate unchanged.
- :4: Interleave even lines from even frames with odd lines from odd frames.
- Height unchanged at half framerate.
-
-tfields[=mode[:field_dominance]]
- Temporal field separation - split fields into frames, doubling the output
- framerate.
-
- <mode>
- :0: Leave fields unchanged (will jump/flicker).
- :1: Interpolate missing lines. (The algorithm used might not be so
- good.)
- :2: Translate fields by 1/4 pixel with linear interpolation (no jump).
- :4: Translate fields by 1/4 pixel with 4tap filter (higher quality)
- (default).
-
- <field_dominance> (DEPRECATED)
- :-1: auto (default) Only works if the decoder exports the appropriate
- information and no other filters which discard that information
- come before tfields in the filter chain, otherwise it falls back
- to 0 (top field first).
- :0: top field first
- :1: bottom field first
-
- *NOTE*: This option will possibly be removed in a future version. Use
- ``--field-dominance`` instead.
-
yadif=[mode[:field_dominance]]
Yet another deinterlacing filter
@@ -1060,66 +631,6 @@ yadif=[mode[:field_dominance]]
*NOTE*: This option will possibly be removed in a future version. Use
``--field-dominance`` instead.
-mcdeint=[mode[:parity[:qp]]]
- Motion compensating deinterlacer. It needs one field per frame as input
- and must thus be used together with tfields=1 or yadif=1/3 or equivalent.
-
- <mode>
- :0: fast
- :1: medium
- :2: slow, iterative motion estimation
- :3: extra slow, like 2 plus multiple reference frames
-
- <parity>
- 0 or 1 selects which field to use (note: no autodetection yet!).
-
- <qp>
- Higher values should result in a smoother motion vector field but less
- optimal individual vectors.
-
-boxblur=radius:power[:radius:power]
- box blur
-
- <radius>
- blur filter strength
- <power>
- number of filter applications
-
-sab=radius:pf:colorDiff[:radius:pf:colorDiff]
- shape adaptive blur
-
- <radius>
- blur filter strength (~0.1-4.0) (slower if larger)
- <pf>
- prefilter strength (~0.1-2.0)
- <colorDiff>
- maximum difference between pixels to still be considered (~0.1-100.0)
-
-smartblur=radius:strength:threshold[:radius:stre