X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpackagerenderer.C;h=e05080999f3f218c0b05a4cb3cccd4a39f8d92ba;hb=38cb4182e11e57fc426bede3825e825e9d61433b;hp=b8cd1bd6b476405561514c53ed67624a643ec99b;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/packagerenderer.C b/cinelerra-5.1/cinelerra/packagerenderer.C index b8cd1bd6..e0508099 100644 --- a/cinelerra-5.1/cinelerra/packagerenderer.C +++ b/cinelerra-5.1/cinelerra/packagerenderer.C @@ -152,26 +152,20 @@ void PackageRenderer::create_output() asset = new Asset(*default_asset); if(!get_master() && preferences->renderfarm_vfs && preferences->use_renderfarm) - sprintf(asset->path, RENDERFARM_FS_PREFIX "%s", package->path); + snprintf(asset->path, sizeof(asset->path), + RENDERFARM_FS_PREFIX "%s", package->path); else - strcpy(asset->path, package->path); + strncpy(asset->path, package->path, sizeof(asset->path)); file = new File; - file->set_processors(preferences->processors); - -//printf("PackageRenderer::create_output %d\n", __LINE__); - result = file->open_file(preferences, - asset, - 0, - 1); -//printf("PackageRenderer::create_output %d %d\n", __LINE__, result); + result = file->open_file(preferences, asset, 0, 1); if(result && mwindow) { // open failed char string[BCTEXTLEN]; - sprintf(string, _("Couldn't open %s"), asset->path); + snprintf(string, sizeof(string), _("Couldn't open %s"), asset->path); ErrorBox error(_(PROGRAM_NAME ": Error"), mwindow->gui->get_abs_cursor_x(1), mwindow->gui->get_abs_cursor_y(1)); @@ -196,11 +190,7 @@ void PackageRenderer::create_engine() aconfig->fragment_size = audio_read_length; - render_engine = new RenderEngine(0, - preferences, - 0, - 0, - 0); + render_engine = new RenderEngine(0, preferences, 0, 0); render_engine->set_acache(audio_cache); render_engine->set_vcache(video_cache); render_engine->arm_command(command); @@ -254,7 +244,12 @@ void PackageRenderer::create_engine() direct_frame_copying = 0; -//printf("PackageRenderer::create_engine %d\n", __LINE__); +//printf("PackageRenderer::create_engine %d video_write_length=%d\n", __LINE__, video_write_length); +// starting frames are corrupted if video_write_length > 2. Work around it, for now. + if(video_write_length > 2) + { + video_write_length = 2; + } file->start_video_thread(video_write_length, command->get_edl()->session->color_model, preferences->processors > 1 ? 2 : 1, @@ -419,7 +414,8 @@ void PackageRenderer::do_video() VFrame *preview_output; video_device->new_output_buffer(&preview_output, - command->get_edl()->session->color_model); + command->get_edl()->session->color_model, + command->get_edl()); preview_output->copy_from(video_output_ptr); video_device->write_buffer(preview_output, @@ -745,6 +741,7 @@ int PackageRenderer::direct_frame_copy(EDL *edl, //printf("Render::direct_frame_copy 2\n"); if(!package->use_brender) + { error |= ((VEdit*)playable_edit)->read_frame(compressed_output, video_position, PLAY_FORWARD, @@ -752,7 +749,9 @@ int PackageRenderer::direct_frame_copy(EDL *edl, 1, 0, 0); - +//printf("Render::direct_frame_copy %d %d\n", __LINE__, compressed_output->get_compressed_size()); + } + if(!error && video_preroll > 0) {