X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fdvdcreate.C;h=6b7bccd31f4307464af6d1fd2ca4dd8167b761d6;hp=c7477269e3642f26096c0cba11410bf1ff8dc475;hb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb;hpb=69846fe5913069496f392998feba71847299e3df diff --git a/cinelerra-5.1/cinelerra/dvdcreate.C b/cinelerra-5.1/cinelerra/dvdcreate.C index c7477269..6b7bccd3 100644 --- a/cinelerra-5.1/cinelerra/dvdcreate.C +++ b/cinelerra-5.1/cinelerra/dvdcreate.C @@ -5,6 +5,7 @@ #include "edit.h" #include "edits.h" #include "edlsession.h" +#include "file.h" #include "filexml.h" #include "keyframe.h" #include "labels.h" @@ -14,6 +15,7 @@ #include "mwindowgui.h" #include "plugin.h" #include "pluginset.h" +#include "rescale.h" #include "track.h" #include "tracks.h" @@ -23,30 +25,43 @@ #include #include -// DVD Creation -#define HD_1920x1080_2997 0 -#define HD_1920x1080_2500 1 -#define HD_1280x720_5994p 2 -#define HD_1280x720_5000p 3 -#define HD_720x576_5000p 4 -#define HD_720x576_2500 5 -#define HD_720x480_5994p 6 -#define HD_720x480_2997 7 +#define DVD_PAL_4x3 0 +#define DVD_PAL_16x9 1 +#define DVD_NTSC_4x3 2 +#define DVD_NTSC_16x9 3 + +#define DVD_NORM_PAL 0 +#define DVD_NORM_NTSC 1 + +#define DVD_ASPECT_4x3 0 +#define DVD_ASPECT_16x9 1 -static struct hd_format { +static struct dvd_norm { const char *name; int w, h; double framerate; -} hd_formats[] = { - { "1920x1080 29.97", 1920,1080, 29.97 }, - { "1920x1080 25", 1920,1080, 25 }, - { "1280x720 59.94p", 1280,720, 59.94 }, - { "1280x720 50p", 1280,720, 50 }, - { "720x576 50p(PAL)", 720,576, 50 }, - { "720x576 25 (PAL)", 720,576, 25 }, - { "720x480 59.94p(NTSC)", 720,480, 59.94 }, - { "720x480 29.97 (NTSC)", 720,480, 29.97 }, +} dvd_norms[] = { + { "PAL", 720,576, 25 }, + { "NTSC", 720,480, 29.97 }, +}; + +static struct dvd_aspect { + int w, h; +} dvd_aspects[] = { + { 4, 3, }, + { 16, 9, }, +}; + +// DVD Creation + +static struct dvd_format { + int norm, aspect; +} dvd_formats[] = { + { DVD_NORM_PAL, DVD_ASPECT_4x3, }, + { DVD_NORM_PAL, DVD_ASPECT_16x9, }, + { DVD_NORM_NTSC, DVD_ASPECT_4x3, }, + { DVD_NORM_NTSC, DVD_ASPECT_16x9, }, }; const int64_t CreateDVD_Thread::DVD_SIZE = 4700000000; @@ -68,7 +83,7 @@ const double CreateDVD_Thread::DVD_KAUDIO_RATE = 224; CreateDVD_MenuItem::CreateDVD_MenuItem(MWindow *mwindow) : BC_MenuItem(_("DVD Render..."), _("Shift-D"), 'D') { - set_shift(1); + set_shift(1); this->mwindow = mwindow; } @@ -89,7 +104,6 @@ CreateDVD_Thread::CreateDVD_Thread(MWindow *mwindow) this->use_histogram = 0; this->use_inverse_telecine = 0; this->use_wide_audio = 0; - this->use_wide_aspect = 0; this->use_ffmpeg = 0; this->use_resize_tracks = 0; this->use_label_chapters = 0; @@ -170,9 +184,8 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, fprintf(fp,"#!/bin/bash\n"); fprintf(fp,"echo \"running %s\" $# $*\n", script_filename); fprintf(fp,"\n"); - char exe_path[BCTEXTLEN]; - get_exe_path(exe_path); - fprintf(fp,"PATH=$PATH:%s\n",exe_path); + const char *exec_path = File::get_cinlib_path(); + fprintf(fp,"PATH=$PATH:%s\n",exec_path); if( !use_ffmpeg ) { fprintf(fp,"mplex -f 8 -o $1/dvd.mpg $1/dvd.m2v $1/dvd.ac3\n"); fprintf(fp,"\n"); @@ -180,6 +193,10 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, fprintf(fp,"rm -rf $1/iso\n"); fprintf(fp,"mkdir -p $1/iso\n"); fprintf(fp,"\n"); +// dvdauthor ver 0.7.0 requires this to work + int norm = dvd_formats[use_standard].norm; + const char *name = dvd_norms[norm].name; + fprintf(fp,"export VIDEO_FORMAT=%s\n", name); fprintf(fp,"dvdauthor -x - <\n"); fprintf(fp," \n"); @@ -187,8 +204,11 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, fprintf(fp," \n"); fprintf(fp," \n"); fprintf(fp," \n"); - fprintf(fp,"