#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 <string.h>
{
this->video_driver = driver;
+ locked_compressor = 0;
switch(driver)
{
case CAPTURE_DVB:
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;
void FormatTools::update_format()
{
if( do_audio && prompt_audio && audio_switch ) {
- asset->audio_data = File::supports_audio(asset->format);
audio_switch->update(asset->audio_data);
if( !asset->audio_data )
audio_switch->disable();
audio_switch->enable();
}
if( do_video && prompt_video && video_switch ) {
- asset->video_data = File::supports_video(asset->format);
video_switch->update(asset->video_data);
if( !asset->video_data )
video_switch->disable();
int new_format = File::strtoformat(format->plugindb, get_selection(0, 0)->get_text());
// if(new_format != format->asset->format)
{
- format->asset->format = new_format;
+ Asset *asset = format->asset;
+ asset->format = new_format;
+ asset->audio_data = File::supports_audio(asset->format);
+ asset->video_data = File::supports_video(asset->format);
format->format_text->update(selection->get_text());
format->update_extension();
format->close_format_windows();
{
}
+int FormatFFMPEG::load_defaults(const char *path, const char *type,
+ char *codec, char *codec_options, int len)
+{
+ char default_file[BCTEXTLEN];
+ FFMPEG::set_option_path(default_file, "%s/%s.dfl", path, type);
+ FILE *fp = fopen(default_file,"r");
+ if( !fp ) return 1;
+ 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);
+}
+
int FormatFFMPEG::handle_event()
{
BC_ListBoxItem *selection = get_selection(0, 0);
if( selection ) {
char *text = get_selection(0, 0)->get_text();
format->ffmpeg_type->update(text);
- strcpy(format->asset->fformat, text);
- strcpy(format->asset->ff_audio_options, "");
- strcpy(format->asset->ff_video_options, "");
+ Asset *asset = format->asset;
+ strcpy(asset->fformat, text);
+ strcpy(asset->ff_audio_options, "");
+ strcpy(asset->ff_video_options, "");
+ asset->audio_data = !load_defaults("audio", text, asset->acodec,
+ asset->ff_audio_options, sizeof(asset->ff_audio_options));
+ asset->video_data = !load_defaults("video", text, asset->vcodec,
+ asset->ff_video_options, sizeof(asset->ff_video_options));
format->update_extension();
format->close_format_windows();
format->update_format();