5 #include "cfg-common.h"
9 #if defined(HAVE_FBDEV)||defined(HAVE_VESA)
10 extern char *monitor_hfreq_str
;
11 extern char *monitor_vfreq_str
;
12 extern char *monitor_dotclock_str
;
16 extern char *fb_dev_name
;
17 extern char *fb_mode_cfgfile
;
18 extern char *fb_mode_name
;
21 extern char *fb_dev_name
;
25 #if DIRECTFBVERSION > 912
26 extern char *dfb_params
;
30 extern int z_compression
;
33 extern int jpeg_baseline
;
34 extern int jpeg_progressive_mode
;
35 extern int jpeg_optimize
;
36 extern int jpeg_smooth
;
37 extern int jpeg_quality
;
38 extern char * jpeg_outdir
;
41 //extern char *sdl_driver;
43 extern int sdl_forcexv
;
44 //extern char *sdl_adriver;
47 extern int fakemono
; // defined in dec_audio.c
51 extern char *lirc_configfile
;
54 extern int vo_doublebuffering
;
58 extern int vo_directrendering
;
59 extern float vo_panscan
;
60 /* only used by startup (setting these values from configfile) */
61 extern int vo_gamma_brightness
;
62 extern int vo_gamma_saturation
;
63 extern int vo_gamma_contrast
;
64 extern int vo_gamma_hue
;
65 extern char *vo_geometry
;
67 extern int opt_screen_size_x
;
68 extern int opt_screen_size_y
;
69 extern int fullscreen
;
76 extern char *ao_outputfilename
;
77 extern int ao_pcm_waveheader
;
80 extern char *mDisplayName
;
83 extern int stop_xscreensaver
;
84 extern int vo_x11_keepaspect
;
85 extern char **vo_fstype_list
;
86 extern int vo_nomouse_input
;
90 extern int vo_aa_parseoption(m_option_t
* conf
, char *opt
, char * param
);
91 extern void vo_aa_revertoption(m_option_t
* opt
,char* param
);
95 extern int vo_zr_parseoption(m_option_t
* conf
, char *opt
, char * param
);
96 extern void vo_zr_revertoption(m_option_t
* opt
,char* pram
);
100 extern m_option_t dxr2_opts
[];
103 #ifdef STREAMING_LIVE_DOT_COM
104 extern int isSDPFile
;
105 extern int rtspStreamOverTCP
;
109 extern char * skinName
;
114 #ifdef HAVE_ODIVX_POSTPROCESS
115 extern int use_old_pp
;
119 extern int xinerama_screen
;
126 /* from libvo/aspect.c */
127 extern float monitor_aspect
;
129 /* Options related to audio out plugins */
130 m_option_t ao_plugin_conf
[]={
131 {"list", &ao_plugin_cfg
.plugin_list
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
132 {"delay", &ao_plugin_cfg
.pl_delay_len
, CONF_TYPE_INT
, CONF_MIN
, 0, 0, NULL
},
133 {"format", &ao_plugin_cfg
.pl_format_type
, CONF_TYPE_INT
, CONF_MIN
, 0, 0, NULL
},
134 {"fout", &ao_plugin_cfg
.pl_resample_fout
, CONF_TYPE_INT
, CONF_MIN
, 0, 0, NULL
},
135 {"volume", &ao_plugin_cfg
.pl_volume_volume
, CONF_TYPE_INT
, CONF_RANGE
, 0, 255, NULL
},
136 {"mul", &ao_plugin_cfg
.pl_extrastereo_mul
, CONF_TYPE_FLOAT
, CONF_RANGE
, -10.0, 10.0, NULL
},
137 {"softclip", &ao_plugin_cfg
.pl_volume_softclip
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
138 {NULL
, NULL
, 0, 0, 0, 0, NULL
}
142 m_option_t jpeg_conf
[]={
143 {"progressive", &jpeg_progressive_mode
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
144 {"noprogressive", &jpeg_progressive_mode
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
145 {"baseline", &jpeg_baseline
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
146 {"nobaseline", &jpeg_baseline
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
147 {"optimize", &jpeg_optimize
, CONF_TYPE_INT
, CONF_RANGE
, 0, 100, NULL
},
148 {"smooth", &jpeg_smooth
, CONF_TYPE_INT
, CONF_RANGE
, 0, 100, NULL
},
149 {"quality", &jpeg_quality
, CONF_TYPE_INT
, CONF_RANGE
, 0, 100, NULL
},
150 {"outdir", &jpeg_outdir
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
151 {NULL
, NULL
, 0, 0, 0, 0, NULL
}
155 extern int sws_flags
;
156 extern int readPPOpt(void *conf
, char *arg
);
157 extern void revertPPOpt(void *conf
, char* opt
);
158 extern char* pp_help
;
161 * CONF_TYPE_FUNC_FULL :
162 * allows own implemtations for passing the params
164 * the function receives parameter name and argument (if it does not start with - )
165 * useful with a conf.name like 'aa*' to parse several parameters to a function
166 * return 0 =ok, but we didn't need the param (could be the filename)
167 * return 1 =ok, we accepted the param
168 * negative values: see cfgparser.h, ERR_XXX
173 m_option_t mplayer_opts
[]={
174 /* name, pointer, type, flags, min, max */
175 {"include", cfg_include
, CONF_TYPE_FUNC_PARAM
, CONF_NOSAVE
, 0, 0, NULL
}, /* this don't need anymore to be the first!!! */
177 //---------------------- libao/libvo options ------------------------
178 {"o", "Option -o has been renamed to -vo (video-out), use -vo !\n",
179 CONF_TYPE_PRINT
, CONF_NOCFG
, 0, 0, NULL
},
180 {"vo", &video_driver_list
, CONF_TYPE_STRING_LIST
, 0, 0, 0, NULL
},
181 {"ao", &audio_driver_list
, CONF_TYPE_STRING_LIST
, 0, 0, 0, NULL
},
182 {"fixed-vo", &fixed_vo
, CONF_TYPE_FLAG
,CONF_GLOBAL
, 0, 1, NULL
},
183 {"nofixed-vo", &fixed_vo
, CONF_TYPE_FLAG
,CONF_GLOBAL
, 0, 0, NULL
},
185 {"aop", ao_plugin_conf
, CONF_TYPE_SUBCONFIG
, 0, 0, 0, NULL
},
186 {"dsp", "Use -ao oss:dsp_path!\n", CONF_TYPE_PRINT
, CONF_NOCFG
, 0, 0, NULL
},
187 {"mixer", &mixer_device
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
188 {"master", "Option -master has been removed, use -aop list=volume instead.\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
189 // override audio buffer size (used only by -ao oss, anyway obsolete...)
190 {"abs", &ao_data
.buffersize
, CONF_TYPE_INT
, CONF_MIN
, 0, 0, NULL
},
193 {"aofile", &ao_outputfilename
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
194 {"waveheader", &ao_pcm_waveheader
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
195 {"nowaveheader", &ao_pcm_waveheader
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
197 {"alsa", "Option -alsa has been removed, new audio code doesn't need it! Remove it from your config file!\n",
198 CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
199 {"noalsa", "Option -noalsa has been removed, new audio code doesn't need it! Remove it from your config file!\n",
200 CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
202 {"edl", &edl_filename
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
203 {"edlout", &edl_output_filename
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
205 {"edl", "MPlayer was compiled without EDL support\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
206 {"edlout", "MPlayer was compiled without EDL support\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
210 {"display", &mDisplayName
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
215 {"z", &z_compression
, CONF_TYPE_INT
, CONF_RANGE
, 0, 9, NULL
},
219 {"jpeg", jpeg_conf
, CONF_TYPE_SUBCONFIG
, 0,0,0, NULL
},
223 {"sdl", "Use -vo sdl:driver instead of -vo sdl -sdl driver\n",
224 CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
225 {"noxv", &sdl_noxv
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
226 {"forcexv", &sdl_forcexv
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
228 {"sdla", "Use -ao sdl:driver instead of -ao sdl -sdla driver\n",
229 CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
232 #if defined(HAVE_FBDEV)||defined(HAVE_VESA)
233 {"monitor-hfreq", &monitor_hfreq_str
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
234 {"monitor-vfreq", &monitor_vfreq_str
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
235 {"monitor-dotclock", &monitor_dotclock_str
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
239 {"fb", &fb_dev_name
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
240 {"fbmode", &fb_mode_name
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
241 {"fbmodeconfig", &fb_mode_cfgfile
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
244 {"fb", &fb_dev_name
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
248 #if DIRECTFBVERSION > 912
249 {"dfbopts", &dfb_params
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
253 // force window width/height or resolution (with -vm)
254 {"x", &opt_screen_size_x
, CONF_TYPE_INT
, CONF_RANGE
, 0, 4096, NULL
},
255 {"y", &opt_screen_size_y
, CONF_TYPE_INT
, CONF_RANGE
, 0, 4096, NULL
},
256 // set screen dimensions (when not detectable or virtual!=visible)
257 {"screenw", &vo_screenwidth
, CONF_TYPE_INT
, CONF_RANGE
|CONF_OLD
, 0, 4096, NULL
},
258 {"screenh", &vo_screenheight
, CONF_TYPE_INT
, CONF_RANGE
|CONF_OLD
, 0, 4096, NULL
},
260 {"geometry", &vo_geometry
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
261 // set aspect ratio of monitor - usefull for 16:9 TVout
262 {"monitoraspect", &monitor_aspect
, CONF_TYPE_FLOAT
, CONF_RANGE
, 0.2, 3.0, NULL
},
263 // video mode switching: (x11,xv,dga)
264 {"vm", &vidmode
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
265 {"novm", &vidmode
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
266 // start in fullscreen mode:
267 {"fs", &fullscreen
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
268 {"nofs", &fullscreen
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
269 // set fullscreen switch method (workaround for buggy WMs)
270 {"fsmode", "option 'fsmode' is obsolete, avoid using it! if you really want it, try -fsmode-dontuse, but don't report bugs with this option used!\n", CONF_TYPE_PRINT
, CONF_RANGE
, 0, 31, NULL
},
271 {"fsmode-dontuse", &vo_fsmode
, CONF_TYPE_INT
, CONF_RANGE
, 0, 31, NULL
},
272 // set bpp (x11+vm, dga, fbdev, vesa, svga?)
273 {"bpp", &vo_dbpp
, CONF_TYPE_INT
, CONF_RANGE
, 0, 32, NULL
},
274 {"colorkey", &vo_colorkey
, CONF_TYPE_INT
, 0, 0, 0, NULL
},
275 {"nocolorkey", &vo_colorkey
, CONF_TYPE_FLAG
, 0, 0, 0x1000000, NULL
},
276 // double buffering: (mga/xmga, xv, vidix, vesa, fbdev)
277 {"double", &vo_doublebuffering
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
278 {"nodouble", &vo_doublebuffering
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
279 // wait for v-sync (vesa)
280 {"vsync", &vo_vsync
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
281 {"novsync", &vo_vsync
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
282 {"panscan", &vo_panscan
, CONF_TYPE_FLOAT
, CONF_RANGE
, 0.0, 1.0, NULL
},
284 {"grabpointer", &vo_grabpointer
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
285 {"nograbpointer", &vo_grabpointer
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
288 // x11,xv,xmga,xvidix
289 {"wid", &WinID
, CONF_TYPE_INT
, 0, 0, 0, NULL
},
290 {"rootwin", &WinID
, CONF_TYPE_FLAG
, 0, -1, 0, NULL
},
291 {"icelayer", "Use -fstype layer:<number> instead. -icelayer was obsoleted\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
292 {"stop-xscreensaver", &stop_xscreensaver
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
293 {"nostop-xscreensaver", &stop_xscreensaver
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
294 {"stop_xscreensaver", "Use -stop-xscreensaver instead, options with _ have been obsoleted.\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
295 {"keepaspect", &vo_x11_keepaspect
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
296 {"nokeepaspect", &vo_x11_keepaspect
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
297 {"fstype", &vo_fstype_list
, CONF_TYPE_STRING_LIST
, 0, 0, 0, NULL
},
298 {"nomouseinput", &vo_nomouse_input
, CONF_TYPE_FLAG
,0,0,-1,NULL
},
302 {"xineramascreen", &xinerama_screen
, CONF_TYPE_INT
, CONF_RANGE
, 0, 32, NULL
},
305 {"brightness",&vo_gamma_brightness
, CONF_TYPE_INT
, CONF_RANGE
, -100, 100, NULL
},
306 {"saturation",&vo_gamma_saturation
, CONF_TYPE_INT
, CONF_RANGE
, -100, 100, NULL
},
307 {"contrast",&vo_gamma_contrast
, CONF_TYPE_INT
, CONF_RANGE
, -100, 100, NULL
},
308 {"hue",&vo_gamma_hue
, CONF_TYPE_INT
, CONF_RANGE
, -100, 100, NULL
},
310 // direct rendering (decoding to video out buffer)
311 {"dr", &vo_directrendering
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
312 {"nodr", &vo_directrendering
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
313 {"vaa_dr", "Use -dr, -vaa_dr was obsoleted\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
314 {"vaa_nodr", "Use -nodr, -vaa_nodr was obsoleted\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
318 {"aa*", vo_aa_parseoption
, CONF_TYPE_FUNC_FULL
, 0, 0, 0 , &vo_aa_revertoption
},
323 {"zr*", vo_zr_parseoption
, CONF_TYPE_FUNC_FULL
, 0, 0, 0, &vo_zr_revertoption
},
327 {"dxr2", &dxr2_opts
, CONF_TYPE_SUBCONFIG
, 0, 0, 0, NULL
},
330 #ifdef STREAMING_LIVE_DOT_COM
331 {"sdp", "-sdp is deprecated, use sdp://file instead.\n", CONF_TYPE_PRINT
, 0, 0, 0, NULL
},
332 // -rtsp-stream-over-tcp option, specifying TCP streaming of RTP/RTCP
333 {"rtsp-stream-over-tcp", &rtspStreamOverTCP
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
335 {"rtsp-stream-over-tcp", "RTSP support requires the \"LIVE.COM Streaming Media\" libraries!\n", CONF_TYPE_PRINT
, CONF_NOCFG
, 0, 0, NULL
},
338 //---------------------- mplayer-only options ------------------------
340 {"osdlevel", &osd_level
, CONF_TYPE_INT
, CONF_RANGE
, 0, 3, NULL
},
342 {"menu", &use_menu
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 0, 1, NULL
},
343 {"nomenu", &use_menu
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 1, 0, NULL
},
344 {"menu-root", &menu_root
, CONF_TYPE_STRING
, CONF_GLOBAL
, 0, 0, NULL
},
345 {"menu-cfg", &menu_cfg
, CONF_TYPE_STRING
, CONF_GLOBAL
, 0, 0, NULL
},
347 {"menu", "OSD menu support was not compiled in\n", CONF_TYPE_PRINT
,0, 0, 0, NULL
},
350 // these should be moved to -common, and suppot in mencoder too
351 {"vobsub", &vobsub_name
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
352 {"vobsubid", &vobsub_id
, CONF_TYPE_INT
, CONF_RANGE
, 0, 31, NULL
},
353 {"forcedsubsonly", &forced_subs_only
,CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
355 {"sstep", &step_sec
, CONF_TYPE_INT
, CONF_MIN
, 0, 0, NULL
},
357 // set a-v distance, should be moved to -common and support in mencoder
358 {"delay", &audio_delay
, CONF_TYPE_FLOAT
, CONF_RANGE
, -100.0, 100.0, NULL
},
360 {"speed", &playback_speed
, CONF_TYPE_FLOAT
, CONF_RANGE
, 0.01, 100.0, NULL
},
362 {"framedrop", &frame_dropping
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
363 {"hardframedrop", &frame_dropping
, CONF_TYPE_FLAG
, 0, 0, 2, NULL
},
364 {"noframedrop", &frame_dropping
, CONF_TYPE_FLAG
, 0, 1, 0, NULL
},
366 {"autoq", &auto_quality
, CONF_TYPE_INT
, CONF_RANGE
, 0, 100, NULL
},
368 {"benchmark", &benchmark
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
370 // dump some stream out instead of playing the file
371 // this really should be in mencoder instead of mplayer... -> TODO
372 {"dumpfile", &stream_dump_name
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
373 {"dumpaudio", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
374 {"dumpvideo", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 2, NULL
},
375 {"dumpsub", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 3, NULL
},
376 {"dumpmpsub", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 4, NULL
},
377 {"dumpstream", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 5, NULL
},
378 {"dumpsrtsub", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 6, NULL
},
379 {"dumpmicrodvdsub", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 7, NULL
},
380 {"dumpjacosub", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 8, NULL
},
381 {"dumpsami", &stream_dump_type
, CONF_TYPE_FLAG
, 0, 0, 9, NULL
},
384 {"lircconf", &lirc_configfile
, CONF_TYPE_STRING
, CONF_GLOBAL
, 0, 0, NULL
},
387 {"gui", &use_gui
, CONF_TYPE_FLAG
, CONF_GLOBAL
|CONF_NOCMD
, 0, 1, NULL
},
388 // {"nogui", &use_gui, CONF_TYPE_FLAG, CONF_GLOBAL, 1, 0, NULL},
391 {"skin", &skinName
, CONF_TYPE_STRING
, CONF_GLOBAL
, 0, 0, NULL
},
392 {"enqueue", &enqueue
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
393 {"noenqueue", &enqueue
, CONF_TYPE_FLAG
, 0, 0, 0, NULL
},
394 {"guiwid", &guiWinID
, CONF_TYPE_INT
, 0, 0, 0, NULL
},
397 {"noloop", &loop_times
, CONF_TYPE_FLAG
, 0, 0, -1, NULL
},
398 {"loop", &loop_times
, CONF_TYPE_INT
, CONF_RANGE
, -1, 10000, NULL
},
399 {"playlist", NULL
, CONF_TYPE_STRING
, 0, 0, 0, NULL
},
402 {"noautosync", &autosync
, CONF_TYPE_FLAG
, 0, 0, -1, NULL
},
403 {"autosync", &autosync
, CONF_TYPE_INT
, CONF_RANGE
, 0, 10000, NULL
},
404 // {"dapsync", &dapsync, CONF_TYPE_FLAG, 0, 0, 1, NULL},
405 // {"nodapsync", &dapsync, CONF_TYPE_FLAG, 0, 1, 0, NULL},
407 {"softsleep", &softsleep
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
409 {"nortc", &nortc
, CONF_TYPE_FLAG
, 0, 0, 1, NULL
},
412 {"slave", &slave_mode
, CONF_TYPE_FLAG
,CONF_GLOBAL
, 0, 1, NULL
},
413 {"use-stdin", &use_stdin
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 0, 1, NULL
},
416 #include "cfg-common.h"
419 {"identify", &identify
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 0, 1, NULL
},
420 {"quiet", &quiet
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 0, 1, NULL
},
421 {"noquiet", &quiet
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 1, 0, NULL
},
422 {"really-quiet", &verbose
, CONF_TYPE_FLAG
, CONF_GLOBAL
, 0, -10, NULL
},
423 {"verbose", &verbose
, CONF_TYPE_INT
, CONF_RANGE
|CONF_GLOBAL
, 0, 100, NULL
},
424 {"v", cfg_inc_verbose
, CONF_TYPE_FUNC
, CONF_GLOBAL
|CONF_NOSAVE
, 0, 0, NULL
},
425 {"-help", help_text
, CONF_TYPE_PRINT
, CONF_NOCFG
|CONF_GLOBAL
, 0, 0, NULL
},
426 {"help", help_text
, CONF_TYPE_PRINT
, CONF_NOCFG
|CONF_GLOBAL
, 0, 0, NULL
},
427 {"h", help_text
, CONF_TYPE_PRINT
, CONF_NOCFG
|CONF_GLOBAL
, 0, 0, NULL
},
428 {NULL
, NULL
, 0, 0, 0, 0, NULL
}