Add support for decoding 4:2:2 and 4:4:4 Theora files.
[mplayer.git] / cfg-mencoder.h
blobd58f87b4d34161b5567e9fe7378d44e984162c78
1 /*
2 * This file is part of MPlayer.
4 * MPlayer is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * MPlayer is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #ifndef MPLAYER_CFG_MENCODER_H
20 #define MPLAYER_CFG_MENCODER_H
23 * config for cfgparser
26 #include "cfg-common.h"
28 extern int sws_flags;
29 int readPPOpt(void *, char *arg);
30 void revertPPOpt(void *conf, char* opt);
31 extern char *pp_help;
33 extern m_option_t lameopts_conf[];
34 extern m_option_t lavcopts_conf[];
35 extern m_option_t toolameopts_conf[];
36 extern m_option_t twolameopts_conf[];
37 extern m_option_t faacopts_conf[];
38 extern m_option_t vfwopts_conf[];
39 extern m_option_t xvidencopts_conf[];
41 void x264enc_set_param(const m_option_t* opt, char* arg);
43 extern m_option_t nuvopts_conf[];
44 extern m_option_t mpegopts_conf[];
45 extern m_option_t lavfopts_conf[];
47 const m_option_t ovc_conf[]={
48 {"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_COPY, NULL},
49 {"frameno", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_FRAMENO, NULL},
50 {"lavc", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBAVCODEC, NULL},
51 // {"null", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NULL, NULL},
52 {"raw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_RAW, NULL},
53 {"vfw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_VFW, NULL},
54 {"libdv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBDV, NULL},
55 {"xvid", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_XVID, NULL},
56 {"qtvideo", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_QTVIDEO, NULL},
57 {"nuv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NUV, NULL},
58 {"x264", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_X264, NULL},
59 {"help", "\nAvailable codecs:\n"
60 " copy - frame copy, without re-encoding. Doesn't work with filters.\n"
61 " frameno - special audio-only file for 3-pass encoding, see DOCS.\n"
62 " raw - uncompressed video. Use fourcc option to set format explicitly.\n"
63 #ifdef CONFIG_LIBLZO
64 " nuv - nuppel video\n"
65 #endif
66 #ifdef CONFIG_LIBAVCODEC
67 " lavc - libavcodec codecs - best quality!\n"
68 #endif
69 #ifdef CONFIG_WIN32DLL
70 " vfw - VfW DLLs, read DOCS/HTML/en/encoding-guide.html.\n"
71 " qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.\n"
72 #endif
73 #ifdef CONFIG_LIBDV095
74 " libdv - DV encoding with libdv v0.9.5\n"
75 #endif
76 #ifdef CONFIG_XVID4
77 " xvid - XviD encoding\n"
78 #endif
79 #ifdef CONFIG_X264
80 " x264 - H.264 encoding\n"
81 #endif
82 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
83 {NULL, NULL, 0, 0, 0, 0, NULL}
86 const m_option_t oac_conf[]={
87 {"copy", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_COPY, NULL},
88 {"pcm", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_PCM, NULL},
89 #ifdef CONFIG_MP3LAME
90 {"mp3lame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_VBRMP3, NULL},
91 #else
92 {"mp3lame", "MPlayer was compiled without libmp3lame support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
93 #endif /* CONFIG_MP3LAME */
94 #ifdef CONFIG_LIBAVCODEC
95 {"lavc", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_LAVC, NULL},
96 #else
97 {"lavc", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
98 #endif /* CONFIG_LIBAVCODEC */
99 #ifdef CONFIG_TOOLAME
100 {"toolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TOOLAME, NULL},
101 #else
102 {"toolame", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
103 #endif /* CONFIG_TOOLAME */
104 #ifdef CONFIG_TWOLAME
105 {"twolame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_TWOLAME, NULL},
106 #else
107 {"twolame", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
108 #endif /* CONFIG_TWOLAME */
109 #ifdef CONFIG_FAAC
110 {"faac", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_FAAC, NULL},
111 #else
112 {"faac", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
113 #endif /* CONFIG_FAAC */
114 {"help", "\nAvailable codecs:\n"
115 " copy - frame copy, without re-encoding (useful for AC3)\n"
116 " pcm - uncompressed PCM audio\n"
117 #ifdef CONFIG_MP3LAME
118 " mp3lame - cbr/abr/vbr MP3 using libmp3lame\n"
119 #endif
120 #ifdef CONFIG_LIBAVCODEC
121 " lavc - FFmpeg audio encoder (MP2, AC3, ...)\n"
122 #endif
123 #ifdef CONFIG_TOOLAME
124 " toolame - Toolame MP2 audio encoder\n"
125 #endif
126 #ifdef CONFIG_TWOLAME
127 " twolame - Twolame MP2 audio encoder\n"
128 #endif
129 #ifdef CONFIG_FAAC
130 " faac - FAAC AAC audio encoder\n"
131 #endif
132 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
133 {NULL, NULL, 0, 0, 0, 0, NULL}
136 const m_option_t info_conf[]={
137 {"name", &info_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
138 {"artist", &info_artist, CONF_TYPE_STRING, 0, 0, 0, NULL},
139 {"genre", &info_genre, CONF_TYPE_STRING, 0, 0, 0, NULL},
140 {"subject", &info_subject, CONF_TYPE_STRING, 0, 0, 0, NULL},
141 {"copyright", &info_copyright, CONF_TYPE_STRING, 0, 0, 0, NULL},
142 {"srcform", &info_sourceform, CONF_TYPE_STRING, 0, 0, 0, NULL},
143 {"comment", &info_comment, CONF_TYPE_STRING, 0, 0, 0, NULL},
144 {"help", "\nAvailable INFO fields:\n"
145 " name - title of the work\n"
146 " artist - artist or author of the work\n"
147 " genre - original work category\n"
148 " subject - contents of the work\n"
149 " copyright - copyright information\n"
150 " srcform - original format of the digitzed material\n"
151 " comment - general comments about the work\n"
152 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
153 {NULL, NULL, 0, 0, 0, 0, NULL}
156 const m_option_t of_conf[]={
157 {"avi", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_AVI, NULL},
158 {"mpeg", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_MPEG, NULL},
159 #ifdef CONFIG_LIBAVFORMAT
160 {"lavf", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_LAVF, NULL},
161 #endif
162 {"rawvideo", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWVIDEO, NULL},
163 {"rawaudio", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWAUDIO, NULL},
164 {"help", "\nAvailable output formats:\n"
165 " avi - Microsoft Audio/Video Interleaved\n"
166 " mpeg - MPEG-1/2 system stream format\n"
167 #ifdef CONFIG_LIBAVFORMAT
168 " lavf - FFmpeg libavformat muxers\n"
169 #endif
170 " rawvideo - (video only, one stream only) raw stream, no muxing\n"
171 " rawaudio - (audio only, one stream only) raw stream, no muxing\n"
172 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
173 {NULL, NULL, 0, 0, 0, 0, NULL}
176 extern float avi_aspect_override; /* defined in libmpdemux/muxer_avi.c */
177 extern int write_odml; /* defined in libmpdemux/muxer_avi.c */
179 const m_option_t mencoder_opts[]={
180 /* name, pointer, type, flags, min, max */
182 {"frameno-file", &frameno_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
184 {"hr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 0, 1, NULL},
185 {"nohr-edl-seek", &edl_seek_type, CONF_TYPE_FLAG, 0, 1, 0, NULL},
187 // set output framerate - recommended for variable-FPS (ASF etc) files
188 // and for 29.97FPS progressive MPEG2 streams
189 {"ofps", &force_ofps, CONF_TYPE_DOUBLE, CONF_MIN|CONF_GLOBAL, 0, 0, NULL},
190 {"o", &out_filename, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
192 // limit number of skippable frames after a non-skipped one
193 {"skiplimit", &skip_limit, CONF_TYPE_INT, 0, 0, 0, NULL},
194 {"noskiplimit", &skip_limit, CONF_TYPE_FLAG, 0, 0, -1, NULL},
195 {"noskip", &skip_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
197 {"audio-density", &audio_density, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 1, 50, NULL},
198 {"audio-preload", &audio_preload, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0, 2, NULL},
199 {"audio-delay", &audio_delay_fix, CONF_TYPE_FLOAT, CONF_GLOBAL, 0, 0, NULL},
201 {"x", "-x has been removed, use -vf scale=w:h for scaling.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
202 {"xsize", "-xsize has been removed, use -vf crop=w:h:x:y for cropping.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
204 // output audio/video codec selection
205 {"oac", oac_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
206 {"ovc", ovc_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
208 // output file format
209 {"of", of_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
211 // override audio format tag in output file
212 {"fafmttag", &force_audiofmttag, CONF_TYPE_INT, CONF_GLOBAL, 0, 0, NULL},
213 // override FOURCC in output file
214 {"ffourcc", &force_fourcc, CONF_TYPE_STRING, CONF_GLOBAL, 4, 4, NULL},
216 // override avi aspect autodetection
217 {"force-avi-aspect", &avi_aspect_override, CONF_TYPE_FLOAT, CONF_RANGE|CONF_GLOBAL, 0.2, 3.0, NULL},
219 {"pass", "-pass has been removed, use -lavcopts vpass=n, -xvidencopts pass=n\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
220 {"passlogfile", &passtmpfile, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
222 {"vobsubout", &vobsub_out, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
223 {"vobsuboutindex", &vobsub_out_index, CONF_TYPE_INT, CONF_RANGE|CONF_GLOBAL, 0, 31, NULL},
224 {"vobsuboutid", &vobsub_out_id, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
226 {"autoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 0, 1, NULL},
227 {"noautoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 1, 0, NULL},
229 {"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL},
230 {"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL},
232 {"odml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
233 {"noodml", &write_odml, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
235 // info header strings
236 {"info", info_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
238 #ifdef CONFIG_MP3LAME
239 {"lameopts", lameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
240 #endif
241 #ifdef CONFIG_LIBAVCODEC
242 {"lavcopts", lavcopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
243 #else
244 {"lavcopts", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
245 #endif /* CONFIG_LIBAVCODEC */
246 #ifdef CONFIG_TOOLAME
247 {"toolameopts", toolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
248 #else
249 {"toolameopts", "MPlayer was compiled without libtoolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
250 #endif /* CONFIG_TOOLAME */
251 #ifdef CONFIG_TWOLAME
252 {"twolameopts", twolameopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
253 #else
254 {"twolameopts", "MPlayer was compiled without libtwolame. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
255 #endif /* CONFIG_TWOLAME */
256 #ifdef CONFIG_FAAC
257 {"faacopts", faacopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
258 #else
259 {"faacopts", "MPlayer was compiled without libfaac. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
260 #endif /* CONFIG_FAAC */
261 #ifdef CONFIG_WIN32DLL
262 {"xvfwopts", vfwopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
263 #endif
264 #ifdef CONFIG_XVID4
265 {"xvidencopts", xvidencopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
266 #endif
267 #if defined(CONFIG_X264)
268 {"x264encopts", &x264enc_set_param, CONF_TYPE_FUNC_PARAM, CONF_GLOBAL, 0, 0, NULL},
269 #endif
271 #ifdef CONFIG_LIBLZO
272 {"nuvopts", nuvopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
273 #endif
274 {"mpegopts", mpegopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
275 #ifdef CONFIG_LIBAVFORMAT
276 {"lavfopts", lavfopts_conf, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
277 #endif
279 #include "cfg-common-opts.h"
281 // {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
282 // {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
283 // {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
284 {NULL, NULL, 0, 0, 0, 0, NULL}
287 #endif /* MPLAYER_CFG_MENCODER_H */