VideoOutPlugins - Video Filters =============== video filters are plugin-like code modules implementing the interface defined in vf.h basically it means video output manipulation, ie. these plugins can modify the image and the image properties (size, colorspace etc) between the video decoders (vd.h) and output layer (libvo or video encoders) the actual API is a mixture of the video decoder (vd.h) and libvo (video_out.h) APIs. the 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 funcs has 'fallback' version, so the plugins only override these if want - 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 fpr API and vf_*.c for examples) Current plugins: ================ -vop crop[=w:h:x:y] Simple cropping plugin. w,h (cropped width,height) defaults to original width,height x,y (position of cropped subimage on the original image) defaults to center MPI: EXPORT only, using stride manipulation -vop expand[=w:h:x:y:o] Expanding _and_ (optional) OSD rendering plugin. w,h (expanded width,height) defaults (-1) to original width,height x,y (position of original image on the expanded image) defaults (-1) to center o (0=disable/1=enable SUB/OSD rendering) defaults (0) to disabled 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 -vop flip Flips image upside-down (vertical mirroring) No parameters. MPI: DR (if possible) or EXPORT, using stride manipulation Special: dec_video autoloads it when flipping is required and libvo can't do -vop mirror Horizontal mirroring No parameters. MPI: TEMP -vop rectangle[=w:h:x:y] Draw a rectangle. Useful for testing crop plugin parameters. w,h (rectangle's width and height) defaults (-1) to maximum possible width while keeping the boundaries visible. x,y (rectangle's top left corner position) defauts (-1) to upper left most position. The plugin responds to the input.conf directive "change_control" that takes two parameters. The first parameter can be 0 for w, 1 for h, 2 for x or 3 for y. The second parameter is the amount to change the designated rectangle boundary. MPI: TEMP, accepts stride -vop rotate[=x] Rotate image +/- 90 degrees Optional 'x' parameter (0..3) controls horizontal and vertical mirroring MPI: TEMP -vop scale[=w:h[:c[:p]]] Software scaling (zoom) _and_ yuv<->rgb colorspace conversion w,h (new width/height after scaling) defaults to original width,height note: if -zoom is used, and underlaying filters (including libvo) uncapable of scaling, then it defaults to d_width/d_height ! note 2: w/h values -1 means original width/height, 0 means scaled d_width/d_height. -2/-3 means calculating w or h using the other dimension and the original (-3) or prescaled (-2) aspect ratio. c chroma skipping 0 -> use all available input lines for chroma 1 -> use only every 2. input line for chroma 2 -> use only every 4. input line for chroma 3 -> use only every 8. input line for chroma p scaling parameter (depends upon the used scaling method) for -sws 2 (bicubic) its sharpness (0 (soft) - 100 (sharp)) for -sws 7 (gaussian) its sharpness (0 (soft) - 100 (sharp)) for -sws 9 (lanczos) its filter length (1 - 10) MPI: TEMP, accepts stride Special: dec_video and mpcodecs core autoloads it for colorspace conv. -vop yuy2 Forced software YV12/I420 -> YUY2 conversion (usefull for video cards/drivers with slow YV12 but fast YUY2 support) MPI: TEMP, accepts stride -vop rgb2bgr[=swap] RGB 24/32 <-> BGR 24/32 colorspace conversion (default) or RGB 24/32 <-> RGB 24/32 conversion with R<->B swapping ('swap' option) MPI: TEMP, accepts stride -vop palette RGB/BGR 8 -> RGB/BGR 15/16/24/32 colorspace conversion using palette MPI: TEMP, accepts stride -vop format[=fourcc] _restrict_ the list of supported colorspaces (query-format()) to a single, given fourcc. The 'fourcc' option defaults to 'yuy2', but may be any format name, like rgb15, bgr24, yv12 etc... note again, it does NOT do any conversion, it just limits the _next_ plugins format list. MPI: passthru -vop pp=[[: