Skip to content

Commit

Permalink
lavfi: replace AVFilterContext.input/output_count with nb_inputs/outputs
Browse files Browse the repository at this point in the history
This is more consistent with naming in the rest of Libav.
  • Loading branch information
elenril committed Jun 13, 2012
1 parent 9d0bfc5 commit 9baeff9
Show file tree
Hide file tree
Showing 13 changed files with 94 additions and 64 deletions.
4 changes: 4 additions & 0 deletions doc/APIchanges
Expand Up @@ -13,6 +13,10 @@ libavutil: 2011-04-18

API changes, most recent first:

2012-xx-xx - xxxxxxx - lavfi 2.23.0 - avfilter.h
Add AVFilterContext.nb_inputs/outputs. Deprecate
AVFilterContext.input/output_count.

2012-xx-xx - xxxxxxx - lavfi 2.22.0 - avfilter.h
Add avfilter_pad_get_type() and avfilter_pad_get_name(). Those
should now be used instead of accessing AVFilterPad members
Expand Down
6 changes: 3 additions & 3 deletions libavfilter/af_amix.c
Expand Up @@ -454,10 +454,10 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
AVFilterLink *outlink = ctx->outputs[0];
int i;

for (i = 0; i < ctx->input_count; i++)
for (i = 0; i < ctx->nb_inputs; i++)
if (ctx->inputs[i] == inlink)
break;
if (i >= ctx->input_count) {
if (i >= ctx->nb_inputs) {
av_log(ctx, AV_LOG_ERROR, "unknown input link\n");
return;
}
Expand Down Expand Up @@ -518,7 +518,7 @@ static void uninit(AVFilterContext *ctx)
av_freep(&s->input_state);
av_freep(&s->input_scale);

for (i = 0; i < ctx->input_count; i++)
for (i = 0; i < ctx->nb_inputs; i++)
av_freep(&ctx->input_pads[i].name);
}

Expand Down
4 changes: 2 additions & 2 deletions libavfilter/af_channelsplit.c
Expand Up @@ -99,7 +99,7 @@ static int query_formats(AVFilterContext *ctx)
ff_add_channel_layout(&in_layouts, s->channel_layout);
ff_channel_layouts_ref(in_layouts, &ctx->inputs[0]->out_channel_layouts);

