X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginfclient.C;h=6ff20fd9fbd800e27c3b114931c4176691fa79fe;hb=77815ec03df6a03ed75433e8cf8ae1e83fb76d6e;hp=2a222cbe0b3a380308b00604b885de3866c8cb99;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/pluginfclient.C b/cinelerra-5.1/cinelerra/pluginfclient.C index 2a222cbe..6ff20fd9 100644 --- a/cinelerra-5.1/cinelerra/pluginfclient.C +++ b/cinelerra-5.1/cinelerra/pluginfclient.C @@ -68,7 +68,7 @@ void PluginFClientConfig::copy_from(PluginFClientConfig &that) } } -void PluginFClientConfig::interpolate(PluginFClientConfig &prev, PluginFClientConfig &next, +void PluginFClientConfig::interpolate(PluginFClientConfig &prev, PluginFClientConfig &next, int64_t prev_frame, int64_t next_frame, int64_t current_frame) { copy_from(prev); @@ -76,6 +76,7 @@ void PluginFClientConfig::interpolate(PluginFClientConfig &prev, PluginFClientCo void PluginFClientConfig::initialize(const char *name) { + delete ffilt; ffilt = PluginFFilter::new_ffilter(name); const AVOption *opt = 0; void *obj = ffilt->filter_config(); @@ -154,7 +155,7 @@ PluginFClientReset:: int PluginFClientReset::handle_event() { - av_opt_set_defaults(fwin->ffmpeg->config.filter_config()); + fwin->ffmpeg->config.initialize(fwin->ffmpeg->name); if( fwin->ffmpeg->config.update() > 0 ) fwin->draw(); fwin->ffmpeg->plugin->send_configure_change(); @@ -271,7 +272,7 @@ void PluginFClientWindow::update(PluginFClient_Opt *opt) *(sp=str) = 0; if( opt ) opt->ranges(sp); range->update(str); - while( units->total_items() ) units->remove_item(0); + while( units->total_items() ) units->del_item(0); ArrayList opts; int n = !opt ? 0 : opt->units(opts); for( int i=0; i &opts) if( strlen(opts[i]->name) < strlen(opt->name) ) opts[i] = opt; break; } - if( i < 0 ) + if( i < 0 ) opts.append(opt); } return opts.size(); @@ -521,6 +522,7 @@ PluginFClient::PluginFClient(PluginClient *plugin, const char *name) PluginFClient::~PluginFClient() { + delete ffilt; } bool PluginFClient::is_audio(AVFilter *fp) @@ -908,7 +910,7 @@ int PluginFVClient::process_buffer(VFrame **frames, int64_t position, double fra color_model_to_pix_fmt(colormodel); if( pix_fmt <= AV_PIX_FMT_NONE || pix_fmt >= AV_PIX_FMT_NB ) pix_fmt = AV_PIX_FMT_RGBA; - + AVFrame *frame = 0; if( ret >= 0 && !(frame = av_frame_alloc()) ) { fprintf(stderr, "PluginFVClient::process_buffer: av_frame_alloc failed\n"); @@ -927,7 +929,7 @@ int PluginFVClient::process_buffer(VFrame **frames, int64_t position, double fra frame->pts = local_to_edl(position); ret = av_frame_get_buffer(frame, 32); if( ret < 0 ) break; - ret = transfer_pixfmt(vframe, frame, pix_fmt, width, height); + ret = transfer_pixfmt(vframe, frame); if( ret < 0 ) break; ret = av_buffersrc_add_frame_flags(fsrc, frame, 0); } @@ -936,7 +938,7 @@ int PluginFVClient::process_buffer(VFrame **frames, int64_t position, double fra if( ret >= 0 ) { pix_fmt = (AVPixelFormat) frame->format; - ret = transfer_cmodel(vframe, frame, pix_fmt, width, height); + ret = transfer_cmodel(vframe, frame); } if( ret < 0 ) { ff_err(ret, "PluginFVClient::process_buffer() %s\n", plugin_title());