From: Good Guy Date: Fri, 10 Nov 2017 23:39:22 +0000 (-0700) Subject: blade and hard egdes, undo cache reset bug, sams ladspa icons, theme image access... X-Git-Url: https://cinelerra-gg.org/git/?a=commitdiff_plain;h=3f6a262cfe390b3f8b275297d64565a5b6272969;p=goodguy%2Fhistory.git blade and hard egdes, undo cache reset bug, sams ladspa icons, theme image access rework, shmmni tweak, mjpegtools disable libsdl --- diff --git a/cinelerra-5.1/cinelerra/atrack.C b/cinelerra-5.1/cinelerra/atrack.C index ed9df7b9..9aceea09 100644 --- a/cinelerra-5.1/cinelerra/atrack.C +++ b/cinelerra-5.1/cinelerra/atrack.C @@ -139,10 +139,8 @@ void ATrack::set_default_title() int64_t ATrack::to_units(double position, int round) { - if(round) - return Units::round(position * edl->session->sample_rate); - else - return Units::to_int64(position * edl->session->sample_rate); + return round ? Units::round(position * edl->session->sample_rate) : + Units::to_int64(position * edl->session->sample_rate + 1e-6); } double ATrack::to_doubleunits(double position) diff --git a/cinelerra-5.1/cinelerra/cwindow.C b/cinelerra-5.1/cinelerra/cwindow.C index 29d54504..176bf3c4 100644 --- a/cinelerra-5.1/cinelerra/cwindow.C +++ b/cinelerra-5.1/cinelerra/cwindow.C @@ -215,9 +215,13 @@ void CWindow::calculate_affected_autos(FloatAuto **x_auto, } } - - - +void CWindow::stop_playback() +{ + int locked = gui->get_window_lock(); + if( locked ) gui->unlock_window(); + playback_engine->interrupt_playback(1); + if( locked ) gui->lock_window("CWindow::stop_playback"); +} void CWindow::run() { diff --git a/cinelerra-5.1/cinelerra/cwindow.h b/cinelerra-5.1/cinelerra/cwindow.h index 61d409aa..3d81ce09 100644 --- a/cinelerra-5.1/cinelerra/cwindow.h +++ b/cinelerra-5.1/cinelerra/cwindow.h @@ -69,6 +69,7 @@ public: void show_window(); void hide_window(); int update_position(double position); + void stop_playback(); int destination; MWindow *mwindow; diff --git a/cinelerra-5.1/cinelerra/edit.C b/cinelerra-5.1/cinelerra/edit.C index d9f55ba7..4c257cbe 100644 --- a/cinelerra-5.1/cinelerra/edit.C +++ b/cinelerra-5.1/cinelerra/edit.C @@ -83,6 +83,8 @@ void Edit::reset() user_title[0] = 0; nested_edl = 0; is_plugin = 0; + hard_left = 0; + hard_right = 0; } Indexable* Edit::get_source() @@ -136,6 +138,8 @@ int Edit::copy(int64_t start, file->tag.set_property("STARTSOURCE", startsource_in_selection); file->tag.set_property("CHANNEL", (int64_t)channel); file->tag.set_property("LENGTH", length_in_selection); + file->tag.set_property("HARD_LEFT", hard_left); + file->tag.set_property("HARD_RIGHT", hard_right); if(user_title[0]) file->tag.set_property("USER_TITLE", user_title); //printf("Edit::copy 5\n"); @@ -240,6 +244,8 @@ void Edit::copy_from(Edit *edit) this->startsource = edit->startsource; this->startproject = edit->startproject; this->length = edit->length; + this->hard_left = edit->hard_left; + this->hard_right = edit->hard_right; strcpy (this->user_title, edit->user_title); if(edit->transition) @@ -315,6 +321,8 @@ int Edit::identical(Edit &edit) this->startsource == edit.startsource && this->startproject == edit.startproject && this->length == edit.length && + this->hard_left == edit.hard_left && + this->hard_right == edit.hard_right && this->transition == edit.transition && this->channel == edit.channel); return result; @@ -372,8 +380,8 @@ int Edit::dump(FILE *fp) fprintf(fp," TRANSITION %p\n", transition); transition->dump(fp); } - fprintf(fp," startsource %jd startproject %jd length %jd\n", - startsource, startproject, length); fflush(fp); + fprintf(fp," startsource %jd startproject %jd hard lt/rt %d/%d length %jd\n", + startsource, startproject, hard_left, hard_right, length); fflush(fp); return 0; } @@ -381,6 +389,8 @@ int Edit::load_properties(FileXML *file, int64_t &startproject) { startsource = file->tag.get_property("STARTSOURCE", (int64_t)0); length = file->tag.get_property("LENGTH", (int64_t)0); + hard_left = file->tag.get_property("HARD_LEFT", (int64_t)0); + hard_right = file->tag.get_property("HARD_RIGHT", (int64_t)0); user_title[0] = 0; file->tag.get_property("USER_TITLE", user_title); this->startproject = startproject; diff --git a/cinelerra-5.1/cinelerra/edit.h b/cinelerra-5.1/cinelerra/edit.h index 3324711a..adbb0c47 100644 --- a/cinelerra-5.1/cinelerra/edit.h +++ b/cinelerra-5.1/cinelerra/edit.h @@ -132,7 +132,8 @@ public: // User defined title for timeline char user_title[BCTEXTLEN]; int is_plugin; - +// edge cannot be optimized + int hard_left, hard_right; // Transition if one is present at the beginning of this edit // This stores the length of the transition @@ -152,15 +153,6 @@ public: EDL *edl; - - - - - - - - - // ============================= initialization int load_properties(FileXML *xml, int64_t &startproject); diff --git a/cinelerra-5.1/cinelerra/edits.C b/cinelerra-5.1/cinelerra/edits.C index 4f54457b..6c512009 100644 --- a/cinelerra-5.1/cinelerra/edits.C +++ b/cinelerra-5.1/cinelerra/edits.C @@ -385,19 +385,20 @@ int Edits::optimize() for(current = first; !result && current && current->next; ) { Edit *next_edit = current->next; - // printf("Edits::optimize %d %lld=%lld %d=%d %p=%p %p=%p\n", // __LINE__, current->startsource + current->length, next_edit->startsource, // current->channel, next_edit->channel, current->asset, next_edit->asset, // current->nested_edl, next_edit->nested_edl); +// both edges are not hard edges // both edits are silence & not a plugin // source channels are identical, assets are identical - if( (current->silence() && next_edit->silence() && !current->is_plugin) || + if( !current->hard_right && !next_edit->hard_left && ( + (current->silence() && next_edit->silence() && !current->is_plugin) || (current->startsource + current->length == next_edit->startsource && current->channel == next_edit->channel && current->asset == next_edit->asset && - current->nested_edl == next_edit->nested_edl)) { + current->nested_edl == next_edit->nested_edl)) ) { //printf("Edits::optimize %d\n", __LINE__); current->length += next_edit->length; remove(next_edit); diff --git a/cinelerra-5.1/cinelerra/edl.C b/cinelerra-5.1/cinelerra/edl.C index a27e10cc..12fe4f35 100644 --- a/cinelerra-5.1/cinelerra/edl.C +++ b/cinelerra-5.1/cinelerra/edl.C @@ -840,6 +840,11 @@ void EDL::deglitch(double position) } } +int EDL::blade(double position) +{ + return tracks->blade(align_to_frame(position,0)); +} + int EDL::clear(double start, double end, int clear_labels, int clear_plugins, int edit_autos) { diff --git a/cinelerra-5.1/cinelerra/edl.h b/cinelerra-5.1/cinelerra/edl.h index 2e8eec9c..00f31bb0 100644 --- a/cinelerra-5.1/cinelerra/edl.h +++ b/cinelerra-5.1/cinelerra/edl.h @@ -186,6 +186,7 @@ public: int edit_autos); void remove_from_project(ArrayList *assets); void remove_from_project(ArrayList *clips); + int blade(double position); int clear(double start, double end, int clear_labels, diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 9d3b4860..448f37b6 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -1070,8 +1070,8 @@ void MWindow::init_theme() theme->build_menus(); init_menus(); + theme->sort_image_sets(); theme->check_used(); - //printf("MWindow::init_theme %d total_time=%d\n", __LINE__, (int)timer.get_difference()); } @@ -1565,18 +1565,19 @@ void MWindow::stop_playback(int wait) { int locked = gui->get_window_lock(); if( locked ) gui->unlock_window(); + gui->stop_drawing(); - cwindow->playback_engine->stop_playback(); + cwindow->stop_playback(); for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; - vwindow->playback_engine->stop_playback(); + vwindow->stop_playback(); } for(int i = 0; i < zwindows.size(); i++) { ZWindow *zwindow = zwindows[i]; if( !zwindow->is_running() ) continue; - zwindow->zgui->playback_engine->stop_playback(); + zwindow->stop_playback(); } if( locked ) gui->lock_window("MWindow::stop_playback"); } @@ -3375,35 +3376,47 @@ int MWindow::create_aspect_ratio(float &w, float &h, int width, int height) void MWindow::reset_caches() { - gui->resource_thread->get_video_source(0); - gui->resource_thread->get_audio_source(0); + stop_playback(1); + int locked = gui->get_window_lock(); + if( locked ) gui->unlock_window(); + gui->resource_thread->stop_draw(1); + gui->resource_thread->source_lock->lock("MWindow::reset_caches"); frame_cache->remove_all(); wave_cache->remove_all(); audio_cache->remove_all(); video_cache->remove_all(); - if( cwindow->playback_engine && cwindow->playback_engine->audio_cache ) - cwindow->playback_engine->audio_cache->remove_all(); - if( cwindow->playback_engine && cwindow->playback_engine->video_cache ) - cwindow->playback_engine->video_cache->remove_all(); - + gui->resource_thread->source_lock->unlock(); + if( locked ) gui->lock_window("MWindow::reset_caches"); + if( cwindow->playback_engine ) { + if( cwindow->playback_engine->audio_cache ) + cwindow->playback_engine->audio_cache->remove_all(); + if( cwindow->playback_engine->video_cache ) + cwindow->playback_engine->video_cache->remove_all(); + } for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; - if(vwindow->playback_engine && vwindow->playback_engine->audio_cache) + if( !vwindow->playback_engine ) continue; + if( vwindow->playback_engine->audio_cache ) vwindow->playback_engine->audio_cache->remove_all(); - if(vwindow->playback_engine && vwindow->playback_engine->video_cache) + if( vwindow->playback_engine->video_cache ) vwindow->playback_engine->video_cache->remove_all(); } } void MWindow::remove_asset_from_caches(Asset *asset) { - gui->resource_thread->get_video_source(0); - gui->resource_thread->get_audio_source(0); + stop_playback(1); + int locked = gui->get_window_lock(); + if( locked ) gui->unlock_window(); + gui->resource_thread->stop_draw(1); + gui->resource_thread->source_lock->lock("MWindow::remove_asset_from_caches"); frame_cache->remove_asset(asset); wave_cache->remove_asset(asset); audio_cache->delete_entry(asset); video_cache->delete_entry(asset); + gui->resource_thread->source_lock->unlock(); + if( locked ) gui->lock_window("MWindow::remove_asset_from_caches"); if( cwindow->playback_engine && cwindow->playback_engine->audio_cache ) cwindow->playback_engine->audio_cache->delete_entry(asset); if( cwindow->playback_engine && cwindow->playback_engine->video_cache ) @@ -3411,9 +3424,10 @@ void MWindow::remove_asset_from_caches(Asset *asset) for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; - if(vwindow->playback_engine && vwindow->playback_engine->audio_cache) + if( !vwindow->playback_engine ) continue; + if( vwindow->playback_engine->audio_cache ) vwindow->playback_engine->audio_cache->delete_entry(asset); - if(vwindow->playback_engine && vwindow->playback_engine->video_cache) + if( vwindow->playback_engine->video_cache ) vwindow->playback_engine->video_cache->delete_entry(asset); } } diff --git a/cinelerra-5.1/cinelerra/mwindow.h b/cinelerra-5.1/cinelerra/mwindow.h index 8f26357e..6bf48433 100644 --- a/cinelerra-5.1/cinelerra/mwindow.h +++ b/cinelerra-5.1/cinelerra/mwindow.h @@ -331,6 +331,7 @@ public: void copy(); int copy(double start, double end); void cut(); + void blade(double position); void cut(double start, double end, double new_position=-1); // snap off edit from current position to handle/label void snap_left_edit(); diff --git a/cinelerra-5.1/cinelerra/mwindowedit.C b/cinelerra-5.1/cinelerra/mwindowedit.C index 1604256d..168b7c93 100644 --- a/cinelerra-5.1/cinelerra/mwindowedit.C +++ b/cinelerra-5.1/cinelerra/mwindowedit.C @@ -520,7 +520,26 @@ void MWindow::cut() { double start = edl->local_session->get_selectionstart(); double end = edl->local_session->get_selectionend(); - cut(start, end); + if( EQUIV(start,end) ) + blade(start); + else + cut(start, end); +} + +void MWindow::blade(double position) +{ + undo->update_undo_before(); + edl->blade(position); + edl->optimize(); + save_backup(); + undo->update_undo_after(_("blade"), LOAD_EDITS | LOAD_TIMEBAR); + restart_brender(); + update_plugin_guis(); + gui->update(1, 2, 1, 1, 1, 1, 0); + cwindow->update(1, 0, 0, 0, 1); + awindow->gui->async_update_assets(); + cwindow->playback_engine->que-> + send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); } void MWindow::cut(double start, double end, double new_position) diff --git a/cinelerra-5.1/cinelerra/resourcethread.C b/cinelerra-5.1/cinelerra/resourcethread.C index 853ae024..430678cc 100644 --- a/cinelerra-5.1/cinelerra/resourcethread.C +++ b/cinelerra-5.1/cinelerra/resourcethread.C @@ -164,7 +164,7 @@ ResourceThread::ResourceThread(MWindow *mwindow, MWindowGUI *gui) temp_picon = 0; temp_picon2 = 0; draw_lock = new Condition(0, "ResourceThread::draw_lock", 0); -// interrupted_lock = new Condition(0, "ResourceThread::interrupted_lock", 0); + source_lock = new Condition(1, "ResourceThread::source_lock", 0); item_lock = new Mutex("ResourceThread::item_lock"); audio_buffer = 0; for(int i = 0; i < MAXCHANNELS; i++) @@ -186,7 +186,7 @@ ResourceThread::~ResourceThread() { stop(); delete draw_lock; -// delete interrupted_lock; + delete source_lock; delete item_lock; delete temp_picon; delete temp_picon2; @@ -298,7 +298,7 @@ void ResourceThread::run() { draw_lock->lock("ResourceThread::run"); - + source_lock->lock("ResourceThread::run"); while(!interrupted) { // Pull off item @@ -329,6 +329,7 @@ void ResourceThread::run() get_audio_source(0); get_video_source(0); mwindow->age_caches(); + source_lock->unlock(); } } diff --git a/cinelerra-5.1/cinelerra/resourcethread.h b/cinelerra-5.1/cinelerra/resourcethread.h index 50e25bd3..34cb6c07 100644 --- a/cinelerra-5.1/cinelerra/resourcethread.h +++ b/cinelerra-5.1/cinelerra/resourcethread.h @@ -159,7 +159,7 @@ public: MWindow *mwindow; MWindowGUI *gui; Condition *draw_lock; -// Condition *interrupted_lock; + Condition *source_lock; Mutex *item_lock; ArrayList items; int interrupted; diff --git a/cinelerra-5.1/cinelerra/track.C b/cinelerra-5.1/cinelerra/track.C index e3f624c0..1a11c434 100644 --- a/cinelerra-5.1/cinelerra/track.C +++ b/cinelerra-5.1/cinelerra/track.C @@ -1153,6 +1153,15 @@ int Track::copy_assets(double start, return 0; } +int Track::blade(double position) +{ + int64_t start = to_units(position, 1); + Edit *edit = edits->split_edit(start); + if( !edit ) return 1; + edit->hard_left = 1; + if( edit->previous ) edit->previous->hard_right = 1; + return 0; +} int Track::clear(double start, double end, int edit_edits, int edit_labels, int edit_plugins, diff --git a/cinelerra-5.1/cinelerra/track.h b/cinelerra-5.1/cinelerra/track.h index 1f6283f3..7318940b 100644 --- a/cinelerra-5.1/cinelerra/track.h +++ b/cinelerra-5.1/cinelerra/track.h @@ -90,36 +90,22 @@ public: void get_source_dimensions(double position, int &w, int &h); // Editing - void insert_asset(Asset *asset, - EDL *nested_edl, - double length, - double position, - int track_number); - Plugin* insert_effect(const char *title, - SharedLocation *shared_location, - KeyFrame *keyframe, - PluginSet *plugin_set, - double start, - double length, - int plugin_type); - void insert_plugin_set(Track *track, - int64_t position, - int64_t min_length, - int edit_autos); + void insert_asset(Asset *asset, EDL *nested_edl, + double length, double position, int track_number); + Plugin* insert_effect(const char *title, SharedLocation *shared_location, + KeyFrame *keyframe, PluginSet *plugin_set, + double start, double length, int plugin_type); + void insert_plugin_set(Track *track, int64_t position, + int64_t min_length, int edit_autos); void detach_effect(Plugin *plugin); // Insert a track from another EDL - void insert_track(Track *track, - double position, - int replace_default, - int edit_plugins, - int edit_autos, + void insert_track(Track *track, double position, + int replace_default, int edit_plugins, int edit_autos, // Pad pasted sections to a minimum of this length. double edl_length); void shuffle_edits(double start, double end, int first_track); void reverse_edits(double start, double end, int first_track); - void align_edits(double start, - double end, - ArrayList *times); + void align_edits(double start, double end, ArrayList *times); // Optimize editing void optimize(); int is_muted(int64_t position, int direction); // Test muting status @@ -137,20 +123,14 @@ public: virtual double from_units(int64_t position); - // Positions are identical for handle modifications virtual int identical(int64_t sample1, int64_t sample2) { return 0; }; // Get the plugin belonging to the set. Plugin* get_current_plugin(double position, - int plugin_set, - int direction, - int convert_units, - int use_nudge); + int plugin_set, int direction, int convert_units, int use_nudge); Plugin* get_current_transition(double position, - int direction, - int convert_units, - int use_nudge); + int direction, int convert_units, int use_nudge); // detach shared effects referencing module void detach_shared_effects(int module); @@ -159,13 +139,11 @@ public: // Called by playable tracks to test for playable server. // Descends the plugin tree without creating a virtual console. // Used by PlayableTracks::is_playable. - int is_synthesis(int64_t position, - int direction); + int is_synthesis(int64_t position, int direction); // Used by PlayableTracks::is_playable // Returns 1 if the track is in the output boundaries. - virtual int is_playable(int64_t position, - int direction); + virtual int is_playable(int64_t position, int direction); // Test direct copy conditions common to all the rendering routines virtual int direct_copy_possible(int64_t start, int direction, int use_nudge); @@ -177,12 +155,8 @@ public: virtual int copy_settings(Track *track); void shift_keyframes(int64_t position, int64_t length); void shift_effects(int64_t position, int64_t length, int edit_autos); - void change_plugins(SharedLocation &old_location, - SharedLocation &new_location, - int do_swap); - void change_modules(int old_location, - int new_location, - int do_swap); + void change_plugins(SharedLocation &old_location, SharedLocation &new_location, int do_swap); + void change_modules(int old_location, int new_location, int do_swap); int plugin_exists(Plugin *plugin); EDL *edl; @@ -217,8 +191,6 @@ public: virtual int change_channels(int oldchannels, int newchannels) { return 0; }; virtual int dump(FILE *fp); - - // ===================================== editing int copy(double start, double end, FileXML *file, const char *output_path = ""); @@ -226,64 +198,43 @@ public: double end, ArrayList *asset_list); virtual int copy_derived(int64_t start, int64_t end, FileXML *file) { return 0; }; - virtual int paste_derived(int64_t start, int64_t end, int64_t total_length, FileXML *file, int ¤t_channel) { return 0; }; - int clear(double start, - double end, - int edit_edits, - int edit_labels, - int clear_plugins, - int edit_autos, - int convert_units, - Edits *trim_edits); + virtual int paste_derived(int64_t start, int64_t end, + int64_t total_length, FileXML *file, int ¤t_channel) { return 0; }; + int blade(double position); + int clear(double start, double end, + int edit_edits, int edit_labels, int clear_plugins, + int edit_autos, int convert_units, Edits *trim_edits); // Returns the point to restart background rendering at. // -1 means nothing changed. - void clear_automation(double selectionstart, - double selectionend, + void clear_automation(double selectionstart, double selectionend, int shift_autos /* = 1 */, int default_only /* = 0 */); - void set_automation_mode(double selectionstart, - double selectionend, + void set_automation_mode(double selectionstart, double selectionend, int mode); virtual int clear_automation_derived(AutoConf *auto_conf, - double selectionstart, - double selectionend, + double selectionstart, double selectionend, int shift_autos = 1) { return 0; }; virtual int clear_derived(double start, double end) { return 0; }; - int copy_automation(double selectionstart, - double selectionend, - FileXML *file, - int default_only, - int active_only); + int copy_automation(double selectionstart, double selectionend, + FileXML *file, int default_only, int active_only); virtual int copy_automation_derived(AutoConf *auto_conf, - double selectionstart, - double selectionend, + double selectionstart, double selectionend, FileXML *file) { return 0; }; - int paste_automation(double selectionstart, - double total_length, - double frame_rate, - int64_t sample_rate, - FileXML *file, - int default_only, - int active_only); - virtual int paste_automation_derived(double selectionstart, - double selectionend, - double total_length, - FileXML *file, - int shift_autos, - int ¤t_pan) { return 0; }; + int paste_automation(double selectionstart, double total_length, + double frame_rate, int64_t sample_rate, FileXML *file, + int default_only, int active_only); + virtual int paste_automation_derived(double selectionstart, double selectionend, + double total_length, FileXML *file, int shift_autos, int ¤t_pan) { return 0; }; int paste_auto_silence(double start, double end); virtual int paste_auto_silence_derived(int64_t start, int64_t end) { return 0; }; int scale_time(float rate_scale, int scale_edits, int scale_autos, int64_t start, int64_t end); virtual int scale_time_derived(float rate_scale, int scale_edits, int scale_autos, int64_t start, int64_t end) { return 0; }; int purge_asset(Asset *asset); int asset_used(Asset *asset); - int clear_handle(double start, - double end, - int clear_labels, - int clear_plugins, - int edit_autos, + int clear_handle(double start, double end, + int clear_labels, int clear_plugins, int edit_autos, double &distance); int paste_silence(double start, double end, int edit_plugins, int edit_autos); virtual int select_translation(int cursor_x, int cursor_y) { return 0; }; // select video coordinates for frame diff --git a/cinelerra-5.1/cinelerra/trackcanvas.C b/cinelerra-5.1/cinelerra/trackcanvas.C index fc36e851..00ca2b63 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.C +++ b/cinelerra-5.1/cinelerra/trackcanvas.C @@ -1771,6 +1771,36 @@ void TrackCanvas::refresh_plugintoggles() } } +void TrackCanvas::draw_hard_edges() +{ + int64_t x, y, w, h; + +// if(!mwindow->edl->session->show_assets) return; + + for(Track *track = mwindow->edl->tracks->first; track; track = track->next) { + for(Edit *edit = track->edits->first; edit; edit = edit->next) { + if( !edit->hard_left && !edit->hard_right ) continue; + edit_dimensions(edit, x, y, w, h); + set_color(GREEN); + set_opaque(); int y1 = y+h-1; + if( edit->hard_left ) { + ArrayList xpt, ypt; + xpt.append(x); ypt.append(y1); + xpt.append(x+HANDLE_W); ypt.append(y1); + xpt.append(x); ypt.append(y1-HANDLE_H); + fill_polygon(&xpt, &ypt); + } + if( edit->hard_right ) { + ArrayList xpt, ypt; int x1 = x+w-1; + xpt.append(x1); ypt.append(y1); + xpt.append(x1-HANDLE_W); ypt.append(y1); + xpt.append(x1); ypt.append(y1-HANDLE_H); + fill_polygon(&xpt, &ypt); + } + } + } +} + void TrackCanvas::draw_inout_points() { } @@ -3442,6 +3472,7 @@ void TrackCanvas::draw_overlays() // Plugins draw_plugins(); + draw_hard_edges(); // Loop points draw_loop_points(); @@ -4301,53 +4332,58 @@ int TrackCanvas::do_edit_handles(int cursor_x, int cursor_y, int button_press, int &rerender, int &update_overlay, int &new_cursor, int &update_cursor) { Edit *edit_result = 0; - int handle_result = 0; + int handle_result = -1; int result = 0; - if(!mwindow->edl->session->show_assets) return 0; + if( !mwindow->edl->session->show_assets ) return 0; - for(Track *track = mwindow->edl->tracks->first; - track && !result; - track = track->next) { - for(Edit *edit = track->edits->first; - edit && !result; - edit = edit->next) { + for( Track *track=mwindow->edl->tracks->first; track && !result; track=track->next) { + for( Edit *edit=track->edits->first; edit && !result; edit=edit->next ) { int64_t edit_x, edit_y, edit_w, edit_h; edit_dimensions(edit, edit_x, edit_y, edit_w, edit_h); - if(cursor_x >= edit_x && cursor_x <= edit_x + edit_w && - cursor_y >= edit_y && cursor_y < edit_y + edit_h) { - if(cursor_x < edit_x + HANDLE_W) { + if( cursor_x >= edit_x && cursor_x <= edit_x + edit_w && + cursor_y >= edit_y && cursor_y < edit_y + edit_h ) { + if( cursor_x < edit_x + HANDLE_W ) { edit_result = edit; handle_result = 0; - result = 1; + if( cursor_y >= edit_y+edit_h - HANDLE_W ) { + new_cursor = DOWNLEFT_RESIZE; + if( button_press == LEFT_BUTTON ) + result = -1; + } + else + result = 1; } - else if(cursor_x >= edit_x + edit_w - HANDLE_W) { + else if( cursor_x >= edit_x + edit_w - HANDLE_W ) { edit_result = edit; handle_result = 1; - result = 1; - } - else { - result = 0; + if( cursor_y >= edit_y+edit_h - HANDLE_W ) { + new_cursor = DOWNRIGHT_RESIZE; + if( button_press == LEFT_BUTTON ) + result = -1; + } + else + result = 1; } } } } update_cursor = 1; - if(result) { + if( result > 0 ) { double position = 0; - if(handle_result == 0) { + if( handle_result == 0 ) { position = edit_result->track->from_units(edit_result->startproject); new_cursor = LEFT_CURSOR; } - else if(handle_result == 1) { + else if( handle_result == 1 ) { position = edit_result->track->from_units(edit_result->startproject + edit_result->length); new_cursor = RIGHT_CURSOR; } // Reposition cursor - if(button_press) { + if( button_press ) { mwindow->session->drag_edit = edit_result; mwindow->session->drag_handle = handle_result; mwindow->session->drag_button = get_buttonpress() - 1; @@ -4361,6 +4397,43 @@ int TrackCanvas::do_edit_handles(int cursor_x, int cursor_y, int button_press, update_overlay = 1; } } + else if( result < 0) { + mwindow->undo->update_undo_before(); + if( !shift_down() ) { + if( handle_result == 0 ) + edit_result->hard_left = !edit_result->hard_left; + else if( handle_result == 1 ) + edit_result->hard_right = !edit_result->hard_right; + } + else { + int status = handle_result == 0 ? edit_result->hard_left : + handle_result == 1 ? edit_result->hard_right : 0; + int new_status = !status; + int64_t edit_edge = edit_result->startproject; + if( handle_result == 1 ) edit_edge += edit_result->length; + double edge_position = edit_result->track->from_units(edit_edge); + for( Track *track=mwindow->edl->tracks->first; track!=0; track=track->next ) { + int64_t track_position = track->to_units(edge_position, 1); + Edit *left_edit = track->edits->editof(track_position, PLAY_FORWARD, 0); + if( left_edit ) { + int64_t left_edge = left_edit->startproject; + double left_position = track->from_units(left_edge); + if( EQUIV(edge_position, left_position) ) + left_edit->hard_left = new_status; + } + Edit *right_edit = track->edits->editof(track_position, PLAY_REVERSE, 0); + if( right_edit ) { + int64_t right_edge = right_edit->startproject + right_edit->length; + double right_position = track->from_units(right_edge); + if( EQUIV(edge_position, right_position) ) + right_edit->hard_right = new_status; + } + } + } + rerender = update_overlay = 1; + mwindow->undo->update_undo_after(_("hard_edge"), LOAD_EDITS); + result = 1; + } return result; } diff --git a/cinelerra-5.1/cinelerra/trackcanvas.h b/cinelerra-5.1/cinelerra/trackcanvas.h index 24ab1914..61a88949 100644 --- a/cinelerra-5.1/cinelerra/trackcanvas.h +++ b/cinelerra-5.1/cinelerra/trackcanvas.h @@ -103,6 +103,7 @@ public: int64_t edit_w, int64_t edit_h); void draw_automation(); + void draw_hard_edges(); void draw_inout_points(); void draw_auto(Auto *current, int x, diff --git a/cinelerra-5.1/cinelerra/tracks.h b/cinelerra-5.1/cinelerra/tracks.h index 8d07f462..7ba98267 100644 --- a/cinelerra-5.1/cinelerra/tracks.h +++ b/cinelerra-5.1/cinelerra/tracks.h @@ -176,6 +176,7 @@ public: double start, double end, int all); + int blade(double position); int clear(double start, double end, int clear_plugins, int edit_autos); void clear_automation(double selectionstart, double selectionend); diff --git a/cinelerra-5.1/cinelerra/tracksedit.C b/cinelerra-5.1/cinelerra/tracksedit.C index 9fdf4f63..4a836b96 100644 --- a/cinelerra-5.1/cinelerra/tracksedit.C +++ b/cinelerra-5.1/cinelerra/tracksedit.C @@ -47,6 +47,15 @@ #include "vtrack.h" #include +int Tracks::blade(double position) +{ + for( Track *track=first; track!=0; track=track->next ) { + if( !track->record ) continue; + track->blade(position); + } + return 0; +} + int Tracks::clear(double start, double end, int clear_plugins, int edit_autos) { Track *current_track; diff --git a/cinelerra-5.1/cinelerra/vtrack.C b/cinelerra-5.1/cinelerra/vtrack.C index 580191ad..53a6550b 100644 --- a/cinelerra-5.1/cinelerra/vtrack.C +++ b/cinelerra-5.1/cinelerra/vtrack.C @@ -119,16 +119,8 @@ void VTrack::set_default_title() int64_t VTrack::to_units(double position, int round) { - if(round) - { - return Units::round(position * edl->session->frame_rate); - } - else - { -// Kludge for rounding errors, just on a smaller scale than formal rounding - position *= edl->session->frame_rate; - return Units::to_int64(position); - } + return round ? Units::round(position * edl->session->frame_rate) : + Units::to_int64(position * edl->session->frame_rate + 1e-6); } double VTrack::to_doubleunits(double position) diff --git a/cinelerra-5.1/cinelerra/vwindow.C b/cinelerra-5.1/cinelerra/vwindow.C index 45dacc0b..e22dcde0 100644 --- a/cinelerra-5.1/cinelerra/vwindow.C +++ b/cinelerra-5.1/cinelerra/vwindow.C @@ -340,9 +340,13 @@ void VWindow::update_position(int change_type, } } - - - +void VWindow::stop_playback() +{ + int locked = gui->get_window_lock(); + if( locked ) gui->unlock_window(); + playback_engine->interrupt_playback(1); + if( locked ) gui->lock_window("VWindow::stop_playback"); +} int VWindow::update_position(double position) { diff --git a/cinelerra-5.1/cinelerra/vwindow.h b/cinelerra-5.1/cinelerra/vwindow.h index a5a368f2..9029596e 100644 --- a/cinelerra-5.1/cinelerra/vwindow.h +++ b/cinelerra-5.1/cinelerra/vwindow.h @@ -76,7 +76,7 @@ public: void delete_source(int do_main_edl, int update_gui); void goto_start(); void goto_end(); - + void stop_playback(); VTracking *playback_cursor; diff --git a/cinelerra-5.1/cinelerra/zwindow.C b/cinelerra-5.1/cinelerra/zwindow.C index f3ba30f2..22c8250b 100644 --- a/cinelerra-5.1/cinelerra/zwindow.C +++ b/cinelerra-5.1/cinelerra/zwindow.C @@ -222,6 +222,14 @@ void ZWindow::change_source(EDL *edl) } } +void ZWindow::stop_playback() +{ + int locked = zgui->get_window_lock(); + if( locked ) zgui->unlock_window(); + zgui->playback_engine->interrupt_playback(1); + if( locked ) zgui->lock_window("ZWindow::stop_playback"); +} + void ZWindow::issue_command(int command, int wait_tracking, int use_inout, int update_refresh, int toggle_audio) { diff --git a/cinelerra-5.1/cinelerra/zwindow.h b/cinelerra-5.1/cinelerra/zwindow.h index 9b53e423..33babfd5 100644 --- a/cinelerra-5.1/cinelerra/zwindow.h +++ b/cinelerra-5.1/cinelerra/zwindow.h @@ -70,6 +70,7 @@ public: void handle_done_event(int result); void handle_close_event(int result); void change_source(EDL *edl); + void stop_playback(); void issue_command(int command, int wait_tracking, int use_inout, int update_refresh, int toggle_audio); void update_mixer_ids(); diff --git a/cinelerra-5.1/debian/sysctl.d b/cinelerra-5.1/debian/sysctl.d index 3ef3b1b5..a9a2d42f 100644 --- a/cinelerra-5.1/debian/sysctl.d +++ b/cinelerra-5.1/debian/sysctl.d @@ -1 +1,2 @@ kernel.shmmax = 0x7fffffff +kernel.shmmni = 0x4000 diff --git a/cinelerra-5.1/guicast/bctheme.C b/cinelerra-5.1/guicast/bctheme.C index 99e40e0f..b79988c0 100644 --- a/cinelerra-5.1/guicast/bctheme.C +++ b/cinelerra-5.1/guicast/bctheme.C @@ -32,7 +32,9 @@ BC_Theme::BC_Theme() { - last_image = 0; + last_image_data = 0; + last_image_set = 0; + image_sets_start = -1; } BC_Theme::~BC_Theme() @@ -43,11 +45,15 @@ BC_Theme::~BC_Theme() void BC_Theme::dump() { - printf("BC_Theme::dump 1 image_sets=%d images=%d\n", - image_sets.size(), images.size()); + printf("BC_Theme::dump 1 images=%d\n", images.size()); for( int i=0; iname, item->data); + BC_ImageData *image_data = images[i]; + printf("%4d. %s %p\n", i, image_data->name, image_data->data); + } + printf("BC_Theme::dump 2 image_sets=%d\n", image_sets.size()); + for( int i=0; ititle, image_set->data[0]); } } @@ -64,7 +70,7 @@ VFrame* BC_Theme::new_image(const char *title, const char *path) BC_ThemeSet *result = new BC_ThemeSet(1, 0, title); result->data[0] = new VFramePng(get_image_data(path)); - image_sets.append(result); + add_image_set(result); return result->data[0]; } @@ -85,7 +91,7 @@ VFrame** BC_Theme::new_image_set(const char *title, int total, va_list *args) if( existing_image_set ) return existing_image_set; BC_ThemeSet *result = new BC_ThemeSet(total, 1, title); - image_sets.append(result); + add_image_set(result); for( int i=0; idata[i] = new_image(path); @@ -103,7 +109,7 @@ VFrame** BC_Theme::new_image_set_images(const char *title, int total, ...) } BC_ThemeSet *result = new BC_ThemeSet(total, 0, title); - image_sets.append(result); + add_image_set(result); for( int i=0; idata[i] = va_arg(list, VFrame*); } @@ -131,21 +137,64 @@ VFrame** BC_Theme::new_image_set(int total, ...) return result; } +void BC_Theme::add_image_set(BC_ThemeSet *image_set) +{ + image_sets.append(image_set); + if( image_sets_start >= 0 ) { + printf("BC_Theme::add_image_set image_sets unsorted, lookups degraded\n"); + image_sets_start = -1; + } +} + +int BC_Theme::image_set_cmpr(const void *ap, const void *bp) +{ + BC_ThemeSet*a = *(BC_ThemeSet**)ap, *b = *(BC_ThemeSet**)bp; + return strcmp(a->title, b->title); +} + +void BC_Theme::sort_image_sets() +{ + if( image_sets_start >= 0 ) return; + qsort(&image_sets[0], image_sets.size(), sizeof(image_sets[0]), image_set_cmpr); +// skip over un-titled image sets + int i = 0, n = image_sets.size(); + while( ititle[0] ) ++i; + image_sets_start = i; +} + BC_ThemeSet* BC_Theme::get_image_set_object(const char *title) { + if( last_image_set && !strcmp(title,last_image_set->title) ) + return last_image_set; + + if( image_sets_start >= 0 ) { +// binary search for image set + int r = image_sets.size(), l = image_sets_start-1; + int m = 0, v = -1; + while( r-l > 1 ) { + m = (l + r) / 2; + BC_ThemeSet *image_set = image_sets[m]; + if( !(v=strcmp(title, image_set->title)) ) + return last_image_set = image_set; + if( v > 0 ) l = m; else r = m; + } + } + else { // compare title[0],title[1] for faster prefix test - const unsigned char *bp = (const unsigned char*)title; - unsigned short tval = bp[0]; - if( tval ) tval |= (bp[1] << 8); + const unsigned char *tp = (const unsigned char*)title; + unsigned short tval = tp[0]; + if( tval ) tval |= (tp[1] << 8); - for( int i=0; ititle; - bp = (const unsigned char *) tp; - unsigned short val = bp[0]; - if( val ) val |= (bp[1] << 8); - if( val != tval ) continue; - if( !strcmp(tp, title) ) return image_sets[i]; + for( int i=0; ititle; + unsigned short val = tp[0]; + if( val ) val |= (tp[1] << 8); + if( val != tval ) continue; + if( !strcmp((const char *)tp, title) ) + return last_image_set = image_sets[i]; + } } + return 0; } @@ -211,7 +260,7 @@ VFrame** BC_Theme::new_button(const char *overlay_path, { VFramePng default_data(get_image_data(overlay_path)); BC_ThemeSet *result = new BC_ThemeSet(3, 1, title ? title : ""); - if( title ) image_sets.append(result); + if( title ) add_image_set(result); result->data[0] = new_image(up_path); result->data[1] = new_image(hi_path); @@ -232,7 +281,7 @@ VFrame** BC_Theme::new_button4(const char *overlay_path, { VFramePng default_data(get_image_data(overlay_path)); BC_ThemeSet *result = new BC_ThemeSet(4, 1, title ? title : ""); - if( title ) image_sets.append(result); + if( title ) add_image_set(result); result->data[0] = new_image(up_path); result->data[1] = new_image(hi_path); @@ -253,7 +302,7 @@ VFrame** BC_Theme::new_button(const char *overlay_path, { VFramePng default_data(get_image_data(overlay_path)); BC_ThemeSet *result = new BC_ThemeSet(3, 0, title ? title : ""); - if( title ) image_sets.append(result); + if( title ) add_image_set(result); result->data[0] = new VFrame(*up); result->data[1] = new VFrame(*hi); @@ -274,7 +323,7 @@ VFrame** BC_Theme::new_toggle(const char *overlay_path, { VFramePng default_data(get_image_data(overlay_path)); BC_ThemeSet *result = new BC_ThemeSet(5, 1, title ? title : ""); - if( title ) image_sets.append(result); + if( title ) add_image_set(result); result->data[0] = new_image(up_path); result->data[1] = new_image(hi_path); @@ -296,7 +345,7 @@ VFrame** BC_Theme::new_toggle(const char *overlay_path, { VFramePng default_data(get_image_data(overlay_path)); BC_ThemeSet *result = new BC_ThemeSet(5, 0, title ? title : ""); - if( title ) image_sets.append(result); + if( title ) add_image_set(result); result->data[0] = new VFrame(*up); result->data[1] = new VFrame(*hi); @@ -404,7 +453,7 @@ void BC_Theme::set_data(unsigned char *ptr) if( cp + sizeof(unsigned) > dp ) break; unsigned ofs = 0; for( int i=sizeof(unsigned); --i>=0; ofs|=cp[i] ) ofs <<= 8; - images.append(new image_item(nm, dp+ofs)); + images.append(new BC_ImageData(nm, dp+ofs)); cp += sizeof(unsigned); } @@ -415,15 +464,15 @@ void BC_Theme::set_data(unsigned char *ptr) int BC_Theme::images_cmpr(const void *ap, const void *bp) { - image_item *a = *(image_item**)ap, *b = *(image_item**)bp; - return strcasecmp(a->name, b->name); + BC_ImageData *a = *(BC_ImageData**)ap, *b = *(BC_ImageData**)bp; + return strcmp(a->name, b->name); } unsigned char* BC_Theme::get_image_data(const char *name, int log_errs) { // Image is the same as the last one - if( last_image && !strcasecmp(last_image->name, name) ) - return last_image->data; + if( last_image_data && !strcasecmp(last_image_data->name, name) ) + return last_image_data->data; // look forwards thru data sets for name int start_item = 0; @@ -434,11 +483,11 @@ unsigned char* BC_Theme::get_image_data(const char *name, int log_errs) int m = 0, v = -1; while( r-l > 1 ) { m = (l + r) / 2; - image_item *item = images[m]; - if( !(v=strcasecmp(name, item->name)) ) { - item->used = 1; - last_image = item; - return item->data; + BC_ImageData *image_data = images[m]; + if( !(v=strcasecmp(name, image_data->name)) ) { + image_data->used = 1; + last_image_data = image_data; + return image_data->data; } if( v > 0 ) l = m; else r = m; } diff --git a/cinelerra-5.1/guicast/bctheme.h b/cinelerra-5.1/guicast/bctheme.h index 40cebb0f..c9addd3c 100644 --- a/cinelerra-5.1/guicast/bctheme.h +++ b/cinelerra-5.1/guicast/bctheme.h @@ -29,8 +29,18 @@ #include class BC_ThemeSet; +class BC_ImageData; +class BC_ImageData { +public: + char *name; + unsigned char *data; + int used; + BC_ImageData(char *nm, unsigned char *dp) { + name = nm; data = dp; used = 0; + } +}; class BC_Theme @@ -105,6 +115,7 @@ public: // Verify all images have been used after initialization. void check_used(); + void sort_image_sets(); void dump(); BC_Resources* get_resources(); @@ -118,22 +129,15 @@ private: // Decompressed image storage. // Sets of images. ArrayList image_sets; + BC_ThemeSet *last_image_set; + int image_sets_start; + static int image_set_cmpr(const void *ap, const void *bp); + void add_image_set(BC_ThemeSet *image_set); // Compressed images are loaded in here. - class image_item { - public: - char *name; - unsigned char *data; - int used; - - image_item(char *nm, unsigned char *dp) { - name = nm; data = dp; used = 0; - } - } *last_image; - - ArrayList images; ArrayList data_items; - + ArrayList images; + BC_ImageData *last_image_data; static int images_cmpr(const void *ap, const void *bp); }; diff --git a/cinelerra-5.1/picon/cinfinity/bandpass_a_iir_1893.png b/cinelerra-5.1/picon/cinfinity/bandpass_a_iir_1893.png new file mode 100644 index 00000000..9b8877ca Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/bandpass_a_iir_1893.png differ diff --git a/cinelerra-5.1/picon/cinfinity/bandpass_iir_1892.png b/cinelerra-5.1/picon/cinfinity/bandpass_iir_1892.png new file mode 100644 index 00000000..0c6f4967 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/bandpass_iir_1892.png differ diff --git a/cinelerra-5.1/picon/cinfinity/butterworth_1902.png b/cinelerra-5.1/picon/cinfinity/butterworth_1902.png new file mode 100644 index 00000000..3d223aae Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/butterworth_1902.png differ diff --git a/cinelerra-5.1/picon/cinfinity/decay_1886.png b/cinelerra-5.1/picon/cinfinity/decay_1886.png new file mode 100644 index 00000000..62e836d0 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/decay_1886.png differ diff --git a/cinelerra-5.1/picon/cinfinity/dj_flanger_1438.png b/cinelerra-5.1/picon/cinfinity/dj_flanger_1438.png index 3c9332c8..d4afc809 100644 Binary files a/cinelerra-5.1/picon/cinfinity/dj_flanger_1438.png and b/cinelerra-5.1/picon/cinfinity/dj_flanger_1438.png differ diff --git a/cinelerra-5.1/picon/cinfinity/fad_delay_1192.png b/cinelerra-5.1/picon/cinfinity/fad_delay_1192.png new file mode 100644 index 00000000..80fef273 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/fad_delay_1192.png differ diff --git a/cinelerra-5.1/picon/cinfinity/fast_lookahead_limiter_1913.png b/cinelerra-5.1/picon/cinfinity/fast_lookahead_limiter_1913.png new file mode 100644 index 00000000..ab11e2bc Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/fast_lookahead_limiter_1913.png differ diff --git a/cinelerra-5.1/picon/cinfinity/flanger_1191.png b/cinelerra-5.1/picon/cinfinity/flanger_1191.png new file mode 100644 index 00000000..c1894bbe Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/flanger_1191.png differ diff --git a/cinelerra-5.1/picon/cinfinity/fm_osc_1415.png b/cinelerra-5.1/picon/cinfinity/fm_osc_1415.png new file mode 100644 index 00000000..217c35b1 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/fm_osc_1415.png differ diff --git a/cinelerra-5.1/picon/cinfinity/foldover_1213.png b/cinelerra-5.1/picon/cinfinity/foldover_1213.png new file mode 100644 index 00000000..9f2e4efe Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/foldover_1213.png differ diff --git a/cinelerra-5.1/picon/cinfinity/foverdrive_1196.png b/cinelerra-5.1/picon/cinfinity/foverdrive_1196.png new file mode 100644 index 00000000..4374eb10 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/foverdrive_1196.png differ diff --git a/cinelerra-5.1/picon/cinfinity/freq_tracker_1418.png b/cinelerra-5.1/picon/cinfinity/freq_tracker_1418.png new file mode 100644 index 00000000..8a1989cf Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/freq_tracker_1418.png differ diff --git a/cinelerra-5.1/picon/cinfinity/gate_1410.png b/cinelerra-5.1/picon/cinfinity/gate_1410.png new file mode 100644 index 00000000..0ca8741c Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/gate_1410.png differ diff --git a/cinelerra-5.1/picon/cinfinity/giant_flange_1437.png b/cinelerra-5.1/picon/cinfinity/giant_flange_1437.png new file mode 100644 index 00000000..e72d99d3 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/giant_flange_1437.png differ diff --git a/cinelerra-5.1/picon/cinfinity/gong_1424.png b/cinelerra-5.1/picon/cinfinity/gong_1424.png new file mode 100644 index 00000000..4517b084 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/gong_1424.png differ diff --git a/cinelerra-5.1/picon/cinfinity/gong_beater_1439.png b/cinelerra-5.1/picon/cinfinity/gong_beater_1439.png new file mode 100644 index 00000000..4a2ae95a Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/gong_beater_1439.png differ diff --git a/cinelerra-5.1/picon/cinfinity/gsm_1215.png b/cinelerra-5.1/picon/cinfinity/gsm_1215.png new file mode 100644 index 00000000..98b9864c Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/gsm_1215.png differ diff --git a/cinelerra-5.1/picon/cinfinity/gverb_1216.png b/cinelerra-5.1/picon/cinfinity/gverb_1216.png new file mode 100644 index 00000000..f3431e5e Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/gverb_1216.png differ diff --git a/cinelerra-5.1/picon/cinfinity/hard_limiter_1413.png b/cinelerra-5.1/picon/cinfinity/hard_limiter_1413.png new file mode 100644 index 00000000..e2f0b9f7 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/hard_limiter_1413.png differ diff --git a/cinelerra-5.1/picon/cinfinity/harmonic_gen_1220.png b/cinelerra-5.1/picon/cinfinity/harmonic_gen_1220.png new file mode 100644 index 00000000..7d887f92 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/harmonic_gen_1220.png differ diff --git a/cinelerra-5.1/picon/cinfinity/hermes_filter_1200.png b/cinelerra-5.1/picon/cinfinity/hermes_filter_1200.png new file mode 100644 index 00000000..afb4e526 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/hermes_filter_1200.png differ diff --git a/cinelerra-5.1/picon/cinfinity/highpass_iir_1890.png b/cinelerra-5.1/picon/cinfinity/highpass_iir_1890.png new file mode 100644 index 00000000..4ac081ef Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/highpass_iir_1890.png differ diff --git a/cinelerra-5.1/picon/cinfinity/hilbert_1440.png b/cinelerra-5.1/picon/cinfinity/hilbert_1440.png new file mode 100644 index 00000000..eef2c1a4 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/hilbert_1440.png differ diff --git a/cinelerra-5.1/picon/cinfinity/imp_1199.png b/cinelerra-5.1/picon/cinfinity/imp_1199.png new file mode 100644 index 00000000..dd432653 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/imp_1199.png differ diff --git a/cinelerra-5.1/picon/cinfinity/inv_1429.png b/cinelerra-5.1/picon/cinfinity/inv_1429.png new file mode 100644 index 00000000..13f21105 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/inv_1429.png differ diff --git a/cinelerra-5.1/picon/cinfinity/karaoke_1409.png b/cinelerra-5.1/picon/cinfinity/karaoke_1409.png new file mode 100644 index 00000000..29293dc9 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/karaoke_1409.png differ diff --git a/cinelerra-5.1/picon/cinfinity/lcr_delay_1436.png b/cinelerra-5.1/picon/cinfinity/lcr_delay_1436.png new file mode 100644 index 00000000..66f0514b Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/lcr_delay_1436.png differ diff --git a/cinelerra-5.1/picon/cinfinity/lowpass_iir_1891.png b/cinelerra-5.1/picon/cinfinity/lowpass_iir_1891.png new file mode 100644 index 00000000..c891d2c5 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/lowpass_iir_1891.png differ diff --git a/cinelerra-5.1/picon/cinfinity/ls_filter_1908.png b/cinelerra-5.1/picon/cinfinity/ls_filter_1908.png new file mode 100644 index 00000000..6c95e274 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/ls_filter_1908.png differ diff --git a/cinelerra-5.1/picon/cinfinity/matrix_ms_st_1421.png b/cinelerra-5.1/picon/cinfinity/matrix_ms_st_1421.png new file mode 100644 index 00000000..1b00d6e7 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/matrix_ms_st_1421.png differ diff --git a/cinelerra-5.1/picon/cinfinity/matrix_spatialiser_1422.png b/cinelerra-5.1/picon/cinfinity/matrix_spatialiser_1422.png new file mode 100644 index 00000000..7b1420cc Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/matrix_spatialiser_1422.png differ diff --git a/cinelerra-5.1/picon/cinfinity/matrix_st_ms_1420.png b/cinelerra-5.1/picon/cinfinity/matrix_st_ms_1420.png new file mode 100644 index 00000000..299ab898 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/matrix_st_ms_1420.png differ diff --git a/cinelerra-5.1/picon/cinfinity/mbeq_1197.png b/cinelerra-5.1/picon/cinfinity/mbeq_1197.png new file mode 100644 index 00000000..f59eddc7 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/mbeq_1197.png differ diff --git a/cinelerra-5.1/picon/cinfinity/mod_delay_1419.png b/cinelerra-5.1/picon/cinfinity/mod_delay_1419.png new file mode 100644 index 00000000..cc5bf44c Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/mod_delay_1419.png differ diff --git a/cinelerra-5.1/picon/cinfinity/notch_iir_1894.png b/cinelerra-5.1/picon/cinfinity/notch_iir_1894.png new file mode 100644 index 00000000..339febcf Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/notch_iir_1894.png differ diff --git a/cinelerra-5.1/picon/cinfinity/pitch_scale_1194.png b/cinelerra-5.1/picon/cinfinity/pitch_scale_1194.png new file mode 100644 index 00000000..49bd8202 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/pitch_scale_1194.png differ diff --git a/cinelerra-5.1/picon/cinfinity/split_1406.png b/cinelerra-5.1/picon/cinfinity/split_1406.png new file mode 100644 index 00000000..392624f0 Binary files /dev/null and b/cinelerra-5.1/picon/cinfinity/split_1406.png differ diff --git a/cinelerra-5.1/thirdparty/Makefile b/cinelerra-5.1/thirdparty/Makefile index 75a552e4..7268028b 100644 --- a/cinelerra-5.1/thirdparty/Makefile +++ b/cinelerra-5.1/thirdparty/Makefile @@ -177,7 +177,7 @@ lame.cfg_params?=--enable-shared=no lame.mak_params?= ; cd $(call bld_path,lame,include); ln -sf . lame mjpegtools.cflags?="$(call inc_path,libjpeg) $(call ld_path,libjpeg,.libs)" mjpegtools.mak_params?=; ln -s . $(call bld_path,mjpegtools,utils)/mjpegtools -mjpegtools.cfg_params?= --enable-shared=no +mjpegtools.cfg_params?= --enable-shared=no --without-libsdl ladspa.cfg_vars?= CFLAGS+=' -Dinline="" ' ladspa.mak_params?=; $(MAKE) -C ladspa* install DESTDIR=$(call bld_path,ladspa) libavc1394.cfg_vars?=PKG_CONFIG_PATH=$(call bld_path,libraw1394)