adding the code documentation guide lines
[mplayer/glamo.git] / cfg-mencoder.h
blob0d158f9b3a487445d392cd5107d1c078c4e53897
2 /*
3 * config for cfgparser
4 */
6 #include "cfg-common.h"
8 #ifdef USE_FAKE_MONO
9 extern int fakemono; // defined in dec_audio.c
10 #endif
11 #ifdef HAVE_ODIVX_POSTPROCESS
12 extern int use_old_pp;
13 #endif
15 extern int sws_flags;
16 extern int readPPOpt(void *, char *arg);
17 extern void revertPPOpt(void *conf, char* opt);
18 extern char *pp_help;
20 #ifdef HAVE_DIVX4ENCORE
21 extern m_option_t divx4opts_conf[];
22 #endif
24 #ifdef HAVE_MP3LAME
25 m_option_t lameopts_conf[]={
26 {"q", &lame_param_quality, CONF_TYPE_INT, CONF_RANGE, 0, 9, NULL},
27 {"aq", &lame_param_algqual, CONF_TYPE_INT, CONF_RANGE, 0, 9, NULL},
28 {"vbr", &lame_param_vbr, CONF_TYPE_INT, CONF_RANGE, 0, vbr_max_indicator, NULL},
29 {"cbr", &lame_param_vbr, CONF_TYPE_FLAG, 0, 0, 0, NULL},
30 {"abr", &lame_param_vbr, CONF_TYPE_FLAG, 0, 0, vbr_abr, NULL},
31 {"mode", &lame_param_mode, CONF_TYPE_INT, CONF_RANGE, 0, MAX_INDICATOR, NULL},
32 {"padding", &lame_param_padding, CONF_TYPE_INT, CONF_RANGE, 0, PAD_MAX_INDICATOR, NULL},
33 {"br", &lame_param_br, CONF_TYPE_INT, CONF_RANGE, 0, 1024, NULL},
34 {"ratio", &lame_param_ratio, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL},
35 {"vol", &lame_param_scale, CONF_TYPE_FLOAT, CONF_RANGE, 0, 10, NULL},
36 {"lowpassfreq",&lame_param_lowpassfreq, CONF_TYPE_INT, CONF_RANGE, -1, 48000,0},
37 {"highpassfreq",&lame_param_highpassfreq, CONF_TYPE_INT, CONF_RANGE, -1, 48000,0},
38 {"nofree", &lame_param_free_format, CONF_TYPE_FLAG, 0, 0, 0, NULL},
39 {"free", &lame_param_free_format, CONF_TYPE_FLAG, 0, 0, 1, NULL},
40 {"br_min", &lame_param_br_min, CONF_TYPE_INT, CONF_RANGE, 0, 1024, NULL},
41 {"br_max", &lame_param_br_max, CONF_TYPE_INT, CONF_RANGE, 0, 1024, NULL},
42 #if HAVE_MP3LAME >= 392
43 {"fast", &lame_param_fast, CONF_TYPE_FLAG, 0, 0, 1, NULL},
44 {"preset", &lame_param_preset, CONF_TYPE_STRING, 0, 0, 0, NULL},
45 #else
46 {"fast", "MPlayer was built without -lameopts fast support (requires libmp3lame >=3.92).\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
47 {"preset", "MPlayer was built without -lameopts preset support (requires libmp3lame >=3.92).\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
48 #endif
49 {"help", MSGTR_MEncoderMP3LameHelp, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
50 {NULL, NULL, 0, 0, 0, 0, NULL}
52 #endif
54 #ifdef USE_LIBAVCODEC
55 extern m_option_t lavcopts_conf[];
56 #endif
58 #ifdef USE_WIN32DLL
59 extern m_option_t vfwopts_conf[];
60 #endif
62 #if defined(HAVE_XVID3) || defined(HAVE_XVID4)
63 extern m_option_t xvidencopts_conf[];
64 #endif
66 #if defined(HAVE_X264)
67 extern m_option_t x264encopts_conf[];
68 #endif
70 extern m_option_t nuvopts_conf[];
72 m_option_t ovc_conf[]={
73 {"copy", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_COPY, NULL},
74 {"frameno", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_FRAMENO, NULL},
75 {"divx4", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_DIVX4, NULL},
76 // {"raw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_RAW, NULL},
77 {"lavc", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBAVCODEC, NULL},
78 // {"null", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NULL, NULL},
79 {"raw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_RAW, NULL},
80 {"vfw", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_VFW, NULL},
81 {"libdv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_LIBDV, NULL},
82 {"xvid", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_XVID, NULL},
83 {"qtvideo", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_QTVIDEO, NULL},
84 {"nuv", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_NUV, NULL},
85 {"x264", &out_video_codec, CONF_TYPE_FLAG, 0, 0, VCODEC_X264, NULL},
86 {"help", "\nAvailable codecs:\n"
87 " copy - frame copy, without re-encoding. Doesn't work with filters.\n"
88 " frameno - special audio-only file for 3-pass encoding, see DOCS.\n"
89 " raw - uncompressed video. Use fourcc option to set format explicitly.\n"
90 " nuv - nuppel video\n"
91 #ifdef HAVE_DIVX4ENCORE
92 #ifdef ENCORE_XVID
93 " divx4 - XviD (divx4linux compatibility mode)\n"
94 #else
95 " divx4 - divx4linux/divx5linux library (depends on configuration)\n"
96 #endif
97 #endif
98 #ifdef USE_LIBAVCODEC
99 " lavc - libavcodec codecs - best quality!\n"
100 #endif
101 #ifdef USE_WIN32DLL
102 " vfw - VfW DLLs, currently only AVID is supported.\n"
103 " qtvideo - QuickTime DLLs, currently only SVQ1/3 are supported.\n"
104 #endif
105 #ifdef HAVE_LIBDV095
106 " libdv - DV encoding with libdv v0.9.5\n"
107 #endif
108 #if defined(HAVE_XVID3) || defined(HAVE_XVID4)
109 " xvid - XviD encoding\n"
110 #endif
111 #ifdef HAVE_X264
112 " x264 - H.264 encoding\n"
113 #endif
114 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
115 {NULL, NULL, 0, 0, 0, 0, NULL}
118 m_option_t oac_conf[]={
119 {"copy", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_COPY, NULL},
120 {"pcm", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_PCM, NULL},
121 #ifdef HAVE_MP3LAME
122 {"mp3lame", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_VBRMP3, NULL},
123 #else
124 {"mp3lame", "MPlayer was compiled without libmp3lame support.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
125 #endif
126 #ifdef USE_LIBAVCODEC
127 {"lavc", &out_audio_codec, CONF_TYPE_FLAG, 0, 0, ACODEC_LAVC, NULL},
128 #else
129 {"lavc", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
130 #endif
131 {"help", "\nAvailable codecs:\n"
132 " copy - frame copy, without re-encoding (useful for AC3)\n"
133 " pcm - uncompressed PCM audio\n"
134 #ifdef HAVE_MP3LAME
135 " mp3lame - cbr/abr/vbr MP3 using libmp3lame\n"
136 #endif
137 #ifdef USE_LIBAVCODEC
138 " lavc - FFmpeg audio encoder (MP2, AC3, ...)\n"
139 #endif
140 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
141 {NULL, NULL, 0, 0, 0, 0, NULL}
144 m_option_t info_conf[]={
145 {"name", &info_name, CONF_TYPE_STRING, 0, 0, 0, NULL},
146 {"artist", &info_artist, CONF_TYPE_STRING, 0, 0, 0, NULL},
147 {"genre", &info_genre, CONF_TYPE_STRING, 0, 0, 0, NULL},
148 {"subject", &info_subject, CONF_TYPE_STRING, 0, 0, 0, NULL},
149 {"copyright", &info_copyright, CONF_TYPE_STRING, 0, 0, 0, NULL},
150 {"srcform", &info_sourceform, CONF_TYPE_STRING, 0, 0, 0, NULL},
151 {"comment", &info_comment, CONF_TYPE_STRING, 0, 0, 0, NULL},
152 {"help", "\nAvailable INFO fields:\n"
153 " name - title of the work\n"
154 " artist - artist or author of the work\n"
155 " genre - original work category\n"
156 " subject - contents of the work\n"
157 " copyright - copyright information\n"
158 " srcform - original format of the digitzed material\n"
159 " comment - general comments about the work\n"
160 "\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
161 {NULL, NULL, 0, 0, 0, 0, NULL}
164 m_option_t of_conf[]={
165 {"avi", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_AVI, NULL},
166 {"mpeg", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_MPEG, NULL},
167 {"rawvideo", &out_file_format, CONF_TYPE_FLAG, 0, 0, MUXER_TYPE_RAWVIDEO, NULL},
168 {"help", "\nAvailable output formats:\n"
169 " avi - Microsoft Audio/Video Interleaved\n"
170 " mpeg - MPEG-1 system stream format\n"
171 " rawvideo - (video 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 m_option_t mencoder_opts[]={
180 /* name, pointer, type, flags, min, max */
182 {"endpos", parse_end_at, CONF_TYPE_FUNC_PARAM, 0, 0, 0, NULL},
184 // set output framerate - recommended for variable-FPS (ASF etc) files
185 // and for 29.97FPS progressive MPEG2 streams
186 {"ofps", &force_ofps, CONF_TYPE_FLOAT, CONF_MIN, 0, 0, NULL},
187 {"o", &out_filename, CONF_TYPE_STRING, 0, 0, 0, NULL},
189 // limit number of skippable frames after a non-skipped one
190 {"skiplimit", &skip_limit, CONF_TYPE_INT, 0, 0, 0, NULL},
191 {"noskiplimit", &skip_limit, CONF_TYPE_FLAG, 0, 0, -1, NULL},
192 {"noskip", &skip_limit, CONF_TYPE_FLAG, 0, 0, 0, NULL},
194 {"audio-density", &audio_density, CONF_TYPE_INT, CONF_RANGE, 1, 50, NULL},
195 {"audio-preload", &audio_preload, CONF_TYPE_FLOAT, CONF_RANGE, 0, 2, NULL},
196 {"audio-delay", &audio_delay, CONF_TYPE_FLOAT, CONF_MIN, 0, 0, NULL},
198 {"x", "-x is obsolete, use -vf scale=w:h for scaling.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
199 {"xsize", "-xsize is obsolete, use -vf crop=w:h:x:y for cropping.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
201 // output audio/video codec selection
202 {"oac", oac_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
203 {"ovc", ovc_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
205 // output file format
206 {"of", of_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
208 // override FOURCC in output file
209 {"ffourcc", &force_fourcc, CONF_TYPE_STRING, 0, 4, 4, NULL},
211 // override avi aspect autodetection
212 {"force-avi-aspect", &avi_aspect_override, CONF_TYPE_FLOAT, CONF_RANGE, 0.2, 3.0, NULL},
214 {"pass", "-pass is obsolete, use -lavcopts vpass=n, -xvidencopts pass=n, -divx4opts pass=n\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
215 {"passlogfile", &passtmpfile, CONF_TYPE_STRING, 0, 0, 0, NULL},
217 {"vobsubout", &vobsub_out, CONF_TYPE_STRING, 0, 0, 0, NULL},
218 {"vobsuboutindex", &vobsub_out_index, CONF_TYPE_INT, CONF_RANGE, 0, 31, NULL},
219 {"vobsuboutid", &vobsub_out_id, CONF_TYPE_STRING, 0, 0, 0, NULL},
221 {"autoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 0, 1, NULL},
222 {"noautoexpand", &auto_expand, CONF_TYPE_FLAG, 0, 1, 0, NULL},
224 {"encodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 0, 1, NULL},
225 {"noencodedups", &encode_duplicates, CONF_TYPE_FLAG, 0, 1, 0, NULL},
227 {"odml", &write_odml, CONF_TYPE_FLAG, 0, 0, 1, NULL},
228 {"noodml", &write_odml, CONF_TYPE_FLAG, 0, 1, 0, NULL},
230 // info header strings
231 {"info", info_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
233 #ifdef HAVE_DIVX4ENCORE
234 {"divx4opts", divx4opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
235 #endif
236 #ifdef HAVE_MP3LAME
237 {"lameopts", lameopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
238 #endif
239 #ifdef USE_LIBAVCODEC
240 {"lavcopts", lavcopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
241 #else
242 {"lavcopts", "MPlayer was compiled without libavcodec. See README or DOCS.\n", CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
243 #endif
244 #ifdef USE_WIN32DLL
245 {"vfwopts", vfwopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
246 #endif
247 #if defined(HAVE_XVID3) || defined(HAVE_XVID4)
248 {"xvidencopts", xvidencopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
249 #endif
250 #if defined(HAVE_X264)
251 {"x264encopts", x264encopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
252 #endif
254 {"nuvopts", nuvopts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL},
256 #define MAIN_CONF
257 #include "cfg-common.h"
258 #undef MAIN_CONF
260 // {"-help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
261 // {"help", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
262 // {"h", help_text, CONF_TYPE_PRINT, CONF_NOCFG, 0, 0, NULL},
263 {NULL, NULL, 0, 0, 0, 0, NULL}