Commit 10bca661 authored by Anton Khirnov's avatar Anton Khirnov

cmdutils: add a macro to simplify grow_array() calls.

parent 9e696d2e
...@@ -77,8 +77,7 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost) ...@@ -77,8 +77,7 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost)
exit(1); exit(1);
fg->index = nb_filtergraphs; fg->index = nb_filtergraphs;
fg->outputs = grow_array(fg->outputs, sizeof(*fg->outputs), &fg->nb_outputs, GROW_ARRAY(fg->outputs, fg->nb_outputs);
fg->nb_outputs + 1);
if (!(fg->outputs[0] = av_mallocz(sizeof(*fg->outputs[0])))) if (!(fg->outputs[0] = av_mallocz(sizeof(*fg->outputs[0]))))
exit(1); exit(1);
fg->outputs[0]->ost = ost; fg->outputs[0]->ost = ost;
...@@ -86,19 +85,16 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost) ...@@ -86,19 +85,16 @@ FilterGraph *init_simple_filtergraph(InputStream *ist, OutputStream *ost)
ost->filter = fg->outputs[0]; ost->filter = fg->outputs[0];
fg->inputs = grow_array(fg->inputs, sizeof(*fg->inputs), &fg->nb_inputs, GROW_ARRAY(fg->inputs, fg->nb_inputs);
fg->nb_inputs + 1);
if (!(fg->inputs[0] = av_mallocz(sizeof(*fg->inputs[0])))) if (!(fg->inputs[0] = av_mallocz(sizeof(*fg->inputs[0]))))
exit(1); exit(1);
fg->inputs[0]->ist = ist; fg->inputs[0]->ist = ist;
fg->inputs[0]->graph = fg; fg->inputs[0]->graph = fg;
ist->filters = grow_array(ist->filters, sizeof(*ist->filters), GROW_ARRAY(ist->filters, ist->nb_filters);
&ist->nb_filters, ist->nb_filters + 1);
ist->filters[ist->nb_filters - 1] = fg->inputs[0]; ist->filters[ist->nb_filters - 1] = fg->inputs[0];
filtergraphs = grow_array(filtergraphs, sizeof(*filtergraphs), GROW_ARRAY(filtergraphs, nb_filtergraphs);
&nb_filtergraphs, nb_filtergraphs + 1);
filtergraphs[nb_filtergraphs - 1] = fg; filtergraphs[nb_filtergraphs - 1] = fg;
return fg; return fg;
...@@ -164,15 +160,13 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in) ...@@ -164,15 +160,13 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
ist->decoding_needed = 1; ist->decoding_needed = 1;
ist->st->discard = AVDISCARD_NONE; ist->st->discard = AVDISCARD_NONE;
fg->inputs = grow_array(fg->inputs, sizeof(*fg->inputs), GROW_ARRAY(fg->inputs, fg->nb_inputs);
&fg->nb_inputs, fg->nb_inputs + 1);
if (!(fg->inputs[fg->nb_inputs - 1] = av_mallocz(sizeof(*fg->inputs[0])))) if (!(fg->inputs[fg->nb_inputs - 1] = av_mallocz(sizeof(*fg->inputs[0]))))
exit(1); exit(1);
fg->inputs[fg->nb_inputs - 1]->ist = ist; fg->inputs[fg->nb_inputs - 1]->ist = ist;
fg->inputs[fg->nb_inputs - 1]->graph = fg; fg->inputs[fg->nb_inputs - 1]->graph = fg;
ist->filters = grow_array(ist->filters, sizeof(*ist->filters), GROW_ARRAY(ist->filters, ist->nb_filters);
&ist->nb_filters, ist->nb_filters + 1);
ist->filters[ist->nb_filters - 1] = fg->inputs[fg->nb_inputs - 1]; ist->filters[ist->nb_filters - 1] = fg->inputs[fg->nb_inputs - 1];
} }
...@@ -541,8 +535,7 @@ int configure_filtergraph(FilterGraph *fg) ...@@ -541,8 +535,7 @@ int configure_filtergraph(FilterGraph *fg)
} else { } else {
/* wait until output mappings are processed */ /* wait until output mappings are processed */
for (cur = outputs; cur;) { for (cur = outputs; cur;) {
fg->outputs = grow_array(fg->outputs, sizeof(*fg->outputs), GROW_ARRAY(fg->outputs, fg->nb_outputs);
&fg->nb_outputs, fg->nb_outputs + 1);
if (!(fg->outputs[fg->nb_outputs - 1] = av_mallocz(sizeof(*fg->outputs[0])))) if (!(fg->outputs[fg->nb_outputs - 1] = av_mallocz(sizeof(*fg->outputs[0]))))
exit(1); exit(1);
fg->outputs[fg->nb_outputs - 1]->graph = fg; fg->outputs[fg->nb_outputs - 1]->graph = fg;
......
...@@ -210,8 +210,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg) ...@@ -210,8 +210,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
if (map[0] == '[') { if (map[0] == '[') {
/* this mapping refers to lavfi output */ /* this mapping refers to lavfi output */
const char *c = map + 1; const char *c = map + 1;
o->stream_maps = grow_array(o->stream_maps, sizeof(*o->stream_maps), GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
&o->nb_stream_maps, o->nb_stream_maps + 1);
m = &o->stream_maps[o->nb_stream_maps - 1]; m = &o->stream_maps[o->nb_stream_maps - 1];
m->linklabel = av_get_token(&c, "]"); m->linklabel = av_get_token(&c, "]");
if (!m->linklabel) { if (!m->linklabel) {
...@@ -239,8 +238,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg) ...@@ -239,8 +238,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
if (check_stream_specifier(input_files[file_idx]->ctx, input_files[file_idx]->ctx->streams[i], if (check_stream_specifier(input_files[file_idx]->ctx, input_files[file_idx]->ctx->streams[i],
*p == ':' ? p + 1 : p) <= 0) *p == ':' ? p + 1 : p) <= 0)
continue; continue;
o->stream_maps = grow_array(o->stream_maps, sizeof(*o->stream_maps), GROW_ARRAY(o->stream_maps, o->nb_stream_maps);
&o->nb_stream_maps, o->nb_stream_maps + 1);
m = &o->stream_maps[o->nb_stream_maps - 1]; m = &o->stream_maps[o->nb_stream_maps - 1];
m->file_index = file_idx; m->file_index = file_idx;
...@@ -268,8 +266,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg) ...@@ -268,8 +266,7 @@ static int opt_map(void *optctx, const char *opt, const char *arg)
static int opt_attach(void *optctx, const char *opt, const char *arg) static int opt_attach(void *optctx, const char *opt, const char *arg)
{ {
OptionsContext *o = optctx; OptionsContext *o = optctx;
o->attachments = grow_array(o->attachments, sizeof(*o->attachments), GROW_ARRAY(o->attachments, o->nb_attachments);
&o->nb_attachments, o->nb_attachments + 1);
o->attachments[o->nb_attachments - 1] = arg; o->attachments[o->nb_attachments - 1] = arg;
return 0; return 0;
} }
...@@ -445,7 +442,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) ...@@ -445,7 +442,7 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic)
if (!ist) if (!ist)
exit(1); exit(1);
input_streams = grow_array(input_streams, sizeof(*input_streams), &nb_input_streams, nb_input_streams + 1); GROW_ARRAY(input_streams, nb_input_streams);
input_streams[nb_input_streams - 1] = ist; input_streams[nb_input_streams - 1] = ist;
ist->st = st; ist->st = st;
...@@ -658,7 +655,7 @@ static int opt_input_file(void *optctx, const char *opt, const char *filename) ...@@ -658,7 +655,7 @@ static int opt_input_file(void *optctx, const char *opt, const char *filename)
/* dump the file content */ /* dump the file content */
av_dump_format(ic, nb_input_files, filename, 0); av_dump_format(ic, nb_input_files, filename, 0);
input_files = grow_array(input_files, sizeof(*input_files), &nb_input_files, nb_input_files + 1); GROW_ARRAY(input_files, nb_input_files);
if (!(input_files[nb_input_files - 1] = av_mallocz(sizeof(*input_files[0])))) if (!(input_files[nb_input_files - 1] = av_mallocz(sizeof(*input_files[0]))))
exit(1); exit(1);
...@@ -766,8 +763,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e ...@@ -766,8 +763,7 @@ static OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, e
if (oc->nb_streams - 1 < o->nb_streamid_map) if (oc->nb_streams - 1 < o->nb_streamid_map)
st->id = o->streamid_map[oc->nb_streams - 1]; st->id = o->streamid_map[oc->nb_streams - 1];
output_streams = grow_array(output_streams, sizeof(*output_streams), &nb_output_streams, GROW_ARRAY(output_streams, nb_output_streams);
nb_output_streams + 1);
if (!(ost = av_mallocz(sizeof(*ost)))) if (!(ost = av_mallocz(sizeof(*ost))))
exit(1); exit(1);
output_streams[nb_output_streams - 1] = ost; output_streams[nb_output_streams - 1] = ost;
...@@ -1370,7 +1366,7 @@ loop_end: ...@@ -1370,7 +1366,7 @@ loop_end:
avio_close(pb); avio_close(pb);
} }
output_files = grow_array(output_files, sizeof(*output_files), &nb_output_files, nb_output_files + 1); GROW_ARRAY(output_files, nb_output_files);
if (!(output_files[nb_output_files - 1] = av_mallocz(sizeof(*output_files[0])))) if (!(output_files[nb_output_files - 1] = av_mallocz(sizeof(*output_files[0]))))
exit(1); exit(1);
...@@ -1783,8 +1779,7 @@ static int opt_audio_qscale(void *optctx, const char *opt, const char *arg) ...@@ -1783,8 +1779,7 @@ static int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
static int opt_filter_complex(void *optctx, const char *opt, const char *arg) static int opt_filter_complex(void *optctx, const char *opt, const char *arg)
{ {
filtergraphs = grow_array(filtergraphs, sizeof(*filtergraphs), GROW_ARRAY(filtergraphs, nb_filtergraphs);
&nb_filtergraphs, nb_filtergraphs + 1);
if (!(filtergraphs[nb_filtergraphs - 1] = av_mallocz(sizeof(*filtergraphs[0])))) if (!(filtergraphs[nb_filtergraphs - 1] = av_mallocz(sizeof(*filtergraphs[0]))))
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
filtergraphs[nb_filtergraphs - 1]->index = nb_filtergraphs - 1; filtergraphs[nb_filtergraphs - 1]->index = nb_filtergraphs - 1;
......
...@@ -418,6 +418,9 @@ FILE *get_preset_file(char *filename, size_t filename_size, ...@@ -418,6 +418,9 @@ FILE *get_preset_file(char *filename, size_t filename_size,
*/ */
void *grow_array(void *array, int elem_size, int *size, int new_size); void *grow_array(void *array, int elem_size, int *size, int new_size);
#define GROW_ARRAY(array, nb_elems)\
array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
typedef struct FrameBuffer { typedef struct FrameBuffer {
uint8_t *base[4]; uint8_t *base[4];
uint8_t *data[4]; uint8_t *data[4];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment