43 #define LICENSE_PREFIX "libavfilter license: "
90 idx =
FFMIN(idx, *count);
94 memmove(*pads +idx+1, *pads +idx,
sizeof(
AVFilterPad) * (*count-idx));
95 memmove(*links+idx+1, *links+idx,
sizeof(
AVFilterLink*) * (*count-idx));
100 for (i = idx+1; i < *count; i++)
102 (*(
unsigned *)((uint8_t *) *links[i] + padidx_off))++;
116 "Media type mismatch between the '%s' filter output pad %d and the '%s' filter input pad %d\n",
117 src->
name, srcpad, dst->
name, dstpad);
136 unsigned filt_srcpad_idx,
unsigned filt_dstpad_idx)
142 "between the filter '%s' and the filter '%s'\n",
146 if ((ret =
avfilter_link(filt, filt_dstpad_idx, link->
dst, dstpad_idx)) < 0) {
155 filt->
inputs[filt_srcpad_idx] = link;
180 case AVLINK_STARTINIT:
191 if ((ret = config_link(link)) < 0)
209 if ((ret = config_link(link)) < 0)
220 static char *ff_get_ref_perms_string(
char *buf,
size_t buf_size,
int perms)
222 snprintf(buf, buf_size,
"%s%s%s%s%s%s",
237 "ref[%p buf:%p refcount:%d perms:%s data:%p linesize[%d, %d, %d, %d] pts:%"PRId64
" pos:%"PRId64,
243 av_dlog(ctx,
" a:%d/%d s:%dx%d i:%c iskey:%d type:%c",
252 av_dlog(ctx,
" cl:%"PRId64
"d sn:%d s:%d sr:%d p:%d",
260 av_dlog(ctx,
"]%s", end ?
"\n" :
"");
267 "link[%p s:%dx%d fmt:%-16s %-16s->%-16s]%s",
268 link, link->
w, link->
h,
278 "link[%p r:%"PRId64
" cl:%s fmt:%-16s %-16s->%-16s]%s",
287 #define FF_DPRINTF_START(ctx, func) av_dlog(NULL, "%-16s: ", #func)
295 av_dlog(
NULL,
" perms:%s w:%d h:%d\n", ff_get_ref_perms_string(buf,
sizeof(buf), perms), w, h);
336 memcpy(pic->
data, data, 4*
sizeof(data[0]));
337 memcpy(pic->
linesize, linesize, 4*
sizeof(linesize[0]));
344 if (picref && picref->
video)
353 uint64_t channel_layout,
int planar)
382 int i,
min = INT_MAX;
392 min =
FFMIN(min, val);
404 int perms = picref->
perms;
416 "frame copy needed (have perms %x, need %x, reject %x)\n",
449 uint8_t *src[4], *dst[4];
459 for (i = 0; i < 4; i++) {
462 (y >> (i==1 || i==2 ? vsub : 0)) * link->
src_buf-> linesize[i];
466 src[i] = dst[i] =
NULL;
469 for (i = 0; i < 4; i++) {
473 if (!src[i])
continue;
475 for (j = 0; j < h >> (i==1 || i==2 ? vsub : 0); j++) {
476 memcpy(dst[i], src[i], planew);
503 "Copying audio data in avfilter (have perms %x, need %x, reject %x)\n",
524 #define MAX_REGISTERED_AVFILTERS_NB 64
534 for (i = 0; registered_avfilters[i]; i++)
535 if (!strcmp(registered_avfilters[i]->name, name))
536 return registered_avfilters[i];
552 return filter ? ++filter : ®istered_avfilters[0];
557 memset(registered_avfilters, 0,
sizeof(registered_avfilters));
565 for(count = 0; pads->
name; count ++) pads ++;
649 if ((link = filter->
inputs[i])) {
658 if ((link = filter->
outputs[i])) {
681 ret = filter->
filter->
init(filter, args, opaque);