add configure without-thirdparty, without-libzmpeg, without-commercial
[goodguy/history.git] / cinelerra-5.1 / cinelerra / file.C
index 76cb743f93f46e6efd525360fa27b5959120cdc6..03348e0a6422f3316a26dc008757157f8ba546f8 100644 (file)
@@ -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<PluginServer*> *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;
@@ -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);
@@ -1329,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
@@ -1338,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);
        }
 
@@ -1390,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:
@@ -1404,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);
 }
 
@@ -1430,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);
 }
 
@@ -1440,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;
@@ -1466,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";
@@ -1484,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";
@@ -1499,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";
@@ -1578,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);
 }