From: Good Guy Date: Mon, 2 Jul 2018 19:23:55 +0000 (-0600) Subject: arch bld deps, opus bld fix, add render beep, shortcut filebox ctrl a/z, batchrender... X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=commitdiff_plain;h=62ba04ea5b57d760bb66b65d533598cde044b685 arch bld deps, opus bld fix, add render beep, shortcut filebox ctrl a/z, batchrender xlat --- diff --git a/cinelerra-5.1/Makefile.devel b/cinelerra-5.1/Makefile.devel index ef516090..a12d8f2b 100644 --- a/cinelerra-5.1/Makefile.devel +++ b/cinelerra-5.1/Makefile.devel @@ -43,8 +43,9 @@ rebuild_all: $(MAKE) -C libzmpeg3 clean +$(MAKEJ) -C libzmpeg3 $(MAKE) -C db clean - +$(MAKEJ) -C db all utils + +$(MAKEJ) -C db all $(MAKE) rebuild + +$(MAKEJ) -C db utils rebuild_install: $(MAKE) -C cinelerra install diff --git a/cinelerra-5.1/PKGBUILD b/cinelerra-5.1/PKGBUILD index 7124157f..0346070b 100644 --- a/cinelerra-5.1/PKGBUILD +++ b/cinelerra-5.1/PKGBUILD @@ -6,10 +6,22 @@ pkgdesc="Cinelerra git://git.cinelerra-cv.org/goodguy/cinelerra.git ($pkgrel)" arch=('x86_64') url="http://www.cinelerra-cv.org" license=('GPL') -depends=('xorg-server' 'libpng' 'libxv' 'libva' 'libdv' - 'libxft' 'freetype2' 'alsa-lib' 'inkscape' 'dvdauthor') -makedepends=('yasm' 'nasm' 'cmake' - 'libxml2' 'perl-xml-libxml' 'perl-xml-parser') +DEPENDS=( 'alsa-lib' 'atk' 'bzip2' 'cairo' 'expat' 'fftw' 'flac' + 'fontconfig' 'freetype2' 'fribidi' 'gcc-libs' 'gdk-pixbuf2' + 'glib2' 'glibc' 'glu' 'graphite' 'gtk2' 'harfbuzz' 'libavc1394' + 'libdatrie' 'libdv' 'libffi' 'libglvnd' 'libiec61883' 'libjpeg-turbo' + 'libogg' 'libpng' 'libraw1394' 'libsndfile' 'libthai' + 'libtheora' 'libtiff' 'libutil-linux' 'libvdpau' 'libvorbis' + 'libvpx' 'libx11' 'libxau' 'libxcb' 'libxcomposite' 'libxcursor' + 'libxdamage' 'libxdmcp' 'libxext' 'libxfixes' 'libxft' 'libxi' + 'libxinerama' 'libxrandr' 'libxrender' 'libxv' 'numactl' 'opus' + 'pango' 'pcre' 'pixman' 'xz' 'zlib' 'xorg-server' 'libva' + 'xorg-fonts-misc' 'ttf-dejavu' 'inkscape' 'dvdauthor' 'udftools' ) + +makedepends=( 'autoconf' 'automake' 'yasm' 'nasm' 'cmake' + 'libxml2' 'perl-xml-libxml' 'perl-xml-parser' + 'xorg-mkfontdir' 'xorg-mkfontscale' ) + conflicts=() source=(https://www.cinelerra-cv.org/five/pkgs/src/cin_$pkgver.$pkgrel-src.tgz) md5sums=('00000000000000000000000000000000') diff --git a/cinelerra-5.1/cinelerra/awindowgui.C b/cinelerra-5.1/cinelerra/awindowgui.C index 8c615bee..54101d5a 100644 --- a/cinelerra-5.1/cinelerra/awindowgui.C +++ b/cinelerra-5.1/cinelerra/awindowgui.C @@ -1480,8 +1480,6 @@ void AWindowGUI::update_asset_list() } } - mwindow->gui->default_message(); - // Synchronize nested EDLs for( int i=0; iedl->nested_edls.size(); ++i ) { int exists = 0; @@ -1513,6 +1511,10 @@ void AWindowGUI::update_asset_list() assets.append(picon); } + mwindow->gui->lock_window(); + mwindow->gui->default_message(); + mwindow->gui->unlock_window(); + for( int i = assets.size() - 1; i >= 0; i-- ) { AssetPicon *picon = (AssetPicon*)assets.get(i); if( !picon->in_use ) { diff --git a/cinelerra-5.1/cinelerra/batchrender.C b/cinelerra-5.1/cinelerra/batchrender.C index 4c5f1d4b..4ac168f9 100644 --- a/cinelerra-5.1/cinelerra/batchrender.C +++ b/cinelerra-5.1/cinelerra/batchrender.C @@ -58,7 +58,7 @@ // Farmed is not present if not preferences->use_renderfarm int BatchRenderThread::column_widths[] = { 42, 42, 42, 222, 222, 150 }; const char *BatchRenderThread::column_titles[] = { - _("Enabled"), _("Labeled"), _("Farmed"), _("Output"), _("EDL"), _("Elapsed") + N_("Enabled"), N_("Labeled"), N_("Farmed"), N_("Output"), N_("EDL"), N_("Elapsed") }; BatchRenderMenuItem::BatchRenderMenuItem(MWindow *mwindow) @@ -859,19 +859,19 @@ void BatchRenderGUI::create_list(int update_widget) const char **column_titles = BatchRenderThread::column_titles; list_columns = 0; - list_titles[list_columns] = column_titles[ENABLED_COL]; + list_titles[list_columns] = _(column_titles[ENABLED_COL]); list_width[list_columns++] = thread->list_width[ENABLED_COL]; - list_titles[list_columns] = column_titles[LABELED_COL]; + list_titles[list_columns] = _(column_titles[LABELED_COL]); list_width[list_columns++] = thread->list_width[LABELED_COL]; if( mwindow->preferences->use_renderfarm ) { - list_titles[list_columns] = column_titles[FARMED_COL]; + list_titles[list_columns] = _(column_titles[FARMED_COL]); list_width[list_columns++] = thread->list_width[FARMED_COL]; } - list_titles[list_columns] = column_titles[OUTPUT_COL]; + list_titles[list_columns] = _(column_titles[OUTPUT_COL]); list_width[list_columns++] = thread->list_width[OUTPUT_COL]; - list_titles[list_columns] = column_titles[EDL_COL]; + list_titles[list_columns] = _(column_titles[EDL_COL]); list_width[list_columns++] = thread->list_width[EDL_COL]; - list_titles[list_columns] = column_titles[ELAPSED_COL]; + list_titles[list_columns] = _(column_titles[ELAPSED_COL]); list_width[list_columns++] = thread->list_width[ELAPSED_COL]; for( int i = 0; i < thread->jobs.total; i++ ) { diff --git a/cinelerra-5.1/cinelerra/edlsession.C b/cinelerra-5.1/cinelerra/edlsession.C index f2c3e632..e0d5f701 100644 --- a/cinelerra-5.1/cinelerra/edlsession.C +++ b/cinelerra-5.1/cinelerra/edlsession.C @@ -102,6 +102,7 @@ EDLSession::EDLSession(EDL *edl) proxy_use_scaler = 0; proxy_auto_scale = 1; proxy_beep = 0; + render_beep = 0; decode_subtitles = 0; subtitle_number = 0; label_cells = 0; @@ -337,6 +338,8 @@ int EDLSession::load_defaults(BC_Hash *defaults) subtitle_number = defaults->get("SUBTITLE_NUMBER", subtitle_number); label_cells = defaults->get("LABEL_CELLS", label_cells); program_no = defaults->get("PROGRAM_NO", program_no); + proxy_beep = defaults->get("PROXY_BEEP", proxy_beep); + render_beep = defaults->get("RENDER_BEEP", render_beep); boundaries(); @@ -469,7 +472,8 @@ int EDLSession::save_defaults(BC_Hash *defaults) defaults->update("SUBTITLE_NUMBER", subtitle_number); defaults->update("LABEL_CELLS", label_cells); defaults->update("PROGRAM_NO", program_no); - + defaults->update("PROXY_BEEP", proxy_beep); + defaults->update("RENDER_BEEP", render_beep); return 0; } @@ -551,7 +555,6 @@ int EDLSession::load_video_config(FileXML *file, int append_mode, uint32_t load_ proxy_scale = file->tag.get_property("PROXY_SCALE", proxy_scale); proxy_use_scaler = file->tag.get_property("PROXY_USE_SCALER", proxy_use_scaler); proxy_auto_scale = file->tag.get_property("PROXY_AUTO_SCALE", proxy_auto_scale); - proxy_beep = file->tag.get_property("PROXY_BEEP", proxy_beep); return 0; } @@ -642,7 +645,8 @@ int EDLSession::load_xml(FileXML *file, subtitle_number = file->tag.get_property("SUBTITLE_NUMBER", subtitle_number); label_cells = file->tag.get_property("LABEL_CELLS", label_cells); program_no = file->tag.get_property("PROGRAM_NO", program_no); - + proxy_beep = file->tag.get_property("PROXY_BEEP", proxy_beep); + render_beep = file->tag.get_property("RENDER_BEEP", render_beep); boundaries(); } @@ -705,6 +709,8 @@ int EDLSession::save_xml(FileXML *file) file->tag.set_property("DECODE_SUBTITLES", decode_subtitles); file->tag.set_property("SUBTITLE_NUMBER", subtitle_number); + file->tag.set_property("PROXY_BEEP", proxy_beep); + file->tag.set_property("RENDER_BEEP", render_beep); file->append_tag(); file->tag.set_title("/SESSION"); @@ -744,7 +750,6 @@ int EDLSession::save_video_config(FileXML *file) file->tag.set_property("PROXY_SCALE", proxy_scale); file->tag.set_property("PROXY_USE_SCALER", proxy_use_scaler); file->tag.set_property("PROXY_AUTO_SCALE", proxy_auto_scale); - file->tag.set_property("PROXY_BEEP", proxy_beep); file->append_tag(); file->tag.set_title("/VIDEO"); file->append_tag(); @@ -888,6 +893,7 @@ int EDLSession::copy(EDLSession *session) proxy_use_scaler = session->proxy_use_scaler; proxy_auto_scale = session->proxy_auto_scale; proxy_beep = session->proxy_beep; + render_beep = session->render_beep; subtitle_number = session->subtitle_number; decode_subtitles = session->decode_subtitles; @@ -903,10 +909,12 @@ void EDLSession::dump() printf(" audio_tracks=%d audio_channels=%d sample_rate=%jd\n" " video_tracks=%d frame_rate=%f output_w=%d output_h=%d aspect_w=%f aspect_h=%f\n" " decode subtitles=%d subtitle_number=%d label_cells=%d program_no=%d\n" - " proxy_scale=%d\n proxy_use_scaler=%d, proxy_auto_scale=%d proxy_beep=%d\n", + " proxy_scale=%d\n proxy_use_scaler=%d, proxy_auto_scale=%d\n" + " proxy_beep=%d render_beep=%d\n", audio_tracks, audio_channels, sample_rate, video_tracks, frame_rate, output_w, output_h, aspect_w, aspect_h, decode_subtitles, subtitle_number, label_cells, program_no, - proxy_scale, proxy_use_scaler, proxy_auto_scale, proxy_beep); + proxy_scale, proxy_use_scaler, proxy_auto_scale, + proxy_beep, render_beep); } diff --git a/cinelerra-5.1/cinelerra/edlsession.h b/cinelerra-5.1/cinelerra/edlsession.h index a9679e8f..c1da8908 100644 --- a/cinelerra-5.1/cinelerra/edlsession.h +++ b/cinelerra-5.1/cinelerra/edlsession.h @@ -165,8 +165,8 @@ public: int proxy_use_scaler; // automatically rescale assets when loaded int proxy_auto_scale; -// beep when proxy render done - int proxy_beep; +// beep when proxy/render done + int proxy_beep, render_beep; // int playback_strategy; // Play audio in realtime priority int real_time_playback; diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C index 5b352924..e7b3e12d 100644 --- a/cinelerra-5.1/cinelerra/render.C +++ b/cinelerra-5.1/cinelerra/render.C @@ -219,6 +219,7 @@ Render::Render(MWindow *mwindow) render_window = 0; asset = 0; result = 0; + beep = 0; } Render::~Render() @@ -314,6 +315,7 @@ BC_Window* Render::new_gui() void Render::handle_done_event(int result) { if(!result) { + mwindow->edl->session->render_beep = beep; // add to recentlist only on OK render_window->render_format->path_recent-> add_item(File::formattostr(asset->format), asset->path); @@ -1075,6 +1077,9 @@ void RenderThread::run() } } render->completion->unlock(); + + if( render->mode == Render::INTERACTIVE && render->beep ) + mwindow->beep(3000., 1.5, 0.5); } @@ -1141,23 +1146,33 @@ void RenderWindow::create_objects() if( is_image ) render->range_type = RANGE_1FRAME; - int x1 = x + title->get_w() + 20; + int x1 = x + title->get_w() + 20, y1 = y; add_subwindow(rangeproject = new RenderRangeProject(this, render->range_type == RANGE_PROJECT, x1, y)); + int x2 = x1 + rangeproject->get_w(); y += 20; add_subwindow(rangeselection = new RenderRangeSelection(this, render->range_type == RANGE_SELECTION, x1, y)); + int x3 = x1 + rangeselection->get_w(); + if( x2 < x3 ) x2 = x3; y += 20; add_subwindow(rangeinout = new RenderRangeInOut(this, render->range_type == RANGE_INOUT, x1, y)); + x3 = x1 + rangeinout->get_w(); + if( x2 < x3 ) x2 = x3; y += 20; add_subwindow(range1frame = new RenderRange1Frame(this, render->range_type == RANGE_1FRAME, x1, y)); + x3 = x1 + range1frame->get_w(); + if( x2 < x3 ) x2 = x3; y += 30; - if( is_image ) enable_render_range(0); + x1 = x2 + 20; + render->beep = mwindow->edl->session->render_beep; + add_subwindow(beep_on_done = new RenderBeepOnDone(this, x1, y1)); + renderprofile = new RenderProfile(mwindow, this, x, y, 1); renderprofile->create_objects(); y += 70; @@ -1303,3 +1318,16 @@ void RenderFormat::update_format() render_window->enable_render_range(1); } +RenderBeepOnDone::RenderBeepOnDone(RenderWindow *rwindow, int x, int y) + : BC_CheckBox(x, y, rwindow->render->beep, _("Beep on done")) +{ + this->rwindow = rwindow; +} + +int RenderBeepOnDone::handle_event() +{ + rwindow->render->beep = get_value(); + return 1; +} + + diff --git a/cinelerra-5.1/cinelerra/render.h b/cinelerra-5.1/cinelerra/render.h index ba7461ec..aa7b652b 100644 --- a/cinelerra-5.1/cinelerra/render.h +++ b/cinelerra-5.1/cinelerra/render.h @@ -169,6 +169,8 @@ public: int in_progress; // Background compression must be disabled when direct frame copying and reenabled afterwards int direct_frame_copying; +// beep on done + int beep; Preferences *preferences; VFrame *compressed_output; @@ -275,6 +277,16 @@ public: }; +class RenderBeepOnDone : public BC_CheckBox +{ +public: + RenderBeepOnDone(RenderWindow *rwindow, int x, int y); + int handle_event(); + + RenderWindow *rwindow; +}; + + class RenderWindow : public BC_Window { public: @@ -294,6 +306,7 @@ public: RenderRangeSelection *rangeselection; RenderRangeInOut *rangeinout; RenderRange1Frame *range1frame; + RenderBeepOnDone *beep_on_done; RenderProfile *renderprofile; diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac index e9f67c16..6fba32bb 100644 --- a/cinelerra-5.1/configure.ac +++ b/cinelerra-5.1/configure.ac @@ -832,7 +832,7 @@ if test "x$HAVE_DL" = "xyes"; then fi if test "x$WANT_OPUS" = "xyes"; then FFMPEG_EXTRA_CFG+=' --enable-libopus' - if test "x$HAVE_OPUS" = "xyes" -a "x$BUILD_opus" = "x0"; then + if test "x$HAVE_opus" = "xyes" -a "x$BUILD_opus" = "x0"; then EXTRA_LIBS+=' -lopus' CFG_CFLAGS+=' -I/usr/include/opus' fi diff --git a/cinelerra-5.1/guicast/bcfilebox.C b/cinelerra-5.1/guicast/bcfilebox.C index 5d755977..ea9c58f5 100644 --- a/cinelerra-5.1/guicast/bcfilebox.C +++ b/cinelerra-5.1/guicast/bcfilebox.C @@ -572,7 +572,7 @@ void BC_FileBox::create_objects() } create_icons(); - create_tables(); + create_tables(0); add_subwindow(ok_button = new BC_FileBoxOK(this)); if(want_directory) @@ -754,12 +754,19 @@ int BC_FileBox::resize_event(int w, int h) int BC_FileBox::keypress_event() { - switch(get_keypress()) - { - case 'w': - if(ctrl_down()) set_done(1); - return 1; - break; + switch(get_keypress()) { + case 'a': + if( !ctrl_down() ) break; + refresh(0, 1); + return 1; + case 'z': + if( !ctrl_down() ) break; + refresh(0, 0); + return 1; + case 'w': + if( !ctrl_down() ) break; + set_done(1); + return 1; } return 0; } @@ -797,7 +804,7 @@ static inline int ilen(int64_t v) return len; } -int BC_FileBox::create_tables() +int BC_FileBox::create_tables(int select_all) { delete_tables(); char string[BCTEXTLEN]; @@ -894,6 +901,12 @@ int BC_FileBox::create_tables() } list_column[column_of_type(FILEBOX_EXTENSION)].append(new_item); // } + + if( !is_dir && select_all ) { + int k = list_column[0].size()-1; + for( int j=0; jset_selected(1); + } } return 0; @@ -942,7 +955,7 @@ int BC_FileBox::column_of_type(int type) -int BC_FileBox::refresh(int reset) +int BC_FileBox::refresh(int reset, int select_all) { fs->set_sort_order(sort_order); fs->set_sort_field(column_type[sort_column]); @@ -950,7 +963,7 @@ int BC_FileBox::refresh(int reset) fs->update(0); else fs->update_sort(); - create_tables(); + create_tables(select_all); listbox->set_master_column(column_of_type(FILEBOX_NAME), 0); listbox->update(list_column, column_titles, column_width, columns, reset>0 ? 0 : listbox->get_xposition(), diff --git a/cinelerra-5.1/guicast/bcfilebox.h b/cinelerra-5.1/guicast/bcfilebox.h index 4d71a329..96d1ebe2 100644 --- a/cinelerra-5.1/guicast/bcfilebox.h +++ b/cinelerra-5.1/guicast/bcfilebox.h @@ -259,7 +259,7 @@ public: void create_history(); void update_history(); - int refresh(int reset=0); + int refresh(int reset=0, int select_all=0); // The OK and Use This button submits a path. // The cancel button has a current path highlighted but possibly different from the @@ -285,7 +285,7 @@ public: private: int create_icons(); int extract_extension(char *out, const char *in); - int create_tables(); + int create_tables(int select_all); int delete_tables(); // Called by directory history menu to change directories but leave // filename untouched.