X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Ffileffmpeg.C;h=eed14f2005f6c8044a19c9bf3a0fbf577ffba192;hb=85a4302e7031b0285aeb9559aa6dbc531db6e443;hp=21e3067e2f4bbbd4203962979ceac13b442f40bc;hpb=676954c909c19080350cb159fb6be7ec65fd3ef6;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/fileffmpeg.C b/cinelerra-5.1/cinelerra/fileffmpeg.C index 21e3067e..eed14f20 100644 --- a/cinelerra-5.1/cinelerra/fileffmpeg.C +++ b/cinelerra-5.1/cinelerra/fileffmpeg.C @@ -326,7 +326,7 @@ int FileFFMPEG::open_file(int rd, int wr) int result = 0; if( ff ) return 1; ff = new FFMPEG(this); - + if( rd ) { result = ff->init_decoder(asset->path); if( !result ) result = ff->open_decoder(); @@ -342,6 +342,11 @@ int FileFFMPEG::open_file(int rd, int wr) int video_layers = ff->ff_total_video_layers(); if( video_layers > 0 ) { asset->video_data = 1; + asset->aspect_ratio = ff->ff_aspect_ratio(0); + printf("ff_aspect_ratio, %f \n", asset->aspect_ratio); + if (!asset->interlace_mode) asset->interlace_mode = ff->ff_interlace(0); + ff->video_probe(1); + if (!asset->interlace_mode && (ff->interlace_from_codec) ) asset->interlace_mode = ff->video_probe(1); if( !asset->layers ) asset->layers = video_layers; asset->actual_width = ff->ff_video_width(0); asset->actual_height = ff->ff_video_height(0); @@ -864,10 +869,10 @@ void FFMPEGConfigFormat::save_options() } void FFMPEGConfigFormat::save_changes() { + read_options(); char *options = asset->ff_format_options; int options_len = sizeof(asset->ff_format_options)-1; ff_options_dialog->store_options(options, options_len); - format_options->update(options); } void FFMPEGConfigFormat::load_options() @@ -1938,6 +1943,15 @@ int FFOptionsFormatView::handle_event() { Asset *asset = fmt_config->asset; char *format_name = asset->fformat; + char *replace_name0 = "mov"; + char *replace_name1 = "mpegts"; + char *replace_name2 = "matroska"; + if (!strcmp(format_name, "qt")) + format_name = replace_name0; // fixup + if (!strcmp(format_name, "m2ts")) + format_name = replace_name1; // fixup + if (!strcmp(format_name, "mkv")) + format_name = replace_name2; // fixup avformat_free_context(fmt_ctx); fmt_ctx = 0; int ret = avformat_alloc_output_context2(&fmt_ctx, 0, format_name, 0); if( ret || !fmt_ctx ) { @@ -1974,11 +1988,8 @@ BC_Window *FFOptionsFormatViewDialog::new_gui() void FFOptionsFormatViewDialog::handle_done_event(int result) { - if( !result ) { - cfg_window->lock_window("FFOptionsFormatViewDialog::handle_done_event"); + if( !result ) cfg_window->save_changes(); - cfg_window->unlock_window(); - } cfg_window = 0; }