// shift armed mixer tracks by nudge
void MixersAlign::nudge_tracks()
{
+ mwindow->gui->lock_window("MixersAlign::apply_tracks");
int idx = ma_gui->mtrack_list->get_selection_number(0, 0);
int midx = mmixer_of(idx);
EDL *edl = mwindow->edl;
}
edl->optimize();
- mwindow->gui->lock_window("MixersAlign::apply_tracks");
mwindow->update_gui(1);
mwindow->gui->unlock_window();
clear_mixer_nudge();
// move selected mixer edits by nudge
void MixersAlign::nudge_selected()
{
+ mwindow->gui->lock_window("MixersAlign::apply_selected");
int idx = ma_gui->mtrack_list->get_selection_number(0, 0);
int midx = mmixer_of(idx);
EDL *edl = mwindow->edl;
track->record = track_arms[i++];
edl->optimize();
- mwindow->gui->lock_window("MixersAlign::apply_selected");
mwindow->update_gui(1);
mwindow->gui->unlock_window();
clear_mixer_nudge();
void MixersAlign::check_point()
{
+ mwindow->gui->lock_window("MixersAlign::check_point");
ma_gui->undo->add_undo_item(undo_edls.size());
EDL *undo_edl = new EDL();
undo_edl->create_objects();
undo_edl->copy_all(mwindow->edl);
undo_edls.append(undo_edl);
+ mwindow->gui->unlock_window();
}
thread->join();
}
if( !result ) {
+ mwindow->gui->lock_window("MixersAlign::handle_done_event");
EDL *edl = mwindow->edl;
mwindow->edl = undo_edls[0];
mwindow->undo_before();
mwindow->edl = edl;
mwindow->undo_after(_("align mixers"), LOAD_ALL);
+ mwindow->gui->unlock_window();
}
}
void MixersAlign::handle_close_event(int result)
{
ma_gui = 0;
+ mixers.clear();
+ mtracks.clear();
+ atracks.clear();
+ undo_edls.clear();
}
void MixersAlign::load_mixers()
{
- mixers.remove_all_objects();
+ mixers.clear();
Mixers &edl_mixers = mwindow->edl->mixers;
for( int i=0; i<edl_mixers.size(); ++i )
mixers.append(new MixersAlignMixer(edl_mixers[i]));
void MixersAlign::load_mtracks()
{
- mtracks.remove_all_objects();
+ mtracks.clear();
Track *track=mwindow->edl->tracks->first;
for( int no=0; track; ++no, track=track->next ) {
if( track->data_type != TRACK_AUDIO ) continue;
void MixersAlign::load_atracks()
{
- atracks.remove_all_objects();
+ atracks.clear();
Track *track=mwindow->edl->tracks->first;
for( int no=0; track; ++no, track=track->next ) {
if( track->data_type != TRACK_AUDIO ) continue;
failed = -1;
thread->join();
}
+ mwindow->gui->lock_window("MixersAlignUndo::handle_event");
EDL *undo_edl = undo_edls[no];
mwindow->edl->copy_all(undo_edl);
- mwindow->gui->lock_window("MixersAlignUndo::handle_event");
mwindow->update_gui(1);
mwindow->gui->unlock_window();
ma_gui->reset->handle_event();
pkg->sd2 = sd2;
pkg->ss = ss;
pkg->pos = scan->pos;
-printf("targ %s:%d at %jd,ss=%f sd2=%f\n",
- scan->pkg->mixer->mixer->title, ch, scan->pos, ss, sd2);
+//printf("targ %s:%d at %jd,ss=%f sd2=%f\n",
+// scan->pkg->mixer->mixer->title, ch, scan->pos, ss, sd2);
double *best = pkg->best;
int i = 0, len = targ->len;
while( i < len1 ) best[i++] = *data++;
if( mix->mx < mx ) {
mix->mx = mx;
mix->mi = mi;
-printf("best %d: %f at %jd\n", get_package_number(), mx, mi);
+//printf("best %d: %f at %jd\n", get_package_number(), mx, mi);
}
farm->mixer_lock->unlock();
}
{
public:
MixersAlignMixers() {}
- ~MixersAlignMixers() { remove_all_objects(); }
+ ~MixersAlignMixers() { clear(); }
+ void clear() { remove_all_objects(); }
};
class MixersAlignMixerList : public BC_ListBox
{
public:
MixersAlignMTracks() {}
- ~MixersAlignMTracks() { remove_all_objects(); }
+ ~MixersAlignMTracks() { clear(); }
+ void clear() { remove_all_objects(); }
};
{
public:
MixersAlignATracks() {}
- ~MixersAlignATracks() { remove_all_objects(); }
+ ~MixersAlignATracks() { clear(); }
+ void clear() { remove_all_objects(); }
};
class MixersAlignATrackList : public BC_ListBox
{
public:
MixersAlignUndoEDLs() {}
- ~MixersAlignUndoEDLs() {
+ ~MixersAlignUndoEDLs() { clear(); }
+ void clear() {
for( int i=size(); --i>=0; ) get(i)->remove_user();
+ remove_all();
}
};
provided over prior years from the Community Version.
For usage help, refer to the following:
- https://cinelerra-cv.org/docs/cinelerra_cv_manual_en.html
+ https://cinelerra-gg.org/downloads/CinelerraGG_manual.pdf
https://cinelerra-gg.org/downloads/Features.pdf
http://g-raffa.eu/Cinelerra/HOWTO/basics.html
Cinfinity icons selected in Preferences Sam (CC BY 3.0,
Neophyte theme selected in Preferences by Olaf Wolff (CC BY 4.0,
https://creativecommons.org/licenses/by/4.0/)
.
+March 2019 New Features of note:
+ Mixers, multiple cameras, now has Audio Alignment.
+ Additional options for Preview mode in Resources window.
+ Named layouts for easier identification purposes.
+ ShuttlePro/Xpress will work on multiple instances.
+ Insert Mixers for multiple cameras at Insertion point.
February 2019 New Features of note:
AV1 and WebP format usage is now included.
ShuttlePro/Xpress stabilization/setup/definition is complete.