X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fformattools.C;h=e8cbef4e8c38dda4260a54980cc799cb861bbe6b;hb=9d5997d77ab7736be577456d8fd3dda0ba522d39;hp=37810a8ee748275695d04799c7ba152429f58337;hpb=50a589b1decdd353a984d8a710e064ebaf8b4f7b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/formattools.C b/cinelerra-5.1/cinelerra/formattools.C index 37810a8e..e8cbef4e 100644 --- a/cinelerra-5.1/cinelerra/formattools.C +++ b/cinelerra-5.1/cinelerra/formattools.C @@ -62,13 +62,10 @@ FormatTools::FormatTools(MWindow *mwindow, format_button = 0; format_text = 0; audio_title = 0; - audio_switch = 0; video_title = 0; - video_switch = 0; channels_title = 0; channels_button = 0; multiple_files = 0; - file_entries = 0; w = window->get_w(); recording = 0; @@ -104,12 +101,6 @@ SET_TRACE if(vparams_thread) delete vparams_thread; SET_TRACE if(channels_tumbler) delete channels_tumbler; -SET_TRACE - if(file_entries) - { - file_entries->remove_all_objects(); - delete file_entries; - } } void FormatTools::create_objects(int &init_x, @@ -141,19 +132,6 @@ void FormatTools::create_objects(int &init_x, this->prompt_video_compression = prompt_video_compression; this->strategy = strategy; - - file_entries = new ArrayList; - FileSystem fs; - char string[BCTEXTLEN]; -// Load current directory - fs.update(getcwd(string, BCTEXTLEN)); - for(int i = 0; i < fs.total_files(); i++) - { - file_entries->append( - new BC_ListBoxItem( - fs.get_entry(i)->get_name())); - } - //printf("FormatTools::create_objects 1\n"); // Modify strategy depending on render farm @@ -179,21 +157,20 @@ void FormatTools::create_objects(int &init_x, if(!recording) { - window->add_subwindow(path_textbox = new FormatPathText(x, y, this)); - x += path_textbox->get_w() + 5; + int px = x; + window->add_subwindow(path_textbox = new FormatPathText(px, y, this)); + px += path_textbox->get_w() + 5; path_recent = new BC_RecentList("PATH", mwindow->defaults, - path_textbox, 10, x, y, 300, 100); + path_textbox, 10, px, y, 300, 100); window->add_subwindow(path_recent); path_recent->load_items(File::formattostr(asset->format)); - x += path_recent->get_w() + 8; + px += path_recent->get_w(); window->add_subwindow(path_button = new BrowseButton( - mwindow, window, path_textbox, x, y, asset->path, + mwindow->theme, window, path_textbox, px, y, asset->path, _("Output to file"), _("Select a file to write to:"), 0)); // Set w for user. w = MAX(w, 305); -// w = x + path_button->get_w() + 5; - x -= path_textbox->get_w() + 5; y += path_textbox->get_h() + 10; } else @@ -205,14 +182,14 @@ void FormatTools::create_objects(int &init_x, x = init_x; window->add_subwindow(format_title = new BC_Title(x, y, _("File Format:"))); x += 90; - window->add_subwindow(format_text = new BC_TextBox(x, y, 180, 1, + window->add_subwindow(format_text = new BC_TextBox(x, y, 160, 1, File::formattostr(asset->format))); x += format_text->get_w(); //printf("FormatTools::create_objects %d %p\n", __LINE__, window); window->add_subwindow(format_button = new FormatFormat(x, y, this)); format_button->create_objects(); x += format_button->get_w() + 5; - window->add_subwindow(ffmpeg_type = new FFMpegType(x, y, 50, 1, asset->fformat)); + window->add_subwindow(ffmpeg_type = new FFMpegType(x, y, 64, 1, asset->fformat)); FFMPEG::set_asset_format(asset, asset->fformat); x += ffmpeg_type->get_w(); window->add_subwindow(format_ffmpeg = new FormatFFMPEG(x, y, this)); @@ -320,8 +297,6 @@ void FormatTools::update_driver(int driver) case CAPTURE_IEC61883: case CAPTURE_FIREWIRE: - case CAPTURE_LML: - case CAPTURE_BUZ: case VIDEO4LINUX2JPEG: case CAPTURE_JPEG_WEBCAM: asset->format = FILE_FFMPEG; @@ -333,8 +308,6 @@ void FormatTools::update_driver(int driver) locked_compressor = (char*)CODEC_TAG_DVSD; break; - case CAPTURE_BUZ: - case CAPTURE_LML: case VIDEO4LINUX2JPEG: locked_compressor = (char*)CODEC_TAG_MJPEG; break; @@ -364,17 +337,17 @@ void FormatTools::update_format() { if( do_audio && prompt_audio && audio_switch ) { audio_switch->update(asset->audio_data); - if( !asset->audio_data ) - audio_switch->disable(); - else + if( File::renders_audio(asset) ) audio_switch->enable(); + else + audio_switch->disable(); } if( do_video && prompt_video && video_switch ) { video_switch->update(asset->video_data); - if( !asset->video_data ) - video_switch->disable(); - else + if( File::renders_video(asset) ) video_switch->enable(); + else + video_switch->disable(); } if( asset->format == FILE_FFMPEG ) { ffmpeg_type->show(); @@ -478,11 +451,8 @@ void FormatTools::update(Asset *asset, int *strategy) if(path_textbox) path_textbox->update(asset->path); - format_text->update(File::formattostr(plugindb, asset->format)); - if(do_audio && prompt_audio && audio_switch) - audio_switch->update(asset->audio_data); - if(do_video && prompt_video && video_switch) - video_switch->update(asset->video_data); + format_text->update(File::formattostr(asset->format)); + update_format(); if(strategy) { multiple_files->update(strategy); @@ -493,21 +463,22 @@ void FormatTools::update(Asset *asset, int *strategy) void FormatTools::close_format_windows() { // This is done in ~file - if(aparams_thread && aparams_thread->running()) - { - aparams_thread->file->close_window(); + if( aparams_thread ) { + if( aparams_thread->running() ) + aparams_thread->file->close_window(); aparams_thread->join(); } - if(vparams_thread && vparams_thread->running()) - { - vparams_thread->file->close_window(); + if( vparams_thread ) { + if( vparams_thread->running() ) + vparams_thread->file->close_window(); vparams_thread->join(); } } int FormatTools::get_w() { - return w; + return asset->format != FILE_FFMPEG ? w : + format_ffmpeg->get_x() + format_ffmpeg->get_w(); } void FormatTools::set_w(int w) @@ -522,11 +493,13 @@ void FormatTools::reposition_window(int &init_x, int &init_y) if(path_textbox) { - path_textbox->reposition_window(x, y); - x += path_textbox->get_w() + 5; - path_button->reposition_window(x, y); - x -= path_textbox->get_w() + 5; - y += 35; + int px = x; + path_textbox->reposition_window(px, y); + px += path_textbox->get_w() + 5; + path_recent->reposition_window(px, y); + px += path_recent->get_w() + 8; + path_button->reposition_window(px, y); + y += path_textbox->get_h() + 10; } format_title->reposition_window(x, y); @@ -547,7 +520,7 @@ void FormatTools::reposition_window(int &init_x, int &init_y) if(prompt_audio) audio_switch->reposition_window(x, y); x = init_x; - y += aparams_button->get_h() + 20; + y += aparams_button->get_h() + 10; if(prompt_audio_channels) { channels_title->reposition_window(x, y); @@ -688,9 +661,8 @@ FormatAThread::FormatAThread(FormatTools *format) FormatAThread::~FormatAThread() { + delete file; file = 0; join(); - delete file; - file = 0; } void FormatAThread::start() @@ -719,9 +691,8 @@ FormatVThread::FormatVThread(FormatTools *format) FormatVThread::~FormatVThread() { + delete file; file = 0; join(); - delete file; - file = 0; } void FormatVThread::start() @@ -753,11 +724,7 @@ FormatPathText::~FormatPathText() } int FormatPathText::handle_event() { -// Suggestions - calculate_suggestions(format->file_entries); - - - + calculate_suggestions(); strcpy(format->asset->path, get_text()); format->handle_event(); return 1; @@ -816,15 +783,18 @@ int FormatFormat::handle_event() { BC_ListBoxItem *selection = get_selection(0, 0); if( selection ) { - int new_format = File::strtoformat(format->plugindb, get_selection(0, 0)->get_text()); + int new_format = File::strtoformat(get_selection(0, 0)->get_text()); // if(new_format != format->asset->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); + asset->audio_data = File::renders_audio(asset); + asset->video_data = File::renders_video(asset); + asset->ff_audio_options[0] = 0; + asset->ff_video_options[0] = 0; format->format_text->update(selection->get_text()); - format->update_extension(); + if( !format->use_brender ) + format->update_extension(); format->close_format_windows(); if (format->path_recent) format->path_recent-> load_items(File::formattostr(format->asset->format)); @@ -851,6 +821,8 @@ int FormatFFMPEG::handle_event() if( selection ) { char *text = get_selection(0, 0)->get_text(); format->ffmpeg_type->update(text); + format->asset->ff_audio_options[0] = 0; + format->asset->ff_video_options[0] = 0; FFMPEG::set_asset_format(format->asset, text); format->update_extension(); format->close_format_windows();