@chapter Bitstream Filters
@c man begin BITSTREAM FILTERS

When you configure your FFmpeg build, all the supported bitstream
filters are enabled by default. You can list all available ones using
the configure option @code{--list-bsfs}.

You can disable all the bitstream filters using the configure option
@code{--disable-bsfs}, and selectively enable any bitstream filter using
the option @code{--enable-bsf=BSF}, or you can disable a particular
bitstream filter using the option @code{--disable-bsf=BSF}.

The option @code{-bsfs} of the ff* tools will display the list of
all the supported bitstream filters included in your build.

Below is a description of the currently available bitstream filters.

@section aac_adtstoasc

@section chomp

@section dump_extradata

@section h264_mp4toannexb

@section imx_dump_header

@section mjpeg2jpeg

Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.

MJPEG is a video codec wherein each video frame is essentially a
JPEG image. The individual frames can be extracted without loss,
e.g. by

@example
ffmpeg -i ../some_mjpeg.avi -vcodec copy frames_%d.jpg
@end example

Unfortunately, these chunks are incomplete JPEG images, because
they lack the DHT segment required for decoding. Quoting from
@url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}:

Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
commented that "MJPEG, or at least the MJPEG in AVIs having the
MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* --
Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
and it must use basic Huffman encoding, not arithmetic or
progressive. . . . You can indeed extract the MJPEG frames and
decode them with a regular JPEG decoder, but you have to prepend
the DHT segment to them, or else the decoder won't have any idea
how to decompress the data. The exact table necessary is given in
the OpenDML spec."

This bitstream filter patches the header of frames extracted from an MJPEG
stream (carrying the AVI1 header ID and lacking a DHT segment) to
produce fully qualified JPEG images.

@example
ffmpeg -i mjpeg-movie.avi -vcodec copy -vbsf mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -vcodec copy rotated.avi
@end example

@section mjpega_dump_header

@section movsub

@section mp3_header_compress

@section mp3_header_decompress

@section noise

@section remove_extradata

@c man end BITSTREAM FILTERS
