repair default keyframe load, tweak init default histogram threshold
[goodguy/history.git] / cinelerra-5.1 / cinelerra / proxy.C
index fc1380edfc9b32391fcef17707543b427322daea..4394120d916f1f77006a6dfac7ff656dfc154674 100644 (file)
@@ -161,12 +161,18 @@ void ProxyDialog::calculate_sizes()
 void ProxyDialog::handle_close_event(int result)
 {
        if( result ) return;
-       mwindow->edl->session->proxy_use_scaler = use_scaler;
+       if( !File::renders_video(asset) ) {
+               eprintf("Specified format does not render video");
+               return;
+       }
        mwindow->edl->session->proxy_auto_scale = auto_scale;
        mwindow->edl->session->proxy_beep = beep;
        mwindow->edl->session->proxy_disabled_scale = 1;
+       mwindow->gui->lock_window("ProxyDialog::handle_close_event");
+       mwindow->gui->update_proxy_toggle();
+       mwindow->gui->unlock_window();
        asset->save_defaults(mwindow->defaults, "PROXY_", 1, 1, 0, 0, 0); 
-       result = mwindow->to_proxy(asset, new_scale);
+       result = mwindow->to_proxy(asset, new_scale, use_scaler);
        if( result >= 0 && beep && new_scale != 1 ) {
                static struct { double freq, secs, gain; }
                    tone[2] = { { 2000., 1.5, 0.5 }, { 4000., 0.25, 0.5 } };
@@ -260,17 +266,17 @@ Asset *ProxyRender::add_original(Indexable *idxbl, int new_scale)
        if( !proxy ) {
                proxy = new Asset(new_path);
 // new compression parameters
-               int64_t video_length = idxbl->get_video_frames();
-               if( video_length < 0 ) {
+               int64_t video_frames = idxbl->get_video_frames();
+               if( video_frames < 0 ) {
                        proxy->format = FILE_PNG;
                        proxy->png_use_alpha = 1;
-                       proxy->video_length = 1;
+                       proxy->video_length = -1;
                }
                else {
                        proxy->copy_format(format_asset, 0);
-                       proxy->video_length = video_length;
+                       proxy->video_length = video_frames;
                }
-               proxy->awindow_folder = AW_PROXY_FOLDER;
+               proxy->folder_no = AW_PROXY_FOLDER;
                proxy->audio_data = 0;
                proxy->video_data = 1;
                proxy->layers = 1;
@@ -281,9 +287,7 @@ Asset *ProxyRender::add_original(Indexable *idxbl, int new_scale)
                if( proxy->height & 1 ) ++proxy->height;
                proxy->actual_height = proxy->height;
                proxy->frame_rate = idxbl->get_frame_rate();
-               edl_assets->append(proxy);
        }
-       proxy->add_user();
        orig_proxies.append(proxy);
        idxbl->add_user();
        orig_idxbls.append(idxbl);
@@ -472,6 +476,7 @@ void ProxyUseScaler::update()
 
 int ProxyUseScaler::handle_event()
 {
+       pwindow->dialog->new_scale = 1;
        pwindow->dialog->use_scaler = get_value();
        pwindow->scale_factor->update_sizes();
        pwindow->update();
@@ -659,6 +664,7 @@ void ProxyClient::process_package(LoadPackage *ptr)
        result = dst_file.open_file(preferences, proxy, 0, 1);
        if( result ) {
                proxy_render->failed = 1;
+               ::remove(proxy->path);
                return;
        }
 
@@ -708,6 +714,8 @@ void ProxyClient::process_package(LoadPackage *ptr)
                mwindow->mainindexes->add_next_asset(0, asset);
                mwindow->mainindexes->start_build();
        }
+       else
+               ::remove(proxy->path);
 }