forked from Motion-Project/motion
-
Notifications
You must be signed in to change notification settings - Fork 0
/
conf.h
238 lines (213 loc) · 8.16 KB
/
conf.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
/*
*
* conf.h - function prototypes for the config handling routines
*
* Originally written for the dproxy package by Matthew Pratt.
*
* Copyright 2000 Jeroen Vreeken (pe1rxq@chello.nl)
*
* This software is licensed under the terms of the GNU General
* Public License (GPL). Please see the file COPYING for details.
*
*
*/
#ifndef _INCLUDE_CONF_H
#define _INCLUDE_CONF_H
/*
* More parameters may be added later.
*/
struct config {
/* Overall system configuration parameters */
/* daemon is directly cast into the cnt context rather than conf */
int setup_mode;
char *pid_file;
char *log_file;
int log_level;
char *log_type;
int quiet;
int native_language;
const char *camera_name;
int camera_id;
const char *camera_dir;
const char *target_dir;
/* Capture device configuration parameters */
const char *video_device;
char *vid_control_params;
int v4l2_palette;
int input;
int norm;
unsigned long frequency;
int auto_brightness;
const char *tuner_device;
int roundrobin_frames;
int roundrobin_skip;
int roundrobin_switchfilter;
const char *netcam_url;
const char *netcam_highres;
const char *netcam_userpass;
const char *netcam_keepalive;
const char *netcam_proxy;
int netcam_tolerant_check;
int netcam_use_tcp;
const char *mmalcam_name;
const char *mmalcam_control_params;
/* Image processing configuration parameters */
int width;
int height;
int framerate;
int minimum_frame_time;
int rotate;
const char *flip_axis;
const char *locate_motion_mode;
const char *locate_motion_style;
const char *text_left;
const char *text_right;
int text_changes;
int text_scale;
const char *text_event;
/* Motion detection configuration parameters */
int emulate_motion;
int threshold;
int threshold_maximum;
int threshold_tune;
int noise_level;
int noise_tune;
const char *despeckle_filter;
const char *area_detect;
const char *mask_file;
const char *mask_privacy;
int smart_mask_speed;
int lightswitch_percent;
int lightswitch_frames;
int minimum_motion_frames;
int event_gap;
int pre_capture;
int post_capture;
/* Script execution configuration parameters */
char *on_event_start;
char *on_event_end;
char *on_picture_save;
char *on_area_detected;
char *on_motion_detected;
char *on_movie_start;
char *on_movie_end;
char *on_camera_lost;
char *on_camera_found;
/* Picture output configuration parameters */
const char *picture_output;
int picture_output_motion;
const char *picture_type;
int picture_quality;
const char *picture_exif;
const char *picture_filename;
/* Snapshot configuration parameters */
int snapshot_interval;
const char *snapshot_filename;
/* Movie output configuration parameters */
int movie_output;
int movie_output_motion;
int movie_max_time;
int movie_bps;
int movie_quality;
const char *movie_codec;
int movie_duplicate_frames;
int movie_passthrough;
const char *movie_filename;
int movie_extpipe_use;
const char *movie_extpipe;
/* Timelapse movie configuration parameters */
int timelapse_interval;
const char *timelapse_mode;
int timelapse_fps;
const char *timelapse_codec;
const char *timelapse_filename;
/* Loopback device configuration parameters */
const char *video_pipe;
const char *video_pipe_motion;
/* Webcontrol configuration parameters */
int webcontrol_port;
int webcontrol_ipv6;
int webcontrol_localhost;
int webcontrol_parms;
int webcontrol_interface;
int webcontrol_auth_method;
const char *webcontrol_authentication;
int webcontrol_tls;
const char *webcontrol_cert;
const char *webcontrol_key;
const char *webcontrol_cors_header;
/* Live stream configuration parameters */
int stream_port;
int stream_localhost;
int stream_auth_method;
const char *stream_authentication;
int stream_tls;
const char *stream_cors_header;
int stream_preview_scale;
int stream_preview_newline;
int stream_preview_method;
int stream_quality;
int stream_grey;
int stream_motion;
int stream_maxrate;
int stream_limit;
/* Database and SQL configuration parameters */
const char *database_type;
const char *database_dbname;
const char *database_host;
int database_port;
const char *database_user;
const char *database_password;
int database_busy_timeout;
int sql_log_picture;
int sql_log_snapshot;
int sql_log_movie;
int sql_log_timelapse;
const char *sql_query_start;
const char *sql_query_stop;
const char *sql_query;
/* Command line parameters */
int argc;
char **argv;
};
/**
* typedef for a param copy function.
*/
typedef struct context ** (* conf_copy_func)(struct context **, const char *, int);
typedef const char *(* conf_print_func)(struct context **, char **, int, unsigned int);
/**
* description for parameters in the config file
*/
typedef struct {
const char *param_name; /* name for this parameter */
const char *param_help; /* short explanation for parameter */
unsigned int main_thread; /* belong only to main thread when value>0 */
int conf_value; /* pointer to a field in struct context */
conf_copy_func copy; /* a function to set the value in 'config' */
conf_print_func print; /* a function to output the value to a file */
int webui_level; /* Enum to display in webui: 0,1,2,3,99(always to never)*/
} config_param;
extern config_param config_params[];
/**
* description for deprecated parameters in the config file
*/
typedef struct {
const char *name; /* Name of the deprecated option */
const char *last_version; /* Last version this option was used in */
const char *info; /* Short text on why it was deprecated (removed, replaced with, etc) */
int conf_value; /* Pointer to the replacement field in struct context */
const char *newname; /* Name of the new parameter */
conf_copy_func copy; /* Function to set the replacement value */
} dep_config_param;
extern dep_config_param dep_config_params[];
struct context **conf_load(struct context **);
struct context **copy_string(struct context **, const char *, int);
struct context **copy_uri(struct context **, const char *, int);
struct context **conf_cmdparse(struct context **, const char *, const char *);
struct context **read_camera_dir(struct context **, const char *, int);
void conf_output_parms(struct context **cnt);
const char *config_type(config_param *);
void conf_print(struct context **);
char *mystrdup(const char *);
char *mystrcpy(char *, const char *);
#endif /* _INCLUDE_CONF_H */