aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2010-11-11 15:24:11 +0000
committerNicolas George <nicolas.george@normalesup.org>2010-11-11 15:24:11 +0000
commitba83c4bfb55d5c3fc6b3959edb0d3cda07a70241 (patch)
tree6fc4a3763a476c355f9efd4cf0713b65a2c4368a /doc
parent2c5168afed8ddd798dae5909dba85ae3b611f894 (diff)
downloadffmpeg-ba83c4bfb55d5c3fc6b3959edb0d3cda07a70241.tar.gz
MJPEG/AVI1 to JPEG/JFIF bitstream filter.
Originally committed as revision 25721 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'doc')
-rw-r--r--doc/bitstream_filters.texi37
-rw-r--r--doc/ffmpeg-doc.texi2
2 files changed, 38 insertions, 1 deletions
diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi
index 0bcb6c7f60..1ad67cd5ef 100644
--- a/doc/bitstream_filters.texi
+++ b/doc/bitstream_filters.texi
@@ -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
+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
diff --git a/doc/ffmpeg-doc.texi b/doc/ffmpeg-doc.texi
index b33ea5e7b4..e2e0df7f2f 100644
--- a/doc/ffmpeg-doc.texi
+++ b/doc/ffmpeg-doc.texi
@@ -522,7 +522,7 @@ Force video tag/fourcc.
@item -qphist
Show QP histogram.
@item -vbsf @var{bitstream_filter}
-Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump".
+Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump", "mjpeg2jpeg".
@example
ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
@end example