Bump micro for VP8 emu-edge support.
[libav.git] / doc / general.texi
CommitLineData
d0e1cd3d
DB
1\input texinfo @c -*- texinfo -*-
2
3@settitle General Documentation
4@titlepage
5@sp 7
6@center @titlefont{General Documentation}
7@sp 3
8@end titlepage
9
10
11@chapter external libraries
12
13FFmpeg can be hooked up with a number of external libraries to add support
14for more formats. None of them are used by default, their use has to be
15explicitly requested by passing the appropriate flags to @file{./configure}.
16
87a84431 17@section OpenCORE AMR
d0e1cd3d 18
87a84431
DB
19FFmpeg can make use of the OpenCORE libraries for AMR-NB
20decoding/encoding and AMR-WB decoding.
0b175caa 21
1eb0811e 22Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for
0b175caa
DB
23installing the libraries. Then pass @code{--enable-libopencore-amrnb} and/or
24@code{--enable-libopencore-amrwb} to configure to enable the libraries.
25
26Note that OpenCORE is under the Apache License 2.0 (see
27@url{http://www.apache.org/licenses/LICENSE-2.0} for details), which is
28incompatible with the LGPL version 2.1 and GPL version 2. You have to
29upgrade FFmpeg's license to LGPL version 3 (or if you have enabled
30GPL components, GPL version 3) to use it.
31
d0e1cd3d
DB
32
33@chapter Supported File Formats and Codecs
34
0584b718 35You can use the @code{-formats} and @code{-codecs} options to have an exhaustive list.
d0e1cd3d
DB
36
37@section File Formats
38
39FFmpeg supports the following file formats through the @code{libavformat}
40library:
41
42@multitable @columnfractions .4 .1 .1 .4
b3de4544 43@item Name @tab Encoding @tab Decoding @tab Comments
64c2f20a 44@item 4xm @tab @tab X
c6b2dc34 45 @tab 4X Technologies format, used in some games.
f0b19bd3 46@item 8088flex TMV @tab @tab X
574b183d 47@item Adobe Filmstrip @tab X @tab X
39271be4 48@item Audio IFF (AIFF) @tab X @tab X
64c2f20a
DB
49@item American Laser Games MM @tab @tab X
50 @tab Multimedia format used in games like Mad Dog McCree.
39271be4 51@item 3GPP AMR @tab X @tab X
cd223e0b 52@item Apple HTTP Live Streaming @tab @tab X
c6b2dc34
DB
53@item ASF @tab X @tab X
54@item AVI @tab X @tab X
39271be4 55@item AVISynth @tab @tab X
c6b2dc34 56@item AVS @tab @tab X
d698c5d3 57 @tab Multimedia format used by the Creature Shock game.
913c3e2c
DB
58@item Beam Software SIFF @tab @tab X
59 @tab Audio and video format used in some games by Beam Software.
60@item Bethesda Softworks VID @tab @tab X
d698c5d3 61 @tab Used in some games from Bethesda Softworks.
2e375df5
PR
62@item Bink @tab @tab X
63 @tab Multimedia format used by many games.
913c3e2c
DB
64@item Brute Force & Ignorance @tab @tab X
65 @tab Used in the game Flash Traffic: City of Angels.
66@item Interplay C93 @tab @tab X
d698c5d3 67 @tab Used in the game Cyberia from Interplay.
913c3e2c 68@item Delphine Software International CIN @tab @tab X
d698c5d3 69 @tab Multimedia format used by Delphine Software games.
a3d995c1
MT
70@item CD+G @tab @tab X
71 @tab Video format used by CD+G karaoke disks
5f14b565
PR
72@item Core Audio Format @tab @tab X
73 @tab Apple Core Audio Format
39271be4 74@item CRC testing format @tab X @tab
913c3e2c 75@item Creative Voice @tab X @tab X
d698c5d3 76 @tab Created for the Sound Blaster Pro.
64c2f20a
DB
77@item CRYO APC @tab @tab X
78 @tab Audio format used in some games by CRYO Interactive Entertainment.
39271be4 79@item D-Cinema audio @tab X @tab X
e6565055 80@item Deluxe Paint Animation @tab @tab X
913c3e2c 81@item DV video @tab X @tab X
c6b2dc34 82@item DXA @tab @tab X
d698c5d3
DB
83 @tab This format is used in the non-Windows version of the Feeble Files
84 game and different game cutscenes repacked for use with ScummVM.
39271be4 85@item Electronic Arts cdata @tab @tab X
c6b2dc34 86@item Electronic Arts Multimedia @tab @tab X
d698c5d3 87 @tab Used in various EA games; files have extensions like WVE and UV2.
39271be4
DB
88@item FFM (FFserver live feed) @tab X @tab X
89@item Flash (SWF) @tab X @tab X
913c3e2c
DB
90@item Flash 9 (AVM2) @tab X @tab X
91 @tab Only embedded audio is decoded.
92@item FLI/FLC/FLX animation @tab @tab X
d698c5d3 93 @tab .fli/.flc files
dd2d651d 94@item Flash Video (FLV) @tab @tab X
d698c5d3 95 @tab Macromedia Flash video files
39271be4 96@item framecrc testing format @tab X @tab
055dc116
SG
97@item FunCom ISS @tab @tab X
98 @tab Audio format used in various games from FunCom like The Longest Journey.
39271be4 99@item GIF Animation @tab X @tab
c6b2dc34 100@item GXF @tab X @tab X
d698c5d3 101 @tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley
64c2f20a 102 playout servers.
dd2d651d 103@item id Quake II CIN video @tab @tab X
76ec3939 104@item id RoQ @tab X @tab X
d698c5d3 105 @tab Used in Quake III, Jedi Knight 2, other computer games.
3b39e273 106@item IEC61937 encapsulation @tab X @tab X
c6b2dc34 107@item IFF @tab @tab X
d698c5d3 108 @tab Interchange File Format
c6b2dc34 109@item Interplay MVE @tab @tab X
d698c5d3 110 @tab Format used in various Interplay computer games.
7c3c53c8
RP
111@item IV8 @tab @tab X
112 @tab A format generated by IndigoVision 8000 video server.
173bb37f
DC
113@item IVF (On2) @tab @tab X
114 @tab A format used by libvpx
c6b2dc34 115@item LMLM4 @tab @tab X
d698c5d3 116 @tab Used by Linux Media Labs MPEG-4 PCI boards
8878e3b2
TH
117@item LXF @tab @tab X
118 @tab VR native stream format, used by Leitch/Harris' video servers.
64c2f20a 119@item Matroska @tab X @tab X
39271be4 120@item Matroska audio @tab X @tab
fd5b124d 121@item FFmpeg metadata @tab X @tab X
a4651511 122 @tab Metadata in text format.
913c3e2c 123@item MAXIS XA @tab @tab X
d698c5d3 124 @tab Used in Sim City 3000; file extension .xa.
61dc238b 125@item MD Studio @tab @tab X
9d09ebf1 126@item Mobotix .mxg @tab @tab X
64c2f20a 127@item Monkey's Audio @tab @tab X
822cc8f7 128@item Motion Pixels MVI @tab @tab X
913c3e2c
DB
129@item MOV/QuickTime/MP4 @tab X @tab X
130 @tab 3GP, 3GP2, PSP, iPod variants supported
4d973c68
DB
131@item MP2 @tab X @tab X
132@item MP3 @tab X @tab X
913c3e2c
DB
133@item MPEG-1 System @tab X @tab X
134 @tab muxed audio and video, VCD format supported
135@item MPEG-PS (program stream) @tab X @tab X
136 @tab also known as @code{VOB} file, SVCD and DVD format supported
137@item MPEG-TS (transport stream) @tab X @tab X
d698c5d3 138 @tab also known as DVB Transport Stream
c6b2dc34 139@item MPEG-4 @tab X @tab X
d698c5d3 140 @tab MPEG-4 is a variant of QuickTime.
39271be4 141@item MIME multipart JPEG @tab X @tab
bac4c85c 142@item MSN TCP webcam @tab @tab X
d698c5d3 143 @tab Used by MSN Messenger webcam streams.
39271be4
DB
144@item MTV @tab @tab X
145@item Musepack @tab @tab X
146@item Musepack SV8 @tab @tab X
913c3e2c
DB
147@item Material eXchange Format (MXF) @tab X @tab X
148 @tab SMPTE 377M, used by D-Cinema, broadcast industry.
a9d3c669
BC
149@item Material eXchange Format (MXF), D-10 Mapping @tab X @tab X
150 @tab SMPTE 386M, D-10/IMX Mapping.
913c3e2c
DB
151@item NC camera feed @tab @tab X
152 @tab NC (AVIP NC4600) camera streams
ade29f99
JR
153@item NTT TwinVQ (VQF) @tab @tab X
154 @tab Nippon Telegraph and Telephone Corporation TwinVQ.
913c3e2c 155@item Nullsoft Streaming Video @tab @tab X
39271be4 156@item NuppelVideo @tab @tab X
c6b2dc34 157@item NUT @tab X @tab X
d698c5d3 158 @tab NUT Open Container Format
39271be4 159@item Ogg @tab X @tab X
913c3e2c 160@item TechnoTrend PVA @tab @tab X
d698c5d3 161 @tab Used by TechnoTrend DVB PCI boards.
cdce0fb8 162@item QCP @tab @tab X
43dedc1e 163@item raw ADTS (AAC) @tab X @tab X
76ec3939 164@item raw AC-3 @tab X @tab X
de295976 165@item raw Chinese AVS video @tab X @tab X
43dedc1e
DB
166@item raw CRI ADX @tab X @tab X
167@item raw Dirac @tab X @tab X
168@item raw DNxHD @tab X @tab X
169@item raw DTS @tab X @tab X
170@item raw E-AC-3 @tab X @tab X
171@item raw FLAC @tab X @tab X
172@item raw GSM @tab @tab X
173@item raw H.261 @tab X @tab X
174@item raw H.263 @tab X @tab X
175@item raw H.264 @tab X @tab X
176@item raw Ingenient MJPEG @tab @tab X
76ec3939 177@item raw MJPEG @tab X @tab X
43dedc1e
DB
178@item raw MLP @tab @tab X
179@item raw MPEG @tab @tab X
180@item raw MPEG-1 @tab @tab X
181@item raw MPEG-2 @tab @tab X
182@item raw MPEG-4 @tab X @tab X
183@item raw NULL @tab X @tab
81b55ee5 184@item raw video @tab X @tab X
43dedc1e
DB
185@item raw id RoQ @tab X @tab
186@item raw Shorten @tab @tab X
23d9cc45 187@item raw TrueHD @tab X @tab X
43dedc1e
DB
188@item raw VC-1 @tab @tab X
189@item raw PCM A-law @tab X @tab X
190@item raw PCM mu-law @tab X @tab X
191@item raw PCM signed 8 bit @tab X @tab X
192@item raw PCM signed 16 bit big-endian @tab X @tab X
193@item raw PCM signed 16 bit little-endian @tab X @tab X
194@item raw PCM signed 24 bit big-endian @tab X @tab X
195@item raw PCM signed 24 bit little-endian @tab X @tab X
196@item raw PCM signed 32 bit big-endian @tab X @tab X
197@item raw PCM signed 32 bit little-endian @tab X @tab X
198@item raw PCM unsigned 8 bit @tab X @tab X
199@item raw PCM unsigned 16 bit big-endian @tab X @tab X
200@item raw PCM unsigned 16 bit little-endian @tab X @tab X
201@item raw PCM unsigned 24 bit big-endian @tab X @tab X
202@item raw PCM unsigned 24 bit little-endian @tab X @tab X
203@item raw PCM unsigned 32 bit big-endian @tab X @tab X
204@item raw PCM unsigned 32 bit little-endian @tab X @tab X
205@item raw PCM floating-point 32 bit big-endian @tab X @tab X
206@item raw PCM floating-point 32 bit little-endian @tab X @tab X
207@item raw PCM floating-point 64 bit big-endian @tab X @tab X
208@item raw PCM floating-point 64 bit little-endian @tab X @tab X
39271be4 209@item RDT @tab @tab X
913c3e2c 210@item REDCODE R3D @tab @tab X
7eb68edb 211 @tab File format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio.
64c2f20a 212@item RealMedia @tab X @tab X
39271be4 213@item Redirector @tab @tab X
913c3e2c 214@item Renderware TeXture Dictionary @tab @tab X
c6b2dc34 215@item RL2 @tab @tab X
d698c5d3 216 @tab Audio and video format used in some games by Entertainment Software Partners.
39271be4 217@item RPL/ARMovie @tab @tab X
e8723e24 218@item Lego Mindstorms RSO @tab X @tab X
6bf22e18
S
219@item RTMP @tab X @tab X
220 @tab Output is performed by publishing stream to RTMP server
44594cc7 221@item RTP @tab X @tab X
6f5a3d0a 222@item RTSP @tab X @tab X
01c8d258 223@item SAP @tab X @tab X
39271be4 224@item SDP @tab @tab X
c6b2dc34 225@item Sega FILM/CPK @tab @tab X
d698c5d3 226 @tab Used in many Sega Saturn console games.
913c3e2c 227@item Sierra SOL @tab @tab X
d698c5d3 228 @tab .sol files used in Sierra Online games.
c6b2dc34 229@item Sierra VMD @tab @tab X
d698c5d3 230 @tab Used in Sierra CD-ROM games.
c6b2dc34 231@item Smacker @tab @tab X
d698c5d3 232 @tab Multimedia format used by many games.
913c3e2c
DB
233@item Sony OpenMG (OMA) @tab @tab X
234 @tab Audio format used in Sony Sonic Stage and Sony Vegas.
235@item Sony PlayStation STR @tab @tab X
740e89cf 236@item Sony Wave64 (W64) @tab @tab X
cbfe5bee 237@item SoX native format @tab X @tab X
64c2f20a 238@item SUN AU format @tab X @tab X
5a717094 239@item Text files @tab @tab X
c6b2dc34 240@item THP @tab @tab X
d698c5d3 241 @tab Used on the Nintendo GameCube.
913c3e2c
DB
242@item Tiertex Limited SEQ @tab @tab X
243 @tab Tiertex .seq files used in the DOS CD-ROM version of the game Flashback.
39271be4
DB
244@item True Audio @tab @tab X
245@item VC-1 test bitstream @tab X @tab X
c6b2dc34 246@item WAV @tab X @tab X
39271be4 247@item WavPack @tab @tab X
316d6c15 248@item WebM @tab X @tab X
82ca054a 249@item Windows Televison (WTV) @tab @tab X
913c3e2c 250@item Wing Commander III movie @tab @tab X
d698c5d3 251 @tab Multimedia format used in Origin's Wing Commander III computer game.
913c3e2c
DB
252@item Westwood Studios audio @tab @tab X
253 @tab Multimedia format used in Westwood Studios games.
254@item Westwood Studios VQA @tab @tab X
255 @tab Multimedia format used in Westwood Studios games.
39271be4 256@item YUV4MPEG pipe @tab X @tab X
148bcae9 257@item Psygnosis YOP @tab @tab X
d0e1cd3d
DB
258@end multitable
259
260@code{X} means that encoding (resp. decoding) is supported.
261
262@section Image Formats
263
264FFmpeg can read and write images for each frame of a video sequence. The
265following image formats are supported:
266
267@multitable @columnfractions .4 .1 .1 .4
b3de4544 268@item Name @tab Encoding @tab Decoding @tab Comments
9db80acb
DV
269@item .Y.U.V @tab X @tab X
270 @tab one raw file per component
271@item animated GIF @tab X @tab X
272 @tab Only uncompressed GIFs are generated.
f2937cc6
DV
273@item BMP @tab X @tab X
274 @tab Microsoft BMP image
94d3d6a4
JC
275@item DPX @tab @tab X
276 @tab Digital Picture Exchange
9db80acb
DV
277@item JPEG @tab X @tab X
278 @tab Progressive JPEG is not supported.
279@item JPEG 2000 @tab @tab E
280 @tab decoding supported through external library libopenjpeg
f2937cc6
DV
281@item JPEG-LS @tab X @tab X
282@item LJPEG @tab X @tab
283 @tab Lossless JPEG
ddea12a6 284@item PAM @tab X @tab X
9db80acb 285 @tab PAM is a PNM extension with alpha support.
ddea12a6 286@item PBM @tab X @tab X
f2937cc6 287 @tab Portable BitMap image
effcedf7 288@item PCX @tab X @tab X
9db80acb 289 @tab PC Paintbrush
ddea12a6 290@item PGM @tab X @tab X
314511ab 291 @tab Portable GrayMap image
ddea12a6 292@item PGMYUV @tab X @tab X
9db80acb 293 @tab PGM with U and V components in YUV 4:2:0
a526d619
PR
294@item PIC @tab @tab X
295 @tab Pictor/PC Paint
9db80acb
DV
296@item PNG @tab X @tab X
297 @tab 2/4 bpp not supported yet
ddea12a6 298@item PPM @tab X @tab X
314511ab 299 @tab Portable PixelMap image
9db80acb
DV
300@item PTX @tab @tab X
301 @tab V.Flash PTX format
9db80acb
DV
302@item SGI @tab X @tab X
303 @tab SGI RGB image format
a1c5b6ec
JR
304@item Sun Rasterfile @tab @tab X
305 @tab Sun RAS image format
9db80acb
DV
306@item TIFF @tab X @tab X
307 @tab YUV, JPEG and some extension is not supported yet.
a1c5b6ec
JR
308@item Truevision Targa @tab X @tab X
309 @tab Targa (.TGA) image format
d0e1cd3d
DB
310@end multitable
311
312@code{X} means that encoding (resp. decoding) is supported.
313
9a77d59a
JM
314@code{E} means that support is provided through an external library.
315
d0e1cd3d
DB
316@section Video Codecs
317
318@multitable @columnfractions .4 .1 .1 .4
b3de4544 319@item Name @tab Encoding @tab Decoding @tab Comments
9510f59a 320@item 4X Movie @tab @tab X
d698c5d3 321 @tab Used in certain computer games.
f0b19bd3 322@item 8088flex TMV @tab @tab X
9510f59a
DB
323@item 8SVX exponential @tab @tab X
324@item 8SVX fibonacci @tab @tab X
8fb9e198
TB
325@item A64 multicolor @tab X @tab
326 @tab Creates video suitable to be played on a commodore 64 (multicolor mode).
913c3e2c 327@item American Laser Games MM @tab @tab X
d698c5d3 328 @tab Used in games like Mad Dog McCree.
a1c5b6ec 329@item AMV Video @tab @tab X
d698c5d3 330 @tab Used in Chinese MP3 players.
5a717094 331@item ANSI/ASCII art @tab @tab X
d66d8b83
DB
332@item Apple MJPEG-B @tab @tab X
333@item Apple QuickDraw @tab @tab X
d698c5d3 334 @tab fourcc: qdrw
d66d8b83 335@item Asus v1 @tab X @tab X
d698c5d3 336 @tab fourcc: ASV1
d66d8b83 337@item Asus v2 @tab X @tab X
d698c5d3 338 @tab fourcc: ASV2
d66d8b83 339@item ATI VCR1 @tab @tab X
d698c5d3 340 @tab fourcc: VCR1
d66d8b83 341@item ATI VCR2 @tab @tab X
d698c5d3 342 @tab fourcc: VCR2
588f8cd8 343@item Auravision Aura @tab @tab X
ce293510 344@item Auravision Aura 2 @tab @tab X
dd2d651d 345@item Autodesk Animator Flic video @tab @tab X
d66d8b83 346@item Autodesk RLE @tab @tab X
d698c5d3 347 @tab fourcc: AASC
9510f59a 348@item AVS (Audio Video Standard) video @tab @tab X
d698c5d3 349 @tab Video encoding used by the Creature Shock game.
68dddf53 350@item Beam Software VB @tab @tab X
9510f59a 351@item Bethesda VID video @tab @tab X
d698c5d3 352 @tab Used in some games from Bethesda Softworks.
342c7dfd
KS
353@item Bink Video @tab @tab X
354 @tab Support for version 'b' is missing.
9510f59a
DB
355@item Brute Force & Ignorance @tab @tab X
356 @tab Used in the game Flash Traffic: City of Angels.
bac4c85c 357@item C93 video @tab @tab X
d698c5d3 358 @tab Codec used in Cyberia game.
d66d8b83 359@item CamStudio @tab @tab X
d698c5d3 360 @tab fourcc: CSCD
a3d995c1
MT
361@item CD+G @tab @tab X
362 @tab Video codec for CD+G karaoke disks
de295976
SG
363@item Chinese AVS video @tab E @tab X
364 @tab AVS1-P2, JiZhun profile, encoding through external library libxavs
9510f59a
DB
365@item Delphine Software International CIN video @tab @tab X
366 @tab Codec used in Delphine Software International games.
d66d8b83
DB
367@item Cinepak @tab @tab X
368@item Cirrus Logic AccuPak @tab @tab X
d698c5d3 369 @tab fourcc: CLJR
9510f59a 370@item Creative YUV (CYUV) @tab @tab X
82ced5a9 371@item Dirac @tab E @tab E
360f980b 372 @tab supported through external libdirac/libschroedinger libraries
a1ae40fd 373@item Deluxe Paint Animation @tab @tab X
9510f59a
DB
374@item DNxHD @tab X @tab X
375 @tab aka SMPTE VC3
68dddf53 376@item Duck TrueMotion 1.0 @tab @tab X
d698c5d3 377 @tab fourcc: DUCK
68dddf53 378@item Duck TrueMotion 2.0 @tab @tab X
d698c5d3 379 @tab fourcc: TM20
9510f59a
DB
380@item DV (Digital Video) @tab X @tab X
381@item Feeble Files/ScummVM DXA @tab @tab X
d698c5d3 382 @tab Codec originally used in Feeble Files game.
9510f59a 383@item Electronic Arts CMV video @tab @tab X
d698c5d3 384 @tab Used in NHL 95 game.
c63ea92b 385@item Electronic Arts Madcow video @tab @tab X
dd2d651d
DB
386@item Electronic Arts TGV video @tab @tab X
387@item Electronic Arts TGQ video @tab @tab X
388@item Electronic Arts TQI video @tab @tab X
389@item Escape 124 @tab @tab X
f4258b13 390@item FFmpeg video codec #1 @tab X @tab X
d698c5d3 391 @tab experimental lossless codec (fourcc: FFV1)
dd2d651d 392@item Flash Screen Video v1 @tab X @tab X
d698c5d3 393 @tab fourcc: FSV1
dd2d651d 394@item Flash Video (FLV) @tab X @tab X
d698c5d3 395 @tab Sorenson H.263 used in Flash
dd2d651d 396@item Fraps @tab @tab X
d66d8b83 397@item H.261 @tab X @tab X
dd2d651d
DB
398@item H.263 / H.263-1996 @tab X @tab X
399@item H.263+ / H.263-1998 / H.263 version 2 @tab X @tab X
400@item H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 @tab E @tab X
360f980b 401 @tab encoding supported through external library libx264
dd2d651d 402@item H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration) @tab E @tab X
d66d8b83 403@item HuffYUV @tab X @tab X
dd2d651d 404@item HuffYUV FFmpeg variant @tab X @tab X
d66d8b83 405@item IBM Ultimotion @tab @tab X
d698c5d3 406 @tab fourcc: ULTI
bac4c85c 407@item id Cinematic video @tab @tab X
d698c5d3 408 @tab Used in Quake II.
a1c5b6ec 409@item id RoQ video @tab X @tab X
d698c5d3 410 @tab Used in Quake III, Jedi Knight 2, other computer games.
b9e06ddd
PR
411@item IFF ILBM @tab @tab X
412 @tab IFF interlaved bitmap
413@item IFF ByteRun1 @tab @tab X
414 @tab IFF run length encoded bitmap
dd2d651d
DB
415@item Intel H.263 @tab @tab X
416@item Intel Indeo 2 @tab @tab X
d66d8b83 417@item Intel Indeo 3 @tab @tab X
5bebe94d 418@item Intel Indeo 5 @tab @tab X
dd2d651d 419@item Interplay C93 @tab @tab X
9510f59a 420 @tab Used in the game Cyberia from Interplay.
dd2d651d 421@item Interplay MVE video @tab @tab X
d698c5d3 422 @tab Used in Interplay .MVE files.
dd2d651d 423@item Karl Morton's video codec @tab @tab X
d698c5d3 424 @tab Codec used in Worms games.
bf354122
DV
425@item Kega Game Video (KGV1) @tab @tab X
426 @tab Kega emulator screen capture codec.
dd2d651d
DB
427@item LCL (LossLess Codec Library) MSZH @tab @tab X
428@item LCL (LossLess Codec Library) ZLIB @tab E @tab E
d66d8b83
DB
429@item LOCO @tab @tab X
430@item lossless MJPEG @tab X @tab X
431@item Microsoft RLE @tab @tab X
dd2d651d 432@item Microsoft Video 1 @tab @tab X
d66d8b83 433@item Mimic @tab @tab X
d698c5d3 434 @tab Used in MSN Messenger Webcam streams.
d66d8b83 435@item Miro VideoXL @tab @tab X
d698c5d3 436 @tab fourcc: VIXL
eacf8613 437@item MJPEG (Motion JPEG) @tab X @tab X
dd2d651d
DB
438@item Motion Pixels video @tab @tab X
439@item MPEG-1 video @tab X @tab X
440@item MPEG-1/2 video XvMC (X-Video Motion Compensation) @tab @tab X
441@item MPEG-1/2 video (VDPAU acceleration) @tab @tab X
442@item MPEG-2 video @tab X @tab X
443@item MPEG-4 part 2 @tab X @tab X
444 @ libxvidcore can be used alternatively for encoding.
f7af2c1d 445@item MPEG-4 part 2 Microsoft variant version 1 @tab @tab X
dd2d651d
DB
446@item MPEG-4 part 2 Microsoft variant version 2 @tab X @tab X
447@item MPEG-4 part 2 Microsoft variant version 3 @tab X @tab X
eacf8613 448@item Nintendo Gamecube THP video @tab @tab X
641992de
DB
449@item NuppelVideo/RTjpeg @tab @tab X
450 @tab Video encoding used in NuppelVideo files.
d66d8b83 451@item On2 VP3 @tab @tab X
d698c5d3 452 @tab still experimental
d66d8b83 453@item On2 VP5 @tab @tab X
d698c5d3 454 @tab fourcc: VP50
d66d8b83 455@item On2 VP6 @tab @tab X
d698c5d3 456 @tab fourcc: VP60,VP61,VP62
3b636f21
DC
457@item VP8 @tab E @tab X
458 @tab fourcc: VP80, encoding supported through external library libvpx
d66d8b83 459@item planar RGB @tab @tab X
d698c5d3 460 @tab fourcc: 8BPS
a1c5b6ec 461@item Q-team QPEG @tab @tab X
d698c5d3 462 @tab fourccs: QPEG, Q1.0, Q1.1
9510f59a 463@item QuickTime 8BPS video @tab @tab X
a1c5b6ec
JR
464@item QuickTime Animation (RLE) video @tab X @tab X
465 @tab fourcc: 'rle '
466@item QuickTime Graphics (SMC) @tab @tab X
467 @tab fourcc: 'smc '
468@item QuickTime video (RPZA) @tab @tab X
469 @tab fourcc: rpza
43836928 470@item R10K AJA Kona 10-bit RGB Codec @tab @tab X
4aaab0a3 471@item R210 Quicktime Uncompressed RGB 10-bit @tab @tab X
a1c5b6ec 472@item Raw Video @tab X @tab X
d0e1cd3d
DB
473@item RealVideo 1.0 @tab X @tab X
474@item RealVideo 2.0 @tab X @tab X
6beb8b26
KS
475@item RealVideo 3.0 @tab @tab X
476 @tab still far from ideal
11c0f9ec 477@item RealVideo 4.0 @tab @tab X
68dddf53 478@item Renderware TXD (TeXture Dictionary) @tab @tab X
d698c5d3 479 @tab Texture dictionaries used by the Renderware Engine.
a1c5b6ec
JR
480@item RL2 video @tab @tab X
481 @tab used in some games by Entertainment Software Partners
68dddf53
JR
482@item Sierra VMD video @tab @tab X
483 @tab Used in Sierra VMD files.
bac4c85c 484@item Smacker video @tab @tab X
d698c5d3 485 @tab Video encoding used in Smacker.
68dddf53 486@item SMPTE VC-1 @tab @tab X
d66d8b83 487@item Snow @tab X @tab X
d698c5d3 488 @tab experimental wavelet codec (fourcc: SNOW)
eacf8613 489@item Sony PlayStation MDEC (Motion DECoder) @tab @tab X
a1c5b6ec 490@item Sorenson Vector Quantizer 1 @tab X @tab X
d698c5d3 491 @tab fourcc: SVQ1
a1c5b6ec 492@item Sorenson Vector Quantizer 3 @tab @tab X
d698c5d3 493 @tab fourcc: SVQ3
a1c5b6ec 494@item Sunplus JPEG (SP5X) @tab @tab X
d698c5d3 495 @tab fourcc: SP5X
68dddf53 496@item TechSmith Screen Capture Codec @tab @tab X
d698c5d3 497 @tab fourcc: TSCC
82ced5a9 498@item Theora @tab E @tab X
360f980b 499 @tab encoding supported through external library libtheora
a1c5b6ec 500@item Tiertex Limited SEQ video @tab @tab X
d698c5d3 501 @tab Codec used in DOS CD-ROM FlashBack game.
ca0bb1c4 502@item V210 Quicktime Uncompressed 4:2:2 10-bit @tab X @tab X
eacf8613 503@item VMware Screen Codec / VMware Video @tab @tab X
d698c5d3 504 @tab Codec used in videos captured by VMware.
eacf8613 505@item Westwood Studios VQA (Vector Quantized Animation) video @tab @tab X
dd2d651d 506@item Windows Media Video 7 @tab X @tab X
eacf8613 507@item Windows Media Video 8 @tab X @tab X
68dddf53
JR
508@item Windows Media Video 9 @tab @tab X
509 @tab not completely working
eacf8613
JR
510@item Wing Commander III / Xan @tab @tab X
511 @tab Used in Wing Commander III .MVE files.
d66d8b83
DB
512@item Winnov WNV1 @tab @tab X
513@item WMV7 @tab X @tab X
39271be4 514@item YAMAHA SMAF @tab X @tab X
148bcae9 515@item Psygnosis YOP Video @tab @tab X
d66d8b83 516@item ZLIB @tab X @tab X
d698c5d3 517 @tab part of LCL, encoder experimental
eacf8613 518@item Zip Motion Blocks Video @tab X @tab X
d698c5d3 519 @tab Encoder works only in PAL8.
d0e1cd3d
DB
520@end multitable
521
522@code{X} means that encoding (resp. decoding) is supported.
523
82ced5a9
DB
524@code{E} means that support is provided through an external library.
525
d0e1cd3d
DB
526@section Audio Codecs
527
485ec4f1 528@multitable @columnfractions .4 .1 .1 .4
b3de4544 529@item Name @tab Encoding @tab Decoding @tab Comments
16d81b27 530@item 8SVX audio @tab @tab X
82ced5a9 531@item AAC @tab E @tab X
360f980b 532 @tab encoding supported through external library libfaac
c76d1bb2 533@item AC-3 @tab IX @tab X
fd75cedd
DB
534@item ADPCM 4X Movie @tab @tab X
535@item ADPCM CDROM XA @tab @tab X
536@item ADPCM Creative Technology @tab @tab X
537 @tab 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2
538@item ADPCM Electronic Arts @tab @tab X
539 @tab Used in various EA titles.
540@item ADPCM Electronic Arts Maxis CDROM XS @tab @tab X
541 @tab Used in Sim City 3000.
542@item ADPCM Electronic Arts R1 @tab @tab X
543@item ADPCM Electronic Arts R2 @tab @tab X
544@item ADPCM Electronic Arts R3 @tab @tab X
545@item ADPCM Electronic Arts XAS @tab @tab X
21e681ba 546@item ADPCM G.722 @tab X @tab X
fd75cedd
DB
547@item ADPCM G.726 @tab X @tab X
548@item ADPCM IMA AMV @tab @tab X
549 @tab Used in AMV files
550@item ADPCM IMA Electronic Arts EACS @tab @tab X
551@item ADPCM IMA Electronic Arts SEAD @tab @tab X
552@item ADPCM IMA Funcom @tab @tab X
553@item ADPCM IMA QuickTime @tab X @tab X
554@item ADPCM IMA Loki SDL MJPEG @tab @tab X
555@item ADPCM IMA WAV @tab X @tab X
556@item ADPCM IMA Westwood @tab @tab X
557@item ADPCM ISS IMA @tab @tab X
558 @tab Used in FunCom games.
559@item ADPCM IMA Duck DK3 @tab @tab X
560 @tab Used in some Sega Saturn console games.
561@item ADPCM IMA Duck DK4 @tab @tab X
562 @tab Used in some Sega Saturn console games.
563@item ADPCM Microsoft @tab X @tab X
564@item ADPCM MS IMA @tab X @tab X
565@item ADPCM Nintendo Gamecube THP @tab @tab X
566@item ADPCM QT IMA @tab X @tab X
567@item ADPCM SEGA CRI ADX @tab X @tab X
568 @tab Used in Sega Dreamcast games.
569@item ADPCM Shockwave Flash @tab X @tab X
570@item ADPCM SMJPEG IMA @tab @tab X
571 @tab Used in certain Loki game ports.
572@item ADPCM Sound Blaster Pro 2-bit @tab @tab X
573@item ADPCM Sound Blaster Pro 2.6-bit @tab @tab X
574@item ADPCM Sound Blaster Pro 4-bit @tab @tab X
575@item ADPCM Westwood Studios IMA @tab @tab X
576 @tab Used in Westwood Studios games like Command and Conquer.
577@item ADPCM Yamaha @tab X @tab X
2bcaf2fe 578@item AMR-NB @tab E @tab X
4fe3edaa 579 @tab encoding supported through external library libopencore-amrnb
2b2a597e 580@item AMR-WB @tab @tab X
833e90dd 581@item Apple lossless audio @tab X @tab X
d698c5d3 582 @tab QuickTime fourcc 'alac'
61dc238b 583@item Atrac 1 @tab @tab X
9510f59a 584@item Atrac 3 @tab @tab X
c0d3f516
PR
585@item Bink Audio @tab @tab X
586 @tab Used in Bink and Smacker files in many games.
9510f59a 587@item Delphine Software International CIN audio @tab @tab X
d698c5d3 588 @tab Codec used in Delphine Software International games.
9510f59a
DB
589@item COOK @tab @tab X
590 @tab All versions except 5.1 are supported.
9510f59a 591@item DCA (DTS Coherent Acoustics) @tab @tab X
12dd57fd
DB
592@item DPCM id RoQ @tab X @tab X
593 @tab Used in Quake III, Jedi Knight 2, other computer games.
594@item DPCM Interplay @tab @tab X
595 @tab Used in various Interplay computer games.
596@item DPCM Sierra Online @tab @tab X
597 @tab Used in Sierra Online game audio files.
598@item DPCM Sol @tab @tab X
599@item DPCM Xan @tab @tab X
eff9011d 600 @tab Used in Origin's Wing Commander IV AVI files.
16d81b27 601@item DSP Group TrueSpeech @tab @tab X
16d81b27 602@item DV audio @tab @tab X
44723c84 603@item Enhanced AC-3 @tab @tab X
dd2d651d 604@item FLAC (Free Lossless Audio Codec) @tab X @tab IX
b576934d
RD
605@item GSM @tab E @tab X
606 @tab encoding supported through external library libgsm
607@item GSM Microsoft variant @tab E @tab X
608 @tab encoding supported through external library libgsm
dd2d651d 609@item IMC (Intel Music Coder) @tab @tab X
dd2d651d
DB
610@item MACE (Macintosh Audio Compression/Expansion) 3:1 @tab @tab X
611@item MACE (Macintosh Audio Compression/Expansion) 6:1 @tab @tab X
9ba4821d
RP
612@item MLP (Meridian Lossless Packing) @tab @tab X
613 @tab Used in DVD-Audio discs.
16d81b27 614@item Monkey's Audio @tab @tab X
d698c5d3 615 @tab Only versions 3.97-3.99 are supported.
dd2d651d
DB
616@item MP1 (MPEG audio layer 1) @tab @tab IX
617@item MP2 (MPEG audio layer 2) @tab IX @tab IX
618@item MP3 (MPEG audio layer 3) @tab E @tab IX
619 @tab encoding supported through external library LAME, ADU MP3 and MP3onMP4 also supported
99971952 620@item MPEG-4 Audio Lossless Coding (ALS) @tab @tab X
dd2d651d
DB
621@item Musepack SV7 @tab @tab X
622@item Musepack SV8 @tab @tab X
641992de 623@item Nellymoser Asao @tab X @tab X
641992de
DB
624@item PCM A-law @tab X @tab X
625@item PCM mu-law @tab X @tab X
626@item PCM 16-bit little-endian planar @tab @tab X
627@item PCM 32-bit floating point big-endian @tab X @tab X
628@item PCM 32-bit floating point little-endian @tab X @tab X
629@item PCM 64-bit floating point big-endian @tab X @tab X
630@item PCM 64-bit floating point little-endian @tab X @tab X
631@item PCM D-Cinema audio signed 24-bit @tab X @tab X
632@item PCM signed 8-bit @tab X @tab X
633@item PCM signed 16-bit big-endian @tab X @tab X
634@item PCM signed 16-bit little-endian @tab X @tab X
635@item PCM signed 24-bit big-endian @tab X @tab X
636@item PCM signed 24-bit little-endian @tab X @tab X
637@item PCM signed 32-bit big-endian @tab X @tab X
638@item PCM signed 32-bit little-endian @tab X @tab X
5dd3707b 639@item PCM signed 16/20/24-bit big-endian in MPEG-TS @tab @tab X
641992de
DB
640@item PCM unsigned 8-bit @tab X @tab X
641@item PCM unsigned 16-bit big-endian @tab X @tab X
642@item PCM unsigned 16-bit little-endian @tab X @tab X
643@item PCM unsigned 24-bit big-endian @tab X @tab X
644@item PCM unsigned 24-bit little-endian @tab X @tab X
645@item PCM unsigned 32-bit big-endian @tab X @tab X
646@item PCM unsigned 32-bit little-endian @tab X @tab X
647@item PCM Zork @tab X @tab X
73b458e3 648@item QCELP / PureVoice @tab @tab X
a1c5b6ec 649@item QDesign Music Codec 2 @tab @tab X
d698c5d3 650 @tab There are still some distortions.
d31ba231 651@item RealAudio 1.0 (14.4K) @tab X @tab X
d698c5d3 652 @tab Real 14400 bit/s codec
a1c5b6ec 653@item RealAudio 2.0 (28.8K) @tab @tab X
d698c5d3 654 @tab Real 28800 bit/s codec
a1c5b6ec 655@item RealAudio 3.0 (dnet) @tab IX @tab X
a692130f 656 @tab Real low bitrate AC-3 codec
7bd3096f 657@item RealAudio SIPR / ACELP.NET @tab @tab X
bac4c85c 658@item Shorten @tab @tab X
68dddf53
JR
659@item Sierra VMD audio @tab @tab X
660 @tab Used in Sierra VMD files.
bac4c85c 661@item Smacker audio @tab @tab X
e6fa1ca5
JR
662@item Sonic @tab X @tab X
663 @tab experimental codec
664@item Sonic lossless @tab X @tab X
665 @tab experimental codec
82ced5a9 666@item Speex @tab @tab E
360f980b 667 @tab supported through external library libspeex
16d81b27 668@item True Audio (TTA) @tab @tab X
9ba4821d
RP
669@item TrueHD @tab @tab X
670 @tab Used in HD-DVD and Blu-Ray discs.
7bd47335 671@item TwinVQ (VQF flavor) @tab @tab X
dd2d651d 672@item Vorbis @tab E @tab X
19fcd66c 673 @tab A native but very primitive encoder exists.
bac4c85c 674@item WavPack @tab @tab X
eacf8613
JR
675@item Westwood Audio (SND1) @tab @tab X
676@item Windows Media Audio 1 @tab X @tab X
677@item Windows Media Audio 2 @tab X @tab X
c1061cc7 678@item Windows Media Audio Pro @tab @tab X
fa65584f 679@item Windows Media Audio Voice @tab @tab X
d0e1cd3d
DB
680@end multitable
681
682@code{X} means that encoding (resp. decoding) is supported.
683
82ced5a9
DB
684@code{E} means that support is provided through an external library.
685
d0e1cd3d
DB
686@code{I} means that an integer-only version is available, too (ensures high
687performance on systems without hardware floating point support).
688
bd3151f2
DB
689@section Subtitle Formats
690
000bbebb 691@multitable @columnfractions .4 .1 .1 .1 .1
9afc2917 692@item Name @tab Muxing @tab Demuxing @tab Encoding @tab Decoding
913c3e2c 693@item SSA/ASS @tab X @tab X
9afc2917
DB
694@item DVB @tab X @tab X @tab X @tab X
695@item DVD @tab X @tab X @tab X @tab X
c58b82a2 696@item PGS @tab @tab @tab @tab X
ba2c508d 697@item SubRip (SRT) @tab X @tab X
a4276ba2 698@item XSUB @tab @tab @tab X @tab X
bd3151f2
DB
699@end multitable
700
701@code{X} means that the feature is supported.
702
fbd52050
DB
703@section Network Protocols
704
000bbebb 705@multitable @columnfractions .4 .1
fbd52050
DB
706@item Name @tab Support
707@item file @tab X
708@item Gopher @tab X
709@item HTTP @tab X
a2403986 710@item MMS @tab X
fbd52050
DB
711@item pipe @tab X
712@item RTP @tab X
713@item TCP @tab X
714@item UDP @tab X
715@end multitable
716
717@code{X} means that the protocol is supported.
718
719
fa3f2a35
DB
720@section Input/Output Devices
721
722@multitable @columnfractions .4 .1 .1
723@item Name @tab Input @tab Output
724@item ALSA @tab X @tab X
fa3f2a35
DB
725@item BKTR @tab X @tab
726@item DV1394 @tab X @tab
80ff8a16 727@item JACK @tab X @tab
fa3f2a35
DB
728@item LIBDC1394 @tab X @tab
729@item OSS @tab X @tab X
730@item Video4Linux @tab X @tab
731@item Video4Linux2 @tab X @tab
732@item VfW capture @tab X @tab
733@item X11 grabbing @tab X @tab
734@end multitable
735
23869b4a 736@code{X} means that input/output is supported.
fa3f2a35
DB
737
738
d0e1cd3d
DB
739@chapter Platform Specific information
740
6a36798f
MK
741@section DOS
742
743Using a cross-compiler is preferred for various reasons.
744
745@subsection DJGPP
746
747FFmpeg cannot be compiled because of broken system headers, add
748@code{--extra-cflags=-U__STRICT_ANSI__} to the configure options as a
749workaround.
750
bee694bc
MK
751@section OS/2
752
753For information about compiling FFmpeg on OS/2 see
754@url{http://www.edm2.com/index.php/FFmpeg}.
755
756@section Unix-like
757
1e4dd198
DB
758Some parts of FFmpeg cannot be built with version 2.15 of the GNU
759assembler which is still provided by a few AMD64 distributions. To
760make sure your compiler really uses the required version of gas
761after a binutils upgrade, run:
762
763@example
764$(gcc -print-prog-name=as) --version
765@end example
766
767If not, then you should install a different compiler that has no
768hard-coded path to gas. In the worst case pass @code{--disable-asm}
769to configure.
770
bee694bc 771@subsection BSD
d0e1cd3d
DB
772
773BSD make will not build FFmpeg, you need to install and use GNU Make
774(@file{gmake}).
775
bee694bc 776@subsubsection FreeBSD
54dab567
DB
777
778FreeBSD will not compile out-of-the-box due to broken system headers.
779Passing @code{--extra-cflags=-D__BSD_VISIBLE} to configure will work
780around the problem. This may have unexpected sideeffects, so use it at
781your own risk. If you care about FreeBSD, please make an attempt at
782getting the system headers fixed.
783
bee694bc 784@subsection (Open)Solaris
3fd427cd
DB
785
786GNU Make is required to build FFmpeg, so you have to invoke (@file{gmake}),
e69decae 787standard Solaris Make will not work. When building with a non-c99 front-end
ee945547 788(gcc, generic suncc) add either @code{--extra-libs=/usr/lib/values-xpg6.o}
e69decae
MK
789or @code{--extra-libs=/usr/lib/64/values-xpg6.o} to the configure options
790since the libc is not c99-compliant by default. The probes performed by
791configure may raise an exception leading to the death of configure itself
792due to a bug in the system shell. Simply invoke a different shell such as
793bash directly to work around this:
794
795@example
796bash ./configure
797@end example
3fd427cd 798
377723b2
MR
799@subsection Darwin (MacOS X, iPhone)
800
801MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from
802@url{http://github.com/yuvi/gas-preprocessor} to build the optimized
06a2ba23
DB
803assembler functions. Just download the Perl script and put it somewhere
804in your PATH, FFmpeg's configure will pick it up automatically.
377723b2 805
d0e1cd3d
DB
806@section Windows
807
46a845d0 808To get help and instructions for building FFmpeg under Windows, check out
d0e1cd3d 809the FFmpeg Windows Help Forum at
ab5ce4ae 810@url{http://ffmpeg.arrozcru.org/}.
d0e1cd3d
DB
811
812@subsection Native Windows compilation
813
c1989552 814FFmpeg can be built to run natively on Windows using the MinGW tools. Install
126cadc7
RP
815the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}.
816You can find detailed installation
d0e1cd3d
DB
817instructions in the download section and the FAQ.
818
126cadc7
RP
819FFmpeg does not build out-of-the-box with the packages the automated MinGW
820installer provides. It also requires coreutils to be installed and many other
821packages updated to the latest version. The minimum version for some packages
822are listed below:
823
824@itemize
825@item bash 3.1
826@item msys-make 3.81-2 (note: not mingw32-make)
2014b51c 827@item w32api 3.13
126cadc7
RP
828@item mingw-runtime 3.15
829@end itemize
830
44be8d42 831FFmpeg automatically passes @code{-fno-common} to the compiler to work around
0f898714
DB
832a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).
833
c1989552 834Within the MSYS shell, configure and make with:
d0e1cd3d 835
c1989552 836@example
1a04d4c7 837./configure --enable-memalign-hack
c1989552
RP
838make
839make install
840@end example
d0e1cd3d 841
c1989552
RP
842This will install @file{ffmpeg.exe} along with many other development files
843to @file{/usr/local}. You may specify another install path using the
844@code{--prefix} option in @file{configure}.
d0e1cd3d 845
c1989552 846Notes:
d0e1cd3d 847
c1989552 848@itemize
d0e1cd3d 849
b94ca208
RP
850@item Building natively using MSYS can be sped up by disabling implicit rules
851in the Makefile by calling @code{make -r} instead of plain @code{make}. This
852speed up is close to non-existent for normal one-off builds and is only
853noticeable when running make for a second time (for example in
854@code{make install}).
855
c1989552
RP
856@item In order to compile FFplay, you must have the MinGW development library
857of SDL. Get it from @url{http://www.libsdl.org}.
858Edit the @file{bin/sdl-config} script so that it points to the correct prefix
859where SDL was installed. Verify that @file{sdl-config} can be launched from
860the MSYS command line.
d0e1cd3d 861
d0e1cd3d 862@item By using @code{./configure --enable-shared} when configuring FFmpeg,
c1989552 863you can build libavutil, libavcodec and libavformat as DLLs.
d0e1cd3d
DB
864
865@end itemize
866
c1989552 867@subsection Microsoft Visual C++ compatibility
d0e1cd3d 868
c1989552
RP
869As stated in the FAQ, FFmpeg will not compile under MSVC++. However, if you
870want to use the libav* libraries in your own applications, you can still
871compile those applications using MSVC++. But the libav* libraries you link
872to @emph{must} be built with MinGW. However, you will not be able to debug
873inside the libav* libraries, since MSVC++ does not recognize the debug
874symbols generated by GCC.
875We strongly recommend you to move over from MSVC++ to MinGW tools.
d0e1cd3d 876
c1989552
RP
877This description of how to use the FFmpeg libraries with MSVC++ is based on
878Microsoft Visual C++ 2005 Express Edition. If you have a different version,
879you might have to modify the procedures slightly.
d0e1cd3d 880
c1989552 881@subsubsection Using static libraries
d0e1cd3d 882
c1989552 883Assuming you have just built and installed FFmpeg in @file{/usr/local}.
d0e1cd3d
DB
884
885@enumerate
886
887@item Create a new console application ("File / New / Project") and then
888select "Win32 Console Application". On the appropriate page of the
889Application Wizard, uncheck the "Precompiled headers" option.
890
891@item Write the source code for your application, or, for testing, just
892copy the code from an existing sample application into the source file
c1989552 893that MSVC++ has already created for you. For example, you can copy
d95a0c67 894@file{libavformat/output-example.c} from the FFmpeg distribution.
d0e1cd3d
DB
895
896@item Open the "Project / Properties" dialog box. In the "Configuration"
897combo box, select "All Configurations" so that the changes you make will
898affect both debug and release builds. In the tree view on the left hand
899side, select "C/C++ / General", then edit the "Additional Include
c1989552
RP
900Directories" setting to contain the path where the FFmpeg includes were
901installed (i.e. @file{c:\msys\1.0\local\include}).
f010d377
RP
902Do not add MinGW's include directory here, or the include files will
903conflict with MSVC's.
c1989552
RP
904
905@item Still in the "Project / Properties" dialog box, select
906"Linker / General" from the tree view and edit the
907"Additional Library Directories" setting to contain the @file{lib}
908directory where FFmpeg was installed (i.e. @file{c:\msys\1.0\local\lib}),
909the directory where MinGW libs are installed (i.e. @file{c:\mingw\lib}),
910and the directory where MinGW's GCC libs are installed
911(i.e. @file{C:\mingw\lib\gcc\mingw32\4.2.1-sjlj}). Then select
912"Linker / Input" from the tree view, and add the files @file{libavformat.a},
913@file{libavcodec.a}, @file{libavutil.a}, @file{libmingwex.a},
914@file{libgcc.a}, and any other libraries you used (i.e. @file{libz.a})
915to the end of "Additional Dependencies".
d0e1cd3d
DB
916
917@item Now, select "C/C++ / Code Generation" from the tree view. Select
918"Debug" in the "Configuration" combo box. Make sure that "Runtime
919Library" is set to "Multi-threaded Debug DLL". Then, select "Release" in
920the "Configuration" combo box and make sure that "Runtime Library" is
921set to "Multi-threaded DLL".
922
c1989552
RP
923@item Click "OK" to close the "Project / Properties" dialog box.
924
925@item MSVC++ lacks some C99 header files that are fundamental for FFmpeg.
926Get msinttypes from @url{http://code.google.com/p/msinttypes/downloads/list}
927and install it in MSVC++'s include directory
928(i.e. @file{C:\Program Files\Microsoft Visual Studio 8\VC\include}).
929
930@item MSVC++ also does not understand the @code{inline} keyword used by
931FFmpeg, so you must add this line before @code{#include}ing libav*:
932@example
933#define inline _inline
934@end example
935
c1989552
RP
936@item Build your application, everything should work.
937
938@end enumerate
939
940@subsubsection Using shared libraries
941
942This is how to create DLL and LIB files that are compatible with MSVC++:
943
944@enumerate
945
946@item Add a call to @file{vcvars32.bat} (which sets up the environment
947variables for the Visual C++ tools) as the first line of @file{msys.bat}.
948The standard location for @file{vcvars32.bat} is
949@file{C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat},
950and the standard location for @file{msys.bat} is @file{C:\msys\1.0\msys.bat}.
951If this corresponds to your setup, add the following line as the first line
952of @file{msys.bat}:
953
954@example
955call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
956@end example
957
958Alternatively, you may start the @file{Visual Studio 2005 Command Prompt},
959and run @file{c:\msys\1.0\msys.bat} from there.
960
961@item Within the MSYS shell, run @code{lib.exe}. If you get a help message
962from @file{Microsoft (R) Library Manager}, this means your environment
963variables are set up correctly, the @file{Microsoft (R) Library Manager}
964is on the path and will be used by FFmpeg to create
965MSVC++-compatible import libraries.
966
967@item Build FFmpeg with
968
969@example
970./configure --enable-shared --enable-memalign-hack
971make
972make install
973@end example
974
975Your install path (@file{/usr/local/} by default) should now have the
976necessary DLL and LIB files under the @file{bin} directory.
d0e1cd3d
DB
977
978@end enumerate
979
c1989552
RP
980To use those files with MSVC++, do the same as you would do with
981the static libraries, as described above. But in Step 4,
982you should only need to add the directory where the LIB files are installed
983(i.e. @file{c:\msys\usr\local\bin}). This is not a typo, the LIB files are
bc3836a1
RP
984installed in the @file{bin} directory. And instead of adding the static
985libraries (@file{libxxx.a} files) you should add the MSVC import libraries
986(@file{avcodec.lib}, @file{avformat.lib}, @file{avcore.lib}, and
987@file{avutil.lib}). Note that you should not use the GCC import
988libraries (@file{libxxx.dll.a} files), as these will give you undefined
989reference errors. There should be no need for @file{libmingwex.a},
c1989552
RP
990@file{libgcc.a}, and @file{wsock32.lib}, nor any other external library
991statically linked into the DLLs. The @file{bin} directory contains a bunch
992of DLL files, but the ones that are actually used to run your application
993are the ones with a major version number in their filenames
994(i.e. @file{avcodec-51.dll}).
995
e16c1569
RP
996FFmpeg headers do not declare global data for Windows DLLs through the usual
997dllexport/dllimport interface. Such data will be exported properly while
998building, but to use them in your MSVC++ code you will have to edit the
999appropriate headers and mark the data as dllimport. For example, in
1000libavutil/pixdesc.h you should have:
1001@example
1002extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
1003@end example
1004
d0e1cd3d
DB
1005@subsection Cross compilation for Windows with Linux
1006
1007You must use the MinGW cross compilation tools available at
1008@url{http://www.mingw.org/}.
1009
1010Then configure FFmpeg with the following options:
1011@example
1012./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
1013@end example
1014(you can change the cross-prefix according to the prefix chosen for the
1015MinGW tools).
1016
1017Then you can easily test FFmpeg with Wine
1018(@url{http://www.winehq.com/}).
1019
1020@subsection Compilation under Cygwin
1021
2f821b03
VP
1022Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
1023llrint() in its C library.
d0e1cd3d 1024
2f821b03 1025Install your Cygwin with all the "Base" packages, plus the
d0e1cd3d
DB
1026following "Devel" ones:
1027@example
2f821b03 1028binutils, gcc4-core, make, subversion, mingw-runtime, texi2html
71ecc16b
RP
1029@end example
1030
1031And the following "Utils" one:
1032@example
1033diffutils
d0e1cd3d
DB
1034@end example
1035
d0e1cd3d
DB
1036Then run
1037
1038@example
2f821b03 1039./configure --enable-static --disable-shared
d0e1cd3d
DB
1040@end example
1041
2f821b03
VP
1042to make a static build.
1043
1044The current @code{gcc4-core} package is buggy and needs this flag to build
1045shared libraries:
d0e1cd3d
DB
1046
1047@example
2f821b03 1048./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
d0e1cd3d
DB
1049@end example
1050
d0e1cd3d 1051If you want to build FFmpeg with additional libraries, download Cygwin
5dd9799d
VP
1052"Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
1053@example
1054libogg-devel, libvorbis-devel
1055@end example
1056
1057These library packages are only available from Cygwin Ports
be8497b0 1058(@url{http://sourceware.org/cygwinports/}) :
5dd9799d
VP
1059
1060@example
6a74b127 1061yasm, libSDL-devel, libdirac-devel, libfaac-devel, libgsm-devel,
5dd9799d
VP
1062libmp3lame-devel, libschroedinger1.0-devel, speex-devel, libtheora-devel,
1063libxvidcore-devel
1064@end example
1065
1066The recommendation for libnut and x264 is to build them from source by
1067yourself, as they evolve too quickly for Cygwin Ports to be up to date.
d0e1cd3d 1068
cdf51395
VP
1069Cygwin 1.7.x has IPv6 support. You can add IPv6 to Cygwin 1.5.x by means
1070of the @code{libgetaddrinfo-devel} package, available at Cygwin Ports.
1071
d0e1cd3d
DB
1072@subsection Crosscompilation for Windows under Cygwin
1073
1074With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
1075
1076Just install your Cygwin as explained before, plus these additional
1077"Devel" packages:
1078@example
1079gcc-mingw-core, mingw-runtime, mingw-zlib
1080@end example
1081
1082and add some special flags to your configure invocation.
1083
1084For a static build run
1085@example
1086./configure --target-os=mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
1087@end example
1088
1089and for a build with shared libraries
1090@example
1091./configure --target-os=mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
1092@end example
1093
d0e1cd3d 1094@bye