X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpackagerenderer.C;h=1c86af68d02b5bb2d050cfa2b5a52a463c4514fb;hp=d60a5be0ae17acc5c7aa3102aea5128251c97586;hb=54b918a8b84f666bf32548ebd12b93908061d2a6;hpb=94fc059e6ed3f77f20531338cbb03bdb3b4d9eab diff --git a/cinelerra-5.1/cinelerra/packagerenderer.C b/cinelerra-5.1/cinelerra/packagerenderer.C index d60a5be0..1c86af68 100644 --- a/cinelerra-5.1/cinelerra/packagerenderer.C +++ b/cinelerra-5.1/cinelerra/packagerenderer.C @@ -80,10 +80,20 @@ RenderPackage::~RenderPackage() } +PackageFile::PackageFile(PackageRenderer *package_renderer) +{ + this->package_renderer = package_renderer; +} +PackageFile::~PackageFile() +{ +} - - +int PackageFile::write_frame_done(int64_t position) +{ + if( !package_renderer->package->use_brender ) return 0; + return package_renderer->set_video_map(position, BRender::RENDERED); +} // Used by RenderFarm and in the future, Render, to do packages. @@ -101,8 +111,10 @@ PackageRenderer::PackageRenderer() PackageRenderer::~PackageRenderer() { delete command; - delete audio_cache; - delete video_cache; + if( audio_cache ) + audio_cache->remove_user(); + if( video_cache ) + video_cache->remove_user(); delete vconfig; delete aconfig; delete timer; @@ -158,7 +170,7 @@ void PackageRenderer::create_output() else strncpy(asset->path, package->path, sizeof(asset->path)); - file = new File; + file = new PackageFile(this); file->set_processors(preferences->processors); result = file->open_file(preferences, asset, 0, 1); @@ -394,13 +406,6 @@ void PackageRenderer::do_video() if( video_write_position >= video_write_length ) { result = file->write_video_buffer(video_write_position); -// Update the brender map after writing the files. - if( package->use_brender ) { - for( int i = 0; i < video_write_position && !result; i++ ) { - result = set_video_map(video_position + 1 - video_write_position + i, - BRender::RENDERED); - } - } video_write_position = 0; } } @@ -436,12 +441,6 @@ void PackageRenderer::stop_output() delete compressed_output; if( video_write_position ) file->write_video_buffer(video_write_position); - if( package->use_brender ) { - for( int i = 0; i < video_write_position && !error; i++ ) { - error = set_video_map(video_position - video_write_position + i, - BRender::RENDERED); - } - } video_write_position = 0; if( !error ) file->stop_video_thread(); if( mwindow ) {