Available filter plug-ins

The order in which frames and plug-ins are processed with transcode 0.6.X is as follows. There are 7 (A-G) processing slots available. Slots A, D and G are reserved for internal use only. External user contributed plug-ins hook to slots B and C for pre-processing, or E and F for post-processing. At each of these slots, transcode calls all plug-ins given with option -J from left to right. A single plug-in can therefore run code in all 4 slots, if necessary. Only single-threaded slots B and F allow for frame processing in correct display order. The number of threads created to process the frames is controlled by the second option of "-u".

- (A) pre-processing (internal, fixed order, video only, single-threaded)
  Ex: --pre_clip (-j)

- (B) pre-processing (plug-ins, user defined order, single-threaded)
  Flag set: TC_PRE_S_PROCESS
  Ex: -J extsub, astat
- (C) pre-processing (plug-ins, user defined order, multi-threaded)
  Flag set: TC_PRE_M_PROCESS
  Ex: -J mask

- (D) main processing (internal, fixed order, multi-threaded)
  Internal order: "-j -I -X -B -Z -Y -r -z -l -k -K -G -C" (executed from left to right)

- (E) post-processing (plug-ins, user defined order, multi-threaded)
  Flag set: TC_POST_M_PROCESS
- (F) post-processing (plug-ins, user defined order, single-threaded)
  Flag set: TC_POST_S_PROCESS
  Ex: -J extsub=0:0:0:0:1,preview

- (G) post-processing (internal, fixed order, video only, single-threaded)
  Ex: --post_clip (-Y)

- audio
- video

Audio:

- filter_resample.so
  native audio resampling filter, specify output sample rate with "-E".
  This filter superseeds export module audio re-sampling capabilities.
  Usage: -J resample

- filter_astat.so
  prints a suggestion of the "-s" option parameter for volume rescaling (normalizing) on exit. Useful for 2-pass encoding.
  Usage: -J astat
  [or] -J astat=astat.log

- filter_aclip.so
  a small audio plugin that skips audio frames below a certain noise level. This may be useful for DVD's with tracks that have the film music only but long pausing during dialogs. Furthermore, a keyframe flag is set at every cut. Write to an AVI-file container with "-g 0x0" and null import/export video modules.
  Usage: -J aclip=a:b
  - a noise shreshhold (10)
  - b is the number of frames (25) that need to be below this threshold before frames are dropped.

- filter_normalize.so (new in v0.6.0rc3)
  Smart audio volume normalizer.
  Author: Tilmann Bitterberg
  Usage: -J normalize=<val>
  - Use -J normalize=help to get a comprehensive list of options.

Video:

- filter_yuvdenoise.so (new in v0.6.0rc4)
  Author: Tilmann Bitterberg based on the original mjpeg-tools denoiser code by Stefan Fendt <stefan@lionfish.ping.de>.
  Usage: -J yuvdenoise=<val>
  - Use -J yuvdenoise=help to get a comprehensive list of options.
  This filter can remove noise from your typical video recordings to increase the compression-ratio to be achieved by subsequent encoders.

- filter_logo.so (new in v0.6.0pre5)
  Author: Tilmann Bitterberg
  Usage: -J logo=<val>
  - Use -J logo=help to get a comprehensive list of options.
  Add external pictures to your movie. This filter needs ImageMagick installed.

- filter_32drop.so (new in v0.6.0pre5)
  Author: Chad Page
  Usage: -J 32drop
  32drop (no options) is like 32detect but drops frames and maintains an internal frame counter so that if interlaced frames are irregular the video will not fall out of sync more than 1 or 2 frames.

- filter_32detect.so (updated in v0.6.0rc1)
  tries to detect interlaced frames for selected de-interlacing to avoid to process the entire movie and degrade quality otherwise
  Usage: -J 32detect=<options>
  - 'threshold' interlace detection threshold [10]
  - 'equal' threshold for equal colors [10]
  - 'diff' threshold for different colors [30]
  - 'force_mode' set internal force de-interlace flag with mode -I N [0]
    (currently only 1 and 3 are supported)
  - 'verbose' show results [off]
  Example: transcode [...] -J 32detect=diff=30:force_mode=3

