History

Simplify graph_load_from_desc3() Commited in SoC by Vitor Sessak on 2008-03-26 20:37:43

Originally committed as revision 12737 to svn://svn.ffmpeg.org/ffmpeg/trunk

Vitor Sessak committed 18 years ago

Commit 58f472d1 parent 9f39bb31 file · +54 −41Browse files

Showing the changes to libavfilter/avfiltergraph.c (1 of 1 file). Show all

Unified · Split

libavfilter/avfiltergraph.c+54−41
@@ -160,55 +160,54 @@ int avfilter_graph_config_formats(AVFilterGraph *graph) · 159 unmodified lines
160160 return 0;
161161 }
162162
163−static int graph_load_from_desc2(AVFilterGraph *ctx, AVFilterGraphDesc *desc)
163+static int create_filter(AVFilterGraph *ctx, int index, char *name,
164+ char *args)
164165 {
165− AVFilterGraphDescFilter *curfilt;
166− AVFilterGraphDescLink *curlink;
167− AVFilterContext *filt, *filtb;
166+ AVFilterContext *filt;
168167
169168 AVFilter *filterdef;
170169 char tmp[20];
171170
172− /* create all filters */
173− for(curfilt = desc->filters; curfilt; curfilt = curfilt->next) {
174− snprintf(tmp, 20, "%d", curfilt->index);
175− if(!(filterdef = avfilter_get_by_name(curfilt->filter)) ||
176− !(filt = avfilter_open(filterdef, tmp))) {
177− av_log(&log_ctx, AV_LOG_ERROR,
178− "error creating filter '%s'\n", curfilt->filter);
179− goto fail;
180− }
181− avfilter_graph_add_filter(ctx, filt);
182− if(avfilter_init_filter(filt, curfilt->args, NULL)) {
183− av_log(&log_ctx, AV_LOG_ERROR,
184− "error initializing filter '%s'\n", curfilt->filter);
185− goto fail;
186− }
171+ snprintf(tmp, 20, "%d", index);
172+ if(!(filterdef = avfilter_get_by_name(name)) ||
173+ !(filt = avfilter_open(filterdef, tmp))) {
174+ av_log(&log_ctx, AV_LOG_ERROR,
175+ "error creating filter '%s'\n", name);
176+ return -1;
187177 }
188−
189− /* create all links */
190− for(curlink = desc->links; curlink; curlink = curlink->next) {
191− snprintf(tmp, 20, "%d", curlink->src);
192− if(!(filt = avfilter_graph_get_filter(ctx, tmp))) {
193− av_log(&log_ctx, AV_LOG_ERROR, "link source does not exist in graph\n");
194− goto fail;
195− }
196− snprintf(tmp, 20, "%d", curlink->dst);
197− if(!(filtb = avfilter_graph_get_filter(ctx, tmp))) {
198− av_log(&log_ctx, AV_LOG_ERROR, "link destination does not exist in graph\n");
199− goto fail;
200− }
201− if(avfilter_link(filt, curlink->srcpad, filtb, curlink->dstpad)) {
202− av_log(&log_ctx, AV_LOG_ERROR, "cannot create link between source and destination filters\n");
203− goto fail;
204− }
178+ avfilter_graph_add_filter(ctx, filt);
179+ if(avfilter_init_filter(filt, args, NULL)) {
180+ av_log(&log_ctx, AV_LOG_ERROR,
181+ "error initializing filter '%s'\n", name);
182+ return -1;
205183 }
206184
207185 return 0;
186+}
208187
209−fail:
210− uninit(ctx);
211− return -1;
188+static int link_filter(AVFilterGraph *ctx, int src, int srcpad,
189+ int dst, int dstpad)
190+{
191+ AVFilterContext *filt, *filtb;
192+
193+ char tmp[20];
194+
195+ snprintf(tmp, 20, "%d", src);
196+ if(!(filt = avfilter_graph_get_filter(ctx, tmp))) {
197+ av_log(&log_ctx, AV_LOG_ERROR, "link source does not exist in graph\n");
198+ return -1;
199+ }
200+ snprintf(tmp, 20, "%d", dst);
201+ if(!(filtb = avfilter_graph_get_filter(ctx, tmp))) {
202+ av_log(&log_ctx, AV_LOG_ERROR, "link destination does not exist in graph\n");
203+ return -1;
204+ }
205+ if(avfilter_link(filt, srcpad, filtb, dstpad)) {
206+ av_log(&log_ctx, AV_LOG_ERROR, "cannot create link between source and destination filters\n");
207+ return -1;
208+ }
209+
210+ return 0;
212211 }
213212
214213 int graph_load_from_desc3(AVFilterGraph *graph, AVFilterGraphDesc *desc, AVFilterContext *in, int inpad, AVFilterContext *out, int outpad)
@@ -216,9 +215,23 @@ int graph_load_from_desc3(AVFilterGraph *graph, AVFilterGraphDesc *desc, AVFilte · 1 unmodified line
216215 AVFilterGraphDescExport *curpad;
217216 char tmp[20];
218217 AVFilterContext *filt;
218+ AVFilterGraphDescFilter *curfilt;
219+ AVFilterGraphDescLink *curlink;
219220
220− if (graph_load_from_desc2(graph, desc) < 0)
221− goto fail;
221+
222+ /* create all filters */
223+ for(curfilt = desc->filters; curfilt; curfilt = curfilt->next) {
224+ if (create_filter(graph, curfilt->index, curfilt->filter,
225+ curfilt->args) < 0)
226+ goto fail;
227+ }
228+
229+ /* create all links */
230+ for(curlink = desc->links; curlink; curlink = curlink->next) {
231+ if (link_filter(graph, curlink->src, curlink->srcpad,
232+ curlink->dst, curlink->dstpad) < 0)
233+ goto fail;
234+ }
222235
223236 /* export all input pads */
224237 for(curpad = desc->inputs; curpad; curpad = curpad->next) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t