for (i = 0; i < ctx->output_count; i++) {
for (i = 0; i < ctx->nb_outputs; i++) {
AVFilterChannelLayouts *out_layouts = NULL;
uint64_t channel = av_channel_layout_extract_channel(s->channel_layout, i);

Expand All @@ -115,7 +115,7 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *buf)
AVFilterContext *ctx = inlink->dst;
int i;

for (i = 0; i < ctx->output_count; i++) {
for (i = 0; i < ctx->nb_outputs; i++) {
AVFilterBufferRef *buf_out = avfilter_ref_buffer(buf, ~AV_PERM_WRITE);

if (!buf_out)
Expand Down
2 changes: 1 addition & 1 deletion libavfilter/audio.c
Expand Up @@ -156,7 +156,7 @@ void ff_default_filter_samples(AVFilterLink *inlink, AVFilterBufferRef *samplesr
{
AVFilterLink *outlink = NULL;

if (inlink->dst->output_count)
if (inlink->dst->nb_outputs)
outlink = inlink->dst->outputs[0];

if (outlink) {
Expand Down
58 changes: 34 additions & 24 deletions libavfilter/avfilter.c
Expand Up @@ -70,8 +70,8 @@ int avfilter_link(AVFilterContext *src, unsigned srcpad,
{
AVFilterLink *link;

if (src->output_count <= srcpad || dst->input_count <= dstpad ||
src->outputs[srcpad] || dst->inputs[dstpad])
if (src->nb_outputs <= srcpad || dst->nb_inputs <= dstpad ||
src->outputs[srcpad] || dst->inputs[dstpad])
return -1;

if (src->output_pads[srcpad].type != dst->input_pads[dstpad].type) {
Expand Down Expand Up @@ -138,7 +138,7 @@ int avfilter_config_links(AVFilterContext *filter)
unsigned i;
int ret;

for (i = 0; i < filter->input_count; i ++) {
for (i = 0; i < filter->nb_inputs; i ++) {
AVFilterLink *link = filter->inputs[i];

if (!link) continue;
Expand All @@ -156,7 +156,7 @@ int avfilter_config_links(AVFilterContext *filter)
return ret;

if (!(config_link = link->srcpad->config_props)) {
if (link->src->input_count != 1) {
if (link->src->nb_inputs != 1) {
av_log(link->src, AV_LOG_ERROR, "Source filters and filters "
"with more than one input "
"must set config_props() "
Expand All @@ -171,15 +171,15 @@ int avfilter_config_links(AVFilterContext *filter)
}

if (link->time_base.num == 0 && link->time_base.den == 0)
link->time_base = link->src && link->src->input_count ?
link->time_base = link->src && link->src->nb_inputs ?
link->src->inputs[0]->time_base : AV_TIME_BASE_Q;

if (link->type == AVMEDIA_TYPE_VIDEO) {
if (!link->sample_aspect_ratio.num && !link->sample_aspect_ratio.den)
link->sample_aspect_ratio = link->src->input_count ?
link->sample_aspect_ratio = link->src->nb_inputs ?
link->src->inputs[0]->sample_aspect_ratio : (AVRational){1,1};

if (link->src->input_count) {
if (link->src->nb_inputs) {
if (!link->w)
link->w = link->src->inputs[0]->w;
if (!link->h)
Expand Down Expand Up @@ -249,7 +249,7 @@ int ff_poll_frame(AVFilterLink *link)
if (link->srcpad->poll_frame)
return link->srcpad->poll_frame(link);

for (i = 0; i < link->src->input_count; i++) {
for (i = 0; i < link->src->nb_inputs; i++) {
int val;
if (!link->src->inputs[i])
return -1;
Expand Down Expand Up @@ -339,38 +339,42 @@ int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *in
goto err;
}

ret->input_count = pad_count(filter->inputs);
if (ret->input_count) {
ret->input_pads = av_malloc(sizeof(AVFilterPad) * ret->input_count);
ret->nb_inputs = pad_count(filter->inputs);
if (ret->nb_inputs ) {
ret->input_pads = av_malloc(sizeof(AVFilterPad) * ret->nb_inputs);
if (!ret->input_pads)
goto err;
memcpy(ret->input_pads, filter->inputs, sizeof(AVFilterPad) * ret->input_count);
ret->inputs = av_mallocz(sizeof(AVFilterLink*) * ret->input_count);
memcpy(ret->input_pads, filter->inputs, sizeof(AVFilterPad) * ret->nb_inputs);
ret->inputs = av_mallocz(sizeof(AVFilterLink*) * ret->nb_inputs);
if (!ret->inputs)
goto err;
}

ret->output_count = pad_count(filter->outputs);
if (ret->output_count) {
ret->output_pads = av_malloc(sizeof(AVFilterPad) * ret->output_count);
ret->nb_outputs = pad_count(filter->outputs);
if (ret->nb_outputs) {
ret->output_pads = av_malloc(sizeof(AVFilterPad) * ret->nb_outputs);
if (!ret->output_pads)
goto err;
memcpy(ret->output_pads, filter->outputs, sizeof(AVFilterPad) * ret->output_count);
ret->outputs = av_mallocz(sizeof(AVFilterLink*) * ret->output_count);
memcpy(ret->output_pads, filter->outputs, sizeof(AVFilterPad) * ret->nb_outputs);
ret->outputs = av_mallocz(sizeof(AVFilterLink*) * ret->nb_outputs);
if (!ret->outputs)
goto err;
}
#if FF_API_FOO_COUNT
ret->output_count = ret->nb_outputs;
ret->input_count = ret->nb_inputs;
#endif

*filter_ctx = ret;
return 0;

err:
av_freep(&ret->inputs);
av_freep(&ret->input_pads);
ret->input_count = 0;
ret->nb_inputs = 0;
av_freep(&ret->outputs);
av_freep(&ret->output_pads);
ret->output_count = 0;
ret->nb_outputs = 0;
av_freep(&ret->priv);
av_free(ret);
return AVERROR(ENOMEM);
Expand All @@ -384,7 +388,7 @@ void avfilter_free(AVFilterContext *filter)
if (filter->filter->uninit)
filter->filter->uninit(filter);

for (i = 0; i < filter->input_count; i++) {
for (i = 0; i < filter->nb_inputs; i++) {
if ((link = filter->inputs[i])) {
if (link->src)
link->src->outputs[link->srcpad - link->src->output_pads] = NULL;
Expand All @@ -397,7 +401,7 @@ void avfilter_free(AVFilterContext *filter)
}
av_freep(&link);
}
for (i = 0; i < filter->output_count; i++) {
for (i = 0; i < filter->nb_outputs; i++) {
if ((link = filter->outputs[i])) {
if (link->dst)
link->dst->inputs[link->dstpad - link->dst->input_pads] = NULL;
Expand Down Expand Up @@ -453,14 +457,20 @@ void avfilter_insert_pad(unsigned idx, unsigned *count, size_t padidx_off,
void avfilter_insert_inpad(AVFilterContext *f, unsigned index,
AVFilterPad *p)
{
ff_insert_pad(index, &f->input_count, offsetof(AVFilterLink, dstpad),
ff_insert_pad(index, &f->nb_inputs, offsetof(AVFilterLink, dstpad),
&f->input_pads, &f->inputs, p);
#if FF_API_FOO_COUNT
f->input_count = f->nb_inputs;
#endif
}
void avfilter_insert_outpad(AVFilterContext *f, unsigned index,
AVFilterPad *p)
{
ff_insert_pad(index, &f->output_count, offsetof(AVFilterLink, srcpad),
ff_insert_pad(index, &f->nb_outputs, offsetof(AVFilterLink, srcpad),
&f->output_pads, &f->outputs, p);
#if FF_API_FOO_COUNT
f->output_count = f->nb_outputs;
#endif
}
int avfilter_poll_frame(AVFilterLink *link)
{
Expand Down
11 changes: 9 additions & 2 deletions libavfilter/avfilter.h
Expand Up @@ -488,15 +488,22 @@ struct AVFilterContext {

char *name; ///< name of this filter instance

unsigned input_count; ///< number of input pads
#if FF_API_FOO_COUNT
unsigned input_count; ///< @deprecated use nb_inputs
#endif
AVFilterPad *input_pads; ///< array of input pads
AVFilterLink **inputs; ///< array of pointers to input links

unsigned output_count; ///< number of output pads
#if FF_API_FOO_COUNT
unsigned output_count; ///< @deprecated use nb_outputs
#endif
AVFilterPad *output_pads; ///< array of output pads
AVFilterLink **outputs; ///< array of pointers to output links

void *priv; ///< private data for use by the filter

unsigned nb_inputs; ///< number of input pads
unsigned nb_outputs; ///< number of output pads
};

/**
Expand Down
34 changes: 17 additions & 17 deletions libavfilter/avfiltergraph.c
Expand Up @@ -109,7 +109,7 @@ static int graph_check_validity(AVFilterGraph *graph, AVClass *log_ctx)
for (i = 0; i < graph->filter_count; i++) {
filt = graph->filters[i];

for (j = 0; j < filt->input_count; j++) {
for (j = 0; j < filt->nb_inputs; j++) {
if (!filt->inputs[j] || !filt->inputs[j]->src) {
av_log(log_ctx, AV_LOG_ERROR,
"Input pad \"%s\" for the filter \"%s\" of type \"%s\" not connected to any source\n",
Expand All @@ -118,7 +118,7 @@ static int graph_check_validity(AVFilterGraph *graph, AVClass *log_ctx)
}
}

for (j = 0; j < filt->output_count; j++) {
for (j = 0; j < filt->nb_outputs; j++) {
if (!filt->outputs[j] || !filt->outputs[j]->dst) {
av_log(log_ctx, AV_LOG_ERROR,
"Output pad \"%s\" for the filter \"%s\" of type \"%s\" not connected to any destination\n",
Expand All @@ -144,7 +144,7 @@ static int graph_config_links(AVFilterGraph *graph, AVClass *log_ctx)
for (i=0; i < graph->filter_count; i++) {
filt = graph->filters[i];

if (!filt->output_count) {
if (!filt->nb_outputs) {
if ((ret = avfilter_config_links(filt)))
return ret;
}
Expand Down Expand Up @@ -181,7 +181,7 @@ static int query_formats(AVFilterGraph *graph, AVClass *log_ctx)
for (i = 0; i < graph->filter_count; i++) {
AVFilterContext *filter = graph->filters[i];

for (j = 0; j < filter->input_count; j++) {
for (j = 0; j < filter->nb_inputs; j++) {
AVFilterLink *link = filter->inputs[j];
int convert_needed = 0;

Expand Down Expand Up @@ -315,15 +315,15 @@ static int pick_format(AVFilterLink *link)

#define REDUCE_FORMATS(fmt_type, list_type, list, var, nb, add_format) \
do { \
for (i = 0; i < filter->input_count; i++) { \
for (i = 0; i < filter->nb_inputs; i++) { \
AVFilterLink *link = filter->inputs[i]; \
fmt_type fmt; \
\
if (!link->out_ ## list || link->out_ ## list->nb != 1) \
continue; \
fmt = link->out_ ## list->var[0]; \
\
for (j = 0; j < filter->output_count; j++) { \
for (j = 0; j < filter->nb_outputs; j++) { \
AVFilterLink *out_link = filter->outputs[j]; \
list_type *fmts; \
\
Expand Down Expand Up @@ -380,19 +380,19 @@ static void swap_samplerates_on_filter(AVFilterContext *filter)
int sample_rate;
int i, j;

for (i = 0; i < filter->input_count; i++) {
for (i = 0; i < filter->nb_inputs; i++) {
link = filter->inputs[i];

if (link->type == AVMEDIA_TYPE_AUDIO &&
link->out_samplerates->format_count == 1)
break;
}
if (i == filter->input_count)
if (i == filter->nb_inputs)
return;

sample_rate = link->out_samplerates->formats[0];

for (i = 0; i < filter->output_count; i++) {
for (i = 0; i < filter->nb_outputs; i++) {
AVFilterLink *outlink = filter->outputs[i];
int best_idx, best_diff = INT_MAX;

Expand Down Expand Up @@ -427,19 +427,19 @@ static void swap_channel_layouts_on_filter(AVFilterContext *filter)
uint64_t chlayout;
int i, j;

for (i = 0; i < filter->input_count; i++) {
for (i = 0; i < filter->nb_inputs; i++) {
link = filter->inputs[i];

if (link->type == AVMEDIA_TYPE_AUDIO &&
link->out_channel_layouts->nb_channel_layouts == 1)
break;
}
if (i == filter->input_count)
if (i == filter->nb_inputs)
return;

chlayout = link->out_channel_layouts->channel_layouts[0];

for (i = 0; i < filter->output_count; i++) {
for (i = 0; i < filter->nb_outputs; i++) {
AVFilterLink *outlink = filter->outputs[i];
int best_idx, best_score = INT_MIN;

Expand Down Expand Up @@ -480,20 +480,20 @@ static void swap_sample_fmts_on_filter(AVFilterContext *filter)
int format, bps;
int i, j;

for (i = 0; i < filter->input_count; i++) {
for (i = 0; i < filter->nb_inputs; i++) {
link = filter->inputs[i];

if (link->type == AVMEDIA_TYPE_AUDIO &&
link->out_formats->format_count == 1)
break;
}
if (i == filter->input_count)
if (i == filter->nb_inputs)
return;

format = link->out_formats->formats[0];
bps = av_get_bytes_per_sample(format);

for (i = 0; i < filter->output_count; i++) {
for (i = 0; i < filter->nb_outputs; i++) {
AVFilterLink *outlink = filter->outputs[i];
int best_idx, best_score = INT_MIN;

Expand Down Expand Up @@ -549,10 +549,10 @@ static int pick_formats(AVFilterGraph *graph)
for (i = 0; i < graph->filter_count; i++) {
AVFilterContext *filter = graph->filters[i];

for (j = 0; j < filter->input_count; j++)
for (j = 0; j < filter->nb_inputs; j++)
if ((ret = pick_format(filter->inputs[j])) < 0)
return ret;
for (j = 0; j < filter->output_count; j++)
for (j = 0; j < filter->nb_outputs; j++)
if ((ret = pick_format(filter->outputs[j])) < 0)
return ret;
}
Expand Down
4 changes: 2 additions & 2 deletions libavfilter/formats.c
Expand Up @@ -330,13 +330,13 @@ void ff_formats_changeref(AVFilterFormats **oldref, AVFilterFormats **newref)
{ \
int count = 0, i; \
\
for (i = 0; i < ctx->input_count; i++) { \
for (i = 0; i < ctx->nb_inputs; i++) { \
if (ctx->inputs[i]) { \
ref(fmts, &ctx->inputs[i]->out_fmts); \
count++; \
} \
} \
for (i = 0; i < ctx->output_count; i++) { \
for (i = 0; i < ctx->nb_outputs; i++) { \
if (ctx->outputs[i]) { \
ref(fmts, &ctx->outputs[i]->in_fmts); \
count++; \
Expand Down

0 comments on commit 9baeff9

Please sign in to comment.