History

lavfi: add query_func2()

It differs from query_func() in accepting arrays of input/output format configurations to be filled as callback parameters. This allows to mark the filter context as const, ensuring it is not modified by this function, as it is not supposed to have any side effects beyond returning the supported formats.

Anton Khirnov committed 2 years ago

Commit eddffbe1 parent 01f2d956 files · +347 −36Browse files

Showing the changes to libavfilter/tests (1 of 6 files). Show all

Unified · Split

libavfilter/tests/filtfmts.c+18−1
@@ -143,7 +143,24 @@ int main(int argc, char **argv) · 142 unmodified lines
143143
144144 if (filter->formats_state == FF_FILTER_FORMATS_QUERY_FUNC)
145145 ret = filter->formats.query_func(filter_ctx);
146− else
146+ else if (filter->formats_state == FF_FILTER_FORMATS_QUERY_FUNC2) {
147+ AVFilterFormatsConfig **cfg_in = NULL, **cfg_out = NULL;
148+
149+ if (filter_ctx->nb_inputs) {
150+ cfg_in = av_malloc_array(filter_ctx->nb_inputs, sizeof(*cfg_in));
151+ for (unsigned i = 0; i < filter_ctx->nb_inputs; i++)
152+ cfg_in[i] = &filter_ctx->inputs[i]->outcfg;
153+ }
154+ if (filter_ctx->nb_outputs) {
155+ cfg_out = av_malloc_array(filter_ctx->nb_outputs, sizeof(*cfg_out));
156+ for (unsigned i = 0; i < filter_ctx->nb_outputs; i++)
157+ cfg_out[i] = &filter_ctx->outputs[i]->incfg;
158+ }
159+
160+ ret = filter->formats.query_func2(filter_ctx, cfg_in, cfg_out);
161+ av_freep(&cfg_in);
162+ av_freep(&cfg_out);
163+ } else
147164 ret = ff_default_query_formats(filter_ctx);
148165
149166 print_formats(filter_ctx);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t