X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpreferences.C;h=5f9d40ea241dc280b8181a5a357ec0b2248fd937;hp=1341277a77d7151b9ac97fec98bb01b2e658667c;hb=502b6f3b6fd04f6b01c6d70dcb81aa304dd0db1c;hpb=4584ac9807024c496d10867808c353fdf73bfad6 diff --git a/cinelerra-5.1/cinelerra/preferences.C b/cinelerra-5.1/cinelerra/preferences.C index 1341277a..5f9d40ea 100644 --- a/cinelerra-5.1/cinelerra/preferences.C +++ b/cinelerra-5.1/cinelerra/preferences.C @@ -31,6 +31,7 @@ #include "filesystem.h" #include "guicast.h" #include "indexfile.h" +#include "maxchannels.h" #include "mutex.h" #include "preferences.h" #include "probeprefs.h" @@ -39,36 +40,37 @@ #include "videoconfig.h" #include "videodevice.inc" +#include #include #include #include #include -//#define CLAMP(x, y, z) (x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x))) - Preferences::Preferences() { // Set defaults FileSystem fs; - preferences_lock = new Mutex("Preferences::preferences_lock"); - // initial plugin path from build -DPLUGIN_DIR="..." sprintf(plugin_dir, "%s/", File::get_plugin_path()); sprintf(index_directory, "%s/", File::get_config_path()); - if(strlen(index_directory)) + if( strlen(index_directory) ) fs.complete_path(index_directory); - cache_size = 0x1000000; + cache_size = 0x10000000; index_size = 0x400000; index_count = 500; use_thumbnails = 1; keyframe_reticle = HAIRLINE_DRAGGING; + perpetual_session = 0; + strcpy(lv2_path, DEFAULT_LV2_PATH); + autostart_lv2ui = 0; trap_sigsegv = 1; trap_sigintr = 1; theme[0] = 0; plugin_icons[0] = 0; + strcpy(snapshot_path, "/tmp"); use_renderfarm = 0; force_uniprocessor = 0; renderfarm_port = DEAMON_PORT; @@ -77,6 +79,7 @@ Preferences::Preferences() renderfarm_mountpoint[0] = 0; renderfarm_vfs = 0; renderfarm_job_count = 20; + renderfarm_watchdog_timeout = 60; project_smp = processors = calculate_processors(0); real_processors = calculate_processors(1); ffmpeg_marker_indexes = 1; @@ -84,8 +87,13 @@ Preferences::Preferences() warn_version = 1; bd_warn_root = 1; popupmenu_btnup = 1; + grab_input_focus = 1; textbox_focus_policy = 0; + forward_render_displacement = 0; dvd_yuv420p_interlace = 0; + highlight_inverse = 0xffffff; + yuv_color_space = BC_COLORS_BT601; + yuv_color_range = BC_COLORS_JPEG; // Default brender asset brender_asset = new Asset; @@ -106,14 +114,12 @@ Preferences::Preferences() android_port = 23432; strcpy(android_pin, "cinelerra"); - for(int i = 0; i < MAXCHANNELS; i++) - { - for(int j = 0; j < i + 1; j++) - { - int position = 180 - (360 * j / (i + 1)); - while(position < 0) position += 360; - channel_positions[i * MAXCHANNELS + j] = position; - } + memset(channel_positions, 0, sizeof(channel_positions)); + int channels = 0; + while( channels < MAXCHANNELS ) { + int *positions = channel_positions[channels++]; + for( int i=0; ilocal_rate; - for(int j = 0; - j < preferences->renderfarm_nodes.total; - j++) - { + for( int j=0; jrenderfarm_nodes.total; ++j ) { double new_rate = preferences->renderfarm_rate.values[j]; // Put in the master node - if(preferences->renderfarm_nodes.values[j][0] == '/') - { - if(!EQUIV(new_rate, 0.0)) + if( preferences->renderfarm_nodes.values[j][0] == '/' ) { + if( !EQUIV(new_rate, 0.0) ) local_rate = new_rate; } else // Search for local node and copy it to that node - if(!EQUIV(new_rate, 0.0)) - { - for(int i = 0; i < renderfarm_nodes.total; i++) - { - if(!strcmp(preferences->renderfarm_nodes.values[j], renderfarm_nodes.values[i]) && - preferences->renderfarm_ports.values[j] == renderfarm_ports.values[i]) - { + if( !EQUIV(new_rate, 0.0) ) { + for( int i=0; irenderfarm_nodes.values[j], renderfarm_nodes.values[i]) && + preferences->renderfarm_ports.values[j] == renderfarm_ports.values[i] ) { renderfarm_rate.values[i] = new_rate; break; } @@ -172,8 +171,10 @@ void Preferences::copy_from(Preferences *that) index_count = that->index_count; use_thumbnails = that->use_thumbnails; keyframe_reticle = that->keyframe_reticle; + perpetual_session = that->perpetual_session; strcpy(theme, that->theme); strcpy(plugin_icons, that->plugin_icons); + strcpy(snapshot_path, that->snapshot_path); use_tipwindow = that->use_tipwindow; scan_commercials = that->scan_commercials; @@ -189,6 +190,8 @@ void Preferences::copy_from(Preferences *that) cache_size = that->cache_size; project_smp = that->project_smp; force_uniprocessor = that->force_uniprocessor; + strcpy(lv2_path, that->lv2_path); + autostart_lv2ui = that->autostart_lv2ui; trap_sigsegv = that->trap_sigsegv; trap_sigintr = that->trap_sigintr; processors = that->processors; @@ -198,15 +201,19 @@ void Preferences::copy_from(Preferences *that) warn_version = that->warn_version; bd_warn_root = that->bd_warn_root; popupmenu_btnup = that->popupmenu_btnup; + grab_input_focus = that->grab_input_focus; textbox_focus_policy = that->textbox_focus_policy; + forward_render_displacement = that->forward_render_displacement; dvd_yuv420p_interlace = that->dvd_yuv420p_interlace; + highlight_inverse = that->highlight_inverse; + yuv_color_space = that->yuv_color_space; + yuv_color_range = that->yuv_color_range; renderfarm_nodes.remove_all_objects(); renderfarm_ports.remove_all(); renderfarm_enabled.remove_all(); renderfarm_rate.remove_all(); local_rate = that->local_rate; - for(int i = 0; i < that->renderfarm_nodes.size(); i++) - { + for( int i=0; irenderfarm_nodes.size(); ++i ) { add_node(that->renderfarm_nodes.get(i), that->renderfarm_ports.get(i), that->renderfarm_enabled.get(i), @@ -217,6 +224,7 @@ void Preferences::copy_from(Preferences *that) render_preroll = that->render_preroll; brender_preroll = that->brender_preroll; renderfarm_job_count = that->renderfarm_job_count; + renderfarm_watchdog_timeout = that->renderfarm_watchdog_timeout; renderfarm_vfs = that->renderfarm_vfs; strcpy(renderfarm_mountpoint, that->renderfarm_mountpoint); renderfarm_consolidate = that->renderfarm_consolidate; @@ -227,13 +235,12 @@ void Preferences::copy_from(Preferences *that) // Check boundaries FileSystem fs; - if(strlen(index_directory)) - { + if( strlen(index_directory) ) { fs.complete_path(index_directory); fs.add_end_slash(index_directory); } -// if(strlen(global_plugin_dir)) +// if( strlen(global_plugin_dir) ) // { // fs.complete_path(global_plugin_dir); // fs.add_end_slash(global_plugin_dir); @@ -258,42 +265,31 @@ printf("Preferences::operator=\n"); return *this; } -void Preferences::print_channels(char *string, - int *channel_positions, - int channels) +void Preferences::print_channels(char *string, int *channel_positions, int channels) { - char string3[BCTEXTLEN]; - string[0] = 0; - for(int j = 0; j < channels; j++) - { - sprintf(string3, "%d", channel_positions[j]); - strcat(string, string3); - if(j < channels - 1) - strcat(string, ","); + char *cp = string, *ep = cp+BCTEXTLEN-1; + for( int i=0; i= channels) break; + for(;;) { + while( isspace(*cp) ) ++cp; + if( !cp ) break; + channel_positions[current_channel++] = strtol(cp, &cp, 0); + if( current_channel >= channels ) break; + while( isspace(*cp) ) ++cp; + if( *cp == ',' ) ++cp; + } + while( current_channel < channels ) { + int pos = default_audio_channel_position(current_channel, channels); + channel_positions[current_channel++] = pos; } } @@ -309,8 +305,11 @@ int Preferences::load_defaults(BC_Hash *defaults) defaults->get("INDEX_DIRECTORY", index_directory); index_size = defaults->get("INDEX_SIZE", index_size); index_count = defaults->get("INDEX_COUNT", index_count); - use_thumbnails = defaults->get("USE_THUMBNAILS", use_thumbnails); keyframe_reticle = defaults->get("KEYFRAME_RETICLE", keyframe_reticle); + perpetual_session = defaults->get("PERPETUAL_SESSION", perpetual_session); + strcpy(lv2_path, DEFAULT_LV2_PATH); + defaults->get("LV2_PATH", lv2_path); + autostart_lv2ui = defaults->get("AUTOSTART_LV2UI", autostart_lv2ui); trap_sigsegv = defaults->get("TRAP_SIGSEGV", trap_sigsegv); trap_sigintr = defaults->get("TRAP_SIGINTR", trap_sigintr); @@ -318,31 +317,17 @@ int Preferences::load_defaults(BC_Hash *defaults) strcpy(plugin_icons, DEFAULT_PICON); defaults->get("THEME", theme); defaults->get("PLUGIN_ICONS", plugin_icons); + strcpy(snapshot_path, "/tmp"); + defaults->get("SNAPSHOT_PATH", snapshot_path); - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i=0; iget(string, string2); - - scan_channels(string2, - &channel_positions[i * MAXCHANNELS], - i + 1); + scan_channels(string2, &channel_positions[i][0], i+1); } - - brender_asset->load_defaults(defaults, - "BRENDER_", - 1, - 1, - 1, - 0, - 0); - - + brender_asset->load_defaults(defaults, "BRENDER_", 1, 1, 1, 0, 0); project_smp = defaults->get("PROJECT_SMP", project_smp); force_uniprocessor = defaults->get("FORCE_UNIPROCESSOR", force_uniprocessor); @@ -351,8 +336,13 @@ int Preferences::load_defaults(BC_Hash *defaults) warn_version = defaults->get("WARN_VERSION", warn_version); bd_warn_root = defaults->get("BD_WARN_ROOT", bd_warn_root); popupmenu_btnup = defaults->get("POPUPMENU_BTNUP", popupmenu_btnup); + grab_input_focus = defaults->get("GRAB_FOCUS", grab_input_focus); textbox_focus_policy = defaults->get("TEXTBOX_FOCUS_POLICY", textbox_focus_policy); + forward_render_displacement = defaults->get("FORWARD_RENDER_DISPLACEMENT", forward_render_displacement); dvd_yuv420p_interlace = defaults->get("DVD_YUV420P_INTERLACE", dvd_yuv420p_interlace); + highlight_inverse = defaults->get("HIGHLIGHT_INVERSE", highlight_inverse); + yuv_color_space = defaults->get("YUV_COLOR_SPACE", yuv_color_space); + yuv_color_range = defaults->get("YUV_COLOR_RANGE", yuv_color_range); use_brender = defaults->get("USE_BRENDER", use_brender); brender_fragment = defaults->get("BRENDER_FRAGMENT", brender_fragment); cache_size = defaults->get("CACHE_SIZE", cache_size); @@ -362,13 +352,13 @@ int Preferences::load_defaults(BC_Hash *defaults) render_preroll = defaults->get("RENDERFARM_PREROLL", render_preroll); brender_preroll = defaults->get("BRENDER_PREROLL", brender_preroll); renderfarm_job_count = defaults->get("RENDERFARM_JOBS_COUNT", renderfarm_job_count); + renderfarm_watchdog_timeout = defaults->get("RENDERFARM_WATCHDOG_TIMEOUT", renderfarm_watchdog_timeout); renderfarm_consolidate = defaults->get("RENDERFARM_CONSOLIDATE", renderfarm_consolidate); // renderfarm_vfs = defaults->get("RENDERFARM_VFS", renderfarm_vfs); defaults->get("RENDERFARM_MOUNTPOINT", renderfarm_mountpoint); int renderfarm_total = defaults->get("RENDERFARM_TOTAL", 0); - for(int i = 0; i < renderfarm_total; i++) - { + for( int i = 0; i < renderfarm_total; i++ ) { sprintf(string, "RENDERFARM_NODE%d", i); char result[BCTEXTLEN]; int result_port = 0; @@ -387,8 +377,7 @@ int Preferences::load_defaults(BC_Hash *defaults) sprintf(string, "RENDERFARM_RATE%d", i); result_rate = defaults->get(string, result_rate); - if(result[0] != 0) - { + if( result[0] != 0 ) { add_node(result, result_port, result_enabled, result_rate); } } @@ -401,6 +390,7 @@ int Preferences::load_defaults(BC_Hash *defaults) shbtn_prefs.append(new ShBtnPref(_("Original Manual"), "$CIN_BROWSER file://$CIN_DAT/doc/cinelerra.html", 0)); shbtn_prefs.append(new ShBtnPref(_("Setting Shell Commands"), "$CIN_BROWSER file://$CIN_DAT/doc/ShellCmds.html", 0)); shbtn_prefs.append(new ShBtnPref(_("Shortcuts"), "$CIN_BROWSER file://$CIN_DAT/doc/shortcuts.html", 0)); + shbtn_prefs.append(new ShBtnPref(_("RenderMux"), "$CIN_DAT/doc/RenderMux.sh",0)); shbtns_total = 0; } for( int i=0; iupdate("INDEX_COUNT", index_count); defaults->update("USE_THUMBNAILS", use_thumbnails); defaults->update("KEYFRAME_RETICLE", keyframe_reticle); + defaults->update("PERPETUAL_SESSION", perpetual_session); + defaults->update("LV2_PATH", lv2_path); + defaults->update("AUTOSTART_LV2UI", autostart_lv2ui); defaults->update("TRAP_SIGSEGV", trap_sigsegv); defaults->update("TRAP_SIGINTR", trap_sigintr); defaults->update("THEME", theme); defaults->update("PLUGIN_ICONS", plugin_icons); + defaults->update("SNAPSHOT_PATH", snapshot_path); - - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i = 0; i < MAXCHANNELS; i++ ) { char string2[BCTEXTLEN]; sprintf(string, "CHANNEL_POSITIONS%d", i); - print_channels(string2, &channel_positions[i * MAXCHANNELS], i + 1); + print_channels(string2, &channel_positions[i][0], i + 1); defaults->update(string, string2); } @@ -480,8 +472,13 @@ int Preferences::save_defaults(BC_Hash *defaults) defaults->update("WARN_VERSION", warn_version); defaults->update("BD_WARN_ROOT", bd_warn_root); defaults->update("POPUPMENU_BTNUP", popupmenu_btnup); + defaults->update("GRAB_FOCUS", grab_input_focus); defaults->update("TEXTBOX_FOCUS_POLICY", textbox_focus_policy); + defaults->update("FORWARD_RENDER_DISPLACEMENT", forward_render_displacement); defaults->update("DVD_YUV420P_INTERLACE", dvd_yuv420p_interlace); + defaults->update("HIGHLIGHT_INVERSE", highlight_inverse); + defaults->update("YUV_COLOR_SPACE", yuv_color_space); + defaults->update("YUV_COLOR_RANGE", yuv_color_range); brender_asset->save_defaults(defaults, "BRENDER_", 1, 1, 1, 0, 0); defaults->update("USE_BRENDER", use_brender); defaults->update("BRENDER_FRAGMENT", brender_fragment); @@ -493,10 +490,10 @@ int Preferences::save_defaults(BC_Hash *defaults) // defaults->update("RENDERFARM_VFS", renderfarm_vfs); defaults->update("RENDERFARM_MOUNTPOINT", renderfarm_mountpoint); defaults->update("RENDERFARM_JOBS_COUNT", renderfarm_job_count); + defaults->update("RENDERFARM_WATCHDOG_TIMEOUT", renderfarm_watchdog_timeout); defaults->update("RENDERFARM_CONSOLIDATE", renderfarm_consolidate); defaults->update("RENDERFARM_TOTAL", (int64_t)renderfarm_nodes.total); - for(int i = 0; i < renderfarm_nodes.total; i++) - { + for( int i = 0; i < renderfarm_nodes.total; i++ ) { sprintf(string, "RENDERFARM_NODE%d", i); defaults->update(string, renderfarm_nodes.values[i]); sprintf(string, "RENDERFARM_PORT%d", i); @@ -530,7 +527,7 @@ int Preferences::save_defaults(BC_Hash *defaults) void Preferences::add_node(const char *text, int port, int enabled, float rate) { - if(text[0] == 0) return; + if( text[0] == 0 ) return; preferences_lock->lock("Preferences::add_node"); char *new_item = new char[strlen(text) + 1]; @@ -546,8 +543,7 @@ void Preferences::add_node(const char *text, int port, int enabled, float rate) void Preferences::delete_node(int number) { preferences_lock->lock("Preferences::delete_node"); - if(number < renderfarm_nodes.total && number >= 0) - { + if( number < renderfarm_nodes.total && number >= 0 ) { delete [] renderfarm_nodes.values[number]; renderfarm_nodes.remove_number(number); renderfarm_ports.remove_number(number); @@ -560,7 +556,7 @@ void Preferences::delete_node(int number) void Preferences::delete_nodes() { preferences_lock->lock("Preferences::delete_nodes"); - for(int i = 0; i < renderfarm_nodes.total; i++) + for( int i = 0; i < renderfarm_nodes.total; i++ ) delete [] renderfarm_nodes.values[i]; renderfarm_nodes.remove_all(); renderfarm_ports.remove_all(); @@ -571,8 +567,7 @@ void Preferences::delete_nodes() void Preferences::reset_rates() { - for(int i = 0; i < renderfarm_nodes.total; i++) - { + for( int i = 0; i < renderfarm_nodes.total; i++ ) { renderfarm_rate.values[i] = 0.0; } local_rate = 0.0; @@ -580,18 +575,14 @@ void Preferences::reset_rates() float Preferences::get_rate(int node) { - if(node < 0) - { + if( node < 0 ) { return local_rate; } - else - { + else { int total = 0; - for(int i = 0; i < renderfarm_nodes.size(); i++) - { - if(renderfarm_enabled.get(i)) total++; - if(total == node + 1) - { + for( int i = 0; i < renderfarm_nodes.size(); i++ ) { + if( renderfarm_enabled.get(i) ) total++; + if( total == node + 1 ) { return renderfarm_rate.get(i); } } @@ -603,18 +594,14 @@ float Preferences::get_rate(int node) void Preferences::set_rate(float rate, int node) { //printf("Preferences::set_rate %f %d\n", rate, node); - if(node < 0) - { + if( node < 0 ) { local_rate = rate; } - else - { + else { int total = 0; - for(int i = 0; i < renderfarm_nodes.size(); i++) - { - if(renderfarm_enabled.get(i)) total++; - if(total == node + 1) - { + for( int i = 0; i < renderfarm_nodes.size(); i++ ) { + if( renderfarm_enabled.get(i) ) total++; + if( total == node + 1 ) { renderfarm_rate.set(i, rate); return; } @@ -626,38 +613,31 @@ float Preferences::get_avg_rate(int use_master_node) { preferences_lock->lock("Preferences::get_avg_rate"); float total = 0.0; - if(renderfarm_rate.total) - { + if( renderfarm_rate.total ) { int enabled = 0; - if(use_master_node) - { - if(EQUIV(local_rate, 0.0)) - { + if( use_master_node ) { + if( EQUIV(local_rate, 0.0) ) { preferences_lock->unlock(); return 0.0; } - else - { + else { enabled++; total += local_rate; } } - for(int i = 0; i < renderfarm_rate.total; i++) - { - if(renderfarm_enabled.values[i]) - { + for( int i = 0; i < renderfarm_rate.total; i++ ) { + if( renderfarm_enabled.values[i] ) { enabled++; total += renderfarm_rate.values[i]; - if(EQUIV(renderfarm_rate.values[i], 0.0)) - { + if( EQUIV(renderfarm_rate.values[i], 0.0) ) { preferences_lock->unlock(); return 0.0; } } } - if(enabled) + if( enabled ) total /= enabled; else total = 0.0; @@ -674,10 +654,8 @@ void Preferences::sort_nodes() while(!done) { done = 1; - for(int i = 0; i < renderfarm_nodes.total - 1; i++) - { - if(strcmp(renderfarm_nodes.values[i], renderfarm_nodes.values[i + 1]) > 0) - { + for( int i = 0; i < renderfarm_nodes.total - 1; i++ ) { + if( strcmp(renderfarm_nodes.values[i], renderfarm_nodes.values[i + 1]) > 0 ) { char *temp = renderfarm_nodes.values[i]; int temp_port = renderfarm_ports.values[i]; @@ -715,19 +693,17 @@ void Preferences::edit_node(int number, int Preferences::get_enabled_nodes() { int result = 0; - for(int i = 0; i < renderfarm_enabled.total; i++) - if(renderfarm_enabled.values[i]) result++; + for( int i = 0; i < renderfarm_enabled.total; i++ ) + if( renderfarm_enabled.values[i] ) result++; return result; } const char* Preferences::get_node_hostname(int number) { int total = 0; - for(int i = 0; i < renderfarm_nodes.total; i++) - { - if(renderfarm_enabled.values[i]) - { - if(total == number) + for( int i = 0; i < renderfarm_nodes.total; i++ ) { + if( renderfarm_enabled.values[i] ) { + if( total == number ) return renderfarm_nodes.values[i]; else total++; @@ -739,11 +715,9 @@ const char* Preferences::get_node_hostname(int number) int Preferences::get_node_port(int number) { int total = 0; - for(int i = 0; i < renderfarm_ports.total; i++) - { - if(renderfarm_enabled.values[i]) - { - if(total == number) + for( int i = 0; i < renderfarm_ports.total; i++ ) { + if( renderfarm_enabled.values[i] ) { + if( total == number ) return renderfarm_ports.values[i]; else total++; @@ -772,7 +746,7 @@ int Preferences::get_asset_file_path(Asset *asset, char *path) int Preferences::calculate_processors(int interactive) { - if(force_uniprocessor && !interactive) return 1; + if( force_uniprocessor && !interactive ) return 1; return BC_WindowBase::get_resources()->machine_cpus; }