$(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
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')
}
}
- mwindow->gui->default_message();
-
// Synchronize nested EDLs
for( int i=0; i<mwindow->edl->nested_edls.size(); ++i ) {
int exists = 0;
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 ) {
// 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)
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++ ) {
proxy_use_scaler = 0;
proxy_auto_scale = 1;
proxy_beep = 0;
+ render_beep = 0;
decode_subtitles = 0;
subtitle_number = 0;
label_cells = 0;
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();
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;
}
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;
}
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();
}
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");
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();
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;
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);
}
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;
render_window = 0;
asset = 0;
result = 0;
+ beep = 0;
}
Render::~Render()
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);
}
}
render->completion->unlock();
+
+ if( render->mode == Render::INTERACTIVE && render->beep )
+ mwindow->beep(3000., 1.5, 0.5);
}
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;
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;
+}
+
+
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;
};
+class RenderBeepOnDone : public BC_CheckBox
+{
+public:
+ RenderBeepOnDone(RenderWindow *rwindow, int x, int y);
+ int handle_event();
+
+ RenderWindow *rwindow;
+};
+
+
class RenderWindow : public BC_Window
{
public:
RenderRangeSelection *rangeselection;
RenderRangeInOut *rangeinout;
RenderRange1Frame *range1frame;
+ RenderBeepOnDone *beep_on_done;
RenderProfile *renderprofile;
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
}
create_icons();
- create_tables();
+ create_tables(0);
add_subwindow(ok_button = new BC_FileBoxOK(this));
if(want_directory)
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;
}
return len;
}
-int BC_FileBox::create_tables()
+int BC_FileBox::create_tables(int select_all)
{
delete_tables();
char string[BCTEXTLEN];
}
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;
-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]);
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(),
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
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.