# Audio/video filters

The available options can depend on the version of the underlying encoding tools that Transloadit uses for the following Robots:

* [🤖/audio/artwork](/docs/robots/audio-artwork.md)
* [🤖/audio/concat](/docs/robots/audio-concat.md)
* [🤖/audio/split](/docs/robots/audio-split.md)
* [🤖/audio/encode](/docs/robots/audio-encode.md)
* [🤖/audio/loop](/docs/robots/audio-loop.md)
* [🤖/audio/merge](/docs/robots/audio-merge.md)
* [🤖/audio/waveform](/docs/robots/audio-waveform.md)
* [🤖/meta/write](/docs/robots/meta-write.md)
* [🤖/video/adaptive](/docs/robots/video-adaptive.md)
* [🤖/video/artwork](/docs/robots/video-artwork.md)
* [🤖/video/concat](/docs/robots/video-concat.md)
* [🤖/video/encode](/docs/robots/video-encode.md)
* [🤖/video/merge](/docs/robots/video-merge.md)
* [🤖/video/split](/docs/robots/video-split.md)
* [🤖/video/subtitle](/docs/robots/video-subtitle.md)
* [🤖/video/thumbs](/docs/robots/video-thumbs.md)

Transloadit recommends having: `ffmpeg_stack: "v7"` in these Robots’ Assembly Instructions. We are intimately aware of how important continuity is for our customers, so stack version upgrades are always opt-in. Stack versions are typically supported for many years before we start issuing deprecation warnings (for example, we had been supporting `"v1.0.0"` for 11 years before we deprecated it).

Page 2 of 3

**ffmpeg\_stack**

