]> git.sesse.net Git - ffmpeg/blobdiff - doc/bitstream_filters.texi
nvenc: rename encoders
[ffmpeg] / doc / bitstream_filters.texi
index 0bcb6c7f606905285fe4d741c35e6c099ae7ec57..6e7f8781ee38377625f7c46959323168914ea94f 100644 (file)
@@ -1,7 +1,7 @@
 @chapter Bitstream Filters
 @c man begin BITSTREAM FILTERS
 
-When you configure your FFmpeg build, all the supported bitstream
+When you configure your Libav build, all the supported bitstream
 filters are enabled by default. You can list all available ones using
 the configure option @code{--list-bsfs}.
 
@@ -10,7 +10,7 @@ You can disable all the bitstream filters using the configure option
 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
+The option @code{-bsfs} of the av* 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.
@@ -25,6 +25,43 @@ Below is a description of the currently available bitstream filters.
 
 @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
+avconv -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
+avconv -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
+exiftran -i -9 frame*.jpg
+avconv -i frame_%d.jpg -c:v copy rotated.avi
+@end example
+
 @section mjpega_dump_header
 
 @section movsub