|
|
@ -1727,7 +1727,8 @@ static int get_video_frame(VideoState *is, AVFrame *frame, AVPacket *pkt, int *s |
|
|
|
static int configure_filtergraph(AVFilterGraph *graph, const char *filtergraph, |
|
|
|
static int configure_filtergraph(AVFilterGraph *graph, const char *filtergraph, |
|
|
|
AVFilterContext *source_ctx, AVFilterContext *sink_ctx) |
|
|
|
AVFilterContext *source_ctx, AVFilterContext *sink_ctx) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int ret; |
|
|
|
int ret, i; |
|
|
|
|
|
|
|
int nb_filters = graph->nb_filters; |
|
|
|
AVFilterInOut *outputs = NULL, *inputs = NULL; |
|
|
|
AVFilterInOut *outputs = NULL, *inputs = NULL; |
|
|
|
|
|
|
|
|
|
|
|
if (filtergraph) { |
|
|
|
if (filtergraph) { |
|
|
@ -1755,6 +1756,10 @@ static int configure_filtergraph(AVFilterGraph *graph, const char *filtergraph, |
|
|
|
goto fail; |
|
|
|
goto fail; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Reorder the filters to ensure that inputs of the custom filters are merged first */ |
|
|
|
|
|
|
|
for (i = 0; i < graph->nb_filters - nb_filters; i++) |
|
|
|
|
|
|
|
FFSWAP(AVFilterContext*, graph->filters[i], graph->filters[i + nb_filters]); |
|
|
|
|
|
|
|
|
|
|
|
ret = avfilter_graph_config(graph, NULL); |
|
|
|
ret = avfilter_graph_config(graph, NULL); |
|
|
|
fail: |
|
|
|
fail: |
|
|
|
avfilter_inout_free(&outputs); |
|
|
|
avfilter_inout_free(&outputs); |
|
|
|