X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Frender.C;h=1136be9bb5415c475b0efcd58f11baaa9ad858e3;hp=57e724aeda3b5ae5f691feb6836c924542ade1ec;hb=6bc0a304ee802c8d05bf9faadd17229696fec5d3;hpb=5ec378f09aeeb646705fdb8035b39a186374fba0 diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C index 57e724ae..1136be9b 100644 --- a/cinelerra-5.1/cinelerra/render.C +++ b/cinelerra-5.1/cinelerra/render.C @@ -338,7 +338,7 @@ void Render::handle_close_event(int result) } EDL *edl = mwindow->edl; if( !result && use_labels && !edl->labels->first ) { - eprintf(_("render file per label and no labels\n")); + eprintf(_("Create new file at labels checked, but no labels\n")); result = 1; } if( !result && asset->video_data ) { @@ -446,15 +446,16 @@ int Render::check_asset(EDL *edl, Asset &asset) return 0; } -int Render::get_strategy(int use_renderfarm, int use_labels) +int Render::get_strategy(int use_renderfarm, int use_labels, int range_type) { - return use_renderfarm ? - (use_labels ? FILE_PER_LABEL_FARM : SINGLE_PASS_FARM) : - (use_labels ? FILE_PER_LABEL : SINGLE_PASS ) ; + return range_type == RANGE_1FRAME ? SINGLE_PASS : + use_renderfarm ? + (use_labels ? FILE_PER_LABEL_FARM : SINGLE_PASS_FARM) : + (use_labels ? FILE_PER_LABEL : SINGLE_PASS ) ; } int Render::get_strategy() { - return get_strategy(preferences->use_renderfarm, use_labels); + return get_strategy(preferences->use_renderfarm, use_labels, range_type); } void Render::start_progress() @@ -683,7 +684,7 @@ void RenderThread::render_single(int test_overwrite, Asset *asset, EDL *edl, render->result = 0; // Create rendering command - TransportCommand *command = new TransportCommand; + TransportCommand *command = new TransportCommand(render->preferences); command->command = NORMAL_FWD; command->get_edl()->copy_all(edl); command->change_type = CHANGE_ALL; @@ -733,8 +734,8 @@ void RenderThread::render_single(int test_overwrite, Asset *asset, EDL *edl, render->result = 1; } } - - render_frames = render->default_asset->frame_rate * total_length; +// prevent single frame truncation to zero frames + render_frames = render->default_asset->frame_rate * total_length + 1e-4; // Generate packages if( !render->result ) { @@ -882,8 +883,8 @@ printf("Render::render_single: Session finished.\n"); mwindow->restart_brender(); if( farm_server ) delete farm_server; delete command; - delete audio_cache; - delete video_cache; + audio_cache->remove_user(); + video_cache->remove_user(); // Must delete packages after server delete render->packages; @@ -955,8 +956,9 @@ void RenderThread::run() render_frames, render_time, render_rate); } - if( render->mode == Render::INTERACTIVE && render->beep ) - mwindow->beep(3000., 1.5, 0.5); + float gain = render->beep; + if( render->mode == Render::INTERACTIVE && gain > 0 ) + mwindow->beep(3000., 1.5, gain); if( script ) { if( !render->result ) @@ -988,6 +990,8 @@ RenderWindow::RenderWindow(MWindow *mwindow, rangeselection = 0; rangeinout = 0; range1frame = 0; +// *** CONTEXT_HELP *** + context_help_set_keyword("Single File Rendering"); } RenderWindow::~RenderWindow() @@ -1057,6 +1061,8 @@ void RenderWindow::create_objects() x1 = x2 + xs20; render->beep = mwindow->edl->session->render_beep; add_subwindow(beep_on_done = new RenderBeepOnDone(this, x1, y1)); + y1 += beep_on_done->get_h(); + add_subwindow(new BC_Title(x1, y1, _("Beep on done volume"))); renderprofile = new RenderProfile(mwindow, this, x, y, 1); renderprofile->create_objects(); @@ -1212,14 +1218,14 @@ int RenderFormat::handle_event() } RenderBeepOnDone::RenderBeepOnDone(RenderWindow *rwindow, int x, int y) - : BC_CheckBox(x, y, rwindow->render->beep, _("Beep on done")) + : BC_FPot(x, y, rwindow->render->beep*100.f, 0.f, 100.f) { this->rwindow = rwindow; } int RenderBeepOnDone::handle_event() { - rwindow->render->beep = get_value(); + rwindow->render->beep = get_value()/100.f; return 1; }