X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Frender.C;h=a43449e4b94a43eb99e8541fa148ab1fb232dd42;hb=refs%2Fheads%2Fmaster;hp=d6de73782ce6077da4f0c2f4605d2204eb34dcd3;hpb=3abbd84aa85907d646b13c98295ce778d2a71215;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C index d6de7378..a43449e4 100644 --- a/cinelerra-5.1/cinelerra/render.C +++ b/cinelerra-5.1/cinelerra/render.C @@ -1,6 +1,7 @@ /* * CINELERRA * Copyright (C) 1997-2011 Adam Williams + * Copyright (C) 2003-2016 Cinelerra CV contributors * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -338,7 +339,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 +447,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 +685,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; @@ -725,6 +727,11 @@ void RenderThread::render_single(int test_overwrite, Asset *asset, EDL *edl, if( !render->result ) { // Get total range to render render->total_start = command->start_position; +#if 0 + render->default_asset->timecode = command->start_position; + printf("tc: %f \n", render->default_asset->timecode); + render->default_asset->timecode += edl->session->timecode_offset; +#endif render->total_end = command->end_position; total_length = render->total_end - render->total_start; @@ -733,8 +740,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 +889,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; @@ -989,6 +996,8 @@ RenderWindow::RenderWindow(MWindow *mwindow, rangeselection = 0; rangeinout = 0; range1frame = 0; +// *** CONTEXT_HELP *** + context_help_set_keyword("Single File Rendering"); } RenderWindow::~RenderWindow()