X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpackagedispatcher.C;h=17d02c0d3bad198b0e60f228f5403689ad93f3bc;hb=8b9bf13ecb7f40eddc9155ac87bedce58c5942ed;hp=f6d69734d3738741e51108abbf817f569aea8ed7;hpb=94fc059e6ed3f77f20531338cbb03bdb3b4d9eab;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/packagedispatcher.C b/cinelerra-5.1/cinelerra/packagedispatcher.C index f6d69734..17d02c0d 100644 --- a/cinelerra-5.1/cinelerra/packagedispatcher.C +++ b/cinelerra-5.1/cinelerra/packagedispatcher.C @@ -25,6 +25,7 @@ #include "edl.h" #include "edlsession.h" #include "labels.h" +#include "mainerror.h" #include "mutex.h" #include "mwindow.h" #include "packagedispatcher.h" @@ -101,7 +102,7 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl, strcpy(packages[0]->path, default_asset->path); break; case SINGLE_PASS_FARM: - packaging_engine = File::new_packaging_engine(default_asset); + packaging_engine = (PackagingEngine*)new PackagingEngineDefault(); packaging_engine->create_packages_single_farm(edl, preferences, default_asset, total_start, total_end); break; @@ -110,6 +111,11 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl, label = edl->labels->first; total_packages = 0; packages = new RenderPackage*[edl->labels->total() + 2]; + if( !label ) { + eprintf(_("Render file per label and no labels\n")); + result = 1; + break; + } Render::get_starting_number(default_asset->path, current_number, number_start, total_digits, 3); @@ -183,6 +189,7 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl, // Only if this isn't a background render or non interactive. if( strategy != BRENDER_FARM && test_overwrite && mwindow ) { ArrayList paths; + paths.set_array_delete(); get_package_paths(&paths); result = ConfirmSave::test_files(mwindow, &paths); paths.remove_all_objects(); @@ -197,8 +204,7 @@ void PackageDispatcher::get_package_paths(ArrayList *path_list) packaging_engine->get_package_paths(path_list); else { for( int i=0; iappend(strdup(packages[i]->path)); - path_list->set_free(); + path_list->append(cstrdup(packages[i]->path)); } } @@ -273,9 +279,11 @@ RenderPackage* PackageDispatcher::get_package(double frames_per_second, result->video_start = video_position; result->audio_end = result->audio_start + Units::to_int64(scaled_len * default_asset->sample_rate); + if( result->audio_end > audio_end ) result->audio_end = audio_end; result->video_end = result->video_start + Units::to_int64(scaled_len * default_asset->frame_rate); - if(result->video_end == result->video_start) result->video_end++; + if( result->video_end > video_end ) result->video_end = video_end; + if( result->video_end == result->video_start ) result->video_end++; audio_position = result->audio_end; video_position = result->video_end; result->audio_do = default_asset->audio_data; @@ -322,6 +330,11 @@ int64_t PackageDispatcher::get_progress_max() total_allocated * default_asset->sample_rate); } +RenderPackage *PackageDispatcher::get_package(int number) +{ + return packages[number]; +} + int PackageDispatcher::get_total_packages() { return total_allocated;