| 
							- @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.
 - 
 - The ff* tools have a -bsf option applied per stream, taking a
 - comma-separated list of filters, whose parameters follow the filter
 - name after a '='.
 - 
 - @example
 - ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1/opt2=str2][,filter2] OUTPUT
 - @end example
 - 
 - Below is a description of the currently available bitstream filters.
 - 
 - @section aac_adtstoasc
 - 
 - Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
 - bitstream filter.
 - 
 - This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
 - ADTS header and removes the ADTS header.
 - 
 - This is required for example when copying an AAC stream from a raw
 - ADTS AAC container to a FLV or a MOV/MP4 file.
 - 
 - @section chomp
 - 
 - Remove zero padding at the end of a packet.
 - 
 - @section dump_extra
 - 
 - Add extradata to the beginning of the filtered packets.
 - 
 - The additional argument specifies which packets should be filtered.
 - It accepts the values:
 - @table @samp
 - @item a
 - add extradata to all key packets, but only if @var{local_header} is
 - set in the @option{flags2} codec context field
 - 
 - @item k
 - add extradata to all key packets
 - 
 - @item e
 - add extradata to all packets
 - @end table
 - 
 - If not specified it is assumed @samp{k}.
 - 
 - For example the following @command{ffmpeg} command forces a global
 - header (thus disabling individual packet headers) in the H.264 packets
 - generated by the @code{libx264} encoder, but corrects them by adding
 - the header stored in extradata to the key packets:
 - @example
 - ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
 - @end example
 - 
 - @section h264_mp4toannexb
 - 
 - Convert an H.264 bitstream from length prefixed mode to start code
 - prefixed mode (as defined in the Annex B of the ITU-T H.264
 - specification).
 - 
 - This is required by some streaming formats, typically the MPEG-2
 - transport stream format ("mpegts").
 - 
 - For example to remux an MP4 file containing an H.264 stream to mpegts
 - format with @command{ffmpeg}, you can use the command:
 - 
 - @example
 - ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
 - @end example
 - 
 - @section imxdump
 - 
 - Modifies the bitstream to fit in MOV and to be usable by the Final Cut
 - Pro decoder. This filter only applies to the mpeg2video codec, and is
 - likely not needed for Final Cut Pro 7 and newer with the appropriate
 - @option{-tag:v}.
 - 
 - For example, to remux 30 MB/sec NTSC IMX to MOV:
 - 
 - @example
 - ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
 - @end example
 - 
 - @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 -c:v 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 -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
 - exiftran -i -9 frame*.jpg
 - ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
 - @end example
 - 
 - @section mjpega_dump_header
 - 
 - @section movsub
 - 
 - @section mp3_header_decompress
 - 
 - @section noise
 - 
 - Damages the contents of packets without damaging the container. Can be
 - used for fuzzing or testing error resilience/concealment.
 - 
 - @example
 - ffmpeg -i INPUT -c copy -bsf noise output.mkv
 - @end example
 - 
 - @section remove_extra
 - 
 - @c man end BITSTREAM FILTERS
 
 
  |