X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Ffile.C;h=c3d024439a457be787de688426904d1819793623;hb=0c9155dd01b6745f908e12c6a202c671a8f09514;hp=5e870d42d5f3c0491aa198c989391a55bd17df71;hpb=2d99bb8ce591f05a31464b517d85dc2bc35b2abe;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/file.C b/cinelerra-5.0/cinelerra/file.C index 5e870d42..c3d02443 100644 --- a/cinelerra-5.0/cinelerra/file.C +++ b/cinelerra-5.0/cinelerra/file.C @@ -40,7 +40,6 @@ #include "condition.h" #include "errorbox.h" #include "fileac3.h" -#include "fileavi.h" #include "filebase.h" #include "filecr2.h" #include "filedb.h" @@ -52,7 +51,6 @@ #include "filegif.h" #include "file.h" #include "filejpeg.h" -#include "filemov.h" #include "filempeg.h" #undef HAVE_STDLIB_H // automake conflict #include "fileogg.h" @@ -76,11 +74,13 @@ #include "pluginserver.h" #include "preferences.h" #include "samples.h" -#include "stringfile.h" #include "vframe.h" - - +//suppress noref warning +void *vorbis0_ov_callbacks[] = { + &OV_CALLBACKS_DEFAULT, &OV_CALLBACKS_NOCLOSE, + &OV_CALLBACKS_STREAMONLY, &OV_CALLBACKS_STREAMONLY_NOCLOSE, +}; File::File() { @@ -178,7 +178,6 @@ int File::get_options(FormatTools *format, BC_WindowBase *parent_window = format->window; //ArrayList *plugindb = format->plugindb; Asset *asset = format->asset; - const char *locked_compressor = format->locked_compressor; getting_options = 1; format_completion->lock("File::get_options"); @@ -209,14 +208,6 @@ int File::get_options(FormatTools *format, audio_options, video_options); break; - case FILE_MOV: - FileMOV::get_parameters(parent_window, - asset, - format_window, - audio_options, - video_options, - locked_compressor); - break; case FILE_FFMPEG: FileFFMPEG::get_parameters(parent_window, asset, @@ -232,25 +223,6 @@ int File::get_options(FormatTools *format, audio_options, video_options); break; - case FILE_AVI: - FileMOV::get_parameters(parent_window, - asset, - format_window, - audio_options, - video_options, - locked_compressor); - break; - case FILE_AVI_LAVTOOLS: - case FILE_AVI_ARNE2: - case FILE_AVI_ARNE1: - case FILE_AVI_AVIFILE: - FileAVI::get_parameters(parent_window, - asset, - format_window, - audio_options, - video_options, - locked_compressor); - break; case FILE_JPEG: case FILE_JPEG_LIST: FileJPEG::get_parameters(parent_window, @@ -311,7 +283,7 @@ int File::get_options(FormatTools *format, if(!format_window) { - ErrorBox *errorbox = new ErrorBox(PROGRAM_NAME ": Error", + ErrorBox *errorbox = new ErrorBox(_(PROGRAM_NAME ": Error"), parent_window->get_abs_cursor_x(1), parent_window->get_abs_cursor_y(1)); format_window = errorbox; @@ -513,7 +485,7 @@ int File::open_file(Preferences *preferences, buffer, buffer_size); delete [] buffer; - delete [] string; + free(string); //printf("File::open_file %d\n", __LINE__); // Get the updated asset from the fork @@ -669,13 +641,6 @@ int File::open_file(Preferences *preferences, fclose(stream); return FILE_IS_XML; } // can't load project file - if(FileMOV::check_sig(this->asset)) { -// MOV file -// should be last because quicktime lacks a magic number - fclose(stream); - file = new FileMOV(this->asset, this); - break; - } if( !preferences->ffmpeg_early_probe && FileFFMPEG::check_sig(this->asset) ) { fclose(stream); @@ -752,10 +717,6 @@ int File::open_file(Preferences *preferences, file = new FileDB(this->asset, this); break; - case FILE_MOV: - file = new FileMOV(this->asset, this); - break; - case FILE_MPEG: case FILE_AMPEG: case FILE_VMPEG: @@ -770,17 +731,6 @@ int File::open_file(Preferences *preferences, file = new FileVorbis(this->asset, this); break; - case FILE_AVI: - file = new FileMOV(this->asset, this); - break; - - case FILE_AVI_LAVTOOLS: - case FILE_AVI_ARNE2: - case FILE_AVI_ARNE1: - case FILE_AVI_AVIFILE: - file = new FileAVI(this->asset, this); - break; - case FILE_RAWDV: file = new FileDV(this->asset, this); break; @@ -794,29 +744,32 @@ int File::open_file(Preferences *preferences, // Reopen file with correct parser and get header. if(file->open_file(rd, wr)) { - delete file; - file = 0; + delete file; file = 0; + return FILE_NOT_FOUND; } // Set extra writing parameters to mandatory settings. - if(file && wr) { + if( wr ) { if(this->asset->dither) file->set_dither(); } - + if( rd ) { +// one frame image file, no specific length + if( !this->asset->audio_data && this->asset->video_data && + this->asset->video_length <= 1 ) + this->asset->video_length = -1; + } // Synchronize header parameters - if(file) { - asset->copy_from(this->asset, 1); + asset->copy_from(this->asset, 1); //asset->dump(); - } if(debug) printf("File::open_file %d file=%p\n", __LINE__, file); // sleep(1); - return file ? FILE_OK : FILE_NOT_FOUND; + return FILE_OK; } void File::delete_temp_samples_buffer() @@ -2033,7 +1986,9 @@ int File::read_frame(VFrame *frame, int is_thread) // printf("File::read_frame %d\n", __LINE__); temp_frame->copy_stacks(frame); - file->read_frame(temp_frame); + int result = file->read_frame(temp_frame); + if( result && frame->get_status() > 0 ) + frame->set_status(-1); //for(int i = 0; i < 1000 * 1000; i++) ((float*)temp_frame->get_rows()[0])[i] = 1.0; // printf("File::read_frame %d %d %d %d %d %d\n", // temp_frame->get_color_model(), @@ -2069,7 +2024,9 @@ int File::read_frame(VFrame *frame, int is_thread) { // Can't advance position here because it needs to be added to cache //printf("File::read_frame %d\n", __LINE__); - file->read_frame(frame); + int result = file->read_frame(frame); + if( result && frame->get_status() > 0 ) + frame->set_status(-1); //for(int i = 0; i < 100 * 1000; i++) ((float*)frame->get_rows()[0])[i] = 1.0; } @@ -2171,12 +2128,6 @@ int File::strtoformat(ArrayList *plugindb, 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, _(MOV_NAME))) return FILE_MOV; - if(!strcasecmp(format, _(AVI_NAME))) return FILE_AVI; - if(!strcasecmp(format, _(AVI_LAVTOOLS_NAME))) return FILE_AVI_LAVTOOLS; - if(!strcasecmp(format, _(AVI_ARNE2_NAME))) return FILE_AVI_ARNE2; - if(!strcasecmp(format, _(AVI_ARNE1_NAME))) return FILE_AVI_ARNE1; - if(!strcasecmp(format, _(AVI_AVIFILE_NAME))) return FILE_AVI_AVIFILE; if(!strcasecmp(format, _(OGG_NAME))) return FILE_OGG; if(!strcasecmp(format, _(VORBIS_NAME))) return FILE_VORBIS; if(!strcasecmp(format, _(RAWDV_NAME))) return FILE_RAWDV; @@ -2219,19 +2170,13 @@ const char* File::formattostr(ArrayList *plugindb, 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_MOV: return _(MOV_NAME); - case FILE_AVI_LAVTOOLS: return _(AVI_LAVTOOLS_NAME); - case FILE_AVI: return _(AVI_NAME); - case FILE_AVI_ARNE2: return _(AVI_ARNE2_NAME); - case FILE_AVI_ARNE1: return _(AVI_ARNE1_NAME); - case FILE_AVI_AVIFILE: return _(AVI_AVIFILE_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); } - return "Unknown"; + return _("Unknown"); } int File::strtobits(const char *bits) @@ -2243,7 +2188,6 @@ int File::strtobits(const char *bits) if(!strcasecmp(bits, _(NAME_ULAW))) return BITSULAW; if(!strcasecmp(bits, _(NAME_ADPCM))) return BITS_ADPCM; if(!strcasecmp(bits, _(NAME_FLOAT))) return BITSFLOAT; - if(!strcasecmp(bits, _(NAME_IMA4))) return BITSIMA4; return BITSLINEAR16; } @@ -2259,9 +2203,8 @@ const char* File::bitstostr(int bits) case BITSULAW: return (NAME_ULAW); case BITS_ADPCM: return (NAME_ADPCM); case BITSFLOAT: return (NAME_FLOAT); - case BITSIMA4: return (NAME_IMA4); } - return "Unknown"; + return _("Unknown"); } @@ -2287,7 +2230,6 @@ int File::bytes_per_sample(int bits) case BITSLINEAR24: return 3; case BITSLINEAR32: return 4; case BITSULAW: return 1; - case BITSIMA4: return 1; } return 1; } @@ -2306,8 +2248,6 @@ int File::get_best_colormodel(Asset *asset, int driver) switch(asset->format) { case FILE_RAWDV: return FileDV::get_best_colormodel(asset, driver); - case FILE_MOV: return FileMOV::get_best_colormodel(asset, driver); - case FILE_AVI: return FileMOV::get_best_colormodel(asset, driver); case FILE_MPEG: return FileMPEG::get_best_colormodel(asset, driver); case FILE_JPEG: case FILE_JPEG_LIST: return FileJPEG::get_best_colormodel(asset, driver); @@ -2403,7 +2343,6 @@ int File::supports_video(int format) switch(format) { case FILE_OGG: - case FILE_MOV: case FILE_JPEG: case FILE_JPEG_LIST: case FILE_CR2: @@ -2417,11 +2356,6 @@ int File::supports_video(int format) case FILE_TIFF: case FILE_TIFF_LIST: case FILE_VMPEG: - case FILE_AVI_LAVTOOLS: - case FILE_AVI_ARNE2: - case FILE_AVI: - case FILE_AVI_ARNE1: - case FILE_AVI_AVIFILE: case FILE_FFMPEG: case FILE_RAWDV: return 1; @@ -2437,18 +2371,12 @@ int File::supports_audio(int format) case FILE_FLAC: case FILE_PCM: case FILE_WAV: - case FILE_MOV: case FILE_OGG: case FILE_VORBIS: case FILE_AMPEG: case FILE_AU: case FILE_AIFF: case FILE_SND: - case FILE_AVI: - case FILE_AVI_LAVTOOLS: - case FILE_AVI_ARNE2: - case FILE_AVI_ARNE1: - case FILE_AVI_AVIFILE: case FILE_FFMPEG: return 1; } @@ -2463,7 +2391,6 @@ const char* File::get_tag(int format) case FILE_AIFF: return "aif"; case FILE_AMPEG: return "mp3"; case FILE_AU: return "au"; - case FILE_AVI: return "avi"; case FILE_RAWDV: return "dv"; case FILE_DB: return "db"; case FILE_EXR: return "exr"; @@ -2471,7 +2398,6 @@ const char* File::get_tag(int format) case FILE_FLAC: return "flac"; case FILE_JPEG: return "jpg"; case FILE_JPEG_LIST: return "jpg"; - case FILE_MOV: return "mov/mp4"; case FILE_OGG: return "ogg"; case FILE_PCM: return "pcm"; case FILE_PNG: return "png"; @@ -2483,7 +2409,7 @@ const char* File::get_tag(int format) case FILE_VMPEG: return "m2v"; case FILE_VORBIS: return "ogg"; case FILE_WAV: return "wav"; - case FILE_FFMPEG: return "media"; + case FILE_FFMPEG: return "ffmpg"; } return 0; } @@ -2493,7 +2419,6 @@ const char* File::get_prefix(int format) switch(format) { case FILE_PCM: return "PCM"; case FILE_WAV: return "WAV"; - case FILE_MOV: return "MOV"; case FILE_PNG: return "PNG"; case FILE_JPEG: return "JPEG"; case FILE_TIFF: return "TIFF"; @@ -2502,19 +2427,14 @@ const char* File::get_prefix(int format) case FILE_AU: return "AU"; case FILE_AIFF: return "AIFF"; case FILE_SND: return "SND"; - case FILE_AVI_LAVTOOLS: return "AVI_LAVTOOLS"; case FILE_TGA_LIST: return "TGA_LIST"; case FILE_TGA: return "TGA"; case FILE_MPEG: return "MPEG"; case FILE_AMPEG: return "AMPEG"; case FILE_VMPEG: return "VMPEG"; case FILE_RAWDV: return "RAWDV"; - case FILE_AVI_ARNE2: return "AVI_ARNE2"; - case FILE_AVI_ARNE1: return "AVI_ARNE1"; - case FILE_AVI_AVIFILE: return "AVI_AVIFILE"; case FILE_TIFF_LIST: return "TIFF_LIST"; case FILE_PNG_LIST: return "PNG_LIST"; - case FILE_AVI: return "AVI"; case FILE_AC3: return "AC3"; case FILE_EXR: return "EXR"; case FILE_EXR_LIST: return "EXR_LIST"; @@ -2528,7 +2448,7 @@ const char* File::get_prefix(int format) case FILE_GIF_LIST: return "GIF_LIST"; case FILE_DB: return "DB"; } - return "UNKNOWN"; + return _("UNKNOWN"); } @@ -2555,3 +2475,22 @@ int File::record_fd() } +void get_exe_path(char *result) +{ +// Get executable path + pid_t pid = getpid(); + char proc_path[BCTEXTLEN]; + int len = 0; + result[0] = 0; + sprintf(proc_path, "/proc/%d/exe", pid); + if((len = readlink(proc_path, result, BCTEXTLEN)) >= 0) + { + result[len] = 0; +//printf("Preferences::Preferences %d %s\n", __LINE__, result); + char *ptr = strrchr(result, '/'); + if(ptr) *ptr = 0; + } + +} + +