Browse Source

Helper functions for adding new pads to filters at runtime

Commited in SoC by Bobby Bingham on 2007-08-07 22:31:56

Originally committed as revision 11999 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Vitor Sessak 18 years ago
parent
commit
246184413a
1 changed files with 21 additions and 0 deletions
  1. +21
    -0
      libavfilter/avfilter.c

+ 21
- 0
libavfilter/avfilter.c View File

@@ -47,6 +47,27 @@ void avfilter_unref_pic(AVFilterPicRef *ref)
av_free(ref);
}

void avfilter_insert_pad(unsigned idx, unsigned *count, size_t padidx_off,
AVFilterPad **pads, AVFilterLink ***links,
AVFilterPad *newpad)
{
unsigned i;

idx = FFMIN(idx, *count);

*pads = av_realloc(*pads, sizeof(AVFilterPad) * (*count + 1));
*links = av_realloc(*links, sizeof(AVFilterLink*) * (*count + 1));
memmove(*pads +idx+1, *pads +idx, sizeof(AVFilterPad) * (*count-idx));
memmove(*links+idx+1, *links+idx, sizeof(AVFilterLink*) * (*count-idx));
memcpy(*pads+idx, newpad, sizeof(AVFilterPad));
(*links)[idx] = NULL;

(*count) ++;
for(i = idx+1; i < *count; i ++)
if(*links[i])
(*(unsigned *)((uint8_t *)(*links[i]) + padidx_off)) ++;
}

int avfilter_link(AVFilterContext *src, unsigned srcpad,
AVFilterContext *dst, unsigned dstpad)
{


Loading…
Cancel
Save