X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ffile.C;h=03348e0a6422f3316a26dc008757157f8ba546f8;hp=4b9c1be85a5ccc60c4544442de152593834e2b7b;hb=4a028c75bea81ad0f03a8004eb076dfff718a469;hpb=9d832a1fff11b11aaa1108c460690ed05e2bdc05 diff --git a/cinelerra-5.1/cinelerra/file.C b/cinelerra-5.1/cinelerra/file.C index 4b9c1be8..03348e0a 100644 --- a/cinelerra-5.1/cinelerra/file.C +++ b/cinelerra-5.1/cinelerra/file.C @@ -54,6 +54,7 @@ #undef HAVE_STDLIB_H // automake conflict #include "fileogg.h" #include "filepng.h" +#include "fileppm.h" #include "filescene.h" #include "filesndfile.h" #include "filetga.h" @@ -164,23 +165,21 @@ int File::get_options(FormatTools *format, int audio_options, int video_options) { BC_WindowBase *parent_window = format->window; - //ArrayList *plugindb = format->plugindb; Asset *asset = format->asset; - + EDL *edl = format->mwindow ? format->mwindow->edl : 0; + format_window = 0; getting_options = 1; format_completion->lock("File::get_options"); switch( asset->format ) { - case FILE_AC3: - FileAC3::get_parameters(parent_window, - asset, - format_window, - audio_options, - video_options); +#ifdef HAVE_CIN_3RDPARTY + case FILE_AC3: FileAC3::get_parameters(parent_window, asset, format_window, + audio_options, video_options, edl); break; +#endif #ifdef HAVE_DV case FILE_RAWDV: FileDV::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; #endif case FILE_PCM: @@ -189,51 +188,58 @@ int File::get_options(FormatTools *format, case FILE_AIFF: case FILE_SND: FileSndFile::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; case FILE_FFMPEG: FileFFMPEG::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; +#ifdef HAVE_LIBZMPEG case FILE_AMPEG: case FILE_VMPEG: FileMPEG::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; +#endif case FILE_JPEG: case FILE_JPEG_LIST: FileJPEG::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; #ifdef HAVE_OPENEXR case FILE_EXR: case FILE_EXR_LIST: FileEXR::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; #endif case FILE_FLAC: FileFLAC::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; case FILE_PNG: case FILE_PNG_LIST: FilePNG::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); + break; + case FILE_PPM: + case FILE_PPM_LIST: + FilePPM::get_parameters(parent_window, asset, format_window, + audio_options, video_options, edl); break; case FILE_TGA: case FILE_TGA_LIST: FileTGA::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; case FILE_TIFF: case FILE_TIFF_LIST: FileTIFF::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; case FILE_OGG: FileOGG::get_parameters(parent_window, asset, format_window, - audio_options, video_options); + audio_options, video_options, edl); break; default: break; @@ -336,6 +342,7 @@ const char *File::default_probes[] = { #endif "SndFile", "PNG", + "PPM", "JPEG", "GIF", #ifdef HAVE_OPENEXR @@ -373,11 +380,13 @@ int File::probe() file = new FileFFMPEG(this->asset, this); return FILE_OK; } +#ifdef HAVE_COMMERCIAL if( !strcmp(pref->name,"DB") ) { // MediaDB if( !FileDB::check_sig(this->asset) ) continue; file = new FileDB(this->asset, this); return FILE_OK; } +#endif if( !strcmp(pref->name,"Scene") ) { // scene file if( !FileScene::check_sig(this->asset, data)) continue; file = new FileScene(this->asset, this); @@ -400,6 +409,11 @@ int File::probe() file = new FilePNG(this->asset, this); return FILE_OK; } + if( !strcmp(pref->name,"PPM") ) { // PPM file + if( !FilePPM::check_sig(this->asset) ) continue; + file = new FilePPM(this->asset, this); + return FILE_OK; + } if( !strcmp(pref->name,"JPEG") ) { // JPEG file if( !FileJPEG::check_sig(this->asset) ) continue; file = new FileJPEG(this->asset, this); @@ -447,11 +461,13 @@ int File::probe() file = new FileVorbis(this->asset, this); return FILE_OK; } +#ifdef HAVE_LIBZMPEG if( !strcmp(pref->name,"MPEG") ) { // MPEG file if( !FileMPEG::check_sig(this->asset) ) continue; file = new FileMPEG(this->asset, this); return FILE_OK; } +#endif if( !strcmp(pref->name,"EDL") ) { // XML file if( data[0] != '<' ) continue; if( !strncmp(&data[1],"EDL>",4) || @@ -487,10 +503,11 @@ int File::open_file(Preferences *preferences, if( ret != FILE_OK ) return ret; break; } // format already determined +#ifdef HAVE_CIN_3RDPARTY case FILE_AC3: file = new FileAC3(this->asset, this); break; - +#endif case FILE_SCENE: file = new FileScene(this->asset, this); break; @@ -513,6 +530,11 @@ int File::open_file(Preferences *preferences, file = new FilePNG(this->asset, this); break; + case FILE_PPM: + case FILE_PPM_LIST: + file = new FilePPM(this->asset, this); + break; + case FILE_JPEG: case FILE_JPEG_LIST: file = new FileJPEG(this->asset, this); @@ -546,17 +568,19 @@ int File::open_file(Preferences *preferences, case FILE_TIFF_LIST: file = new FileTIFF(this->asset, this); break; - +#ifdef HAVE_COMMERCIAL case FILE_DB: file = new FileDB(this->asset, this); break; +#endif +#ifdef HAVE_LIBZMPEG case FILE_MPEG: case FILE_AMPEG: case FILE_VMPEG: file = new FileMPEG(this->asset, this); break; - +#endif case FILE_OGG: file = new FileOGG(this->asset, this); break; @@ -1146,7 +1170,7 @@ int File::read_frame(VFrame *frame, int is_thread) } if( !temp_frame ) { - temp_frame = new VFrame(asset->width, asset->height, supported_colormodel); + temp_frame = new VFrame(asset->width, asset->height, supported_colormodel, 0); } // printf("File::read_frame %d\n", __LINE__); @@ -1204,6 +1228,8 @@ int File::strtoformat(const char *format) if( !strcasecmp(format, _(SND_NAME)) ) return FILE_SND; if( !strcasecmp(format, _(PNG_NAME)) ) return FILE_PNG; if( !strcasecmp(format, _(PNG_LIST_NAME)) ) return FILE_PNG_LIST; + if( !strcasecmp(format, _(PPM_NAME)) ) return FILE_PPM; + if( !strcasecmp(format, _(PPM_LIST_NAME)) ) return FILE_PPM_LIST; if( !strcasecmp(format, _(TIFF_NAME)) ) return FILE_TIFF; if( !strcasecmp(format, _(TIFF_LIST_NAME)) ) return FILE_TIFF_LIST; if( !strcasecmp(format, _(JPEG_NAME)) ) return FILE_JPEG; @@ -1240,6 +1266,8 @@ const char* File::formattostr(int format) case FILE_SND: return _(SND_NAME); case FILE_PNG: return _(PNG_NAME); case FILE_PNG_LIST: return _(PNG_LIST_NAME); + case FILE_PPM: return _(PPM_NAME); + case FILE_PPM_LIST: return _(PPM_LIST_NAME); case FILE_JPEG: return _(JPEG_NAME); case FILE_JPEG_LIST: return _(JPEG_LIST_NAME); case FILE_CR2: return _(CR2_NAME); @@ -1247,7 +1275,9 @@ const char* File::formattostr(int format) case FILE_FLAC: return _(FLAC_NAME); case FILE_EXR: return _(EXR_NAME); case FILE_EXR_LIST: return _(EXR_LIST_NAME); +#ifdef HAVE_LIBZMPEG case FILE_MPEG: return _(MPEG_NAME); +#endif case FILE_AMPEG: return _(AMPEG_NAME); case FILE_VMPEG: return _(VMPEG_NAME); case FILE_TGA: return _(TGA_NAME); @@ -1317,12 +1347,10 @@ int File::bytes_per_sample(int bits) } - - - -int File::get_best_colormodel(int driver) +int File::get_best_colormodel(int driver, int vstream) { - return get_best_colormodel(asset, driver); + return file ? file->get_best_colormodel(driver, vstream) : + get_best_colormodel(asset, driver); } int File::get_best_colormodel(Asset *asset, int driver) @@ -1331,7 +1359,9 @@ int File::get_best_colormodel(Asset *asset, int driver) #ifdef HAVE_DV case FILE_RAWDV: return FileDV::get_best_colormodel(asset, driver); #endif +#ifdef HAVE_LIBZMPEG case FILE_MPEG: return FileMPEG::get_best_colormodel(asset, driver); +#endif case FILE_JPEG: case FILE_JPEG_LIST: return FileJPEG::get_best_colormodel(asset, driver); #ifdef HAVE_OPENEXR @@ -1340,11 +1370,15 @@ int File::get_best_colormodel(Asset *asset, int driver) #endif case FILE_PNG: case FILE_PNG_LIST: return FilePNG::get_best_colormodel(asset, driver); + case FILE_PPM: + case FILE_PPM_LIST: return FilePPM::get_best_colormodel(asset, driver); case FILE_TGA: case FILE_TGA_LIST: return FileTGA::get_best_colormodel(asset, driver); case FILE_CR2: case FILE_CR2_LIST: return FileCR2::get_best_colormodel(asset, driver); +#ifdef HAVE_COMMERCIAL case FILE_DB: return FileDB::get_best_colormodel(asset, driver); +#endif case FILE_FFMPEG: return FileFFMPEG::get_best_colormodel(asset, driver); } @@ -1392,6 +1426,8 @@ int File::renders_video(int format) case FILE_EXR_LIST: case FILE_PNG: case FILE_PNG_LIST: + case FILE_PPM: + case FILE_PPM_LIST: case FILE_TGA: case FILE_TGA_LIST: case FILE_TIFF: @@ -1406,7 +1442,7 @@ int File::renders_video(int format) int File::renders_video(Asset *asset) { return asset->format == FILE_FFMPEG ? - FileFFMPEG::renders_video(asset->fformat) : + FFMPEG::renders_video(asset->fformat) : renders_video(asset->format); } @@ -1432,7 +1468,7 @@ int File::renders_audio(int format) int File::renders_audio(Asset *asset) { return asset->format == FILE_FFMPEG ? - FileFFMPEG::renders_audio(asset->fformat) : + FFMPEG::renders_audio(asset->fformat) : renders_audio(asset->format); } @@ -1442,6 +1478,7 @@ int File::is_image_render(int format) case FILE_EXR: case FILE_JPEG: case FILE_PNG: + case FILE_PPM: case FILE_TGA: case FILE_TIFF: return 1; @@ -1468,6 +1505,8 @@ const char* File::get_tag(int format) case FILE_PCM: return "pcm"; case FILE_PNG: return "png"; case FILE_PNG_LIST: return "png"; + case FILE_PPM: return "ppm"; + case FILE_PPM_LIST: return "ppm"; case FILE_TGA: return "tga"; case FILE_TGA_LIST: return "tga"; case FILE_TIFF: return "tif"; @@ -1486,6 +1525,7 @@ const char* File::get_prefix(int format) case FILE_PCM: return "PCM"; case FILE_WAV: return "WAV"; case FILE_PNG: return "PNG"; + case FILE_PPM: return "PPM"; case FILE_JPEG: return "JPEG"; case FILE_TIFF: return "TIFF"; case FILE_GIF: return "GIF"; @@ -1501,6 +1541,7 @@ const char* File::get_prefix(int format) case FILE_RAWDV: return "RAWDV"; case FILE_TIFF_LIST: return "TIFF_LIST"; case FILE_PNG_LIST: return "PNG_LIST"; + case FILE_PPM_LIST: return "PPM_LIST"; case FILE_AC3: return "AC3"; case FILE_EXR: return "EXR"; case FILE_EXR_LIST: return "EXR_LIST"; @@ -1580,42 +1621,26 @@ void File::getenv_path(char *result, const char *path) *rp = 0; } -void File::setenv_path(char *result, const char *var, const char *path) +void File::setenv_path(const char *var, const char *path, int overwrite) { - char *env = getenv(var); - if( env ) return; char env_path[BCTEXTLEN]; getenv_path(env_path, path); - sprintf(result, "%s=%s", var, env_path); - putenv(result); + setenv(var, env_path, overwrite); } -char File::cinexe_path[BCTEXTLEN]; -char File::cinpkg_path[BCTEXTLEN]; -char File::cindat_path[BCTEXTLEN]; -char File::cinlib_path[BCTEXTLEN]; -char File::cincfg_path[BCTEXTLEN]; -char File::cinplg_path[BCTEXTLEN]; -char File::cinlad_path[BCTEXTLEN]; -char File::cinlcl_path[BCTEXTLEN]; -char File::cinbwr_path[BCTEXTLEN]; - void File::init_cin_path() { char env_path[BCTEXTLEN], env_pkg[BCTEXTLEN]; // these values are advertised for forks/shell scripts get_exe_path(env_path, env_pkg); - snprintf(cinexe_path, sizeof(cinexe_path), "CIN_PATH=%s", env_path); - putenv(cinexe_path); - snprintf(cinpkg_path, sizeof(cinpkg_path), "CIN_PKG=%s", env_pkg); - putenv(cinpkg_path); - - setenv_path(cindat_path, "CIN_DAT", CINDAT_DIR); - setenv_path(cinlib_path, "CIN_LIB", CINLIB_DIR); - setenv_path(cincfg_path, "CIN_CONFIG", CONFIG_DIR); - setenv_path(cinplg_path, "CIN_PLUGIN", PLUGIN_DIR); - setenv_path(cinlad_path, "CIN_LADSPA", LADSPA_DIR); - setenv_path(cinlcl_path, "CIN_LOCALE", LOCALE_DIR); - setenv_path(cinbwr_path, "CIN_BROWSER", CIN_BROWSER); + setenv_path("CIN_PATH", env_path, 1); + setenv_path("CIN_PKG", env_pkg, 1); + setenv_path("CIN_DAT", CINDAT_DIR, 0); + setenv_path("CIN_LIB", CINLIB_DIR, 0); + setenv_path("CIN_CONFIG", CONFIG_DIR, 0); + setenv_path("CIN_PLUGIN", PLUGIN_DIR, 0); + setenv_path("CIN_LADSPA", LADSPA_DIR, 0); + setenv_path("CIN_LOCALE", LOCALE_DIR, 0); + setenv_path("CIN_BROWSER", CIN_BROWSER, 0); }