Browse Source

Pass the inputs and outputs of avfilter_parse_graph() with a AVFilterInOut linked list

Commited in SoC by Vitor Sessak on 2008-04-23 20:40:49

Originally committed as revision 13338 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Vitor Sessak 17 years ago
parent
commit
6a0c770b21
2 changed files with 21 additions and 37 deletions
  1. +3
    -34
      libavfilter/graphparser.c
  2. +18
    -3
      libavfilter/graphparser.h

+ 3
- 34
libavfilter/graphparser.c View File

@@ -23,6 +23,7 @@
#include <ctype.h>
#include <string.h>

#include "graphparser.h"
#include "avfilter.h"
#include "avfiltergraph.h"

@@ -149,24 +150,6 @@ static void parse_link_name(const char **buf, char **name, AVClass *log_ctx)
}
}


enum LinkType {
LinkTypeIn,
LinkTypeOut,
};

/**
* A linked-list of the inputs/outputs of the filter chain.
*/
typedef struct AVFilterInOut {
enum LinkType type;
const char *name;
AVFilterContext *filter;
int pad_idx;

struct AVFilterInOut *next;
} AVFilterInOut;

static void free_inout(AVFilterInOut *head)
{
while(head) {
@@ -363,28 +346,14 @@ static int parse_outputs(const char **buf, AVFilterInOut **currInputs,
* Parse a string describing a filter graph.
*/
int avfilter_parse_graph(AVFilterGraph *graph, const char *filters,
AVFilterContext *in, int inpad,
AVFilterContext *out, int outpad,
AVClass *log_ctx)
AVFilterInOut *inouts, AVClass *log_ctx)
{
int index = 0;
char chr = 0;
int pad = 0;

AVFilterInOut *currInputs = NULL;
AVFilterInOut *openLinks = av_malloc(sizeof(AVFilterInOut));

openLinks->name = "in";
openLinks->filter = in;
openLinks->type = LinkTypeOut;
openLinks->pad_idx = inpad;
openLinks->next = av_malloc(sizeof(AVFilterInOut));

openLinks->next->name = "out";
openLinks->next->filter = out;
openLinks->next->type = LinkTypeIn;
openLinks->next->pad_idx = outpad;
openLinks->next->next = NULL;
AVFilterInOut *openLinks = inouts;

do {
AVFilterContext *filter;


+ 18
- 3
libavfilter/graphparser.h View File

@@ -25,6 +25,23 @@
#include "avfilter.h"
#include "avfiltergraph.h"

enum LinkType {
LinkTypeIn,
LinkTypeOut,
};

/**
* A linked-list of the inputs/outputs of the filter chain.
*/
typedef struct AVFilterInOut {
enum LinkType type;
const char *name;
AVFilterContext *filter;
int pad_idx;

struct AVFilterInOut *next;
} AVFilterInOut;

/**
* Add to a graph a graph described by a string.
* @param graph the filter graph where to link the parsed graph context
@@ -36,8 +53,6 @@
* @return zero on success, -1 on error
*/
int avfilter_parse_graph(AVFilterGraph *graph, const char *filters,
AVFilterContext *in, int inpad,
AVFilterContext *out, int outpad,
AVClass *log_ctx);
AVFilterInOut *inouts, AVClass *log_ctx);

#endif /* FFMPEG_GRAPHPARSER_H */

Loading…
Cancel
Save