olaf neophyte and de.po updates, valgrind tweaks, delete green lady, inkscape dpi=96
[goodguy/history.git] / cinelerra-5.1 / cinelerra / packagerenderer.C
index d4341493dce1a8d4b4bce441a3ea842383040a20..4318bec73b9435f79713e3a45623b9901a1cfb55 100644 (file)
@@ -105,6 +105,7 @@ PackageRenderer::~PackageRenderer()
        delete video_cache;
        delete vconfig;
        delete aconfig;
+       delete timer;
 }
 
 // PackageRenderer::initialize happens only once for every node when doing rendering session
@@ -152,26 +153,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));
@@ -250,7 +245,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,
@@ -415,7 +415,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,
@@ -741,6 +742,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,
@@ -748,7 +750,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)
                {