4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
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.
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.
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
26 #include "audioconfig.inc"
29 #include "maxchannels.h"
31 #include "preferences.inc"
32 #include "videoconfig.inc"
41 Preferences& operator=(Preferences &that);
42 void copy_from(Preferences *that);
43 int load_defaults(BC_Hash *defaults);
44 int save_defaults(BC_Hash *defaults);
47 static void print_channels(char *string,
48 int *channel_positions,
50 static void scan_channels(char *string,
51 int *channel_positions,
54 void add_node(const char *text, int port, int enabled, float rate);
55 void delete_node(int number);
58 // Get average frame rate or 1.0
59 float get_avg_rate(int use_master_node);
61 void edit_node(int number, const char *new_text, int port, int enabled);
62 int get_enabled_nodes();
63 const char* get_node_hostname(int number);
64 int get_node_port(int number);
65 int get_asset_file_path(Asset *asset, char *path);
66 // Copy frame rates. Always used where the argument is the renderfarm and this is
67 // the master preferences. This way, the value for master node is properly
68 // translated from a unix socket to the local_rate.
69 void copy_rates_from(Preferences *preferences);
70 // Set frame rate for a node. Node -1 is the master node.
71 // The node number is relative to the enabled nodes.
72 void set_rate(float rate, int node);
73 float get_rate(int node);
74 // Calculate the number of cpus to use.
75 // Determined by /proc/cpuinfo and force_uniprocessor.
76 // interactive forces it to ignore force_uniprocessor
77 int calculate_processors(int interactive = 0);
79 // ================================= Performance ================================
80 // directory to look in for indexes
81 char index_directory[BCTEXTLEN];
82 // size of index file in bytes
85 // Use thumbnails in AWindow assets.
90 char theme[BCTEXTLEN];
91 double render_preroll;
93 int force_uniprocessor;
94 // The number of cpus to use when rendering.
95 // Determined by /proc/cpuinfo and force_uniprocessor
97 // Number of processors for interactive operations.
99 // enable/disable filefork
101 // ffmpeg probes early/late during File::open_file read
102 int ffmpeg_early_probe;
105 // Default positions for channels
106 int channel_positions[MAXCHANNELS * MAXCHANNELS];
108 Asset *brender_asset;
110 // Number of frames in a brender job.
111 int brender_fragment;
112 // Size of cache in bytes.
113 // Several caches of cache_size exist so multiply by 4.
114 // rendering, playback, timeline, preview
119 // If the node starts with a / it's on the localhost using a path as the socket.
120 ArrayList<char*> renderfarm_nodes;
121 ArrayList<int> renderfarm_ports;
122 ArrayList<int> renderfarm_enabled;
123 ArrayList<float> renderfarm_rate;
124 // Rate of master node
126 char renderfarm_mountpoint[BCTEXTLEN];
127 // Use virtual filesystem
130 int renderfarm_job_count;
131 // Consolidate output files
132 int renderfarm_consolidate;
136 // Scan for commercials
137 int scan_commercials;
138 // Android remote control
141 char android_pin[BCSTRLEN];
143 // ====================================== Plugin Set ==============================
144 char plugin_dir[BCTEXTLEN];
146 // Required when updating renderfarm rates
147 Mutex *preferences_lock;