X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fformattools.C;h=f277fde29e319d0c7ab32dfb9c93227e61a08836;hb=6c0c8bd0e577001d1cc18c6c27d58e62f58a6bff;hp=a8f3f6bf85da74f0e2b7d4c76568d728d980e37d;hpb=328cb789bec2048b23fc731cf4eae860dbacd2b6;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/formattools.C b/cinelerra-5.0/cinelerra/formattools.C index a8f3f6bf..f277fde2 100644 --- a/cinelerra-5.0/cinelerra/formattools.C +++ b/cinelerra-5.0/cinelerra/formattools.C @@ -27,10 +27,11 @@ #include "filesystem.h" #include "formattools.h" #include "language.h" +#include "libdv.h" +#include "libmjpeg.h" #include "maxchannels.h" #include "mwindow.h" #include "preferences.h" -#include "quicktime.h" #include "theme.h" #include "videodevice.inc" #include @@ -292,6 +293,7 @@ void FormatTools::update_driver(int driver) { this->video_driver = driver; + locked_compressor = 0; switch(driver) { case CAPTURE_DVB: @@ -304,61 +306,50 @@ void FormatTools::update_driver(int driver) format_text->update(_("MPEG stream")); asset->format = FILE_MPEG; } - locked_compressor = 0; audio_switch->update(1); video_switch->update(1); break; case CAPTURE_IEC61883: case CAPTURE_FIREWIRE: + case CAPTURE_LML: case CAPTURE_BUZ: case VIDEO4LINUX2JPEG: case CAPTURE_JPEG_WEBCAM: - if(asset->format != FILE_AVI && - asset->format != FILE_MOV) - { - format_text->update(MOV_NAME); - asset->format = FILE_MOV; - } - else - format_text->update(File::formattostr(asset->format)); - - switch(driver) - { - case CAPTURE_IEC61883: - case CAPTURE_FIREWIRE: - locked_compressor = (char*)QUICKTIME_DVSD; - strcpy(asset->vcodec, QUICKTIME_DVSD); - break; - - case CAPTURE_BUZ: - case VIDEO4LINUX2JPEG: - locked_compressor = (char*)QUICKTIME_MJPA; - strcpy(asset->vcodec, QUICKTIME_MJPA); - break; + asset->format = FILE_FFMPEG; + format_text->update(File::formattostr(asset->format)); - case CAPTURE_JPEG_WEBCAM: - locked_compressor = (char*)QUICKTIME_JPEG; - strcpy(asset->vcodec, QUICKTIME_JPEG); - break; + switch(driver) { + case CAPTURE_IEC61883: + case CAPTURE_FIREWIRE: + locked_compressor = (char*)CODEC_TAG_DVSD; + break; + + case CAPTURE_BUZ: + case CAPTURE_LML: + case VIDEO4LINUX2JPEG: + locked_compressor = (char*)CODEC_TAG_MJPEG; + break; + + case CAPTURE_JPEG_WEBCAM: + locked_compressor = (char*)CODEC_TAG_JPEG; + break; } + if( locked_compressor ) + strcpy(asset->vcodec, locked_compressor); audio_switch->update(asset->audio_data); video_switch->update(asset->video_data); break; - - - - default: format_text->update(File::formattostr(asset->format)); - locked_compressor = 0; audio_switch->update(asset->audio_data); video_switch->update(asset->video_data); break; } close_format_windows(); + update_format(); } void FormatTools::update_format() @@ -402,7 +393,7 @@ void FormatTools::update_extension() const char *extension = File::get_tag(asset->format); // split multiple extensions ArrayList extensions; - int len = strlen(extension); + int len = !extension ? -1 : strlen(extension); const char *extension_ptr = extension; for(int i = 0; i <= len; i++) { @@ -851,18 +842,21 @@ FormatFFMPEG::~FormatFFMPEG() } int FormatFFMPEG::load_defaults(const char *path, const char *type, - char *codec, char *codec_options, int len) + char *codec, char *codec_options, int len) { char default_file[BCTEXTLEN]; - FFMPEG::set_option_path(default_file, "%s/%s", path, type); + FFMPEG::set_option_path(default_file, "%s/%s.dfl", path, type); FILE *fp = fopen(default_file,"r"); if( !fp ) return 1; - char default_codec[BCSTRLEN]; - fgets(default_codec, sizeof(default_codec), fp); - fclose(fp); - char *cp=codec, *dp=default_codec; - while( *dp && *dp!='\n' ) *cp++ = *dp++; + fgets(codec, BCSTRLEN, fp); + char *cp = codec; + while( *cp && *cp!='\n' ) ++cp; *cp = 0; + while( len > 0 && fgets(codec_options, len, fp) ) { + int n = strlen(codec_options); + codec_options += n; len -= n; + } + fclose(fp); FFMPEG::set_option_path(default_file, "%s/%s", path, codec); return FFMPEG::load_options(default_file, codec_options, len); }