annotate ffmpeg/doc/ffmpeg-bitstream-filters.1 @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 .\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
yading@10 2 .\"
yading@10 3 .\" Standard preamble:
yading@10 4 .\" ========================================================================
yading@10 5 .de Sp \" Vertical space (when we can't use .PP)
yading@10 6 .if t .sp .5v
yading@10 7 .if n .sp
yading@10 8 ..
yading@10 9 .de Vb \" Begin verbatim text
yading@10 10 .ft CW
yading@10 11 .nf
yading@10 12 .ne \\$1
yading@10 13 ..
yading@10 14 .de Ve \" End verbatim text
yading@10 15 .ft R
yading@10 16 .fi
yading@10 17 ..
yading@10 18 .\" Set up some character translations and predefined strings. \*(-- will
yading@10 19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
yading@10 20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
yading@10 21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
yading@10 22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
yading@10 23 .\" nothing in troff, for use with C<>.
yading@10 24 .tr \(*W-
yading@10 25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
yading@10 26 .ie n \{\
yading@10 27 . ds -- \(*W-
yading@10 28 . ds PI pi
yading@10 29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
yading@10 30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
yading@10 31 . ds L" ""
yading@10 32 . ds R" ""
yading@10 33 . ds C` ""
yading@10 34 . ds C' ""
yading@10 35 'br\}
yading@10 36 .el\{\
yading@10 37 . ds -- \|\(em\|
yading@10 38 . ds PI \(*p
yading@10 39 . ds L" ``
yading@10 40 . ds R" ''
yading@10 41 'br\}
yading@10 42 .\"
yading@10 43 .\" Escape single quotes in literal strings from groff's Unicode transform.
yading@10 44 .ie \n(.g .ds Aq \(aq
yading@10 45 .el .ds Aq '
yading@10 46 .\"
yading@10 47 .\" If the F register is turned on, we'll generate index entries on stderr for
yading@10 48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
yading@10 49 .\" entries marked with X<> in POD. Of course, you'll have to process the
yading@10 50 .\" output yourself in some meaningful fashion.
yading@10 51 .ie \nF \{\
yading@10 52 . de IX
yading@10 53 . tm Index:\\$1\t\\n%\t"\\$2"
yading@10 54 ..
yading@10 55 . nr % 0
yading@10 56 . rr F
yading@10 57 .\}
yading@10 58 .el \{\
yading@10 59 . de IX
yading@10 60 ..
yading@10 61 .\}
yading@10 62 .\"
yading@10 63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
yading@10 64 .\" Fear. Run. Save yourself. No user-serviceable parts.
yading@10 65 . \" fudge factors for nroff and troff
yading@10 66 .if n \{\
yading@10 67 . ds #H 0
yading@10 68 . ds #V .8m
yading@10 69 . ds #F .3m
yading@10 70 . ds #[ \f1
yading@10 71 . ds #] \fP
yading@10 72 .\}
yading@10 73 .if t \{\
yading@10 74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
yading@10 75 . ds #V .6m
yading@10 76 . ds #F 0
yading@10 77 . ds #[ \&
yading@10 78 . ds #] \&
yading@10 79 .\}
yading@10 80 . \" simple accents for nroff and troff
yading@10 81 .if n \{\
yading@10 82 . ds ' \&
yading@10 83 . ds ` \&
yading@10 84 . ds ^ \&
yading@10 85 . ds , \&
yading@10 86 . ds ~ ~
yading@10 87 . ds /
yading@10 88 .\}
yading@10 89 .if t \{\
yading@10 90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
yading@10 91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
yading@10 92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
yading@10 93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
yading@10 94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
yading@10 95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
yading@10 96 .\}
yading@10 97 . \" troff and (daisy-wheel) nroff accents
yading@10 98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
yading@10 99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
yading@10 100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
yading@10 101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
yading@10 102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
yading@10 103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
yading@10 104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
yading@10 105 .ds ae a\h'-(\w'a'u*4/10)'e
yading@10 106 .ds Ae A\h'-(\w'A'u*4/10)'E
yading@10 107 . \" corrections for vroff
yading@10 108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
yading@10 109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
yading@10 110 . \" for low resolution devices (crt and lpr)
yading@10 111 .if \n(.H>23 .if \n(.V>19 \
yading@10 112 \{\
yading@10 113 . ds : e
yading@10 114 . ds 8 ss
yading@10 115 . ds o a
yading@10 116 . ds d- d\h'-1'\(ga
yading@10 117 . ds D- D\h'-1'\(hy
yading@10 118 . ds th \o'bp'
yading@10 119 . ds Th \o'LP'
yading@10 120 . ds ae ae
yading@10 121 . ds Ae AE
yading@10 122 .\}
yading@10 123 .rm #[ #] #H #V #F C
yading@10 124 .\" ========================================================================
yading@10 125 .\"
yading@10 126 .IX Title "FFMPEG-BITSTREAM-FILTERS 1"
yading@10 127 .TH FFMPEG-BITSTREAM-FILTERS 1 "2013-04-21" " " " "
yading@10 128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
yading@10 129 .\" way too many mistakes in technical documents.
yading@10 130 .if n .ad l
yading@10 131 .nh
yading@10 132 .SH "NAME"
yading@10 133 ffmpeg\-bitstream\-filters \- FFmpeg bitstream filters
yading@10 134 .SH "DESCRIPTION"
yading@10 135 .IX Header "DESCRIPTION"
yading@10 136 This document describes the bitstream filters provided by the
yading@10 137 libavcodec library.
yading@10 138 .PP
yading@10 139 A bitstream filter operates on the encoded stream data, and performs
yading@10 140 bitstream level modifications without performing decoding.
yading@10 141 .SH "BITSTREAM FILTERS"
yading@10 142 .IX Header "BITSTREAM FILTERS"
yading@10 143 When you configure your FFmpeg build, all the supported bitstream
yading@10 144 filters are enabled by default. You can list all available ones using
yading@10 145 the configure option \f(CW\*(C`\-\-list\-bsfs\*(C'\fR.
yading@10 146 .PP
yading@10 147 You can disable all the bitstream filters using the configure option
yading@10 148 \&\f(CW\*(C`\-\-disable\-bsfs\*(C'\fR, and selectively enable any bitstream filter using
yading@10 149 the option \f(CW\*(C`\-\-enable\-bsf=BSF\*(C'\fR, or you can disable a particular
yading@10 150 bitstream filter using the option \f(CW\*(C`\-\-disable\-bsf=BSF\*(C'\fR.
yading@10 151 .PP
yading@10 152 The option \f(CW\*(C`\-bsfs\*(C'\fR of the ff* tools will display the list of
yading@10 153 all the supported bitstream filters included in your build.
yading@10 154 .PP
yading@10 155 Below is a description of the currently available bitstream filters.
yading@10 156 .SS "aac_adtstoasc"
yading@10 157 .IX Subsection "aac_adtstoasc"
yading@10 158 .SS "chomp"
yading@10 159 .IX Subsection "chomp"
yading@10 160 .SS "dump_extradata"
yading@10 161 .IX Subsection "dump_extradata"
yading@10 162 .SS "h264_mp4toannexb"
yading@10 163 .IX Subsection "h264_mp4toannexb"
yading@10 164 Convert an H.264 bitstream from length prefixed mode to start code
yading@10 165 prefixed mode (as defined in the Annex B of the ITU-T H.264
yading@10 166 specification).
yading@10 167 .PP
yading@10 168 This is required by some streaming formats, typically the \s-1MPEG\-2\s0
yading@10 169 transport stream format (\*(L"mpegts\*(R").
yading@10 170 .PP
yading@10 171 For example to remux an \s-1MP4\s0 file containing an H.264 stream to mpegts
yading@10 172 format with \fBffmpeg\fR, you can use the command:
yading@10 173 .PP
yading@10 174 .Vb 1
yading@10 175 \& ffmpeg \-i INPUT.mp4 \-codec copy \-bsf:v h264_mp4toannexb OUTPUT.ts
yading@10 176 .Ve
yading@10 177 .SS "imx_dump_header"
yading@10 178 .IX Subsection "imx_dump_header"
yading@10 179 .SS "mjpeg2jpeg"
yading@10 180 .IX Subsection "mjpeg2jpeg"
yading@10 181 Convert \s-1MJPEG/AVI1\s0 packets to full \s-1JPEG/JFIF\s0 packets.
yading@10 182 .PP
yading@10 183 \&\s-1MJPEG\s0 is a video codec wherein each video frame is essentially a
yading@10 184 \&\s-1JPEG\s0 image. The individual frames can be extracted without loss,
yading@10 185 e.g. by
yading@10 186 .PP
yading@10 187 .Vb 1
yading@10 188 \& ffmpeg \-i ../some_mjpeg.avi \-c:v copy frames_%d.jpg
yading@10 189 .Ve
yading@10 190 .PP
yading@10 191 Unfortunately, these chunks are incomplete \s-1JPEG\s0 images, because
yading@10 192 they lack the \s-1DHT\s0 segment required for decoding. Quoting from
yading@10 193 <\fBhttp://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml\fR>:
yading@10 194 .PP
yading@10 195 Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
yading@10 196 commented that \*(L"\s-1MJPEG\s0, or at least the \s-1MJPEG\s0 in AVIs having the
yading@10 197 \&\s-1MJPG\s0 fourcc, is restricted \s-1JPEG\s0 with a fixed \*(-- and *omitted* \*(--
yading@10 198 Huffman table. The \s-1JPEG\s0 must be YCbCr colorspace, it must be 4:2:2,
yading@10 199 and it must use basic Huffman encoding, not arithmetic or
yading@10 200 progressive. . . . You can indeed extract the \s-1MJPEG\s0 frames and
yading@10 201 decode them with a regular \s-1JPEG\s0 decoder, but you have to prepend
yading@10 202 the \s-1DHT\s0 segment to them, or else the decoder won't have any idea
yading@10 203 how to decompress the data. The exact table necessary is given in
yading@10 204 the OpenDML spec.\*(R"
yading@10 205 .PP
yading@10 206 This bitstream filter patches the header of frames extracted from an \s-1MJPEG\s0
yading@10 207 stream (carrying the \s-1AVI1\s0 header \s-1ID\s0 and lacking a \s-1DHT\s0 segment) to
yading@10 208 produce fully qualified \s-1JPEG\s0 images.
yading@10 209 .PP
yading@10 210 .Vb 3
yading@10 211 \& ffmpeg \-i mjpeg\-movie.avi \-c:v copy \-bsf:v mjpeg2jpeg frame_%d.jpg
yading@10 212 \& exiftran \-i \-9 frame*.jpg
yading@10 213 \& ffmpeg \-i frame_%d.jpg \-c:v copy rotated.avi
yading@10 214 .Ve
yading@10 215 .SS "mjpega_dump_header"
yading@10 216 .IX Subsection "mjpega_dump_header"
yading@10 217 .SS "movsub"
yading@10 218 .IX Subsection "movsub"
yading@10 219 .SS "mp3_header_compress"
yading@10 220 .IX Subsection "mp3_header_compress"
yading@10 221 .SS "mp3_header_decompress"
yading@10 222 .IX Subsection "mp3_header_decompress"
yading@10 223 .SS "noise"
yading@10 224 .IX Subsection "noise"
yading@10 225 .SS "remove_extradata"
yading@10 226 .IX Subsection "remove_extradata"
yading@10 227 .SH "SEE ALSO"
yading@10 228 .IX Header "SEE ALSO"
yading@10 229 \&\fIffmpeg\fR\|(1), \fIffplay\fR\|(1), \fIffprobe\fR\|(1), \fIffserver\fR\|(1), \fIlibavcodec\fR\|(3)
yading@10 230 .SH "AUTHORS"
yading@10 231 .IX Header "AUTHORS"
yading@10 232 The FFmpeg developers.
yading@10 233 .PP
yading@10 234 For details about the authorship, see the Git history of the project
yading@10 235 (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
yading@10 236 \&\fBgit log\fR in the FFmpeg source directory, or browsing the
yading@10 237 online repository at <\fBhttp://source.ffmpeg.org\fR>.
yading@10 238 .PP
yading@10 239 Maintainers for the specific components are listed in the file
yading@10 240 \&\fI\s-1MAINTAINERS\s0\fR in the source code tree.