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 } };
if( !proxy ) {
proxy = new Asset(new_path);
// new compression parameters
- if( idxbl->get_video_frames() < 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;
}
else {
proxy->copy_format(format_asset, 0);
+ proxy->video_length = video_frames;
}
proxy->awindow_folder = AW_PROXY_FOLDER;
proxy->audio_data = 0;
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);
result = dst_file.open_file(preferences, proxy, 0, 1);
if( result ) {
proxy_render->failed = 1;
+ ::remove(proxy->path);
return;
}
mwindow->mainindexes->add_next_asset(0, asset);
mwindow->mainindexes->start_build();
}
+ else
+ ::remove(proxy->path);
}