e8698b71c38d81279e69b5682e3edeb89e6a9ccc
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / preferences.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef PREFERENCES_H
23 #define PREFERENCES_H
24
25 #include "asset.inc"
26 #include "audioconfig.inc"
27 #include "bchash.inc"
28 #include "guicast.h"
29 #include "maxchannels.h"
30 #include "mutex.inc"
31 #include "preferences.inc"
32 #include "probeprefs.inc"
33 #include "shbtnprefs.inc"
34 #include "videoconfig.inc"
35
36
37 class Preferences
38 {
39 public:
40         Preferences();
41         ~Preferences();
42
43         Preferences& operator=(Preferences &that);
44         void copy_from(Preferences *that);
45         int load_defaults(BC_Hash *defaults);
46         int save_defaults(BC_Hash *defaults);
47         void boundaries();
48
49         static void print_channels(char *string,
50                 int *channel_positions,
51                 int channels);
52         static void scan_channels(char *string,
53                 int *channel_positions,
54                 int channels);
55
56         void add_node(const char *text, int port, int enabled, float rate);
57         void delete_node(int number);
58         void delete_nodes();
59         void reset_rates();
60 // Get average frame rate or 1.0
61         float get_avg_rate(int use_master_node);
62         void sort_nodes();
63         void edit_node(int number, const char *new_text, int port, int enabled);
64         int get_enabled_nodes();
65         const char* get_node_hostname(int number);
66         int get_node_port(int number);
67         int get_asset_file_path(Asset *asset, char *path);
68 // Copy frame rates.  Always used where the argument is the renderfarm and this is
69 // the master preferences.  This way, the value for master node is properly
70 // translated from a unix socket to the local_rate.
71         void copy_rates_from(Preferences *preferences);
72 // Set frame rate for a node.  Node -1 is the master node.
73 // The node number is relative to the enabled nodes.
74         void set_rate(float rate, int node);
75         float get_rate(int node);
76 // Calculate the number of cpus to use.
77 // Determined by /proc/cpuinfo and force_uniprocessor.
78 // interactive forces it to ignore force_uniprocessor
79         int calculate_processors(int interactive = 0);
80 // file probe armed
81         int get_file_probe_armed(const char *nm);
82         void set_file_probe_armed(const char *nm, int v);
83 // ================================= Performance ================================
84 // directory to look in for indexes
85         char index_directory[BCTEXTLEN];
86 // size of index file in bytes
87         int64_t index_size;
88         int index_count;
89 // Use thumbnails in AWindow assets.
90         int use_thumbnails;
91         int keyframe_reticle;
92         int perpetual_session;
93         int trap_sigsegv;
94         int trap_sigintr;
95 // media thumbnail size
96         int awindow_picon_h;
97 // Title of theme
98         char theme[BCTEXTLEN];
99 // plugin icon set
100         char plugin_icons[BCTEXTLEN];
101 // snapshot directory path
102         char snapshot_path[BCTEXTLEN];
103         double render_preroll;
104         int brender_preroll;
105         int force_uniprocessor;
106         int project_smp;
107 // The number of cpus to use when rendering.
108 // Determined by /proc/cpuinfo and force_uniprocessor
109         int processors;
110 // Number of processors for interactive operations.
111         int real_processors;
112 // ffmpeg builds marker indexes as it builds idx files
113         int ffmpeg_marker_indexes;
114 // warning
115         int warn_indexes;
116         int warn_version;
117         int bd_warn_root;
118 // grab input focus on enter notify
119         int grab_input_focus;
120 // popup menus activate on button release
121         int popupmenu_btnup;
122 // textbox focus policy: click, leave
123         int textbox_focus_policy;
124 // forward playback starts next frame, not this frame
125         int forward_render_displacement;
126 // use dvd yuv420p interlace format
127         int dvd_yuv420p_interlace;
128 // highlight inversion color
129         int highlight_inverse;
130 // yuv color space/range
131         int yuv_color_space;
132         int yuv_color_range;
133
134 // Default positions for channels
135         int channel_positions[MAXCHANNELS][MAXCHANNELS];
136
137         Asset *brender_asset;
138         int use_brender;
139 // Number of frames in a brender job.
140         int brender_fragment;
141 // Size of cache in bytes.
142 // Several caches of cache_size exist so multiply by 4.
143 // rendering, playback, timeline, preview
144         int64_t cache_size;
145
146         int use_renderfarm;
147         int renderfarm_port;
148 // If the node starts with a / it's on the localhost using a path as the socket.
149         ArrayList<char*> renderfarm_nodes;
150         ArrayList<int>   renderfarm_ports;
151         ArrayList<int>   renderfarm_enabled;
152         ArrayList<float> renderfarm_rate;
153 // Rate of master node
154         float local_rate;
155         char renderfarm_mountpoint[BCTEXTLEN];
156 // Use virtual filesystem
157         int renderfarm_vfs;
158 // Jobs per node
159         int renderfarm_job_count;
160 // Consolidate output files
161         int renderfarm_consolidate;
162 // watchdog timeout, zero disabled
163         int renderfarm_watchdog_timeout;
164
165 // Tip of the day
166         int use_tipwindow;
167 // Scan for commercials
168         int scan_commercials;
169 // Android remote control
170         int android_remote;
171         int android_port;
172         char android_pin[BCSTRLEN];
173 // shell cmd line menu ops
174         ArrayList<ShBtnPref *> shbtn_prefs;
175 // file open probe order
176         ArrayList<ProbePref *> file_probes;
177
178 // ====================================== Plugin Set ==============================
179         char plugin_dir[BCTEXTLEN];
180         char lv2_path[BCTEXTLEN];
181         int autostart_lv2ui;
182
183 // Required when updating renderfarm rates
184         Mutex *preferences_lock;
185 };
186
187 #endif