diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 055db01e02..43d7c9f4ab 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -185,7 +185,7 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad, link->srcpad = &src->output_pads[srcpad]; link->dstpad = &dst->input_pads[dstpad]; link->type = src->output_pads[srcpad].type; - link->graph = src->graph; + li->l.graph = src->graph; av_assert0(AV_PIX_FMT_NONE == -1 && AV_SAMPLE_FMT_NONE == -1); link->format = -1; link->colorspace = AVCOL_SPC_UNSPECIFIED; @@ -231,8 +231,8 @@ static void update_link_current_pts(FilterLinkInternal *li, int64_t pts) li->l.current_pts = pts; li->l.current_pts_us = av_rescale_q(pts, link->time_base, AV_TIME_BASE_Q); /* TODO use duration */ - if (link->graph && li->age_index >= 0) - ff_avfilter_graph_update_heap(link->graph, li); + if (li->l.graph && li->age_index >= 0) + ff_avfilter_graph_update_heap(li->l.graph, li); } void ff_filter_set_ready(AVFilterContext *filter, unsigned priority) diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index a91b543f5e..549fe6ce3a 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -594,11 +594,6 @@ struct AVFilterLink { * Lists of supported formats / etc. supported by the output filter. */ AVFilterFormatsConfig outcfg; - - /** - * Graph the filter belongs to. - */ - struct AVFilterGraph *graph; }; /** diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index 2d46dd7637..6bfcc42430 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -106,7 +106,7 @@ void ff_filter_graph_remove_filter(AVFilterGraph *graph, AVFilterContext *filter filter->graph = NULL; for (j = 0; jnb_outputs; j++) if (filter->outputs[j]) - filter->outputs[j]->graph = NULL; + ff_filter_link(filter->outputs[j])->graph = NULL; return; } diff --git a/libavfilter/f_sendcmd.c b/libavfilter/f_sendcmd.c index 86f9d522e9..8ba0878e81 100644 --- a/libavfilter/f_sendcmd.c +++ b/libavfilter/f_sendcmd.c @@ -567,7 +567,7 @@ FF_ENABLE_DEPRECATION_WARNINGS av_log(ctx, AV_LOG_VERBOSE, "Processing command #%d target:%s command:%s arg:%s\n", cmd->index, cmd->target, cmd->command, cmd_arg); - ret = avfilter_graph_send_command(inlink->graph, + ret = avfilter_graph_send_command(inl->graph, cmd->target, cmd->command, cmd_arg, buf, sizeof(buf), AVFILTER_CMD_FLAG_ONE); diff --git a/libavfilter/filters.h b/libavfilter/filters.h index 36164c171e..ab16047e12 100644 --- a/libavfilter/filters.h +++ b/libavfilter/filters.h @@ -42,6 +42,11 @@ typedef struct FilterLink { AVFilterLink pub; + /** + * Graph the filter belongs to. + */ + struct AVFilterGraph *graph; + /** * Current timestamp of the link, as defined by the most recent * frame(s), in link time_base units.