- filter_mask.so (new in v0.6.0pre5)
  Author: Chad Page
  Usage: -J mask=left:right:bottom:top
  (mask=left:right:bottom:top, sorry that's not in the right order yet) is YUV only for now, and sets Y in the masked areas to 0 so that you can crop out unstable captured areas from VHS tape and make 32drop work better.

- filter_cshift.so (new in v0.6.0pre5)
  Author: Chad Page
  Usage: -J cshift=#
  chroma shifter (cshift=#) is another YUV-only filter shifts the chroma values by #, so that if your NTSC vhs cap has lagged colors (noticable here in animation) you can partially correct it. I have found that black line areas maintain color information.

- filter_whitebalance.so (new in v0.6.11)
  Author: Guillaume Cottenceau
  Usage: -J whitebalance=<options>
  - 'level' Strength of filter (may also be negative for opposite effect) [40]
  - 'limit' A string containing a series of frame numbers prepended by '-' to switch off or '+' to switch on (for example, -50+80-120 will disable from frame number 50 to number 80, then disable from 120 to the end) [disabled]
  This filter allows correcting movies with a broken white balance (e.g. bluish movie, for example).

- filter_xsharpen.so (new in v0.6.0pre4)
  Author: Tilmann Bitterberg
  Usage: -J xsharpen=<val>
  - Use -J xsharpen=help to get a list of options.
  - Not so much sharpening: -J xsharpen=strength=100
  Change the contrast of the video frame. This filter has been ported from VirtualDub by Tilmann Bitterberg. Operates in RGB space only.

- filter_smartdeinter.so (new in v0.6.0pre4)
  Author: Tilmann Bitterberg
  Usage: -J smartdeinter=<list>
  - Use -J smartdeinter=help to get a list of options.
  - Full smart deinterlacing:
    -J smartdeinter=diffmode=2:highq=1:cubic=1
  - Black out static areas to see what is considered moving:
    -J smartdeinter=motionOnly=1:threshold=12
  This filter provides a smart, motion-based deinterlacing capability. Ported from VirtualDub by Tilmann Bitterberg. Operates in RGB space only.
  Tilmann did some testing of deinterlace filters available in transcode. You can view and read the result here.

- filter_cut.so
  select a set of frames for encoding.
  Usage: -J cut=<list>
  - A list is a space separated string of frame intervals, e.g., -J cut="10-12 40-50", that will be encoded. All other frames are dropped along with audio.

- filter_skip.so
  skip a set of frames for encoding.
  Usage: -J skip=<list>
  - A list is a space separated string of frame intervals, e.g., -J skip="10-12 40-50", that will not be encoded. The frames are dropped along with audio.

- filter_pp.so
  Author: Gerhard Monzel
  Usage: -J pp=<ID>
  - See MPlayer manpage for more information on available features and id-strings.
  - ID=lb is a fast and good quality de-interlace filter.
  interface to MPlayer libpostproc routines provided by Gerhard Monzel.

- filter_ppcvs.so
  Author:Gerhard Monzel, Tilmann Bitterberg
  Usage: -J ppcvs=<ID>
  - See MPlayer manpage for more information on available features and id-strings.
  - ID=lb is a fast and good quality de-interlace filter.
  interface to MPlayer (CVS) libpostproc routines provided by Tilmann Bitterberg based on original work by Gerhard Monzel.

- filter_dnr.so
  Author: Gerhard Monzel
  Usage: -J dnr=<options>
  - More infos (in german), c.f. /docs directory.
  dynamic noise reduction filter plugin by Gerhard Monzel.

- filter_dilyuvmmx.so
  another de-interlace filter for YUV mode with MMX optimizations.

- filter_preview.so
  opens a preview window of the video frame before encoding.
  Usage: -J preview=string
  - string=xv make use of the XV extension, if available. Use this with "-V" (default).
  - string=sdl uses the SDL library.
  - string=gtk uses GTK and works only for RGB.
  Note: The "xv" preview window can be closed safely by pressing "q".

- filter_subtitler.so
  Author: Jan Panteltje
  Usage: -J preview=<options>
  - Visit Panteltje's subtitle software page for more information.
  A powerful custom subtitle plugin written by Jan Panteltje.

- filter_extsub.so
  adds DVD subtitles to your video frame.
  Usage: -J extsub="s:h:t:f:w:a:b:p:q" with:
  - s subtitle track id [0-31]
  - h offset of subtitle with bottom of frame
  - t global display start time correction in msec
  - f fast rendering (no anti-aliasing) (0=off, 1=on)
  - w switch to post-processing (0=off, 1=on)
  - a graylevel value a [0-255]
  - b graylevel value b [0-255]
  - p assign subtitle color p [0-3] to graylevel value a
  - q assign subtitle color q [0-3] to graylevel value b
  Subtitle color 0 is treated as transparent. Default is -J extsub=0:0:0:0:0:0 with p and q auto-detected. Examples.

- filter_divxkey.so
  tries to detect divx codec key (intra) frames in pass-through mode and sets attribute and key-frame flag in AVI-file.
  Usage: -J divxkey

- filter_testframe.so
  generates testframes for debugging and quality control.
  Usage: -J testframe=N
  - N=0 generates a video frame alternating black and white rows (default).
  - N=1 generates a video frame alternating black and white columns.

- filter_ivtc.so (updated in v0.6.4)
  tries to reverse the process that creates NTSC footage (29,97 frames per second) from film-based (24fps) content.
  Read more in docs/README.Inverse.Telecine.txt
  Author: Thanassis Tsiodras
  Usage: -J ivtc=<options>
  - 'verbose' show results [off]
  Example: transcode [...] -J ivtc,decimate

- filter_decimate.so (updated in v0.6.4)
  tries to reverse the process that creates NTSC footage (29,97 frames per second) from film-based (24fps) content.
  Read more in docs/README.Inverse.Telecine.txt
  Author: Thanassis Tsiodras
  Usage: -J decimate=<options>
  - 'verbose' show results [off]
  Example: transcode [...] -J ivtc,decimate

- filter_null.so
  filter plugin template for developers - does nothing.
  Usage: -J null

- filter_yuy2toyv12.so
  currently unused.

Last modified: Tue Nov 12 06:52:01 CET 2002