|Name|Description|Read|Write|
|-|-|-|-|
|dejudder|Remove judder produced by pullup.|Yes|Yes|
|delogo|Remove logo from input video.|Yes|Yes|
|denoise\_vaapi|VAAPI VPP for de-noise|Yes|Yes|
|derain|Apply derain filter to the input.|Yes|Yes|
|deshake|Stabilize shaky video.|Yes|Yes|
|deshake\_opencl|Feature-point based video stabilization filter|Yes|Yes|
|despill|Despill video.|Yes|Yes|
|detelecine|Apply an inverse telecine pattern.|Yes|Yes|
|dialoguenhance|Audio Dialogue Enhancement.|Yes|Yes|
|dilation|Apply dilation effect.|Yes|Yes|
|dilation\_opencl|Apply dilation effect|Yes|Yes|
|displace|VVV->V Displace pixels.|No|No|
|dnn\_classify|Apply DNN classify filter to the input.|Yes|Yes|
|dnn\_detect|Apply DNN detect filter to the input.|Yes|Yes|
|dnn\_processing|Apply DNN processing filter to the input.|Yes|Yes|
|doubleweave|Weave input video fields into double number of frames.|Yes|Yes|
|drawbox|Draw a colored box on the input video.|Yes|Yes|
|drawgraph|Draw a graph using input video metadata.|Yes|Yes|
|drawgrid|Draw a colored grid on the input video.|Yes|Yes|
|drawtext|Draw text on top of video frames using libfreetype library.|Yes|Yes|
|drmeter|Measure audio dynamic range.|Yes|Yes|
|dynaudnorm|Dynamic Audio Normalizer.|Yes|Yes|
|earwax|Widen the stereo image.|Yes|Yes|
|ebur128|EBU R128 scanner.|No|No|
|edgedetect|Detect and draw edge.|Yes|Yes|
|elbg|Apply posterize effect, using the ELBG algorithm.|Yes|Yes|
|entropy|Measure video frames entropy.|Yes|Yes|
|epx|Scale the input using EPX algorithm.|Yes|Yes|
|eq|Adjust brightness, contrast, gamma, and saturation.|Yes|Yes|
|equalizer|Apply two-pole peaking equalization (EQ) filter.|Yes|Yes|
|erosion|Apply erosion effect.|Yes|Yes|
|erosion\_opencl|Apply erosion effect|Yes|Yes|
|estdif|Apply Edge Slope Tracing deinterlace.|Yes|Yes|
|exposure|Adjust exposure of the video stream.|Yes|Yes|
|extractplanes|Extract planes as grayscale frames.|Yes|No|
|extrastereo|Increase difference between stereo audio channels.|Yes|Yes|
|fade|Fade in/out input video.|Yes|Yes|
|feedback|Apply feedback video filter.|Yes|Yes|
|fftdnoiz|Denoise frames using 3D FFT.|Yes|Yes|
|fftfilt|Apply arbitrary expressions to pixels in frequency domain.|Yes|Yes|
|field|Extract a field from the input video.|Yes|Yes|
|fieldhint|Field matching using hints.|Yes|Yes|
|fieldmatch|Field matching for inverse telecine.|No|Yes|
|fieldorder|Set the field order.|Yes|Yes|
|fifo|Buffer input images and send them when they are requested.|No|No|
|fillborders|Fill borders of the input video.|Yes|Yes|
|find\_rect|Find a user specified object.|Yes|Yes|
|firequalizer|Finite Impulse Response Equalizer.|Yes|Yes|
|flanger|Apply a flanging effect to the audio.|Yes|Yes|
|flip\_vulkan|Flip both horizontally and vertically|Yes|Yes|
|flite|Synthesize voice from text using libflite.|Yes|Yes|
|floodfill|Fill area with same color with another color.|Yes|Yes|
|format|Convert the input video to one of the specified pixel formats.|Yes|Yes|
|fps|Force constant framerate.|Yes|Yes|
|framepack|Generate a frame packed stereoscopic video.|Yes|Yes|
|framerate|Upsamples or downsamples progressive source between specified frame rates.|Yes|Yes|
|framestep|Select one frame every N frames.|Yes|Yes|
|freezedetect|Detects frozen video input.|Yes|Yes|
|freezeframes|Freeze video frames.|Yes|Yes|
|frei0r|Apply a frei0r effect.|Yes|Yes|
|frei0r\_src|Generate a frei0r source.|Yes|Yes|
|fspp|Apply Fast Simple Post-processing filter.|Yes|Yes|
|fsync|Synchronize video frames from external source.|Yes|Yes|
|gblur|Apply Gaussian Blur filter.|Yes|Yes|
|gblur\_vulkan|Gaussian Blur in Vulkan|Yes|Yes|
|geq|Apply generic equation to each pixel.|Yes|Yes|
|gradfun|Debands video quickly using gradients.|Yes|Yes|
|gradients|Draw a gradients.|Yes|Yes|
|graphmonitor|Show various filtergraph stats.|Yes|Yes|
|grayworld|Adjust white balance using LAB gray world algorithm|Yes|Yes|
|greyedge|Estimates scene illumination by grey edge assumption.|Yes|Yes|
|guided|Apply Guided filter.|No|Yes|
|haas|Apply Haas Stereo Enhancer.|Yes|Yes|
|haldclut|Adjust colors using a Hald CLUT.|Yes|Yes|
|haldclutsrc|Provide an identity Hald CLUT.|Yes|Yes|
|hdcd|Apply High Definition Compatible Digital (HDCD) decoding.|Yes|Yes|
|headphone|Apply headphone binaural spatialization with HRTFs in additional streams.|Yes|Yes|
|hflip|Horizontally flip the input video.|Yes|Yes|
|hflip\_vulkan|Horizontally flip the input video in Vulkan|Yes|Yes|
|highpass|Apply a high-pass filter with 3dB point frequency.|Yes|Yes|
|highshelf|Apply a high shelf filter.|Yes|Yes|
|hilbert|Generate a Hilbert transform FIR coefficients.|Yes|Yes|
|histeq|Apply global color histogram equalization.|Yes|Yes|
|histogram|Compute and draw a histogram.|Yes|Yes|
|hqdn3d|Apply a High Quality 3D Denoiser.|Yes|Yes|
|hqx|Scale the input by 2, 3 or 4 using the hq\*x magnification algorithm.|Yes|Yes|
|hstack|Stack video inputs horizontally.|No|Yes|
|hstack\_qsv|"Quick Sync Video" hstack|No|Yes|
|hstack\_vaapi|"VA-API" hstack|No|Yes|
|hsvhold|Turns a certain HSV range into gray.|Yes|Yes|
|hsvkey|Turns a certain HSV range into transparency. Operates on YUV colors.|Yes|Yes|
|hue|Adjust the hue and saturation of the input video.|Yes|Yes|
|huesaturation|Apply hue-saturation-intensity adjustments.|Yes|Yes|
|hwdownload|Download a hardware frame to a normal frame|Yes|Yes|
|hwmap|Map hardware frames|Yes|Yes|
|hwupload|Upload a normal frame to a hardware frame|Yes|Yes|
|hwupload\_cuda|Upload a system memory frame to a CUDA device.|Yes|Yes|
|hysteresis|Grow first stream into second stream by connecting components.|Yes|Yes|
|identity|Calculate the Identity between two video streams.|Yes|Yes|
|idet|Interlace detect Filter.|Yes|Yes|
|il|Deinterleave or interleave fields.|Yes|Yes|
|inflate|Apply inflate effect.|Yes|Yes|
|interlace|Convert progressive video into interlaced.|Yes|Yes|
|interleave|Temporally interleave video inputs.|No|Yes|
|join|Join multiple audio streams into multi-channel output.|Yes|Yes|
|kerndeint|Apply kernel deinterlacing to the input.|Yes|Yes|
|kirsch|Apply kirsch operator.|Yes|Yes|
|ladspa|Apply LADSPA effect.|Yes|Yes|
|lagfun|Slowly update darker pixels.|Yes|Yes|
|latency|Report video filtering latency.|Yes|Yes|
|lenscorrection|Rectify the image by correcting for lens distortion.|Yes|Yes|
|libplacebo|Apply various GPU filters from libplacebo|No|Yes|
|libvmaf|Calculate the VMAF between two video streams.|Yes|Yes|
|life|Create life.|Yes|Yes|
|limitdiff|Apply filtering with limiting difference.|No|Yes|
|limiter|Limit pixels components to the specified range.|Yes|Yes|
|loop|Loop video frames.|Yes|Yes|
|loudnorm|EBU R128 loudness normalization|Yes|Yes|
|lowpass|Apply a low-pass filter with 3dB point frequency.|Yes|Yes|
|lowshelf|Apply a low shelf filter.|Yes|Yes|
|lumakey|Turns a certain luma into transparency.|Yes|Yes|
|lut|Compute and apply a lookup table to the RGB/YUV input video.|Yes|Yes|
|lut1d|Adjust colors using a 1D LUT.|Yes|Yes|
|lut2|Compute and apply a lookup table from two video inputs.|Yes|Yes|
|lut3d|Adjust colors using a 3D LUT.|Yes|Yes|
|lutrgb|Compute and apply a lookup table to the RGB input video.|Yes|Yes|
|lutyuv|Compute and apply a lookup table to the YUV input video.|Yes|Yes|
|mandelbrot|Render a Mandelbrot fractal.|Yes|Yes|
|maskedclamp|VVV->V Clamp first stream with second stream and third stream.|No|No|
|maskedmax|VVV->V Apply filtering with maximum difference of two streams.|No|No|
|maskedmerge|VVV->V Merge first stream with second stream using third stream as mask.|No|No|
|maskedmin|VVV->V Apply filtering with minimum difference of two streams.|No|No|
|maskedthreshold|Pick pixels comparing absolute difference of two streams with threshold.|Yes|Yes|
|maskfun|Create Mask.|Yes|Yes|
|mcdeint|Apply motion compensating deinterlacing.|Yes|Yes|
|mcompand|Multiband Compress or expand audio dynamic range.|Yes|Yes|
|median|Apply Median filter.|Yes|Yes|
|mergeplanes|Merge planes.|No|Yes|
|mestimate|Generate motion vectors.|Yes|Yes|
|metadata|Manipulate video frame metadata.|Yes|Yes|
|midequalizer|Apply Midway Equalization.|Yes|Yes|
|minterpolate|Frame rate conversion using Motion Interpolation.|Yes|Yes|
|mix|Mix video inputs.|No|Yes|
|monochrome|Convert video to gray using custom color filter.|Yes|Yes|
|morpho|Apply Morphological filter.|Yes|Yes|
|movie|Read from a movie source.|Yes|No|
|mpdecimate|Remove near-duplicate frames.|Yes|Yes|
|mptestsrc|Generate various test pattern.|Yes|Yes|
|msad|Calculate the MSAD between two video streams.|Yes|Yes|
|multiply|Multiply first video stream with second video stream.|Yes|Yes|
|negate|Negate input video.|Yes|Yes|
|nlmeans|Non-local means denoiser.|Yes|Yes|
|nlmeans\_opencl|Non-local means denoiser through OpenCL|Yes|Yes|
|nlmeans\_vulkan|Non-local means denoiser (Vulkan)|Yes|Yes|
|nnedi|Apply neural network edge directed interpolation intra-only deinterlacer.|Yes|Yes|
|noformat|Force libavfilter not to use any of the specified pixel formats for the input to the next filter.|Yes|Yes|
|noise|Add noise.|Yes|Yes|
|normalize|Normalize RGB video.|Yes|Yes|
|null|Pass the source unchanged to the output.|Yes|Yes|
|nullsink|Do absolutely nothing with the input video.|Yes|Yes|
|nullsrc|Null video source, return unprocessed video frames.|Yes|Yes|
|openclsrc|Generate video using an OpenCL program|Yes|Yes|
|oscilloscope|2D Video Oscilloscope.|Yes|Yes|
|overlay|Overlay a video source on top of the input.|Yes|Yes|
|overlay\_cuda|Overlay one video on top of another using CUDA|Yes|Yes|
|overlay\_opencl|Overlay one video on top of another|Yes|Yes|
|overlay\_qsv|Quick Sync Video overlay.|Yes|Yes|
|overlay\_vaapi|Overlay one video on top of another|Yes|Yes|
|overlay\_vulkan|Overlay a source on top of another|Yes|Yes|
|owdenoise|Denoise using wavelets.|Yes|Yes|
|pad|Pad the input video.|Yes|Yes|
|pad\_opencl|Pad the input video.|Yes|Yes|
|pal100bars|Generate PAL 100% color bars.|Yes|Yes|
|pal75bars|Generate PAL 75% color bars.|Yes|Yes|
|palettegen|Find the optimal palette for a given stream.|Yes|Yes|
|paletteuse|Use a palette to downsample an input video stream.|Yes|Yes|
|pan|Remix channels with coefficients (panning).|Yes|Yes|
|perms|Set permissions for the output video frame.|Yes|Yes|
|perspective|Correct the perspective of video.|Yes|Yes|
|phase|Phase shift fields.|Yes|Yes|
|photosensitivity|Filter out photosensitive epilepsy seizure-inducing flashes.|Yes|Yes|
|pixdesctest|Test pixel format definitions.|Yes|Yes|
|pixelize|Pixelize video.|Yes|Yes|
|pixscope|Pixel data analysis.|Yes|Yes|
|pp|Filter video using libpostproc.|Yes|Yes|
|pp7|Apply Postprocessing 7 filter.|Yes|Yes|
|premultiply|PreMultiply first stream with first plane of second stream.|No|Yes|
|prewitt|Apply prewitt operator.|Yes|Yes|
|prewitt\_opencl|Apply prewitt operator|Yes|Yes|
|procamp\_vaapi|ProcAmp (color balance) adjustments for hue, saturation, brightness, contrast|Yes|Yes|
|program\_opencl|Filter video using an OpenCL program|No|Yes|
|pseudocolor|Make pseudocolored video frames.|Yes|Yes|
|psnr|Calculate the PSNR between two video streams.|Yes|Yes|
|pullup|Pullup from field sequence to frames.|Yes|Yes|
|qp|Change video quantization parameters.|Yes|Yes|
|qrencode|Draw a QR code on top of video frames.|Yes|Yes|
|qrencodesrc|Generate a QR code.|Yes|Yes|
|quirc|Decode and show QR codes content.|Yes|Yes|
|random|Return random frames.|Yes|Yes|
|readeia608|Read EIA-608 Closed Caption codes from input video and write them to frame metadata.|Yes|Yes|
