}
}
-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);
void PluginFClientConfig::initialize(const char *name)
{
+ delete ffilt;
ffilt = PluginFFilter::new_ffilter(name);
const AVOption *opt = 0;
void *obj = ffilt->filter_config();
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();
*(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<const AVOption *> opts;
int n = !opt ? 0 : opt->units(opts);
for( int i=0; i<n; ++i )
if( strlen(opts[i]->name) < strlen(opt->name) ) opts[i] = opt;
break;
}
- if( i < 0 )
+ if( i < 0 )
opts.append(opt);
}
return opts.size();
PluginFClient::~PluginFClient()
{
+ delete ffilt;
}
bool PluginFClient::is_audio(AVFilter *fp)
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");
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);
}
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());