[MPlayer-dev-eng] vop.txt

Diego Biurrun diego at biurrun.de
Mon Mar 24 19:25:55 CET 2003


Hello!

I just finished merging vop.txt into the man page.  90% of that
document consists of vop/vf usage descriptions, which should probably
removed to reduce the duplication.  In main, vop.txt should be renamed
to vf.txt, the vop.txt name is historic.

I believe we need to decide what to do with vop.txt/vf.txt, as the
usage instructions in there will probably become more and more
outdated and incorrect over time if we just leave the file as is.
Before tackling this I just wanted to remove the file, but it does
have some useful information at the beginning and MPI parameters (?)
are mentioned for the different filters although I have no idea
whether the list is still current and correct.

I'm attaching a cropped version of vop.txt here for easy reference.
Is this information worth keeping?  Should we add it to
libmpcodecs.txt instead?  Should some of it be added to the man page?

Diego



Video Filters
=============

Video filters are plugin-like code modules implementing the interface
defined in vf.h.

Basically it means video output manipulation, i.e. these plugins can
modify the image and the image properties (size, colorspace etc) between
the video decoders (vd.h) and the output layer (libvo or video encoders).

The actual API is a mixture of the video decoder (vd.h) and libvo
(video_out.h) APIs.

main differences:
- vf plugins may be "loaded" multiple times, with different parameters
  and context - it's new in MPlayer, old APIs weren't reentrant.
- vf plugins don't have to implement all functions - all functions have a
  'fallback' version, so the plugins only override these if wanted.
- Each vf plugin has its own get_image context, and they can interchange
  images/buffers using these get_image/put_image calls.

API details:
-- TO DO --  (see vf.h for API and vf_*.c for examples)

Current plugins:
================

-vf crop[=w:h:x:y]
    MPI: EXPORT only, using stride manipulation

-vf expand[=w:h:x:y:o]
    MPI: DR (if possible) or copy
    Special: mpcodecs core uses it to solve stride restrictions between filters
	     MEncoder uses (autoload) it to render SUB/OSD

-vf flip
    MPI: DR (if possible) or EXPORT, using stride manipulation
    Special: dec_video autoloads it when flipping is required and libvo can't do

-vf mirror
    MPI: TEMP

-vf rectangle[=w:h:x:y]
    MPI: TEMP, accepts stride

-vf rotate[=x]
    MPI: TEMP

-vf scale[=w:h[:c[:p]]]
    MPI: TEMP, accepts stride
    Special: dec_video and mpcodecs core autoloads it for colorspace conv.

-vf yuy2
    MPI: TEMP, accepts stride

-vf rgb2bgr[=swap]
    MPI: TEMP, accepts stride

-vf palette
    MPI: TEMP, accepts stride
    
-vf format[=fourcc]
    MPI: passthru

-vf pp=[<filterName>[:<option>[:<option>...]][/[-]<filterName>[:<option>...]]...]
    MPI: DR (if possible) or TEMP
    Special: dec_video autoloads it if -pp option is used but codec can't do pp.

-vf lavc[=quality:fps]
    MPI: EXPORT special

-vf fame
    MPI: EXPORT special

-vf dvbscale[=aspect]
    MPI: passthru

-vf cropdetect[=limit]
    MPI: EXPORT

-vf test[=first frame number]
    MPI: TEMP, accepts stride

-vf noise[=lumaNoise[u][t|a][h]:chromaNoise[u][t|a][h]
    MPI: DR (if possible) or TEMP, accepts stride

-vf unsharp=l|cWxH:amount[:l|cWxH:amount]
    MPI: DR (if possible) or TEMP, accepts stride

-vf swapuv
    MPI: EXPORT
    
-vf il=[d|i][s][:[d|i][s]]
    MPI: TEMP, accepts stride

-vf boxblur=radius:power[:radius:power]
    MPI: TEMP, accepts stride




More information about the MPlayer-dev-eng mailing list