mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-06-28 20:14:02 +08:00
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
This commit is contained in:
@ -47,6 +47,27 @@ void avfilter_unref_pic(AVFilterPicRef *ref)
|
|||||||
av_free(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,
|
int avfilter_link(AVFilterContext *src, unsigned srcpad,
|
||||||
AVFilterContext *dst, unsigned dstpad)
|
AVFilterContext *dst, unsigned dstpad)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user