arch bld deps, opus bld fix, add render beep, shortcut filebox ctrl a/z, batchrender...
authorGood Guy <good1.2guy@gmail.com>
Mon, 2 Jul 2018 19:23:55 +0000 (13:23 -0600)
committerGood Guy <good1.2guy@gmail.com>
Mon, 2 Jul 2018 19:23:55 +0000 (13:23 -0600)
cinelerra-5.1/Makefile.devel
cinelerra-5.1/PKGBUILD
cinelerra-5.1/cinelerra/awindowgui.C
cinelerra-5.1/cinelerra/batchrender.C
cinelerra-5.1/cinelerra/edlsession.C
cinelerra-5.1/cinelerra/edlsession.h
cinelerra-5.1/cinelerra/render.C
cinelerra-5.1/cinelerra/render.h
cinelerra-5.1/configure.ac
cinelerra-5.1/guicast/bcfilebox.C
cinelerra-5.1/guicast/bcfilebox.h

index ef516090bf6a766ec4f795e88363fd72c33613c3..a12d8f2b0d67fe51e8e3984677f8c6574ad61b97 100644 (file)
@@ -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
index 7124157f17b291aacd45c92728c728e4f72b6b5a..0346070bbcba1dbbd0128b8031807b6727c2fcb2 100644 (file)
@@ -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')
index 8c615bee7be58dea8a298b6d0f3cbb611c32101f..54101d5a3625c63df9d99edeee0e5ef37a30c42f 100644 (file)
@@ -1480,8 +1480,6 @@ void AWindowGUI::update_asset_list()
                }
        }
 
-       mwindow->gui->default_message();
-
 // Synchronize nested EDLs
        for( int i=0; i<mwindow->edl->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 ) {
index 4c5f1d4bac8b1375afda0e996fe89eb3a88f3cfa..4ac168f910891fd59e545b1043f3e2f1400deff1 100644 (file)
@@ -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++ ) {
index f2c3e6321fc1a6cbd7511ae8d9fe4a33dac8fd02..e0d5f7016b733dd2c705656ce1f3ad7b28d4ab6c 100644 (file)
@@ -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);
 }
 
index a9679e8fcb8a916be7340f6a2adc2daa4f470ba9..c1da8908afb24dc8c3ed4a0b199d8ff63d247c54 100644 (file)
@@ -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;
index 5b35292404b0f040ae6ae333433c479ba5a6ca60..e7b3e12d54b3dafc3ca942a31ab9b19ef8853a14 100644 (file)
@@ -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;
+}
+
+
index ba7461ec5a8d25edfd0dc974b28c349f16702709..aa7b652b18d107a274591528222f7b3c7b0b704f 100644 (file)
@@ -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;
 
index e9f67c16a4fca3f804eccfe7ecb993cf8ee91acf..6fba32bb011683640a4571ce010b7517555a2eb0 100644 (file)
@@ -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
index 5d755977c183bfbaa9c424d7234e1021213945f2..ea9c58f5bf04e40177247b91e604196aca8b832a 100644 (file)
@@ -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; j<columns; ++j )
+                               list_column[j][k]->set_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(),
index 4d71a3290a8258044591dd60d2b1d060ecaa8e36..96d1ebe2b4065e2a8ec1744a090d89e301c429c4 100644 (file)
@@ -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.