X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fdvdcreate.C;h=9828165941db009393dd0cbe195077ac8716fedd;hb=c66c09b32c6f46ef67550a6c63ba7f9d1d46628d;hp=6b7bccd31f4307464af6d1fd2ca4dd8167b761d6;hpb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/dvdcreate.C b/cinelerra-5.1/cinelerra/dvdcreate.C index 6b7bccd3..98281659 100644 --- a/cinelerra-5.1/cinelerra/dvdcreate.C +++ b/cinelerra-5.1/cinelerra/dvdcreate.C @@ -1,4 +1,5 @@ #include "asset.h" +#include "bchash.h" #include "clip.h" #include "dvdcreate.h" #include "edl.h" @@ -125,8 +126,7 @@ CreateDVD_Thread::~CreateDVD_Thread() close_window(); } -int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, - const char *tmp_path, const char *asset_title) +int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, const char *asset_dir) { EDL *edl = mwindow->edl; if( !edl || !edl->session ) { @@ -145,9 +145,6 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, return 1; } - char asset_dir[BCTEXTLEN]; - sprintf(asset_dir, "%s/%s", tmp_path, asset_title); - if( mkdir(asset_dir, 0777) ) { char err[BCTEXTLEN], msg[BCTEXTLEN]; strerror_r(errno, err, sizeof(err)); @@ -317,7 +314,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, 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); @@ -365,6 +362,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, void CreateDVD_Thread::handle_close_event(int result) { if( result ) return; + mwindow->defaults->update("WORK_DIRECTORY", tmp_path); mwindow->batch_render->load_defaults(mwindow->defaults); mwindow->undo->update_undo_before(); KeyFrame keyframe; char data[BCTEXTLEN]; @@ -409,6 +407,7 @@ void CreateDVD_Thread::handle_close_event(int result) edit->startproject, edit->length, PLUGIN_STANDALONE, 0, &keyframe, 0); } + vtrk->optimize(); } } @@ -436,19 +435,22 @@ void CreateDVD_Thread::handle_close_event(int result) keyframe.set_data(data); insert_video_plugin("Histogram", &keyframe); } - mwindow->batch_render->reset(1); - create_dvd_jobs(&mwindow->batch_render->jobs, tmp_path, asset_title); - mwindow->save_backup(); + char asset_dir[BCTEXTLEN], jobs_path[BCTEXTLEN]; + sprintf(asset_dir, "%s/%s", tmp_path, asset_title); + sprintf(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); mwindow->resync_guis(); - mwindow->batch_render->handle_close_event(0); + if( ret ) return; + mwindow->batch_render->save_jobs(); mwindow->batch_render->start(); } BC_Window* CreateDVD_Thread::new_gui() { - memset(tmp_path,0,sizeof(tmp_path)); strcpy(tmp_path,"/tmp"); + mwindow->defaults->get("WORK_DIRECTORY", tmp_path); memset(asset_title,0,sizeof(asset_title)); time_t dt; time(&dt); struct tm dtm; localtime_r(&dt, &dtm); @@ -575,7 +577,7 @@ CreateDVD_DiskSpace::~CreateDVD_DiskSpace() int64_t CreateDVD_DiskSpace::tmp_path_space() { - const char *path = gui->tmp_path->get_text(); + const char *path = gui->thread->tmp_path; if( access(path,R_OK+W_OK) ) return 0; struct statfs sfs; if( statfs(path, &sfs) ) return 0; @@ -617,13 +619,15 @@ CreateDVD_TmpPath::~CreateDVD_TmpPath() int CreateDVD_TmpPath::handle_event() { + get_text(); gui->disk_space->update(); return 1; } CreateDVD_AssetTitle::CreateDVD_AssetTitle(CreateDVD_GUI *gui, int x, int y, int w) - : BC_TextBox(x, y, w, 1, 0, gui->thread->asset_title, 1, MEDIUMFONT) + : BC_TextBox(x, y, w, 1, -(int)sizeof(gui->thread->asset_title), + gui->thread->asset_title, 1, MEDIUMFONT) { this->gui = gui; } @@ -632,6 +636,12 @@ CreateDVD_AssetTitle::~CreateDVD_AssetTitle() { } +int CreateDVD_AssetTitle::handle_event() +{ + get_text(); + return 1; +} + CreateDVD_Deinterlace::CreateDVD_Deinterlace(CreateDVD_GUI *gui, int x, int y) : BC_CheckBox(x, y, &gui->thread->use_deinterlace, _("Deinterlace")) @@ -889,6 +899,7 @@ insert_video_plugin(const char *title, KeyFrame *default_keyframe) edit->startproject, edit->length, PLUGIN_STANDALONE, 0, default_keyframe, 0); } + vtrk->optimize(); } return 0; }