locale expanders txt, libpulse prereq, debian shlibs deps,
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / file.C
index 1fec188eacb98570229d46acda6e27cc19322cfd..f9571c9d1dddd60bb37704dda5a18d0e740c8200 100644 (file)
@@ -52,6 +52,7 @@
 #include "filejpeg.h"
 #include "filempeg.h"
 #undef HAVE_STDLIB_H // automake conflict
+#include "fileogg.h"
 #include "filepng.h"
 #include "fileppm.h"
 #include "fileref.h"
@@ -60,6 +61,7 @@
 #include "filetga.h"
 #include "filethread.h"
 #include "filetiff.h"
+#include "filevorbis.h"
 #include "filexml.h"
 #include "formatwindow.h"
 #include "formattools.h"
 #include "samples.h"
 #include "vframe.h"
 
+#ifdef HAVE_OGG
+//suppress noref warning
+void *vorbis0_ov_callbacks[] = {
+ &OV_CALLBACKS_DEFAULT, &OV_CALLBACKS_NOCLOSE,
+ &OV_CALLBACKS_STREAMONLY, &OV_CALLBACKS_STREAMONLY_NOCLOSE,
+};
+#endif
+
 File::File()
 {
        cpus = 1;
@@ -94,7 +104,6 @@ File::~File()
        }
 
        if( temp_frame ) {
-//printf("File::~File %d temp_debug=%d\n", __LINE__, --temp_debug);
                delete temp_frame;
        }
 
@@ -229,6 +238,12 @@ int File::get_options(FormatTools *format,
                FileTIFF::get_parameters(parent_window, asset, format_window,
                        audio_options, video_options, edl);
                break;
+#ifdef HAVE_OGG
+       case FILE_OGG:
+               FileOGG::get_parameters(parent_window, asset, format_window,
+                       audio_options, video_options, edl);
+               break;
+#endif
        default:
                break;
        }
@@ -350,6 +365,10 @@ const char *File::default_probes[] = {
        "CR2",
        "TGA",
        "TIFF",
+#ifdef HAVE_OGG
+       "OGG",
+       "Vorbis",
+#endif
        "MPEG",
        "EDL",
                "FFMPEG_Late", 
@@ -450,6 +469,18 @@ int File::probe()
                        file = new FileTIFF(this->asset, this);
                        return FILE_OK;
                }
+#ifdef HAVE_OGG
+               if( !strcmp(pref->name,"OGG") ) { // OGG file
+                       if( !FileOGG::check_sig(this->asset) ) continue;
+                       file = new FileOGG(this->asset, this);
+                       return FILE_OK;
+               }
+               if( !strcmp(pref->name,"Vorbis") ) { // VorbisFile file
+                       if( !FileVorbis::check_sig(this->asset) ) continue;
+                       file = new FileVorbis(this->asset, this);
+                       return FILE_OK;
+               }
+#endif
 #ifdef HAVE_LIBZMPEG
                if( !strcmp(pref->name,"MPEG") ) { // MPEG file
                        if( !FileMPEG::check_sig(this->asset) ) continue;
@@ -573,6 +604,15 @@ int File::open_file(Preferences *preferences,
                file = new FileMPEG(this->asset, this);
                break;
 #endif
+#ifdef HAVE_OGG
+       case FILE_OGG:
+               file = new FileOGG(this->asset, this);
+               break;
+
+       case FILE_VORBIS:
+               file = new FileVorbis(this->asset, this);
+               break;
+#endif
 #ifdef HAVE_DV
        case FILE_RAWDV:
                file = new FileDV(this->asset, this);
@@ -1214,6 +1254,8 @@ int File::strtoformat(const char *format)
        if( !strcasecmp(format, _(VMPEG_NAME)) ) return FILE_VMPEG;
        if( !strcasecmp(format, _(TGA_NAME)) ) return FILE_TGA;
        if( !strcasecmp(format, _(TGA_LIST_NAME)) ) return FILE_TGA_LIST;
+       if( !strcasecmp(format, _(OGG_NAME)) ) return FILE_OGG;
+       if( !strcasecmp(format, _(VORBIS_NAME)) ) return FILE_VORBIS;
        if( !strcasecmp(format, _(RAWDV_NAME)) ) return FILE_RAWDV;
        if( !strcasecmp(format, _(FFMPEG_NAME)) ) return FILE_FFMPEG;
        if( !strcasecmp(format, _(DBASE_NAME)) ) return FILE_DB;
@@ -1255,6 +1297,8 @@ const char* File::formattostr(int format)
        case FILE_TGA_LIST:     return _(TGA_LIST_NAME);
        case FILE_TIFF:         return _(TIFF_NAME);
        case FILE_TIFF_LIST:    return _(TIFF_LIST_NAME);
+       case FILE_OGG:          return _(OGG_NAME);
+       case FILE_VORBIS:       return _(VORBIS_NAME);
        case FILE_RAWDV:        return _(RAWDV_NAME);
        case FILE_FFMPEG:       return _(FFMPEG_NAME);
        case FILE_DB:           return _(DBASE_NAME);
@@ -1388,6 +1432,7 @@ int64_t File::get_memory_usage()
 int File::renders_video(int format)
 {
        switch( format ) {
+       case FILE_OGG:
        case FILE_JPEG:
        case FILE_JPEG_LIST:
        case FILE_CR2:
@@ -1425,6 +1470,8 @@ int File::renders_audio(int format)
        case FILE_FLAC:
        case FILE_PCM:
        case FILE_WAV:
+       case FILE_OGG:
+       case FILE_VORBIS:
        case FILE_AMPEG:
        case FILE_AU:
        case FILE_AIFF:
@@ -1471,6 +1518,7 @@ const char* File::get_tag(int format)
        case FILE_FLAC:         return "flac";
        case FILE_JPEG:         return "jpg";
        case FILE_JPEG_LIST:    return "jpgs";
+       case FILE_OGG:          return "ogg";
        case FILE_GIF:          return "gif";
        case FILE_GIF_LIST:     return "gifs";
        case FILE_PCM:          return "pcm";
@@ -1483,6 +1531,7 @@ const char* File::get_tag(int format)
        case FILE_TIFF:         return "tif";
        case FILE_TIFF_LIST:    return "tifs";
        case FILE_VMPEG:        return "m2v";
+       case FILE_VORBIS:       return "ogg";
        case FILE_WAV:          return "wav";
        case FILE_FFMPEG:       return "ffmpg";
        case FILE_REF:          return "ref";
@@ -1517,6 +1566,8 @@ const char* File::get_prefix(int format)
        case FILE_EXR:          return "EXR";
        case FILE_EXR_LIST:     return "EXR_LIST";
        case FILE_CR2:          return "CR2";
+       case FILE_OGG:          return "OGG";
+       case FILE_VORBIS:       return "VORBIS";
        case FILE_FLAC:         return "FLAC";
        case FILE_FFMPEG:       return "FFMPEG";
        case FILE_SCENE:        return "SCENE";
@@ -1529,13 +1580,6 @@ const char* File::get_prefix(int format)
 }
 
 
-PackagingEngine *File::new_packaging_engine(Asset *asset)
-{
-       PackagingEngine *result = (PackagingEngine*) new PackagingEngineDefault();
-       return result;
-}
-
-
 int File::record_fd()
 {
        return file ? file->record_fd() : -1;