Mercurial > mplayer.hg
annotate DOCS/tech/codecs.conf.txt @ 33273:8c4a81b0bd5f
Update Doxyfile from doxygen 1.3.7 to 1.5.6.
The latter is the version available in Debian oldstable and should thus be a
suitable baseline that can be expected to be available on all systems.
The update makes new Doxygen features available in the configuration file
and avoids several deprecation warnings when using newer doxygen versions.
author | diego |
---|---|
date | Wed, 04 May 2011 14:27:35 +0000 |
parents | 0cf4c6f3d56b |
children |
rev | line source |
---|---|
3860 | 1 Understanding MPlayer's etc/codecs.conf File |
2 | |
3 Introduction | |
4 ------------ | |
5 MPlayer features a very flexible codec architecture which allows it to | |
6 use its own open source codecs, as well as open source libraries, Win32 | |
22504 | 7 codec DLLs and other binary codec modules. To the MPlayer user, the |
3860 | 8 most visible piece of this architecture is the etc/codecs.conf file. This |
9 is a text-based configuration file that controls which MPlayer components | |
10 are in charge of handling particular compressed data formats. | |
11 | |
12 The codecs.conf file is stored either in a shared directory for all system | |
13 users to access, or in the .mplayer directory in a user's home | |
14 directory. When MPlayer starts, it first looks for a codecs.conf file in a | |
15 user's home directory. Failing that, it searches for the shared file. If | |
14173 | 16 no codecs.conf file is found MPlayer falls back on its internal hardcoded |
17 configuration. If the file is present but has syntax errors, MPlayer will | |
18 report the error. | |
3860 | 19 |
20 The codecs.conf file is really quite simple. It is simply a collection of | |
21 codec definition blocks that define how different media types should be | |
22 handled. There are a number of keywords that can occur in a block. Not all | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
23 of them are required and no particular order is enforced. |
3860 | 24 |
25 Editing codecs.conf | |
26 ------------------- | |
27 You can edit codecs.conf using your favorite text editor. Anything that | |
28 comes after a semicolon (;) on a line is regarded as a comment. For | |
29 example: | |
30 ; this is a comment | |
31 format 0x34616d69 ; "ima4" (MOV files) | |
32 | |
33 The codec blocks can be in any order; the file parser doesn't | |
34 care. However, they are organized in a particular order for the benefit of | |
35 human readers. For example, all of the open source decoders that MPlayer | |
36 implements natively are grouped in one section. | |
37 | |
6200
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
38 Release Number |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
39 -------------- |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
40 Your codecs.conf now requires a release number to avoid codec release |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
41 incompatibilities. The format is simple: (YYYYMMDD) |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
42 |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
43 release 20020520 |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
44 |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
45 Whenever changes are made to the codecs that *require* an updated |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
46 codecs.conf, then MPlayer will no longer accept outdated versions. |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
47 It is not recommended to change this line unless you know exactly |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
48 what you are doing. |
e604be87613d
codecs.conf versioning - patch by Joey Parrish <joey@yunamusic.com>
arpi
parents:
5586
diff
changeset
|
49 |
3860 | 50 Video Codecs |
51 ------------ | |
52 Let's jump right in with an example. Here is an example video codec block: | |
53 | |
54 videocodec indeo5ds | |
55 info "Intel Indeo 5" | |
56 status working | |
57 fourcc IV50,iv50 | |
58 driver dshow | |
59 dll "ir50_32.dll" | |
60 guid 0x30355649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71 | |
61 out YV12 | |
62 out YUY2 | |
63 out BGR32,BGR24,BGR16,BGR15 | |
64 | |
65 This is a particularly full-featured video codec. The "videocodec" keyword | |
66 identifies the fact that this is the start of a new video | |
7350 | 67 codec. "indeo5ds" is MPlayer's unique name for the codec. You have to use |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
68 this name with the -vc/-ac option. |
3860 | 69 |
70 The next line has the keyword "info" which specifies a human-readable | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
71 comment accompanying this codec. This is printed by -vc help / -ac help. |
3860 | 72 |
73 The "status" keyword carries information about the codec's functional | |
74 status. MPlayer currently recognizes 4 status levels: working, buggy, | |
7350 | 75 crashing, and untested. When it gets to codec auto-selection, it tries |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
76 untested first (to force users to test it for us and report results :)), |
7350 | 77 then working and finally buggy ones. Codecs marked crashing won't be tried, |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
78 unless explicitly (-vc/-ac) selected. |
3860 | 79 |
80 The next line lists 4-character codes (FOURCCs) that are associated with | |
81 this codec. There can be more than one FOURCC specified on a fourcc line | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
82 as long as they are separated with a comma. There can also be multiple |
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
83 fourcc lines in the codec. A second fourcc can also be given, separated |
7350 | 84 with a space. MPlayer will replace the original fourcc in the headers with |
85 this one before opening the codec. It's useful for win32 codecs checking for | |
86 the fourccs. | |
3860 | 87 |
88 The "driver" keyword associates this codec with an internal MPlayer | |
89 decoder module. MPlayer has a module named "dshow" that handles data | |
7350 | 90 encoded by the codec. See -vfm help / -afm help for the available module list. |
3860 | 91 |
26736 | 92 The "dll" keyword specifies which Win32/XAnim/Real/Quicktime binary |
26741 | 93 module needs to be loaded. It's also used to specify which FFmpeg codec |
26736 | 94 to load. The list of FFmpeg codecs can be found in libavcodec/allcodecs.c. |
3860 | 95 |
96 The "guid" keyword identifies a 16-byte Microsoft GUID that some media | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
97 files use to identify codecs. Used only for win32 dshow and DMO codecs. |
3860 | 98 |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
99 The "out" keyword identifies which output format the decoder is known |
14173 | 100 to provide. Just like the fourcc line, there can be multiple out lines or |
3860 | 101 multiple comma-separated output formats on the same line. The output |
102 formats should be listed in order of preference. | |
7398 | 103 |
7350 | 104 The outfmt values can be followed by one or more flags, like flip, noflip, |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
105 static, query. The flags are defined as follows: |
7398 | 106 |
107 "flip": | |
108 If this flag is set for a given format, then o_bih->biHeight will NOT be | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
109 set to -bih->biHeight, i.e. the image will be decoded upside-down. |
7398 | 110 Used only by vfw and vfwex codecs. |
111 | |
112 "noflip": | |
113 This flag is ignored (no effect) without "flip" being set! | |
114 If this flag is set, it means the codec doesn't decode upside-down, | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
115 although it's told to do so. |
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
116 |
7398 | 117 "yuvhack": |
118 This flag is required for the old win32 ms-mpeg4 vfw codecs, including | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
119 MP42 and DIV3 (DivX 3.11). These DLLs actually support YUV formats, |
7398 | 120 but the query/begin functions are buggy and don't accept YUV fourccs |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
121 (the decode function accepts it and works well!) |
7398 | 122 If this flag is set, then o_bih->biCompression will be set to 0 for |
123 the initialization for the YUV modes. Used only by vfw/vfwex codecs. | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
124 |
7398 | 125 "query": |
126 This flag is used to control VDCTRL_QUERY_FORMAT for vfw/vfewx codecs. | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
127 If this flag is set, the control() will query the codec for the csp |
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
128 support, otherwise it will assume a constant csp table. Required for |
7398 | 129 some DLLs (like huffyuv, CRAM). |
130 | |
131 "static", | |
132 This flag forces STATIC (instead of TEMP) buffer allocation for the codec. | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
133 Used for some very old DLLs like Indeo 3 and for some XAnim codecs like |
7398 | 134 cinepak. See dr-methods.txt for details on buffer types. |
3860 | 135 |
29417 | 136 The "in" keyword -- UNDOCUMENTED |
137 | |
3860 | 138 Audio Codecs |
139 ------------ | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
140 Here is an example of a rather full-featured audio codec block: |
3860 | 141 |
142 audiocodec mp3 | |
143 info "MPEG layer-2, layer-3" | |
144 status working | |
145 comment "Optimized to MMX/SSE/3Dnow!" | |
146 format 0x50 | |
147 format 0x55 | |
148 format 0x33706d2e ; ".mp3" CBR/VBR MP3 (MOV files) | |
149 format 0x5500736d ; "ms\0\x55" older mp3 fcc (MOV files) | |
150 driver mp3lib | |
151 dll "mp3lib (mpglib)" | |
152 flags seekable | |
153 | |
154 Many of the keywords are the same as a video codec block. However, we see | |
155 a few that we haven't seen before. The "comment" keyword identifies | |
156 another human-readable note for this codec. | |
157 | |
158 The "format" keyword performs a similar job as the fourcc line. However, | |
159 since certain media file formats (notably AVI) identify audio formats with | |
160 16-bit numbers rather than 32-bit FOURCCs, it's necessary to use this | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
161 convention to accommodate them. However, as shown in this example, FOURCCs |
3860 | 162 can also be specified with the format keyword as long as they're converted |
163 to their hex representation. It's important to note that this can be | |
164 useful for video codecs as well if a FOURCC contains a space (such as | |
165 Apple's "rle " codec). | |
166 | |
167 The "flags" keywords identifies any additional abilities of this | |
13998
14c476d62fc2
Some fixes by myself and compn <tempn at twmi dot rr dot com>
diego
parents:
7398
diff
changeset
|
168 codec. Currently, seekable is the only supported flag. |
3860 | 169 |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
170 |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
171 Adding FFmpeg Codecs |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
172 ------------------- |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
173 example codec: |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
174 |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
175 videocodec ffmdec |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
176 info "FFmpeg Sony PlayStation MDEC (Motion DECoder)" |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
177 status working |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
178 fourcc MDEC ; internal MPlayer FourCC |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
179 driver ffmpeg |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
180 dll mdec |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
181 out YV12 |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
182 |
32528 | 183 The "videocodec" name should start with ff to differentiate it from other |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
184 libraries or binary codecs. |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
185 |
32528 | 186 The "dll" name comes from the codec source file or the libavcodec/allcodecs.c |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
187 file. |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
188 |
32528 | 189 The "out" colorspace can be found in the codec source file in the PIX_FMT |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
190 struct. Note that some codecs may have several pix_fmt structs. |
32528 | 191 The pix_fmt can be converted to the codecs.conf "out" format by reading |
32682
0cf4c6f3d56b
add some notes about BE/LE colorspaces and fix a small typo
compn
parents:
32528
diff
changeset
|
192 the fmt-conversion.c file. |
0cf4c6f3d56b
add some notes about BE/LE colorspaces and fix a small typo
compn
parents:
32528
diff
changeset
|
193 |
0cf4c6f3d56b
add some notes about BE/LE colorspaces and fix a small typo
compn
parents:
32528
diff
changeset
|
194 If there are BE and LE versions of a pix_fmt, ignore them and use the short |
0cf4c6f3d56b
add some notes about BE/LE colorspaces and fix a small typo
compn
parents:
32528
diff
changeset
|
195 native format instead. e.g. 422P16_LE becomes out 422P16. also to note that |
0cf4c6f3d56b
add some notes about BE/LE colorspaces and fix a small typo
compn
parents:
32528
diff
changeset
|
196 underscores cause parse errors, so 422P16_LE becomes out 422P16LE. |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
197 |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
198 libmpdemux/mp_taglists.c |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
199 -------------- |
32528 | 200 Sometimes the lavf demuxer will not pass on a fourcc (mostly video game |
201 formats or other containers that do not support isom/riff tags). You will have | |
202 to make one based on the codec_id listed in the codec source file. | |
203 | |
204 Note that it is a good idea to mark any fourcc you create as | |
205 ' ; internal MPlayer FourCC'. In case another codec uses that fourcc, | |
206 you can easily change the internal one. Also this will stop other projects | |
207 from thinking of the internal tag as a real fourcc found in the wild. | |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
208 |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
209 libmpdemux/demuxer.c |
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
210 -------------- |
32528 | 211 Some audio codecs require a parser, you can see which ones do |
212 by reading the parsers section in libavcodec/allcodecs.c. | |
32517
a3ca3a1ae291
document how to add ffmpeg codecs in codecs.conf.txt
compn
parents:
29417
diff
changeset
|
213 |
3860 | 214 EOF |