X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginfclient.C;h=3edc9f6777fa520df7e3455cdd6b0d0577b858ef;hb=38781123230e8017af7b11621a78f63fa33a764e;hp=2a35e96c7539c2039e2914471d1926502f9e484e;hpb=2451d3174f3b64d3ce4e311b125813cf2881eca4;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/pluginfclient.C b/cinelerra-5.1/cinelerra/pluginfclient.C index 2a35e96c..3edc9f67 100644 --- a/cinelerra-5.1/cinelerra/pluginfclient.C +++ b/cinelerra-5.1/cinelerra/pluginfclient.C @@ -939,7 +939,7 @@ int PluginFVClient::process_buffer(VFrame **frames, int64_t position, double fra ret = av_buffersink_get_frame(fsink, frame); if( ret >= 0 || ret != AVERROR(EAGAIN) ) break; if( !fsrc ) { ret = AVERROR(EIO); break; } - read_frame(vframe, 0, filter_position++, frame_rate, get_use_opengl()); + read_frame(vframe, 0, filter_position++, frame_rate, 0); frame->format = pix_fmt; frame->width = width; frame->height = height; @@ -1098,15 +1098,24 @@ int PluginFFilter::init(const char *name, PluginFClientConfig *conf) graph->nb_threads = 0; } fctx = avfilter_graph_alloc_filter(graph, filter, inst_name); - fctx->thread_type = graph->thread_type; // bug in avfilter if( !fctx ) return AVERROR(ENOMEM); + fctx->thread_type = graph->thread_type; // bug in avfilter if( conf ) { AVDictionary *opts = 0; for( int i=0; isize(); ++i ) { PluginFClient_Opt *op = conf->get(i); const char *name = op->opt->name; char val[BCTEXTLEN], *vp = op->get(val, sizeof(val)); - if( vp ) av_dict_set(&opts, name, vp, 0); + if( !vp ) continue; + uint8_t *bp = 0; +// unspecified opts cause a special behavior in some filters (lut3d) +// so... if opt value is the default, skip it or no special behavior + if( av_opt_get(filter_config(), name, 0, &bp) >= 0 ) { + int result = strcmp((const char *)bp, vp); + av_freep(&bp); + if( !result ) continue; + } + av_dict_set(&opts, name, vp, 0); } ret = avfilter_init_dict(fctx, &opts); av_dict_free(&opts);