edl plugin names eng, fix segv for opengl brender, renderfarm rework strategy, perf...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / dvdcreate.C
index 155f17fbd1d2d5d8184cc241c3ea397c2301bb20..cb8214a9b53cd04a55d7f1af37a6ee2b27e1468d 100644 (file)
@@ -16,6 +16,7 @@
 #include "mwindowgui.h"
 #include "plugin.h"
 #include "pluginset.h"
+#include "preferences.h"
 #include "rescale.h"
 #include "track.h"
 #include "tracks.h"
@@ -183,8 +184,10 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList<BatchRenderJob*> *jobs, const ch
        fprintf(fp,"\n");
        const char *exec_path = File::get_cinlib_path();
        fprintf(fp,"PATH=$PATH:%s\n",exec_path);
+       if( mwindow->preferences->use_renderfarm )
+               fprintf(fp,"cat > $1/dvd.m2v $1/dvd.m2v0*\n");
        if( !use_ffmpeg ) {
-               fprintf(fp,"mplex -f 8 -o $1/dvd.mpg $1/dvd.m2v $1/dvd.ac3\n");
+               fprintf(fp,"mplex -M -f 8 -o $1/dvd.mpg $1/dvd.m2v $1/dvd.ac3\n");
                fprintf(fp,"\n");
        }
        fprintf(fp,"rm -rf $1/iso\n");
@@ -237,6 +240,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList<BatchRenderJob*> *jobs, const ch
        fprintf(fp,"\n");
        fprintf(fp,"echo To burn dvd, load blank media and run:\n");
        fprintf(fp,"echo growisofs -dvd-compat -Z /dev/dvd -dvd-video $1/iso\n");
+       fprintf(fp,"kill $$\n");
        fprintf(fp,"\n");
        fclose(fp);
 
@@ -261,6 +265,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList<BatchRenderJob*> *jobs, const ch
 
        double new_samplerate = session->sample_rate;
        double new_framerate = session->frame_rate;
+       edl->retrack();
        edl->rechannel();
        edl->resample(old_samplerate, new_samplerate, TRACK_AUDIO);
        edl->resample(old_framerate, new_framerate, TRACK_VIDEO);
@@ -314,7 +319,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList<BatchRenderJob*> *jobs, const ch
                FFMPEG::load_options(option_path, asset->ff_video_options,
                         sizeof(asset->ff_video_options));
                asset->ff_video_bitrate = vid_bitrate;
-               asset->ff_video_quality = 0;
+               asset->ff_video_quality = -1;
        }
        else {
                sprintf(&asset->path[0],"%s/dvd.m2v", asset_dir);
@@ -332,7 +337,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList<BatchRenderJob*> *jobs, const ch
                asset->vmpeg_preset = 8;
                asset->vmpeg_field_order = 0;
                asset->vmpeg_pframe_distance = 0;
-               job = new BatchRenderJob(mwindow->preferences);
+               job = new BatchRenderJob(mwindow->preferences, SINGLE_PASS);
                jobs->append(job);
                strcpy(&job->edl_path[0], xml_filename);
                asset = job->asset;
@@ -407,6 +412,7 @@ void CreateDVD_Thread::handle_close_event(int result)
                                        edit->startproject, edit->length,
                                        PLUGIN_STANDALONE, 0, &keyframe, 0);
                        }
+                       vtrk->optimize();
                }
        }
 
@@ -435,8 +441,8 @@ void CreateDVD_Thread::handle_close_event(int result)
                insert_video_plugin("Histogram", &keyframe);
        }
        char asset_dir[BCTEXTLEN], jobs_path[BCTEXTLEN];
-       sprintf(asset_dir, "%s/%s", tmp_path, asset_title);
-       sprintf(jobs_path, "%s/dvd.jobs", asset_dir);
+       snprintf(asset_dir, sizeof(asset_dir), "%s/%s", tmp_path, asset_title);
+       snprintf(jobs_path, sizeof(jobs_path), "%s/dvd.jobs", asset_dir);
        mwindow->batch_render->reset(jobs_path);
        int ret = create_dvd_jobs(&mwindow->batch_render->jobs, asset_dir);
        mwindow->undo->update_undo_after(_("create dvd"), LOAD_ALL);
@@ -898,6 +904,7 @@ insert_video_plugin(const char *title, KeyFrame *default_keyframe)
                                edit->startproject, edit->length,
                                PLUGIN_STANDALONE, 0, default_keyframe, 0);
                }
+               vtrk->optimize();
        }
        return 0;
 }
@@ -962,14 +969,13 @@ option_presets()
                                if( !EQUIV(aspect, dvd_aspect) ) use_scale = Rescale::scaled;
                        }
                        for( int i=0; i<trk->plugin_set.size(); ++i ) {
-                               for(Plugin *plugin = (Plugin*)trk->plugin_set[i]->first;
-                                               plugin;
-                                               plugin = (Plugin*)plugin->next) {
-                                       if( !strcmp(plugin->title, _("Deinterlace")) )
+                               for( Plugin *plugin = (Plugin*)trk->plugin_set[i]->first;
+                                               plugin; plugin=(Plugin*)plugin->next ) {
+                                       if( !strcmp(plugin->title, "Deinterlace") )
                                                has_deinterlace = 1;
-                                       if( !strcmp(plugin->title, _("Auto Scale")) ||
-                                           !strcmp(plugin->title, _("Scale Ratio")) ||
-                                           !strcmp(plugin->title, _("Scale")) )
+                                       if( !strcmp(plugin->title, "Auto Scale") ||
+                                           !strcmp(plugin->title, "Scale Ratio") ||
+                                           !strcmp(plugin->title, "Scale") )
                                                has_scale = 1;
                                }
                        }